Merge "DO NOT MERGE - Merge Android 10 into master"
diff --git a/.gitignore b/.gitignore
index 7866e9e..e8ec7b7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
+.idea/
bin/
gen/
*.iml
-.project
.classpath
+.project
project.properties
diff --git a/Android.bp b/Android.bp
index 2314a74..05c44ed 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1,9 +1,52 @@
+//
+// 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.
+//
+
+genrule {
+ name: "statslog-permissioncontroller-java-gen",
+ tools: ["stats-log-api-gen"],
+ cmd: "$(location stats-log-api-gen) --java $(out) --module permissioncontroller --javaPackage com.android.packageinstaller --javaClass PermissionControllerStatsLog",
+ out: ["com/android/packageinstaller/PermissionControllerStatsLog.java"],
+}
+
+java_library {
+ name: "permissioncontroller-statsd",
+ sdk_version: "system_current",
+
+ srcs: [
+ ":statslog-permissioncontroller-java-gen",
+ ],
+}
+
android_app {
- name: "PackageInstaller",
- srcs: ["src/**/*.java"],
+ name: "PermissionController",
+ sdk_version: "system_current",
+ min_sdk_version: "28",
+ privileged: true,
+ certificate: "platform",
+
+ srcs: [
+ "src/**/*.java",
+ "src/**/*.proto",
+ ],
+
static_libs: [
- "androidx.car_car",
+ "iconloader",
+ "com.google.android.material_material",
"androidx.transition_transition",
+ "androidx-constraintlayout_constraintlayout",
"androidx.core_core",
"androidx.media_media",
"androidx.legacy_legacy-support-core-utils",
@@ -15,17 +58,25 @@
"androidx.legacy_legacy-preference-v14",
"androidx.leanback_leanback",
"androidx.leanback_leanback-preference",
- "car-list",
- "SettingsLib",
- "xz-java",
+ "androidx.lifecycle_lifecycle-extensions",
+ "androidx.lifecycle_lifecycle-common-java8",
+ "SettingsLibHelpUtils",
+ "SettingsLibRestrictedLockUtils",
+ "SettingsLibAppPreference",
+ "SettingsLibSearchWidget",
+ "SettingsLibLayoutPreference",
+ "SettingsLibBarChartPreference",
+ "SettingsLibActionBarShadow",
+ "SettingsLibProgressBar",
"androidx.annotation_annotation",
+ "permissioncontroller-statsd"
],
- certificate: "platform",
- privileged: true,
+
+ proto: {
+ type: "lite",
+ },
+
optimize: {
proguard_flags_files: ["proguard.flags"],
},
- // Comment for now unitl all private API dependencies are removed
- // LOCAL_SDK_VERSION := system_current
- platform_apis: true,
}
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 67e0b4c..9c4bf5b 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1,163 +1,141 @@
<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.packageinstaller" coreApp="true">
+<manifest
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ package="com.android.permissioncontroller"
+ coreApp="true"
+ android:versionCode="290000000"
+ android:versionName="29 system image"
+>
- <original-package android:name="com.android.packageinstaller" />
+ <original-package android:name="com.android.permissioncontroller" />
- <uses-permission android:name="android.permission.INSTALL_PACKAGES" />
- <uses-permission android:name="android.permission.DELETE_PACKAGES" />
- <uses-permission android:name="android.permission.CLEAR_APP_CACHE" />
- <uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" />
- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+ <permission android:name="com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER"
+ android:protectionLevel="signature" />
+
<uses-permission android:name="android.permission.MANAGE_USERS" />
<uses-permission android:name="android.permission.GRANT_RUNTIME_PERMISSIONS" />
<uses-permission android:name="android.permission.REVOKE_RUNTIME_PERMISSIONS" />
- <uses-permission android:name="android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS" />
+ <uses-permission android:name="android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY" />
+ <uses-permission android:name="android.permission.WHITELIST_RESTRICTED_PERMISSIONS" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
<uses-permission android:name="android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS" />
- <uses-permission android:name="android.permission.READ_INSTALL_SESSIONS" />
<uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" />
<uses-permission android:name="android.permission.MANAGE_APP_OPS_MODES" />
- <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
- <uses-permission android:name="android.permission.WAKE_LOCK" />
+ <uses-permission android:name="android.permission.GET_APP_OPS_STATS" />
<uses-permission android:name="android.permission.KILL_UID" />
<uses-permission android:name="android.permission.MANAGE_APP_OPS_RESTRICTIONS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS" />
- <uses-permission android:name="android.permission.USE_RESERVED_DISK" />
-
- <uses-permission android:name="com.google.android.permission.INSTALL_WEARABLE_PACKAGES" />
-
+ <uses-permission android:name="android.permission.MANAGE_ROLE_HOLDERS" />
+ <uses-permission android:name="android.permission.OBSERVE_ROLE_HOLDERS" />
+ <uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS" />
+ <uses-permission android:name="android.permission.ACCESS_SHARED_LIBRARIES" />
+ <uses-permission android:name="com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER" />
<uses-permission android:name="android.permission.ACCESS_INSTANT_APPS" />
+ <uses-permission android:name="android.permission.REQUEST_INCIDENT_REPORT_APPROVAL" />
+ <uses-permission android:name="android.permission.APPROVE_INCIDENT_REPORTS" />
+ <uses-permission android:name="android.permission.READ_DEVICE_CONFIG" />
+ <uses-permission android:name="android.permission.OPEN_ACCESSIBILITY_DETAILS_SETTINGS" />
+ <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
+ <uses-permission android:name="android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME" />
- <application android:name=".PackageInstallerApplication"
+ <uses-sdk android:minSdkVersion="29" android:targetSdkVersion="29" />
+
+ <application android:name="com.android.packageinstaller.PackageInstallerApplication"
android:label="@string/app_name"
+ android:icon="@drawable/ic_permission_controller_app_icon"
android:allowBackup="false"
- android:theme="@style/DialogWhenLarge"
+ android:allowClearUserData="false"
android:supportsRtl="true"
android:defaultToDeviceProtectedStorage="true"
android:directBootAware="true">
- <receiver android:name=".TemporaryFileManager"
- android:exported="true">
+ <provider
+ android:name="androidx.lifecycle.ProcessLifecycleOwnerInitializer"
+ tools:replace="android:authorities"
+ android:authorities="${applicationId}.lifecycle-process"
+ android:exported="false"
+ android:multiprocess="true" />
+
+ <receiver android:name="com.android.packageinstaller.permission.service.LocationAccessCheck$SetupPeriodicBackgroundLocationAccessCheck">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
- <activity android:name=".InstallStart"
- android:exported="true"
- android:excludeFromRecents="true">
- <intent-filter android:priority="1">
- <action android:name="android.intent.action.VIEW" />
- <action android:name="android.intent.action.INSTALL_PACKAGE" />
- <category android:name="android.intent.category.DEFAULT" />
- <data android:scheme="file" />
- <data android:scheme="content" />
- <data android:mimeType="application/vnd.android.package-archive" />
- </intent-filter>
- <intent-filter android:priority="1">
- <action android:name="android.intent.action.INSTALL_PACKAGE" />
- <category android:name="android.intent.category.DEFAULT" />
- <data android:scheme="file" />
+ <receiver android:name="com.android.packageinstaller.permission.service.LocationAccessCheck$NotificationDeleteHandler" />
+
+ <receiver android:name="com.android.packageinstaller.permission.service.LocationAccessCheck$NotificationClickHandler" />
+
+ <receiver android:name="com.android.packageinstaller.permission.service.LocationAccessCheck$PackageResetHandler">
+ <intent-filter>
+ <action android:name="android.intent.action.PACKAGE_FULLY_REMOVED"/>
+ <action android:name="android.intent.action.PACKAGE_DATA_CLEARED" />
<data android:scheme="package" />
- <data android:scheme="content" />
- </intent-filter>
- <intent-filter android:priority="1">
- <action android:name="android.content.pm.action.CONFIRM_PERMISSIONS" />
- <category android:name="android.intent.category.DEFAULT" />
- </intent-filter>
- </activity>
-
- <activity android:name=".InstallStaging"
- android:exported="false" />
-
- <activity android:name=".DeleteStagedFileOnResult"
- android:exported="false" />
-
- <activity android:name=".PackageInstallerActivity"
- android:exported="false" />
-
- <activity android:name=".InstallInstalling"
- android:theme="@style/DialogWhenLargeNoAnimation"
- android:exported="false" />
-
- <receiver android:name=".InstallEventReceiver"
- android:permission="android.permission.INSTALL_PACKAGES"
- android:exported="true">
- <intent-filter android:priority="1">
- <action android:name="com.android.packageinstaller.ACTION_INSTALL_COMMIT" />
</intent-filter>
</receiver>
- <activity android:name=".InstallSuccess"
- android:theme="@style/DialogWhenLargeNoAnimation"
- android:exported="false" />
+ <service android:name="com.android.packageinstaller.permission.service.LocationAccessCheck$LocationAccessCheckJobService"
+ android:permission="android.permission.BIND_JOB_SERVICE" />
- <activity android:name=".InstallFailed"
- android:theme="@style/DialogWhenLargeNoAnimation"
- android:exported="false" />
-
- <activity android:name=".UninstallerActivity"
- android:configChanges="orientation|keyboardHidden|screenSize"
- android:excludeFromRecents="true"
- android:theme="@style/AlertDialogActivity">
- <intent-filter android:priority="1">
- <action android:name="android.intent.action.DELETE" />
- <action android:name="android.intent.action.UNINSTALL_PACKAGE" />
- <category android:name="android.intent.category.DEFAULT" />
- <data android:scheme="package" />
- </intent-filter>
- </activity>
-
- <receiver android:name=".UninstallEventReceiver"
- android:permission="android.permission.INSTALL_PACKAGES"
- android:exported="true">
- <intent-filter android:priority="1">
- <action android:name="com.android.packageinstaller.ACTION_UNINSTALL_COMMIT" />
- </intent-filter>
- </receiver>
-
- <activity android:name=".UninstallUninstalling"
- android:excludeFromRecents="true"
- android:theme="@style/AlertDialogActivity"
- android:exported="false" />
-
- <receiver android:name=".UninstallFinish"
- android:exported="false" />
-
- <activity android:name=".television.UninstallAppProgress"
- android:configChanges="mnc|mnc|touchscreen|navigation|screenLayout|screenSize|smallestScreenSize|orientation|locale|keyboard|keyboardHidden|fontScale|uiMode|layoutDirection|density"
- android:exported="false" />
-
- <activity android:name=".permission.ui.GrantPermissionsActivity"
- android:configChanges="orientation|keyboardHidden|screenSize"
+ <activity android:name="com.android.packageinstaller.permission.ui.GrantPermissionsActivity"
+ android:configChanges="keyboardHidden|screenSize"
android:excludeFromRecents="true"
android:theme="@style/GrantPermissions"
- android:visibleToInstantApps="true">
+ android:visibleToInstantApps="true"
+ android:inheritShowWhenLocked="true">
<intent-filter android:priority="1">
<action android:name="android.content.pm.action.REQUEST_PERMISSIONS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
- <activity android:name=".permission.ui.ManagePermissionsActivity"
+ <activity android:name="com.android.packageinstaller.permission.ui.ManagePermissionsActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
- android:excludeFromRecents="true"
android:label="@string/app_permissions"
android:theme="@style/Settings"
android:permission="android.permission.GRANT_RUNTIME_PERMISSIONS">
<intent-filter android:priority="1">
- <action android:name="android.intent.action.MANAGE_PERMISSIONS" />
<action android:name="android.intent.action.MANAGE_APP_PERMISSIONS" />
<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" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
- <activity android:name=".permission.ui.ReviewPermissionsActivity"
+ <activity android:name="com.android.packageinstaller.permission.ui.AdjustUserSensitiveActivity"
+ android:configChanges="orientation|keyboardHidden|screenSize"
+ android:label="@string/adjust_user_sensitive_title"
+ android:theme="@style/Settings"
+ android:exported="false"
+ android:permission="android.permission.GRANT_RUNTIME_PERMISSIONS" />
+
+ <activity android:name="com.android.packageinstaller.permission.ui.ManagePermissionsActivityTrampoline"
android:excludeFromRecents="true"
- android:theme="@style/Settings.NoActionBar"
+ android:noHistory="true"
+ android:theme="@android:style/Theme.NoDisplay">
+ <intent-filter android:priority="1">
+ <action android:name="com.android.permissioncontroller.settingssearch.action.MANAGE_PERMISSION_APPS" />
+ <action android:name="com.android.permissioncontroller.settingssearch.action.REVIEW_PERMISSION_USAGE" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name="com.android.packageinstaller.permission.ui.AppPermissionActivity"
+ android:configChanges="orientation|keyboardHidden|screenSize"
+ android:theme="@style/Settings"
+ android:permission="android.permission.GRANT_RUNTIME_PERMISSIONS">
+ <intent-filter android:priority="1">
+ <action android:name="android.intent.action.MANAGE_APP_PERMISSION" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name="com.android.packageinstaller.permission.ui.ReviewPermissionsActivity"
+ android:excludeFromRecents="true"
+ android:theme="@style/ReviewPermissions"
android:permission="android.permission.GRANT_RUNTIME_PERMISSIONS">
<intent-filter android:priority="1">
<action android:name="android.intent.action.REVIEW_PERMISSIONS" />
@@ -165,30 +143,170 @@
</intent-filter>
</activity>
- <activity android:name=".permission.ui.OverlayWarningDialog"
+ <activity android:name="com.android.packageinstaller.permission.ui.OverlayWarningDialog"
android:excludeFromRecents="true"
android:theme="@android:style/Theme.DeviceDefault.Light.Dialog.NoActionBar" />
- <!-- Wearable Components -->
- <service android:name=".wear.WearPackageInstallerService"
- android:permission="com.google.android.permission.INSTALL_WEARABLE_PACKAGES"
- android:exported="true"/>
+ <activity android:name="com.android.packageinstaller.permission.ui.LocationProviderInterceptDialog"
+ android:excludeFromRecents="true"
+ android:theme="@style/PermissionDialog" />
- <service android:name=".permission.service.RuntimePermissionPresenterServiceImpl"
+ <activity android:name="com.android.packageinstaller.permission.ui.ReviewOngoingUsageActivity"
+ android:excludeFromRecents="true"
+ android:theme="@style/PermissionDialog"
+ android:launchMode="singleInstance"
+ android:permission="android.permission.GRANT_RUNTIME_PERMISSIONS" >
+ <intent-filter android:priority="1">
+ <action android:name="android.intent.action.REVIEW_ONGOING_PERMISSION_USAGE" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name="com.android.packageinstaller.permission.ui.ReviewAccessibilityServicesActivity"
+ android:excludeFromRecents="true"
+ android:theme="@style/PermissionDialog"
+ android:permission="android.permission.REVIEW_ACCESSIBILITY_SERVICES" >
+ <intent-filter android:priority="1">
+ <action android:name="android.intent.action.REVIEW_ACCESSIBILITY_SERVICES" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name="com.android.packageinstaller.role.ui.RequestRoleActivity"
+ android:excludeFromRecents="true"
+ android:theme="@style/RequestRole">
+ <intent-filter android:priority="1">
+ <action android:name="android.app.role.action.REQUEST_ROLE" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ <intent-filter android:priority="2">
+ <action android:name="android.provider.Telephony.ACTION_CHANGE_DEFAULT" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ <intent-filter android:priority="1001">
+ <action android:name="android.telecom.action.CHANGE_DEFAULT_DIALER" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name="com.android.packageinstaller.role.ui.DefaultAppListActivity"
+ android:label="@string/default_apps"
+ android:theme="@style/Settings">
+ <intent-filter android:priority="2">
+ <action android:name="android.settings.MANAGE_DEFAULT_APPS_SETTINGS" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name="com.android.packageinstaller.role.ui.DefaultAppActivity"
+ android:permission="android.permission.MANAGE_ROLE_HOLDERS"
+ android:theme="@style/Settings">
+ <intent-filter android:priority="1">
+ <action android:name="android.intent.action.MANAGE_DEFAULT_APP" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name="com.android.packageinstaller.role.ui.HomeSettingsActivity"
+ android:excludeFromRecents="true"
+ android:noHistory="true"
+ android:theme="@android:style/Theme.NoDisplay">
+ <intent-filter android:priority="2">
+ <action android:name="android.settings.HOME_SETTINGS" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name="com.android.packageinstaller.role.ui.SpecialAppAccessListActivity"
+ android:label="@string/special_app_access"
+ android:permission="android.permission.MANAGE_ROLE_HOLDERS"
+ android:theme="@style/Settings">
+ <intent-filter android:priority="1">
+ <action android:name="android.intent.action.MANAGE_SPECIAL_APP_ACCESSES" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <!-- TODO: Override other Settings intents when we've done migrating them. -->
+ <activity android:name="com.android.packageinstaller.role.ui.SpecialAppAccessActivity"
+ android:theme="@style/Settings" />
+
+ <activity android:name="com.android.packageinstaller.role.ui.RoleSearchTrampolineActivity"
+ android:excludeFromRecents="true"
+ android:noHistory="true"
+ android:theme="@android:style/Theme.NoDisplay">
+ <intent-filter android:priority="1">
+ <action android:name="com.android.permissioncontroller.settingssearch.action.MANAGE_DEFAULT_APP" />
+ <action android:name="com.android.permissioncontroller.settingssearch.action.MANAGE_SPECIAL_APP_ACCESS" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <provider android:name="com.android.packageinstaller.permission.service.PermissionSearchIndexablesProvider"
+ android:authorities="com.android.permissioncontroller"
+ android:multiprocess="false"
+ android:grantUriPermissions="true"
+ android:permission="android.permission.READ_SEARCH_INDEXABLES"
+ android:exported="true">
+ <intent-filter>
+ <action android:name="android.content.action.SEARCH_INDEXABLES_PROVIDER" />
+ </intent-filter>
+ </provider>
+
+ <provider android:name="com.android.packageinstaller.role.service.RoleSearchIndexablesProvider"
+ android:authorities="com.android.permissioncontroller.role"
+ android:exported="true"
+ android:grantUriPermissions="true"
+ android:permission="android.permission.READ_SEARCH_INDEXABLES">
+ <intent-filter>
+ <action android:name="android.content.action.SEARCH_INDEXABLES_PROVIDER" />
+ </intent-filter>
+ </provider>
+
+ <service android:name="com.android.packageinstaller.permission.service.PermissionControllerServiceImpl">
+ <intent-filter android:priority="1">
+ <action android:name="android.permission.PermissionControllerService"/>
+ </intent-filter>
+ </service>
+
+ <service android:name="com.android.packageinstaller.permission.service.RuntimePermissionPresenterServiceLegacyImpl"
android:permission="android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE">
<intent-filter android:priority="1">
<action android:name="android.permissionpresenterservice.RuntimePermissionPresenterService"/>
</intent-filter>
</service>
- <provider android:name=".wear.WearPackageIconProvider"
- android:authorities="com.google.android.packageinstaller.wear.provider"
- android:grantUriPermissions="true"
- android:exported="true" />
+ <service android:name="com.android.packageinstaller.role.service.RoleControllerServiceImpl">
+ <intent-filter android:priority="1">
+ <action android:name="android.app.role.RoleControllerService"/>
+ </intent-filter>
+ </service>
- <activity android:name=".permission.ui.wear.WarningConfirmationActivity"
- android:permission="android.permission.GRANT_RUNTIME_PERMISSIONS"
- android:theme="@style/Settings"/>
+ <receiver android:name="com.android.packageinstaller.role.service.ClearUserDeniedReceiver">
+ <intent-filter>
+ <action android:name="android.intent.action.PACKAGE_DATA_CLEARED" />
+ <action android:name="android.intent.action.PACKAGE_FULLY_REMOVED"/>
+ <data android:scheme="package" />
+ </intent-filter>
+ </receiver>
+
+ <!-- Debug report authorization (bugreport and incident report) -->
+ <receiver android:name="com.android.packageinstaller.incident.ConfirmationReceiver"
+ android:exported="true">
+ <intent-filter>
+ <action android:name="android.intent.action.PENDING_INCIDENT_REPORTS_CHANGED" />
+ </intent-filter>
+ </receiver>
+
+ <activity android:name="com.android.packageinstaller.incident.ConfirmationActivity"
+ android:theme="@android:style/Theme.DeviceDefault.Light.Dialog.NoActionBar"
+ android:exported="false"
+ android:excludeFromRecents="true"
+ android:noHistory="true" />
+
+ <receiver android:name="com.android.packageinstaller.incident.ApprovalReceiver"
+ android:exported="false" />
+
</application>
</manifest>
diff --git a/OWNERS b/OWNERS
index bda45f6..021a6c2 100644
--- a/OWNERS
+++ b/OWNERS
@@ -7,4 +7,7 @@
# For automotive related changes
stenning@google.com
-rogerxue@google.com
+davidln@google.com
+
+# For incident report related changes
+joeo@google.com
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
index 1a4ce24..94e4640 100644
--- a/PREUPLOAD.cfg
+++ b/PREUPLOAD.cfg
@@ -4,4 +4,4 @@
[Hook Scripts]
checkstyle_hook = ${REPO_ROOT}/prebuilts/checkstyle/checkstyle.py --sha ${PREUPLOAD_COMMIT}
-
+strings_lint_hook = ${REPO_ROOT}/frameworks/base/tools/stringslint/stringslint_sha.sh ${PREUPLOAD_COMMIT}
diff --git a/TEST_MAPPING b/TEST_MAPPING
new file mode 100644
index 0000000..4cb5d23
--- /dev/null
+++ b/TEST_MAPPING
@@ -0,0 +1,21 @@
+{
+ "presubmit": [
+ {
+ "name": "CtsPermissionTestCases",
+ "options": [
+ {
+ "include-filter": "android.permission.cts.BackgroundPermissionsTest"
+ }
+ ]
+ },
+ {
+ "name": "CtsRoleTestCases",
+ "options": [
+ {
+ "exclude-annotation": "androidx.test.filters.FlakyTest"
+ }
+ ],
+ "file_patterns": ["res/xml/roles\\.xml"]
+ }
+ ]
+}
diff --git a/proguard.flags b/proguard.flags
index 46a929e..a2e5884 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -6,3 +6,8 @@
*;
}
-dontwarn androidx.core.**
+
+# Keep classes that implements RoleBehavior, which are used by reflection.
+-keep class * implements com.android.packageinstaller.role.model.RoleBehavior {
+ *;
+}
diff --git a/res/drawable-hdpi/ic_fail.png b/res/drawable-hdpi/ic_fail.png
deleted file mode 100644
index 30f7563..0000000
--- a/res/drawable-hdpi/ic_fail.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_success.png b/res/drawable-hdpi/ic_success.png
deleted file mode 100644
index f36d491..0000000
--- a/res/drawable-hdpi/ic_success.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/tab_unselected_holo.9.png b/res/drawable-hdpi/tab_unselected_holo.9.png
deleted file mode 100644
index 19532ab..0000000
--- a/res/drawable-hdpi/tab_unselected_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_fail.png b/res/drawable-mdpi/ic_fail.png
deleted file mode 100644
index 12e269e..0000000
--- a/res/drawable-mdpi/ic_fail.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_success.png b/res/drawable-mdpi/ic_success.png
deleted file mode 100644
index 51aab2e..0000000
--- a/res/drawable-mdpi/ic_success.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/tab_unselected_holo.9.png b/res/drawable-mdpi/tab_unselected_holo.9.png
deleted file mode 100644
index a2dbf42..0000000
--- a/res/drawable-mdpi/tab_unselected_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_fail.png b/res/drawable-xhdpi/ic_fail.png
deleted file mode 100644
index 6deb808..0000000
--- a/res/drawable-xhdpi/ic_fail.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_success.png b/res/drawable-xhdpi/ic_success.png
deleted file mode 100644
index 25f8658..0000000
--- a/res/drawable-xhdpi/ic_success.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/tab_unselected_holo.9.png b/res/drawable-xhdpi/tab_unselected_holo.9.png
deleted file mode 100644
index 9465173..0000000
--- a/res/drawable-xhdpi/tab_unselected_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/tab_unselected_holo.9.png b/res/drawable-xxhdpi/tab_unselected_holo.9.png
deleted file mode 100644
index 8fcecf7..0000000
--- a/res/drawable-xxhdpi/tab_unselected_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/button_ripple_bg.xml b/res/drawable/button_ripple_bg.xml
new file mode 100644
index 0000000..a5d21f0
--- /dev/null
+++ b/res/drawable/button_ripple_bg.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 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.
+-->
+
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+ android:color="@*android:color/car_card_ripple_background"
+ android:radius="90dp">
+ <item android:id="@android:id/mask"
+ android:drawable="@drawable/rectangle_ripple_mask" />
+</ripple>
diff --git a/res/drawable/car_ic_info.xml b/res/drawable/car_ic_info.xml
new file mode 100644
index 0000000..bc334fb
--- /dev/null
+++ b/res/drawable/car_ic_info.xml
@@ -0,0 +1,25 @@
+<!--
+ 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ 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
+ android:fillColor="#FF000000"
+ android:pathData="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"/>
+</vector>
diff --git a/res/drawable/car_ic_settings.xml b/res/drawable/car_ic_settings.xml
new file mode 100644
index 0000000..f278af9
--- /dev/null
+++ b/res/drawable/car_ic_settings.xml
@@ -0,0 +1,34 @@
+<!--
+ 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ 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
+ android:fillColor="#FF000000"
+ android:pathData="M21.4 14.2l-1.94-1.45c.03-.25 .04 -.5 .04 -.76s-.01-.51-.04-.76L21.4 9.8c.42-.31
+.52 -.94 .24 -1.41l-1.6-2.76c-.28-.48-.88-.7-1.36-.5l-2.14 .91
+c-.48-.37-1.01-.68-1.57-.92l-.27-2.2c-.06-.52-.56-.92-1.11-.92h-3.18c-.55 0-1.05
+.4 -1.11 .92 l-.26 2.19c-.57 .24 -1.1 .55 -1.58 .92 l-2.14-.91c-.48-.2-1.08 .02
+-1.36 .5 l-1.6 2.76c-.28 .48 -.18 1.1 .24 1.42l1.94 1.45c-.03 .24 -.04 .49 -.04
+.75 s.01 .51 .04 .76 L2.6 14.2c-.42 .31 -.52 .94 -.24 1.41l1.6 2.76c.28 .48 .88
+.7 1.36 .5 l2.14-.91c.48 .37 1.01 .68 1.57 .92 l.27 2.19c.06 .53 .56 .93 1.11
+.93 h3.18c.55 0 1.04-.4 1.11-.92l.27-2.19c.56-.24 1.09-.55 1.57-.92l2.14 .91
+c.48 .2 1.08-.02 1.36-.5l1.6-2.76c.28-.48 .18 -1.1-.24-1.42zM12 15.5c-1.93
+0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5-3.5 3.5z"/>
+</vector>
diff --git a/res/drawable/dialog_background.xml b/res/drawable/dialog_background.xml
deleted file mode 100644
index 91c1d32..0000000
--- a/res/drawable/dialog_background.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-
-<inset xmlns:android="http://schemas.android.com/apk/res/android">
- <shape android:shape="rectangle">
- <corners android:radius="?android:attr/dialogCornerRadius" />
- <solid android:color="?android:attr/colorBackground" />
- </shape>
-</inset>
diff --git a/res/drawable/ic_android_92.xml b/res/drawable/ic_android_92.xml
deleted file mode 100644
index 1d3791c..0000000
--- a/res/drawable/ic_android_92.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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="92dp"
- android:height="92dp"
- android:viewportWidth="92.0"
- android:viewportHeight="92.0">
- <path
- android:fillColor="#000000"
- android:pathData="m23,69c0,2.11 1.72,3.83 3.83,3.83h3.83v13.42c0,3.18 2.57,5.75 5.75,5.75 3.18,0 5.75,-2.57 5.75,-5.75L42.17,72.83h7.67v13.42c0,3.18 2.57,5.75 5.75,5.75 3.18,0 5.75,-2.57 5.75,-5.75L61.33,72.83h3.83c2.11,0 3.83,-1.72 3.83,-3.83L69,30.67L23,30.67L23,69zM13.42,30.67c-3.18,0 -5.75,2.57 -5.75,5.75v26.83c0,3.18 2.57,5.75 5.75,5.75 3.18,0 5.75,-2.57 5.75,-5.75L19.17,36.42c0,-3.18 -2.57,-5.75 -5.75,-5.75zM78.58,30.67c-3.18,0 -5.75,2.57 -5.75,5.75v26.83c0,3.18 2.57,5.75 5.75,5.75 3.18,0 5.75,-2.57 5.75,-5.75L84.33,36.42c0,-3.18 -2.57,-5.75 -5.75,-5.75zM59.53,8.28 L64.53,3.28c0.75,-0.75 0.75,-1.95 0,-2.7 -0.75,-0.75 -1.95,-0.75 -2.7,0L56.16,6.23C53.09,4.72 49.66,3.84 46,3.84c-3.68,0 -7.13,0.88 -10.22,2.41L30.09,0.56c-0.75,-0.75 -1.95,-0.75 -2.7,0 -0.75,0.75 -0.75,1.95 0,2.7l5.02,5.02C26.72,12.48 23,19.23 23,26.84h46c0,-7.63 -3.74,-14.37 -9.47,-18.55zM38.33,19.17h-3.83v-3.83h3.83v3.83zM57.5,19.17h-3.83v-3.83h3.83v3.83z"/>
-</vector>
diff --git a/res/drawable/ic_arrow_back.xml b/res/drawable/ic_arrow_back.xml
index 81da87f..36a3593 100644
--- a/res/drawable/ic_arrow_back.xml
+++ b/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_primary_icon_size"
- android:width="@dimen/car_primary_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/res/drawable/ic_done_92.xml b/res/drawable/ic_arrow_down.xml
similarity index 64%
copy from res/drawable/ic_done_92.xml
copy to res/drawable/ic_arrow_down.xml
index 185b274..a9ecf10 100644
--- a/res/drawable/ic_done_92.xml
+++ b/res/drawable/ic_arrow_down.xml
@@ -1,5 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
+<!-- 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.
@@ -15,11 +14,14 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="92dp"
- android:height="92dp"
- android:viewportWidth="92.0"
- android:viewportHeight="92.0">
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0"
+ android:tint="?android:attr/textColorPrimary">
<path
android:fillColor="#000000"
- android:pathData="M34.5,61.99 L18.51,46 13.09,51.42 34.5,72.83l46,-46 -5.42,-5.42z"/>
-</vector>
+ android:pathData="M7.41,8.59L12,13.17l4.59-4.58L18,10l-6,6l-6-6L7.41,8.59z" />
+ <path
+ android:pathData="M0,0h24v24H0V0z" />
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_done_92.xml b/res/drawable/ic_arrow_up.xml
similarity index 64%
rename from res/drawable/ic_done_92.xml
rename to res/drawable/ic_arrow_up.xml
index 185b274..8366f00 100644
--- a/res/drawable/ic_done_92.xml
+++ b/res/drawable/ic_arrow_up.xml
@@ -1,5 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
+<!-- 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.
@@ -15,11 +14,14 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="92dp"
- android:height="92dp"
- android:viewportWidth="92.0"
- android:viewportHeight="92.0">
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0"
+ android:tint="?android:attr/textColorPrimary">
<path
android:fillColor="#000000"
- android:pathData="M34.5,61.99 L18.51,46 13.09,51.42 34.5,72.83l46,-46 -5.42,-5.42z"/>
-</vector>
+ android:pathData="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z" />
+ <path
+ android:pathData="M0 0h24v24H0z" />
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_bug_report_black_24dp.xml b/res/drawable/ic_bug_report_black_24dp.xml
new file mode 100644
index 0000000..fe7e443
--- /dev/null
+++ b/res/drawable/ic_bug_report_black_24dp.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+ -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0"
+ android:tint="?android:attr/colorControlNormal">
+ <path
+ android:pathData="M20,8h-2.81c-0.45,-0.78 -1.07,-1.45 -1.82,-1.96L17,4.41 15.59,3l-2.17,2.17C12.96,5.06 12.49,5 12,5c-0.49,0 -0.96,0.06 -1.41,0.17L8.41,3 7,4.41l1.62,1.63C7.88,6.55 7.26,7.22 6.81,8L4,8v2h2.09c-0.05,0.33 -0.09,0.66 -0.09,1v1L4,12v2h2v1c0,0.34 0.04,0.67 0.09,1L4,16v2h2.81c1.04,1.79 2.97,3 5.19,3s4.15,-1.21 5.19,-3L20,18v-2h-2.09c0.05,-0.33 0.09,-0.66 0.09,-1v-1h2v-2h-2v-1c0,-0.34 -0.04,-0.67 -0.09,-1L20,10L20,8zM14,16h-4v-2h4v2zM14,12h-4v-2h4v2z"
+ android:fillColor="@android:color/white" />
+</vector>
diff --git a/res/drawable/ic_error.xml b/res/drawable/ic_error.xml
deleted file mode 100644
index 28612a1..0000000
--- a/res/drawable/ic_error.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2016 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.0"
- android:viewportHeight="24.0">
- <path
- android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,17h-2v-2h2v2zM13,13h-2L11,7h2v6z"
- android:fillColor="#000000"/>
-</vector>
diff --git a/res/drawable/ic_file_download.xml b/res/drawable/ic_file_download.xml
deleted file mode 100644
index 7ea91f5..0000000
--- a/res/drawable/ic_file_download.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2016 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:fillColor="#000000"
- android:pathData="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z" />
- <path
- android:pathData="M0 0h24v24H0z" />
-</vector>
diff --git a/res/drawable/ic_done_92.xml b/res/drawable/ic_info.xml
similarity index 61%
copy from res/drawable/ic_done_92.xml
copy to res/drawable/ic_info.xml
index 185b274..365bd33 100644
--- a/res/drawable/ic_done_92.xml
+++ b/res/drawable/ic_info.xml
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
+<!--
+ 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.
@@ -13,13 +13,13 @@
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="92dp"
- android:height="92dp"
- android:viewportWidth="92.0"
- android:viewportHeight="92.0">
+ android:width="16dp"
+ android:height="16dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0"
+ android:tint="?android:attr/colorAccent">
<path
- android:fillColor="#000000"
- android:pathData="M34.5,61.99 L18.51,46 13.09,51.42 34.5,72.83l46,-46 -5.42,-5.42z"/>
-</vector>
+ android:fillColor="#FF000000"
+ android:pathData="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"/>
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_info_outline.xml b/res/drawable/ic_info_outline.xml
index 8659758..b57df44 100644
--- a/res/drawable/ic_info_outline.xml
+++ b/res/drawable/ic_info_outline.xml
@@ -1,24 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+
<!--
-Copyright (C) 2015 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.
+ ~ 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.
+ -->
- 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
+<vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24"
+ android:tint="?android:colorControlNormal">
- 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="24.0dp"
- android:height="24.0dp"
- android:viewportWidth="24.0"
- android:viewportHeight="24.0">
<path
- android:fillColor="?android:attr/colorAccent"
- android:pathData="M11.0,17.0l2.0,0.0l0.0,-6.0l-2.0,0.0l0.0,6.0zm1.0,-15.0C6.48,2.0 2.0,6.48 2.0,12.0s4.48,10.0 10.0,10.0 10.0,-4.48 10.0,-10.0S17.52,2.0 12.0,2.0zm0.0,18.0c-4.41,0.0 -8.0,-3.59 -8.0,-8.0s3.59,-8.0 8.0,-8.0 8.0,3.59 8.0,8.0 -3.59,8.0 -8.0,8.0zM11.0,9.0l2.0,0.0L13.0,7.0l-2.0,0.0l0.0,2.0z"/>
+ android:fillColor="#FF000000"
+ android:pathData="M11,17h2v-6h-2v6zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8zM11,9h2L13,7h-2v2z" />
</vector>
diff --git a/res/drawable/ic_info_outline_accent.xml b/res/drawable/ic_info_outline_accent.xml
new file mode 100644
index 0000000..8659758
--- /dev/null
+++ b/res/drawable/ic_info_outline_accent.xml
@@ -0,0 +1,24 @@
+<!--
+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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24.0dp"
+ android:height="24.0dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:fillColor="?android:attr/colorAccent"
+ android:pathData="M11.0,17.0l2.0,0.0l0.0,-6.0l-2.0,0.0l0.0,6.0zm1.0,-15.0C6.48,2.0 2.0,6.48 2.0,12.0s4.48,10.0 10.0,10.0 10.0,-4.48 10.0,-10.0S17.52,2.0 12.0,2.0zm0.0,18.0c-4.41,0.0 -8.0,-3.59 -8.0,-8.0s3.59,-8.0 8.0,-8.0 8.0,3.59 8.0,8.0 -3.59,8.0 -8.0,8.0zM11.0,9.0l2.0,0.0L13.0,7.0l-2.0,0.0l0.0,2.0z"/>
+</vector>
diff --git a/res/drawable/ic_lock.xml b/res/drawable/ic_lock.xml
deleted file mode 100644
index 396bd98..0000000
--- a/res/drawable/ic_lock.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-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.
--->
-
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="24dp"
- android:height="24dp"
- android:viewportWidth="48"
- android:viewportHeight="48">
- <path
- android:pathData="M0 0h48v48H0z" />
- <path
- android:fillColor="#000000"
- android:pathData="M36 16h-2v-4c0-5.52-4.48-10-10-10S14 6.48 14 12v4h-2c-2.21 0-4 1.79-4 4v20c0
-2.21 1.79 4 4 4h24c2.21 0 4-1.79 4-4V20c0-2.21-1.79-4-4-4zM24 34c-2.21
-0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm6.2-18H17.8v-4c0-3.42 2.78-6.2
-6.2-6.2 3.42 0 6.2 2.78 6.2 6.2v4z" />
-</vector>
diff --git a/res/drawable/ic_permission_controller_app_icon.xml b/res/drawable/ic_permission_controller_app_icon.xml
new file mode 100644
index 0000000..0e75849
--- /dev/null
+++ b/res/drawable/ic_permission_controller_app_icon.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 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.
+ -->
+
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@android:color/darker_gray"/>
+ <foreground android:drawable="@drawable/permission_controller_app_icon_foreground"/>
+</adaptive-icon>
\ No newline at end of file
diff --git a/res/drawable/ic_pin_drop.xml b/res/drawable/ic_pin_drop.xml
new file mode 100644
index 0000000..f28de80
--- /dev/null
+++ b/res/drawable/ic_pin_drop.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:fillColor="@color/system_notification_accent_color"
+ android:pathData="M12,4c1.93,0 5,1.4 5,5.15 0,2.16 -1.72,4.67 -5,7.32 -3.28,-2.65 -5,-5.17 -5,-7.32C7,5.4 10.07,4 12,4m0,-2C8.73,2 5,4.46 5,9.15c0,3.12 2.33,6.41 7,9.85 4.67,-3.44 7,-6.73 7,-9.85C19,4.46 15.27,2 12,2z"/>
+ <path
+ android:fillColor="@color/system_notification_accent_color"
+ android:pathData="M12,7c-1.1,0 -2,0.9 -2,2s0.9,2 2,2a2,2 0,1 0,0 -4zM5,20h14v2H5v-2z"/>
+</vector>
diff --git a/res/drawable/ic_refresh.xml b/res/drawable/ic_refresh.xml
new file mode 100644
index 0000000..d6dceaa
--- /dev/null
+++ b/res/drawable/ic_refresh.xml
@@ -0,0 +1,28 @@
+<!--
+ 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24"
+ android:tint="?android:attr/colorControlNormal">
+
+ <path
+ android:fillColor="#000000"
+ android:pathData="M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-0.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14 0.69 4.22 1.78L13 11h7V4l-2.35 2.35z" />
+ <path
+ android:pathData="M0 0h24v24H0z" />
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_remove.xml b/res/drawable/ic_remove.xml
deleted file mode 100644
index dd46eda..0000000
--- a/res/drawable/ic_remove.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2016 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.0"
- android:viewportHeight="24.0">
- <path
- android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM17,13L7,13v-2h10v2z"
- android:fillColor="#000000"/>
-</vector>
diff --git a/res/drawable/ic_remove_circle.xml b/res/drawable/ic_remove_circle.xml
new file mode 100644
index 0000000..8bceb94
--- /dev/null
+++ b/res/drawable/ic_remove_circle.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ ~ 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.
+ -->
+
+<vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="48dp"
+ android:height="48dp"
+ android:viewportHeight="48"
+ android:viewportWidth="48"
+ android:tint="#DB4437">
+
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M24,4C12.95,4,4,12.95,4,24s8.95,20,20,20,20-8.95,20-20S35.05,4,24,4zm10,22H14v-4h20v4z" />
+</vector>
diff --git a/res/drawable/ic_report_problem_92.xml b/res/drawable/ic_report_problem_92.xml
deleted file mode 100644
index c90a33e..0000000
--- a/res/drawable/ic_report_problem_92.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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="92dp"
- android:height="92dp"
- android:viewportWidth="92.0"
- android:viewportHeight="92.0">
- <path
- android:fillColor="#000000"
- android:pathData="M2,84H90L46,8 2,84zM50,72h-8v-8h8v8zM50,56H42V40h8v16z"/>
-</vector>
diff --git a/res/drawable/ic_settings.xml b/res/drawable/ic_settings.xml
new file mode 100644
index 0000000..28fb10d
--- /dev/null
+++ b/res/drawable/ic_settings.xml
@@ -0,0 +1,34 @@
+<!--
+ 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0"
+ android:tint="?android:attr/colorAccent">
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M21.4 14.2l-1.94-1.45c.03-.25 .04 -.5 .04 -.76s-.01-.51-.04-.76L21.4 9.8c.42-.31
+.52 -.94 .24 -1.41l-1.6-2.76c-.28-.48-.88-.7-1.36-.5l-2.14 .91
+c-.48-.37-1.01-.68-1.57-.92l-.27-2.2c-.06-.52-.56-.92-1.11-.92h-3.18c-.55 0-1.05
+.4 -1.11 .92 l-.26 2.19c-.57 .24 -1.1 .55 -1.58 .92 l-2.14-.91c-.48-.2-1.08 .02
+-1.36 .5 l-1.6 2.76c-.28 .48 -.18 1.1 .24 1.42l1.94 1.45c-.03 .24 -.04 .49 -.04
+.75 s.01 .51 .04 .76 L2.6 14.2c-.42 .31 -.52 .94 -.24 1.41l1.6 2.76c.28 .48 .88
+.7 1.36 .5 l2.14-.91c.48 .37 1.01 .68 1.57 .92 l.27 2.19c.06 .53 .56 .93 1.11
+.93 h3.18c.55 0 1.04-.4 1.11-.92l.27-2.19c.56-.24 1.09-.55 1.57-.92l2.14 .91
+c.48 .2 1.08-.02 1.36-.5l1.6-2.76c.28-.48 .18 -1.1-.24-1.42zM12 15.5c-1.93
+0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5-3.5 3.5z"/>
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_settings_multiuser.xml b/res/drawable/ic_settings_multiuser.xml
deleted file mode 100644
index b24a5d4..0000000
--- a/res/drawable/ic_settings_multiuser.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
- Copyright (C) 2016 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="24.0dp"
- android:height="24.0dp"
- android:viewportWidth="24.0"
- android:viewportHeight="24.0"
- android:tint="?android:attr/colorAccent">
- <path
- android:fillColor="#FFFFFFFF"
- android:pathData="M12.0,12.0c2.21,0.0 4.0,-1.79 4.0,-4.0s-1.79,-4.0 -4.0,-4.0 -4.0,1.79 -4.0,4.0 1.79,4.0 4.0,4.0zm0.0,2.0c-2.67,0.0 -8.0,1.34 -8.0,4.0l0.0,2.0l16.0,0.0l0.0,-2.0c0.0,-2.66 -5.33,-4.0 -8.0,-4.0z"/>
-</vector>
diff --git a/res/drawable/ic_settings_outline.xml b/res/drawable/ic_settings_outline.xml
new file mode 100644
index 0000000..fd826b3
--- /dev/null
+++ b/res/drawable/ic_settings_outline.xml
@@ -0,0 +1,29 @@
+<!--
+ Copyright (C) 2016 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.0"
+ android:viewportHeight="24.0"
+ android:tint="?android:attr/colorControlNormal">
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M13.85,22.25h-3.7c-0.74,0 -1.36,-0.54 -1.45,-1.27l-0.27,-1.89c-0.27,-0.14 -0.53,-0.29 -0.79,-0.46l-1.8,0.72c-0.7,0.26 -1.47,-0.03 -1.81,-0.65L2.2,15.53c-0.35,-0.66 -0.2,-1.44 0.36,-1.88l1.53,-1.19c-0.01,-0.15 -0.02,-0.3 -0.02,-0.46c0,-0.15 0.01,-0.31 0.02,-0.46l-1.52,-1.19C1.98,9.9 1.83,9.09 2.2,8.47l1.85,-3.19c0.34,-0.62 1.11,-0.9 1.79,-0.63l1.81,0.73c0.26,-0.17 0.52,-0.32 0.78,-0.46l0.27,-1.91c0.09,-0.7 0.71,-1.25 1.44,-1.25h3.7c0.74,0 1.36,0.54 1.45,1.27l0.27,1.89c0.27,0.14 0.53,0.29 0.79,0.46l1.8,-0.72c0.71,-0.26 1.48,0.03 1.82,0.65l1.84,3.18c0.36,0.66 0.2,1.44 -0.36,1.88l-1.52,1.19c0.01,0.15 0.02,0.3 0.02,0.46s-0.01,0.31 -0.02,0.46l1.52,1.19c0.56,0.45 0.72,1.23 0.37,1.86l-1.86,3.22c-0.34,0.62 -1.11,0.9 -1.8,0.63l-1.8,-0.72c-0.26,0.17 -0.52,0.32 -0.78,0.46l-0.27,1.91C15.21,21.71 14.59,22.25 13.85,22.25zM13.32,20.72c0,0.01 0,0.01 0,0.02L13.32,20.72zM10.68,20.7l0,0.02C10.69,20.72 10.69,20.71 10.68,20.7zM10.62,20.25h2.76l0.37,-2.55l0.53,-0.22c0.44,-0.18 0.88,-0.44 1.34,-0.78l0.45,-0.34l2.38,0.96l1.38,-2.4l-2.03,-1.58l0.07,-0.56c0.03,-0.26 0.06,-0.51 0.06,-0.78c0,-0.27 -0.03,-0.53 -0.06,-0.78l-0.07,-0.56l2.03,-1.58l-1.39,-2.4l-2.39,0.96l-0.45,-0.35c-0.42,-0.32 -0.87,-0.58 -1.33,-0.77L13.75,6.3l-0.37,-2.55h-2.76L10.25,6.3L9.72,6.51C9.28,6.7 8.84,6.95 8.38,7.3L7.93,7.63L5.55,6.68L4.16,9.07l2.03,1.58l-0.07,0.56C6.09,11.47 6.06,11.74 6.06,12c0,0.26 0.02,0.53 0.06,0.78l0.07,0.56l-2.03,1.58l1.38,2.4l2.39,-0.96l0.45,0.35c0.43,0.33 0.86,0.58 1.33,0.77l0.53,0.22L10.62,20.25zM18.22,17.72c0,0.01 -0.01,0.02 -0.01,0.03L18.22,17.72zM5.77,17.71l0.01,0.02C5.78,17.72 5.77,17.71 5.77,17.71zM3.93,9.47L3.93,9.47C3.93,9.47 3.93,9.47 3.93,9.47zM18.22,6.27c0,0.01 0.01,0.02 0.01,0.02L18.22,6.27zM5.79,6.25L5.78,6.27C5.78,6.27 5.79,6.26 5.79,6.25zM13.31,3.28c0,0.01 0,0.01 0,0.02L13.31,3.28zM10.69,3.26l0,0.02C10.69,3.27 10.69,3.27 10.69,3.26z"/>
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M12,12m-3.5,0a3.5,3.5 0,1 1,7 0a3.5,3.5 0,1 1,-7 0"/>
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_settings_outline_accent.xml b/res/drawable/ic_settings_outline_accent.xml
new file mode 100644
index 0000000..06aefa8
--- /dev/null
+++ b/res/drawable/ic_settings_outline_accent.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ ~ 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.
+ -->
+
+<vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24"
+ android:tint="?android:colorAccent">
+
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M13.85,22.25h-3.7c-0.74,0 -1.36,-0.54 -1.45,-1.27l-0.27,-1.89c-0.27,-0.14 -0.53,-0.29 -0.79,-0.46l-1.8,0.72c-0.7,0.26 -1.47,-0.03 -1.81,-0.65L2.2,15.53c-0.35,-0.66 -0.2,-1.44 0.36,-1.88l1.53,-1.19c-0.01,-0.15 -0.02,-0.3 -0.02,-0.46c0,-0.15 0.01,-0.31 0.02,-0.46l-1.52,-1.19C1.98,9.9 1.83,9.09 2.2,8.47l1.85,-3.19c0.34,-0.62 1.11,-0.9 1.79,-0.63l1.81,0.73c0.26,-0.17 0.52,-0.32 0.78,-0.46l0.27,-1.91c0.09,-0.7 0.71,-1.25 1.44,-1.25h3.7c0.74,0 1.36,0.54 1.45,1.27l0.27,1.89c0.27,0.14 0.53,0.29 0.79,0.46l1.8,-0.72c0.71,-0.26 1.48,0.03 1.82,0.65l1.84,3.18c0.36,0.66 0.2,1.44 -0.36,1.88l-1.52,1.19c0.01,0.15 0.02,0.3 0.02,0.46s-0.01,0.31 -0.02,0.46l1.52,1.19c0.56,0.45 0.72,1.23 0.37,1.86l-1.86,3.22c-0.34,0.62 -1.11,0.9 -1.8,0.63l-1.8,-0.72c-0.26,0.17 -0.52,0.32 -0.78,0.46l-0.27,1.91C15.21,21.71 14.59,22.25 13.85,22.25zM13.32,20.72c0,0.01 0,0.01 0,0.02L13.32,20.72zM10.68,20.7l0,0.02C10.69,20.72 10.69,20.71 10.68,20.7zM10.62,20.25h2.76l0.37,-2.55l0.53,-0.22c0.44,-0.18 0.88,-0.44 1.34,-0.78l0.45,-0.34l2.38,0.96l1.38,-2.4l-2.03,-1.58l0.07,-0.56c0.03,-0.26 0.06,-0.51 0.06,-0.78c0,-0.27 -0.03,-0.53 -0.06,-0.78l-0.07,-0.56l2.03,-1.58l-1.39,-2.4l-2.39,0.96l-0.45,-0.35c-0.42,-0.32 -0.87,-0.58 -1.33,-0.77L13.75,6.3l-0.37,-2.55h-2.76L10.25,6.3L9.72,6.51C9.28,6.7 8.84,6.95 8.38,7.3L7.93,7.63L5.55,6.68L4.16,9.07l2.03,1.58l-0.07,0.56C6.09,11.47 6.06,11.74 6.06,12c0,0.26 0.02,0.53 0.06,0.78l0.07,0.56l-2.03,1.58l1.38,2.4l2.39,-0.96l0.45,0.35c0.43,0.33 0.86,0.58 1.33,0.77l0.53,0.22L10.62,20.25zM18.22,17.72c0,0.01 -0.01,0.02 -0.01,0.03L18.22,17.72zM5.77,17.71l0.01,0.02C5.78,17.72 5.77,17.71 5.77,17.71zM3.93,9.47L3.93,9.47C3.93,9.47 3.93,9.47 3.93,9.47zM18.22,6.27c0,0.01 0.01,0.02 0.01,0.02L18.22,6.27zM5.79,6.25L5.78,6.27C5.78,6.27 5.79,6.26 5.79,6.25zM13.31,3.28c0,0.01 0,0.01 0,0.02L13.31,3.28zM10.69,3.26l0,0.02C10.69,3.27 10.69,3.27 10.69,3.26z" />
+
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M12,12m-3.5,0a3.5,3.5 0,1 1,7 0a3.5,3.5 0,1 1,-7 0" />
+</vector>
diff --git a/res/drawable/ic_success_material.xml b/res/drawable/ic_success_material.xml
deleted file mode 100644
index ebcce3b..0000000
--- a/res/drawable/ic_success_material.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 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.
--->
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
- android:src="@drawable/ic_success"
- android:tint="?android:attr/colorControlNormal" />
diff --git a/res/drawable/ic_fail_material.xml b/res/drawable/list_divider.xml
similarity index 67%
copy from res/drawable/ic_fail_material.xml
copy to res/drawable/list_divider.xml
index 9d53fdc..f9dc551 100644
--- a/res/drawable/ic_fail_material.xml
+++ b/res/drawable/list_divider.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 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.
@@ -13,6 +13,11 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
- android:src="@drawable/ic_fail"
- android:tint="?android:attr/colorControlNormal" />
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ android:tint="?android:attr/colorForeground">
+ <solid android:color="#1f000000" />
+ <size
+ android:height="1dp"
+ android:width="1dp" />
+</shape>
diff --git a/res/drawable/list_divider_dark.xml b/res/drawable/list_divider_dark.xml
new file mode 100644
index 0000000..c5af982
--- /dev/null
+++ b/res/drawable/list_divider_dark.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 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.
+ -->
+
+<shape
+ xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="#64000000" />
+ <size
+ android:height="1dp"
+ android:width="1dp" />
+</shape>
\ No newline at end of file
diff --git a/res/drawable/permission_controller_app_icon_foreground.xml b/res/drawable/permission_controller_app_icon_foreground.xml
new file mode 100644
index 0000000..1ad7eeb
--- /dev/null
+++ b/res/drawable/permission_controller_app_icon_foreground.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 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.
+ -->
+<inset
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:insetTop="27%"
+ android:insetRight="27%"
+ android:insetBottom="27%"
+ android:insetLeft="27%">
+
+ <vector
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="48"
+ android:viewportHeight="48">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M26.0,14.0l-4.0,0.0l0.0,4.0l4.0,0.0l0.0,-4.0zm0.0,8.0l-4.0,0.0l0.0,12.0l4.0,0.0L26.0,22.0zm8.0,-19.98L14.0,2.0c-2.21,0.0 -4.0,1.79 -4.0,4.0l0.0,36.0c0.0,2.21 1.79,4.0 4.0,4.0l20.0,0.0c2.21,0.0 4.0,-1.79 4.0,-4.0L38.0,6.0c0.0,-2.21 -1.79,-3.98 -4.0,-3.98zM34.0,38.0L14.0,38.0L14.0,10.0l20.0,0.0l0.0,28.0z"/>
+ </vector>
+</inset>
diff --git a/res/drawable/rectangle_ripple_mask.xml b/res/drawable/rectangle_ripple_mask.xml
new file mode 100644
index 0000000..1568582
--- /dev/null
+++ b/res/drawable/rectangle_ripple_mask.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 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.
+-->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="rectangle">
+ <corners android:radius="@*android:dimen/car_radius_1" />
+ <solid android:color="@android:color/white" />
+</shape>
diff --git a/res/layout-television/app_details.xml b/res/layout-television/app_details.xml
deleted file mode 100644
index 86923c5..0000000
--- a/res/layout-television/app_details.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.
--->
-
-<!--
-Defines the layout of the application snippet that appears on top of the
-installation screens
--->
-<!-- The snippet about the application - title, icon -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/app_snippet"
- android:layout_width="match_parent"
- android:layout_height="?android:attr/actionBarSize"
- android:orientation="horizontal">
-
- <ImageView android:id="@+id/app_icon"
- android:layout_marginLeft="16dp"
- android:layout_width="24dp"
- android:layout_height="24dp"
- android:layout_gravity="center_vertical"
- android:scaleType="fitCenter" />
-
- <TextView android:id="@+id/app_name"
- android:layout_gravity="center_vertical"
- android:layout_marginLeft="32dp"
- android:layout_marginRight="16dp"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/titleTextStyle"
- android:singleLine="true"
- android:ellipsize="end" />
-
-</LinearLayout>
-
diff --git a/res/layout-television/uninstall_progress.xml b/res/layout-television/uninstall_progress.xml
deleted file mode 100644
index e24f63b..0000000
--- a/res/layout-television/uninstall_progress.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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="match_parent"
- android:orientation="vertical">
-
- <include layout="@layout/app_details"
- android:id="@+id/app_snippet"/>
-
- <LinearLayout android:id="@+id/progress_view"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:gravity="center"
- android:orientation="vertical"
- android:padding="16dp">
-
- <ImageView android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginBottom="12dp"
- android:src="@drawable/ic_android_92"
- android:tint="@color/bigIconColor"
- android:contentDescription="@null" />
-
- <ProgressBar android:id="@+id/progress_bar"
- android:layout_width="250dp"
- android:layout_height="wrap_content"
- android:indeterminate="true"
- style="?android:attr/progressBarStyleHorizontal">
- </ProgressBar>
-
- <TextView android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"
- android:text="@string/uninstalling"
- android:textAppearance="?android:attr/textAppearanceMedium" />
-
- </LinearLayout>
-
- <!-- Status view is shown after progress view is removed -->
- <ScrollView android:id="@+id/status_view"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:visibility="gone"
- android:padding="16dp">
-
- <TextView android:id="@+id/status_text"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="start"
- android:textAppearance="?android:attr/textAppearanceMedium"/>
- </ScrollView>
-
- <LinearLayout android:id="@+id/ok_panel"
- style="?android:attr/buttonBarStyle"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:measureWithLargestChild="true"
- android:visibility="gone"
- android:padding="8dip">
-
- <!-- spacer to push buttons to the right -->
- <View android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_weight="1" />
-
- <Button android:id="@+id/device_manager_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:visibility="gone"
- android:text="@string/manage_device_administrators"
- android:maxLines="2"
- style="?android:attr/buttonBarButtonStyle" />
-
- <Button android:id="@+id/users_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:visibility="gone"
- android:text="@string/manage_users"
- android:maxLines="2"
- style="?android:attr/buttonBarButtonStyle" />
-
- <Button android:id="@+id/ok_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/ok"
- android:maxLines="2"
- style="?android:attr/buttonBarButtonStyle" />
-
- </LinearLayout>
-
-</LinearLayout>
diff --git a/res/layout-watch/wear_review_permission_action_pref.xml b/res/layout-watch/wear_review_permission_action_pref.xml
index 2b10c4d..5970c0a 100644
--- a/res/layout-watch/wear_review_permission_action_pref.xml
+++ b/res/layout-watch/wear_review_permission_action_pref.xml
@@ -16,7 +16,7 @@
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+android:id/title"
+ android:id="@android:id/title"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/res/layout-watch/wear_review_permission_title_pref.xml b/res/layout-watch/wear_review_permission_title_pref.xml
index 6792835..3a0b590 100644
--- a/res/layout-watch/wear_review_permission_title_pref.xml
+++ b/res/layout-watch/wear_review_permission_title_pref.xml
@@ -20,7 +20,7 @@
android:layout_height="wrap_content"
android:paddingBottom="@dimen/wear_permission_review_pref_padding"
android:orientation="vertical">
- <ImageView android:id="@+android:id/icon"
+ <ImageView android:id="@android:id/icon"
android:adjustViewBounds="true"
android:maxHeight="@dimen/wear_permission_review_icon_size"
android:maxWidth="@dimen/wear_permission_review_icon_size"
@@ -28,7 +28,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="centerInside" />
- <TextView android:id="@+android:id/title"
+ <TextView android:id="@android:id/title"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/res/layout/accessibility_service_dialog.xml b/res/layout/accessibility_service_dialog.xml
new file mode 100644
index 0000000..b87f8bd
--- /dev/null
+++ b/res/layout/accessibility_service_dialog.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 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.
+-->
+
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ style="@style/AccessibilityServiceDialogScrollView" >
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ style="@style/AccessibilityServiceDialog" >
+
+ <LinearLayout
+ style="@style/AccessibilityServiceDialogHeader">
+
+ <ImageView
+ android:id="@+id/header_icon"
+ style="@style/AccessibilityServiceDialogHeaderIcon" />
+
+ </LinearLayout>
+
+ <TextView
+ android:id="@+id/title"
+ style="@style/AccessibilityServiceDialogTitle" />
+
+ <LinearLayout
+ android:id="@+id/items_container"
+ style="@style/AccessibilityServiceDialogItemsContainer" />
+
+ <TextView
+ android:id="@+id/middle_text"
+ android:visibility="gone"
+ style="@style/AccessibilityServiceDialogMiddleText"/>
+
+ <TextView
+ android:id="@+id/bottom_text"
+ style="@style/AccessibilityServiceDialogBottomText"/>
+
+ </LinearLayout>
+
+</ScrollView>
diff --git a/res/layout/accessibility_service_dialog_item.xml b/res/layout/accessibility_service_dialog_item.xml
new file mode 100644
index 0000000..45f49a5
--- /dev/null
+++ b/res/layout/accessibility_service_dialog_item.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ style="@style/AccessibilityServiceDialogItem">
+
+ <ImageView
+ android:id="@+id/icon"
+ style="@style/AccessibilityServiceDialogItemIcon" />
+
+ <LinearLayout
+ style="@style/AccessibilityServiceDialogItemDescription">
+
+ <TextView
+ android:id="@+id/title"
+ style="@style/AccessibilityServiceDialogItemTitle" />
+
+ <TextView
+ android:id="@+id/summary"
+ style="@style/AccessibilityServiceDialogItemSummary" />
+
+ </LinearLayout>
+
+</LinearLayout>
diff --git a/res/layout/app_permission.xml b/res/layout/app_permission.xml
new file mode 100644
index 0000000..4afb1d8
--- /dev/null
+++ b/res/layout/app_permission.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 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.
+ -->
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:id="@+id/app_permission_root">
+
+ <androidx.core.widget.NestedScrollView
+ android:id="@+id/nested_scroll_view"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:clipChildren="false">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ style="@style/AppPermission">
+
+ <include layout="@layout/header_large" />
+
+ <LinearLayout
+ style="@style/AppPermissionSelection">
+
+ <TextView
+ android:id="@+id/permission_message"
+ style="@style/AppPermissionMessage"/>
+
+ <RadioGroup
+ android:id="@+id/radiogroup"
+ android:animateLayoutChanges="true"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" >
+
+ <RadioButton
+ android:id="@+id/allow_radio_button"
+ android:text="@string/app_permission_button_allow_always"
+ style="@style/AppPermissionRadioButton" />
+
+ <RadioButton
+ android:id="@+id/foreground_only_radio_button"
+ android:text="@string/app_permission_button_allow_foreground"
+ style="@style/AppPermissionRadioButton" />
+
+ <RadioButton
+ android:id="@+id/deny_radio_button"
+ android:text="@string/app_permission_button_deny"
+ style="@style/AppPermissionRadioButton" />
+
+ </RadioGroup>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+
+ <TextView
+ android:id="@+id/permission_details"
+ style="@style/AppPermissionDetails"/>
+
+ <LinearLayout
+ android:id="@+id/two_target_divider"
+ style="@style/AppPermissionTwoTargetDivider">
+ <View
+ android:layout_width="1dp"
+ android:layout_height="match_parent"
+ android:background="@drawable/list_divider_dark" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/widget_frame"
+ style="@style/AppPermissionWidgetFrame"/>
+
+ </LinearLayout>
+
+ </LinearLayout>
+
+ <LinearLayout
+ style="@style/AppPermissionFooter">
+
+ <View
+ android:id="@+id/divider"
+ style="@style/AppPermissionFooterDivider"/>
+
+ <TextView
+ android:id="@+id/usage_summary"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ style="@style/AppPermissionFooterText"/>
+
+ <TextView
+ android:id="@+id/footer_link_1"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:clickable="true"
+ style="@style/AppPermissionFooterLink"/>
+
+ <TextView
+ android:id="@+id/footer_link_2"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:clickable="true"
+ style="@style/AppPermissionFooterLink"/>
+
+ </LinearLayout>
+
+ </LinearLayout>
+
+ </androidx.core.widget.NestedScrollView>
+
+</LinearLayout>
diff --git a/res/layout/car_app_permissions.xml b/res/layout/car_app_permissions.xml
deleted file mode 100644
index b835264..0000000
--- a/res/layout/car_app_permissions.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
- <RelativeLayout
- android:layout_width="match_parent"
- android:layout_height="@dimen/car_app_bar_height"
- android:gravity="end|center_vertical" >
- <FrameLayout
- android:id="@+id/action_bar_icon_container"
- android:layout_width="@dimen/car_margin"
- android:layout_height="@dimen/car_app_bar_height"
- android:foreground="@drawable/car_list_item_background"
- android:layout_alignParentStart="true">
- <ImageView
- android:tint="@color/car_accent"
- android:layout_gravity="center"
- android:src="@drawable/ic_arrow_back"
- style="@style/ListIcon"/>
- </FrameLayout>
- <TextView
- android:id="@+id/title"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginStart="@dimen/car_margin"
- android:layout_marginTop="@dimen/optical_center_offset"
- android:textAppearance="@style/TextAppearance.Car.Title"
- android:textColor="@color/car_accent"
- android:text="@string/app_permissions"
- android:layout_gravity="center_vertical"
- android:layout_centerVertical="true"
- android:layout_alignParentStart="true"
- android:maxLines="1"
- android:ellipsize="end"/>
- </RelativeLayout>
-
- <View
- android:layout_width="match_parent"
- android:layout_height="@dimen/car_list_divider_height"
- android:background="@color/car_list_divider"/>
-
- <include layout="@layout/list" />
-
-</LinearLayout>
diff --git a/res/layout/car_settings_frame.xml b/res/layout/car_settings_frame.xml
new file mode 100644
index 0000000..4381d01
--- /dev/null
+++ b/res/layout/car_settings_frame.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 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.
+-->
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:layout_width="match_parent"
+ android:layout_height="@*android:dimen/car_app_bar_height">
+
+ <FrameLayout
+ android:id="@+id/back_button"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:background="?android:attr/selectableItemBackground"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toStartOf="@+id/start_margin"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent">
+ <ImageView
+ android:layout_width="@*android:dimen/car_primary_icon_size"
+ android:layout_height="@*android:dimen/car_primary_icon_size"
+ android:layout_gravity="center"
+ android:scaleType="fitCenter"
+ android:src="@drawable/ic_arrow_back"
+ android:tint="?android:attr/textColorPrimary"/>
+ </FrameLayout>
+
+ <androidx.constraintlayout.widget.Guideline
+ android:id="@+id/start_margin"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ app:layout_constraintGuide_begin="@*android:dimen/action_bar_margin_start"/>
+
+ <TextView
+ android:id="@+id/label"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:singleLine="true"
+ android:textAppearance="?android:attr/textAppearanceLarge"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintStart_toEndOf="@+id/start_margin"
+ app:layout_constraintTop_toTopOf="parent"/>
+
+ <Button
+ android:id="@+id/action"
+ style="@*android:style/ActionBarButton"
+ android:layout_width="wrap_content"
+ android:layout_height="0dp"
+ android:layout_marginEnd="@*android:dimen/action_bar_button_margin"
+ android:visibility="gone"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toTopOf="parent"/>
+ </androidx.constraintlayout.widget.ConstraintLayout>
+
+ <ProgressBar
+ android:id="@+id/progress_bar"
+ style="@android:style/Widget.DeviceDefault.ProgressBar.Horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:indeterminate="true"
+ android:visibility="gone"/>
+
+ <FrameLayout
+ android:id="@android:id/list_container"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:paddingEnd="@*android:dimen/car_margin"
+ android:paddingStart="@*android:dimen/car_margin"/>
+</LinearLayout>
diff --git a/res/layout/car_two_target_preference.xml b/res/layout/car_two_target_preference.xml
new file mode 100644
index 0000000..66cf936
--- /dev/null
+++ b/res/layout/car_two_target_preference.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 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.
+-->
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@android:color/transparent"
+ android:gravity="center_vertical"
+ android:minHeight="?android:attr/listPreferredItemHeightSmall">
+ <LinearLayout
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:background="?android:attr/selectableItemBackground"
+ android:clipToPadding="false"
+ android:gravity="start|center_vertical"
+ android:paddingBottom="@*android:dimen/car_preference_row_vertical_margin"
+ android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+ android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+ android:paddingTop="@*android:dimen/car_preference_row_vertical_margin">
+ <androidx.preference.internal.PreferenceImageView
+ android:id="@android:id/icon"
+ 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"
+ android:layout_height="wrap_content"
+ android:layout_centerVertical="true"
+ android:orientation="vertical">
+ <TextView
+ android:id="@android:id/title"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:ellipsize="end"
+ android:hyphenationFrequency="none"
+ android:singleLine="true"
+ android:textAppearance="?android:attr/textAppearanceListItem"/>
+ <TextView
+ android:id="@android:id/summary"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:hyphenationFrequency="none"
+ android:textAppearance="?android:attr/textAppearanceListItemSecondary"/>
+ </LinearLayout>
+ </LinearLayout>
+ <LinearLayout
+ android:id="@+id/action_widget_container"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent">
+ <View
+ android:id="@+id/two_target_divider"
+ android:layout_width="1dp"
+ android:layout_height="match_parent"
+ 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
+ android:id="@android:id/widget_frame"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:background="?android:attr/selectableItemBackground"
+ android:gravity="center"
+ android:minWidth="?android:attr/listPreferredItemHeightSmall"
+ android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+ android:paddingStart="?android:attr/listPreferredItemPaddingStart"/>
+ </LinearLayout>
+</LinearLayout>
diff --git a/res/layout/grant_permissions.xml b/res/layout/grant_permissions.xml
index ee531d2..a93552c 100644
--- a/res/layout/grant_permissions.xml
+++ b/res/layout/grant_permissions.xml
@@ -14,143 +14,77 @@
limitations under the License.
-->
-<com.android.packageinstaller.permission.ui.ManualLayoutFrame
+<!-- In (hopefully very rare) case dialog is too high: allow scrolling -->
+<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:clipChildren="false"
- android:paddingLeft="16dp"
- android:paddingRight="16dp"
- android:paddingTop="8dp"
- android:paddingBottom="32dp"
- android:clipToPadding="false">
-
- <ScrollView android:layout_width="wrap_content"
- android:layout_height="wrap_content">
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ style="@style/PermissionGrantScrollView">
<LinearLayout
- android:id="@+id/dialog_container"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:elevation="16dp"
- android:background="@drawable/dialog_background">
+ style="@style/PermissionGrantSingleton">
- <FrameLayout
- android:id="@+id/desc_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingTop="18dip"
- android:paddingStart="20dip"
- android:paddingEnd="16dip">
- <include
- layout="@layout/permission_description" />
- </FrameLayout>
-
+ <!-- The dialog -->
<LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:paddingStart="20dip"
- android:paddingEnd="16dip">
-
- <CheckBox
- android:id="@+id/do_not_ask_checkbox"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="8dp"
- android:layout_marginBottom="-12dp"
- android:minHeight="48dp"
- android:text="@string/never_ask_again"
- android:textColor="?android:attr/textColorPrimary"
- style="?android:attr/textAppearanceSmall"
- android:visibility="gone">
- </CheckBox>
+ android:theme="@style/Theme.PermissionGrantDialog"
+ style="@style/PermissionGrantDialog">
<LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:paddingStart="6dip"
- android:paddingTop="4dp"
- android:paddingBottom="4dp">
+ android:id="@+id/content_container"
+ style="@style/PermissionGrantContent">
<LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom"
- android:gravity="center"
- android:orientation="horizontal">
- <!-- dummy to enforce correct height -->
- <Button
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- style="?android:attr/buttonBarButtonStyle"
- android:visibility="invisible">
- </Button>
+ style="@style/PermissionGrantDescription">
+
+ <ImageView
+ android:id="@+id/permission_icon"
+ style="@style/PermissionGrantTitleIcon" />
<TextView
- android:id="@+id/current_page_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingEnd="12dp"
- android:singleLine="true"
- style="?android:attr/textAppearanceSmall"
- android:textColor="?android:attr/textColorSecondary"
- android:visibility="gone">
- </TextView>
+ android:id="@+id/permission_message"
+ style="@style/PermissionGrantTitleMessage" />
- <Button
- android:id="@+id/permission_more_info_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- style="?android:attr/buttonBarButtonStyle"
- android:text="@string/grant_dialog_button_more_info"
- android:visibility="gone">
- </Button>
</LinearLayout>
- <com.android.packageinstaller.permission.ui.ButtonBarLayout
- android:id="@+id/button_group"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom"
- android:layout_weight="1"
- android:orientation="horizontal"
- android:gravity="bottom">
-
- <Space
- android:id="@+id/spacer"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:visibility="invisible" >
- </Space>
-
- <Button
- android:id="@+id/permission_deny_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- style="?android:attr/buttonBarButtonStyle"
- android:text="@string/grant_dialog_button_deny" >
- </Button>
-
- <Button
- android:id="@+id/permission_allow_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- style="?android:attr/buttonBarButtonStyle"
- android:text="@string/grant_dialog_button_allow" >
- </Button>
-
- </com.android.packageinstaller.permission.ui.ButtonBarLayout>
+ <TextView
+ android:id="@+id/detail_message"
+ style="@style/PermissionGrantDetailMessage" />
</LinearLayout>
+ <!-- Buttons on bottom of dialog -->
+ <LinearLayout
+ style="@style/PermissionGrantButtonList">
+
+ <Space
+ style="@style/PermissionGrantButtonBarSpace"/>
+
+ <Button
+ android:id="@+id/permission_allow_button"
+ android:text="@string/grant_dialog_button_allow"
+ style="@style/PermissionGrantButtonAllow" />
+
+ <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" />
+
+ <Button
+ android:id="@+id/permission_deny_button"
+ android:text="@string/grant_dialog_button_deny"
+ style="@style/PermissionGrantButtonDeny" />
+
+ <Button
+ android:id="@+id/permission_deny_and_dont_ask_again_button"
+ android:text="@string/grant_dialog_button_deny_and_dont_ask_again"
+ style="@style/PermissionGrantButtonDenyDontAskAgain" />
+ </LinearLayout>
+
</LinearLayout>
-
</LinearLayout>
-
- </ScrollView>
-
-</com.android.packageinstaller.permission.ui.ManualLayoutFrame>
+</ScrollView>
\ No newline at end of file
diff --git a/res/layout/header.xml b/res/layout/header.xml
index 45e6972..e52577d 100644
--- a/res/layout/header.xml
+++ b/res/layout/header.xml
@@ -15,40 +15,19 @@
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="?android:attr/actionBarSize"
- android:background="?android:attr/colorSecondary"
- android:gravity="center_vertical" >
+ style="@style/Header">
<ImageView android:id="@+id/icon"
- android:layout_width="@dimen/header_subsettings_margin_start"
- android:layout_height="40dp"
- android:gravity="end"
- android:layout_centerVertical="true" />
+ style="@style/HeaderIcon" />
<TextView
android:id="@+id/name"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:layout_marginStart="@dimen/header_subsettings_margin_start"
- android:layout_alignWithParentIfMissing="true"
- android:layout_centerVertical="true"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textColor="?android:attr/textColorPrimary"
- android:textAlignment="viewStart" />
+ style="@style/HeaderName" />
<ImageView
android:id="@+id/info"
- android:layout_width="56dp"
- android:layout_height="56dp"
- android:layout_alignParentEnd="true"
- android:layout_marginEnd="@dimen/header_subsettings_margin_end"
- android:layout_centerVertical="true"
- android:minHeight="0dp"
- android:minWidth="0dp"
- android:scaleType="center"
- android:src="@drawable/ic_info_outline"
+ android:src="@drawable/ic_info_outline_accent"
android:contentDescription="@string/app_permissions_info_button_label"
- style="?android:attr/borderlessButtonStyle" />
+ style="@style/HeaderInfo" />
</RelativeLayout>
diff --git a/res/layout/header_large.xml b/res/layout/header_large.xml
new file mode 100644
index 0000000..1a4a06d
--- /dev/null
+++ b/res/layout/header_large.xml
@@ -0,0 +1,35 @@
+<!--
+ 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/large_header"
+ style="@style/LargeHeader">
+
+ <include layout="@layout/settings_entity_header" />
+
+ <TextView
+ android:id="@+id/header_text"
+ style="@style/LargeHeaderText"/>
+
+ <TextView
+ android:id="@+id/header_link"
+ android:clickable="true"
+ style="@style/LargeHeaderLink"/>
+
+ <View
+ style="@style/LargeHeaderDivider"/>
+
+</LinearLayout>
diff --git a/res/drawable/ic_fail_material.xml b/res/layout/image_view.xml
similarity index 64%
copy from res/drawable/ic_fail_material.xml
copy to res/layout/image_view.xml
index 9d53fdc..3b93b6e 100644
--- a/res/drawable/ic_fail_material.xml
+++ b/res/layout/image_view.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
+<!-- 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.
@@ -13,6 +13,14 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
- android:src="@drawable/ic_fail"
- android:tint="?android:attr/colorControlNormal" />
+
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ style="@style/ImageView">
+
+ <com.android.packageinstaller.permission.ui.PreferenceImageView
+ android:id="@+id/icon"
+ style="@style/ImageViewIcon" />
+
+</LinearLayout>
diff --git a/res/layout/incident_confirmation.xml b/res/layout/incident_confirmation.xml
new file mode 100644
index 0000000..c69e498
--- /dev/null
+++ b/res/layout/incident_confirmation.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 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.
+-->
+
+<ScrollView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/scrollView"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:clipToPadding="false">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
+
+ <TextView
+ android:id="@+id/reasonIntro"
+ android:visibility="gone"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingTop="18dp"
+ android:paddingEnd="?android:attr/dialogPreferredPadding"
+ android:paddingStart="?android:attr/dialogPreferredPadding"
+ android:textSize="18sp"
+ style="@android:style/TextAppearance.Material.Subhead"
+ android:text="@string/incident_report_dialog_intro"
+ />
+
+ <TextView
+ android:id="@+id/reasons"
+ android:visibility="gone"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingTop="18dp"
+ android:paddingEnd="?android:attr/dialogPreferredPadding"
+ android:paddingStart="@dimen/incident_reason_padding"
+ android:textSize="18sp"
+ style="@android:style/TextAppearance.Material.Subhead"
+ android:text="@string/incident_report_dialog_intro"
+ />
+
+ <HorizontalScrollView
+ android:id="@+id/imageScrollView"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingTop="18dp"
+ android:clipToPadding="false"
+ android:visibility="gone">
+
+ <LinearLayout
+ android:id="@+id/imageList"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:paddingEnd="?android:attr/dialogPreferredPadding"
+ android:paddingStart="?android:attr/dialogPreferredPadding"
+ >
+ </LinearLayout>
+ </HorizontalScrollView>
+
+ <TextView
+ android:id="@+id/message"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingTop="18dp"
+ android:paddingEnd="?android:attr/dialogPreferredPadding"
+ android:paddingStart="?android:attr/dialogPreferredPadding"
+ android:textSize="18sp"
+ style="@android:style/TextAppearance.Material.Subhead"
+ />
+ </LinearLayout>
+</ScrollView>
+
diff --git a/res/layout/info_preference_widget.xml b/res/layout/info_preference_widget.xml
new file mode 100644
index 0000000..3efa983
--- /dev/null
+++ b/res/layout/info_preference_widget.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 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.
+-->
+
+<ImageView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:src="@drawable/car_ic_info"/>
diff --git a/res/layout/install_confirm.xml b/res/layout/install_confirm.xml
deleted file mode 100644
index 5e31b51..0000000
--- a/res/layout/install_confirm.xml
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2016 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="match_parent"
- android:orientation="vertical">
-
- <LinearLayout android:id="@+id/app_snippet"
- android:background="?android:attr/colorPrimary"
- android:layout_width="match_parent"
- android:layout_height="?android:attr/actionBarSize"
- android:orientation="horizontal"
- android:elevation="@dimen/headerElevation"
- android:gravity="center_vertical">
-
- <ImageView android:id="@+id/app_icon"
- android:layout_marginStart="16dp"
- android:layout_width="24dp"
- android:layout_height="24dp"
- android:scaleType="fitCenter"
- android:src="@drawable/ic_file_download" />
-
- <TextView android:id="@+id/app_name"
- android:layout_marginStart="32dp"
- android:layout_marginEnd="16dp"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/titleTextStyle"
- android:singleLine="true"
- android:text="@string/app_name_unknown"
- android:ellipsize="end" />
-
- </LinearLayout>
-
- <ScrollView android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:padding="16dip">
-
- <TextView android:id="@+id/install_confirm_question"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceMedium" />
-
- </ScrollView>
-
- <LinearLayout style="?android:attr/buttonBarStyle"
- android:background="?android:attr/colorBackground"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:padding="8dp"
- android:measureWithLargestChild="true">
-
- <!-- spacer to push buttons to the right -->
- <View android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_weight="1" />
-
- <Button android:id="@+id/cancel_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/cancel"
- android:maxLines="2"
- style="?android:attr/buttonBarButtonStyle" />
-
- <Button android:id="@+id/ok_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/next"
- android:maxLines="2"
- style="?android:attr/buttonBarButtonStyle" />
-
- </LinearLayout>
-
-</LinearLayout>
diff --git a/res/layout/install_confirm_perm.xml b/res/layout/install_confirm_perm.xml
deleted file mode 100644
index 075126a..0000000
--- a/res/layout/install_confirm_perm.xml
+++ /dev/null
@@ -1,127 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<!--
- Defines the layout of the splash screen that displays the security
- settings required for an application and requests the confirmation of the
- user before it is installed.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
-
- <!-- title bar -->
- <LinearLayout android:id="@+id/app_snippet"
- android:background="?android:attr/colorPrimary"
- android:layout_width="match_parent"
- android:layout_height="?android:attr/actionBarSize"
- android:orientation="horizontal"
- android:elevation="@dimen/headerElevation"
- android:gravity="center_vertical">
-
- <ImageView android:id="@+id/app_icon"
- android:layout_marginStart="16dp"
- android:layout_width="24dp"
- android:layout_height="24dp"
- android:scaleType="fitCenter" />
-
- <TextView android:id="@+id/app_name"
- android:layout_marginStart="32dp"
- android:layout_marginEnd="16dp"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/titleTextStyle"
- android:singleLine="true"
- android:ellipsize="end" />
-
- </LinearLayout>
-
- <TextView android:id="@+id/install_confirm_question"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:background="?android:attr/colorPrimary"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:text="@string/install_confirm_question"
- android:elevation="@dimen/headerElevation"
- android:paddingStart="16dp"
- android:paddingEnd="16dp"
- android:paddingBottom="16dp"/>
-
- <!-- content -->
- <TabHost android:id="@android:id/tabhost"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1">
-
- <LinearLayout android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <TabWidget android:id="@android:id/tabs"
- android:visibility="gone"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" />
-
- <FrameLayout android:id="@android:id/tabcontent"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_weight="0" />
-
- <androidx.viewpager.widget.ViewPager android:id="@+id/pager"
- android:background="?android:attr/windowBackground"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1" />
-
- </LinearLayout>
-
- </TabHost>
-
- <!-- Bottom buttons -->
- <LinearLayout style="?android:attr/buttonBarStyle"
- android:background="?android:attr/colorBackground"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:padding="8dp"
- android:measureWithLargestChild="true">
-
- <!-- spacer to push buttons to the right -->
- <View android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_weight="1" />
-
- <Button android:id="@+id/cancel_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/cancel"
- android:maxLines="2"
- style="?android:attr/buttonBarButtonStyle" />
-
- <Button android:id="@+id/ok_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/next"
- android:maxLines="2"
- style="?android:attr/buttonBarButtonStyle" />
-
- </LinearLayout>
-
-</LinearLayout>
-
-
diff --git a/res/layout/install_confirm_perm_update.xml b/res/layout/install_confirm_perm_update.xml
deleted file mode 100644
index 75f1cdc..0000000
--- a/res/layout/install_confirm_perm_update.xml
+++ /dev/null
@@ -1,153 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<!--
- Defines the layout of the splash screen that displays the security
- settings required for an application and requests the confirmation of the
- user before it is installed.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
-
- <!-- title bar -->
- <LinearLayout android:id="@+id/app_snippet"
- android:background="?android:attr/colorPrimary"
- android:layout_width="match_parent"
- android:layout_height="?android:attr/actionBarSize"
- android:orientation="horizontal"
- android:gravity="center_vertical">
-
- <ImageView android:id="@+id/app_icon"
- android:layout_marginStart="16dp"
- android:layout_width="24dp"
- android:layout_height="24dp"
- android:scaleType="fitCenter" />
-
- <TextView android:id="@+id/app_name"
- android:layout_marginStart="32dp"
- android:layout_marginEnd="16dp"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/titleTextStyle"
- android:singleLine="true"
- android:ellipsize="end" />
-
- </LinearLayout>
-
- <TextView android:id="@+id/install_confirm_question"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:background="?android:attr/colorPrimary"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:text="@string/install_confirm_question"
- android:paddingStart="16dp"
- android:paddingEnd="16dp" />
-
- <!-- content -->
- <LinearLayout android:id="@+id/install_confirm_panel"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
-
- <TabHost android:id="@android:id/tabhost"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1">
-
- <LinearLayout android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <HorizontalScrollView android:id="@+id/tabscontainer"
- android:background="?android:attr/colorPrimary"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:fillViewport="true"
- android:elevation="@dimen/headerElevation"
- android:scrollbars="none">
-
- <FrameLayout android:layout_width="match_parent"
- android:layout_height="wrap_content">
-
- <TabWidget android:id="@android:id/tabs"
- android:orientation="horizontal"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center" />
-
- </FrameLayout>
-
- </HorizontalScrollView>
-
- <!-- divider underneath tabs -->
- <View android:layout_width="match_parent"
- android:layout_height="1dp"
- android:layout_marginTop="-1dp"
- android:background="#1F000000" />
-
- <FrameLayout android:id="@android:id/tabcontent"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_weight="0" />
-
- <androidx.viewpager.widget.ViewPager android:id="@+id/pager"
- android:background="?android:attr/windowBackground"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1" />
-
- </LinearLayout>
-
- </TabHost>
-
- <!-- Bottom buttons -->
- <LinearLayout style="?android:attr/buttonBarStyle"
- android:background="?android:attr/colorBackground"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:padding="8dp"
- android:measureWithLargestChild="true">
-
- <!-- spacer to push buttons to the right -->
- <View android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_weight="1" />
-
- <Button android:id="@+id/cancel_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/cancel"
- android:maxLines="2"
- style="?android:attr/buttonBarButtonStyle" />
-
- <Button android:id="@+id/ok_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/next"
- android:maxLines="2"
- style="?android:attr/buttonBarButtonStyle" />
-
- </LinearLayout>
-
- </LinearLayout>
-
-</LinearLayout>
-
-
diff --git a/res/layout/install_failed.xml b/res/layout/install_failed.xml
deleted file mode 100644
index d000ee9..0000000
--- a/res/layout/install_failed.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2016 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="match_parent"
- android:orientation="vertical">
-
- <LinearLayout android:id="@+id/app_snippet"
- android:background="?android:attr/colorPrimary"
- android:layout_width="match_parent"
- android:layout_height="?android:attr/actionBarSize"
- android:orientation="horizontal"
- android:elevation="@dimen/headerElevation"
- android:gravity="center_vertical">
-
- <ImageView android:id="@+id/app_icon"
- android:layout_marginStart="16dp"
- android:layout_width="24dp"
- android:layout_height="24dp"
- android:scaleType="fitCenter" />
-
- <TextView android:id="@+id/app_name"
- android:layout_marginStart="32dp"
- android:layout_marginEnd="16dp"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/titleTextStyle"
- android:singleLine="true"
- android:ellipsize="end" />
-
- </LinearLayout>
-
- <LinearLayout android:id="@+id/simple_status_view"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:gravity="center"
- android:orientation="vertical"
- android:paddingLeft="16dip"
- android:paddingRight="16dip">
-
- <ImageView android:id="@+id/center_icon"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginBottom="12dp"
- android:src="@drawable/ic_report_problem_92"
- android:tint="@color/bigIconColor"
- android:contentDescription="@null" />
-
- <TextView android:id="@+id/simple_status"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceMedium" />
-
- </LinearLayout>
-
- <LinearLayout android:id="@+id/buttons_panel"
- style="?android:attr/buttonBarStyle"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:measureWithLargestChild="true"
- android:padding="8dip">
-
- <!-- spacer to push button to the right -->
- <View android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_weight="1" />
-
- <Button android:id="@+id/done_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/done"
- android:maxLines="2"
- style="?android:attr/buttonBarButtonStyle" />
-
- </LinearLayout>
-
-</LinearLayout>
-
-
diff --git a/res/layout/install_installing.xml b/res/layout/install_installing.xml
deleted file mode 100644
index a043a01..0000000
--- a/res/layout/install_installing.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!-- Copyright (C) 2016 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="match_parent"
- android:orientation="vertical">
-
- <LinearLayout android:id="@+id/app_snippet"
- android:background="?android:attr/colorPrimary"
- android:layout_width="match_parent"
- android:layout_height="?android:attr/actionBarSize"
- android:orientation="horizontal"
- android:elevation="@dimen/headerElevation"
- android:gravity="center_vertical">
-
- <ImageView
- android:id="@+id/app_icon"
- android:layout_width="24dp"
- android:layout_height="24dp"
- android:layout_marginStart="16dp"
- android:scaleType="fitCenter" />
-
- <TextView
- android:id="@+id/app_name"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginStart="32dp"
- android:layout_marginEnd="16dp"
- android:ellipsize="end"
- android:singleLine="true"
- android:textAppearance="?android:attr/titleTextStyle" />
-
- </LinearLayout>
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:gravity="center"
- android:orientation="vertical"
- android:paddingLeft="16dip"
- android:paddingRight="16dip">
-
- <ImageView
- android:layout_width="92dp"
- android:layout_height="92dp"
- android:layout_marginBottom="12dp"
- android:contentDescription="@null"
- android:tint="@color/bigIconColor"
- android:src="@drawable/ic_file_download" />
-
- <ProgressBar
- android:id="@+id/progress_bar"
- style="?android:attr/progressBarStyleHorizontal"
- android:layout_width="250dp"
- android:layout_height="wrap_content"
- android:indeterminate="false" />
-
- <TextView
- android:id="@+id/center_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"
- android:text="@string/installing"
- android:textAppearance="?android:attr/textAppearanceMedium" />
-
- </LinearLayout>
-
- <LinearLayout
- android:id="@+id/buttons_panel"
- style="?android:attr/buttonBarStyle"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:measureWithLargestChild="true"
- android:orientation="horizontal"
- android:padding="8dip">
-
- <View
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_weight="1" />
-
- <Button
- android:id="@+id/cancel_button"
- style="?android:attr/buttonBarButtonStyle"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:maxLines="2"
- android:text="@string/cancel" />
-
- </LinearLayout>
-
-</LinearLayout>
diff --git a/res/layout/install_staging.xml b/res/layout/install_staging.xml
deleted file mode 100644
index e3022e7..0000000
--- a/res/layout/install_staging.xml
+++ /dev/null
@@ -1,113 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2016 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.
- -->
-
-<!--
- Defines the layout of the splash screen that displays the security
- settings required for an application and requests the confirmation of the
- user before it is installed.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
-
- <!-- title bar -->
- <LinearLayout android:id="@+id/app_snippet"
- android:layout_width="match_parent"
- android:layout_height="?android:attr/actionBarSize"
- android:background="?android:attr/colorPrimary"
- android:elevation="@dimen/headerElevation"
- android:gravity="center_vertical"
- android:orientation="horizontal">
-
- <ImageView android:layout_width="24dp"
- android:layout_height="24dp"
- android:layout_marginLeft="16dp"
- android:scaleType="fitCenter"
- android:src="@drawable/ic_file_download"
- android:tint="?android:attr/colorAccent" />
-
- <TextView android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="32dp"
- android:layout_marginRight="16dp"
- android:ellipsize="end"
- android:singleLine="true"
- android:text="@string/app_name_unknown"
- android:textAppearance="?android:attr/titleTextStyle" />
-
- </LinearLayout>
-
- <!-- content -->
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:gravity="center"
- android:orientation="vertical"
- android:paddingLeft="16dip"
- android:paddingRight="16dip">
-
- <ImageView
- android:layout_width="92dp"
- android:layout_height="92dp"
- android:scaleType="fitCenter"
- android:layout_marginBottom="12dp"
- android:contentDescription="@null"
- android:tint="@color/bigIconColor"
- android:src="@drawable/ic_file_download" />
-
- <ProgressBar
- style="?android:attr/progressBarStyleHorizontal"
- android:layout_width="250dp"
- android:layout_height="wrap_content"
- android:indeterminate="true" />
-
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"
- android:text="@string/message_staging"
- android:textAppearance="?android:attr/textAppearanceMedium" />
-
- </LinearLayout>
-
- <!-- Bottom buttons -->
- <LinearLayout style="?android:attr/buttonBarStyle"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:padding="8dp">
-
- <!-- spacer to push button to the right -->
- <View android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_weight="1" />
-
- <Button android:id="@+id/cancel_button"
- style="?android:attr/buttonBarButtonStyle"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:maxLines="2"
- android:text="@string/cancel" />
-
- </LinearLayout>
-
-</LinearLayout>
-
-
diff --git a/res/layout/install_success.xml b/res/layout/install_success.xml
deleted file mode 100644
index fee6bed..0000000
--- a/res/layout/install_success.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2016 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="match_parent"
- android:orientation="vertical">
-
- <LinearLayout android:id="@+id/app_snippet"
- android:background="?android:attr/colorPrimary"
- android:layout_width="match_parent"
- android:layout_height="?android:attr/actionBarSize"
- android:orientation="horizontal"
- android:elevation="@dimen/headerElevation"
- android:gravity="center_vertical">
-
- <ImageView android:id="@+id/app_icon"
- android:layout_marginStart="16dp"
- android:layout_width="24dp"
- android:layout_height="24dp"
- android:scaleType="fitCenter" />
-
- <TextView android:id="@+id/app_name"
- android:layout_marginStart="32dp"
- android:layout_marginEnd="16dp"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/titleTextStyle"
- android:singleLine="true"
- android:ellipsize="end" />
-
- </LinearLayout>
-
- <LinearLayout android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:gravity="center"
- android:orientation="vertical"
- android:paddingLeft="16dip"
- android:paddingRight="16dip">
-
- <ImageView android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginBottom="12dp"
- android:src="@drawable/ic_done_92"
- android:tint="@color/bigIconColor"
- android:contentDescription="@null" />
-
- <TextView android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"
- android:text="@string/install_done"
- android:textAppearance="?android:attr/textAppearanceMedium" />
-
- </LinearLayout>
-
- <LinearLayout style="?android:attr/buttonBarStyle"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:measureWithLargestChild="true"
- android:padding="8dip">
-
- <!-- spacer to push buttons to the right -->
- <View android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_weight="1" />
-
- <Button android:id="@+id/done_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/done"
- android:maxLines="2"
- style="?android:attr/buttonBarButtonStyle" />
-
- <Button android:id="@+id/launch_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/launch"
- android:maxLines="2"
- style="?android:attr/buttonBarButtonStyle" />
-
- </LinearLayout>
-
-</LinearLayout>
-
-
diff --git a/res/layout/loading_container.xml b/res/layout/loading_container.xml
index 5a165de..de6c801 100644
--- a/res/layout/loading_container.xml
+++ b/res/layout/loading_container.xml
@@ -28,9 +28,7 @@
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/loading"
- android:paddingTop="4dip"
- android:singleLine="true" />
+ style="@style/LoadingContainerTextView"/>
</LinearLayout>
diff --git a/res/layout/ongoing_usage_dialog_content.xml b/res/layout/ongoing_usage_dialog_content.xml
new file mode 100644
index 0000000..219b4f9
--- /dev/null
+++ b/res/layout/ongoing_usage_dialog_content.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 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.
+-->
+
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/container"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ style="@style/PermissionUsageDialogContainerScrollView">
+
+ <LinearLayout
+ android:id="@+id/dialog_container"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ style="@style/PermissionUsageDialogContainerLayout">
+
+ <TextView
+ android:id="@+id/title"
+ style="@style/PermissionUsageDialogTitle"/>
+
+ <LinearLayout
+ android:id="@+id/items_container"
+ style="@style/PermissionUsageDialogItemsContainer"/>
+
+ </LinearLayout>
+
+</ScrollView>
diff --git a/res/layout/ongoing_usage_dialog_item.xml b/res/layout/ongoing_usage_dialog_item.xml
new file mode 100644
index 0000000..08fbf27
--- /dev/null
+++ b/res/layout/ongoing_usage_dialog_item.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ style="@style/PermissionUsageDialogItemContainer">
+
+ <FrameLayout
+ style="@style/PermissionUsageDialogItemIconFrame">
+
+ <ImageView
+ android:id="@+id/app_icon"
+ style="@style/PermissionUsageDialogItemIcon"/>
+
+ </FrameLayout>
+
+ <TextView
+ android:id="@+id/app_name"
+ style="@style/PermissionUsageDialogItemAppName"/>
+
+ <LinearLayout
+ android:id="@+id/icons"
+ style="@style/PermissionUsageDialogItemIconsContainer"/>
+
+</LinearLayout>
diff --git a/res/layout/permission_description.xml b/res/layout/permission_description.xml
deleted file mode 100644
index 46b0e7c..0000000
--- a/res/layout/permission_description.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/perm_desc_root"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal">
-
- <ImageView
- android:id="@+id/permission_icon"
- android:layout_width="36dip"
- android:layout_height="36dip"
- android:tint="?android:attr/colorAccent"
- android:scaleType="fitCenter" >
- </ImageView>
-
- <TextView
- android:id="@+id/permission_message"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingStart="16dip"
- android:textSize="20sp"
- style="@android:style/TextAppearance.Material.Subhead">
- </TextView>
-
-</LinearLayout>
diff --git a/res/layout/permission_filter_dialog.xml b/res/layout/permission_filter_dialog.xml
new file mode 100644
index 0000000..cb48899
--- /dev/null
+++ b/res/layout/permission_filter_dialog.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ style="@style/PermissionFilterDialogContainer">
+
+ <LinearLayout
+ android:id="@+id/title_container"
+ style="@style/PermissionFilterDialogTitleContainer">
+
+ <TextView
+ android:id="@+id/title"
+ style="@style/PermissionFilterDialogTitle"/>
+
+ </LinearLayout>
+
+ <ScrollView
+ android:id="@+id/scroll_view"
+ style="@style/PermissionFilterDialogScrollView">
+
+ <LinearLayout
+ style="@style/PermissionFilterDialogInnerContainer">
+
+ <RadioGroup
+ android:id="@+id/radiogroup"
+ android:animateLayoutChanges="true"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" >
+
+ <LinearLayout
+ android:id="@+id/items_container"
+ style="@style/PermissionFilterDialogItemsContainer"/>
+
+ </RadioGroup>
+
+ </LinearLayout>
+
+ </ScrollView>
+
+</LinearLayout>
diff --git a/res/layout/permission_filter_dialog_item.xml b/res/layout/permission_filter_dialog_item.xml
new file mode 100644
index 0000000..e13c6c6
--- /dev/null
+++ b/res/layout/permission_filter_dialog_item.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ style="@style/PermissionFilterDialogItemContainer">
+
+ <RadioButton
+ android:id="@+id/radio_button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" />
+
+ <LinearLayout
+ style="@style/PermissionFilterDialogItemTextFrame">
+
+ <TextView
+ android:id="@+id/title"
+ style="@style/PermissionFilterDialogItemTitle"/>
+
+ <TextView
+ android:id="@+id/summary"
+ style="@style/PermissionFilterDialogItemSummary"/>
+
+ </LinearLayout>
+
+</LinearLayout>
diff --git a/res/layout/permissions_frame.xml b/res/layout/permissions_frame.xml
index 156af57..70a8975 100644
--- a/res/layout/permissions_frame.xml
+++ b/res/layout/permissions_frame.xml
@@ -14,27 +14,39 @@
limitations under the License.
-->
-<FrameLayout
+<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <include layout="@layout/progress_header" />
<FrameLayout
- android:id="@+id/prefs_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
- <TextView
- android:id="@+id/no_permissions"
+ <androidx.core.widget.NestedScrollView
+ android:id="@+id/nested_scroll_view"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:text="@string/no_permissions"
- android:gravity="center"
- style="?android:attr/textAppearanceLarge">
- </TextView>
+ 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"
+ style="@style/PermissionsFrameNoPermissionsText" />
+
+ </LinearLayout>
+
+ </androidx.core.widget.NestedScrollView>
+
+ <include layout="@layout/loading_container" />
</FrameLayout>
- <include layout="@layout/loading_container" />
-
-</FrameLayout>
+</LinearLayout>
diff --git a/res/layout/permissions_list.xml b/res/layout/permissions_list.xml
deleted file mode 100644
index 5e3ae0f..0000000
--- a/res/layout/permissions_list.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 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.
--->
-
-<!--
-This is the structure for the list of all permissions.
--->
-<com.android.packageinstaller.CaffeinatedScrollView
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/scrollview"
- android:fillViewport="true">
- <LinearLayout
- android:id="@+id/permission_list"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:paddingEnd="4dp"
- android:layout_height="wrap_content">
- </LinearLayout>
-</com.android.packageinstaller.CaffeinatedScrollView>
diff --git a/res/layout/preference_category_material.xml b/res/layout/preference_category_material.xml
deleted file mode 100644
index f62260b..0000000
--- a/res/layout/preference_category_material.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<!-- Based on frameworks/base/core/res/res/layout/preference_category_material.xml
- but has a ViewGroup at the root to make the support lib happy.-->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical">
-
- <TextView
- android:id="@android:id/title"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="16dip"
- android:textAppearance="@android:style/TextAppearance.Material.Body2"
- android:paddingStart="?android:attr/listPreferredItemPaddingStart"
- android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
- android:textColor="?android:attr/colorAccent"
- android:paddingTop="16dip" />
-
-</LinearLayout>
diff --git a/res/layout/preference_usage.xml b/res/layout/preference_usage.xml
new file mode 100644
index 0000000..154d94c
--- /dev/null
+++ b/res/layout/preference_usage.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ 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.
+ -->
+
+<androidx.constraintlayout.widget.ConstraintLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ style="@style/PreferenceUsage">
+
+ <include layout="@layout/image_frame"
+ android:id="@+id/image_frame_include"
+ style="@style/PreferenceUsageImageFrame"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent"/>
+
+ <LinearLayout
+ android:id="@+id/title_widget_frame"
+ style="@style/PreferenceUsageTitleWidgetFrame"
+ app:layout_constraintStart_toEndOf="@+id/image_frame_include"
+ app:layout_constraintBottom_toBottomOf="@android:id/title"/>
+
+ <TextView
+ android:id="@android:id/title"
+ style="@style/PreferenceUsageTitle"
+ app:layout_constraintStart_toEndOf="@+id/title_widget_frame"
+ app:layout_constraintBottom_toTopOf="@android:id/summary"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintVertical_chainStyle="packed"/>
+
+ <LinearLayout
+ android:id="@+id/summary_widget_frame"
+ style="@style/PreferenceUsageSummaryWidgetFrame"
+ app:layout_constraintStart_toEndOf="@+id/image_frame_include"
+ app:layout_constraintBottom_toBottomOf="@android:id/summary"/>
+
+ <TextView
+ android:id="@android:id/summary"
+ style="@style/PreferenceUsageSummary"
+ app:layout_constraintStart_toEndOf="@+id/summary_widget_frame"
+ app:layout_constraintTop_toBottomOf="@android:id/title"
+ app:layout_constraintEnd_toStartOf="@android:id/widget_frame"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintVertical_chainStyle="packed"/>
+
+ <!-- Preference should place its actual preference widget here. -->
+ <LinearLayout
+ android:id="@android:id/widget_frame"
+ style="@style/PreferenceUsageWidgetFrame"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/res/layout/radio_button_preference_widget.xml b/res/layout/radio_button_preference_widget.xml
new file mode 100644
index 0000000..cd2a2ce
--- /dev/null
+++ b/res/layout/radio_button_preference_widget.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ ~ 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.
+ -->
+
+<FrameLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="wrap_content"
+ android:minWidth="56dp"
+ android:layout_height="match_parent">
+
+ <RadioButton
+ android:id="@id/radio_button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:background="@null"
+ android:clickable="false"
+ android:focusable="false" />
+</FrameLayout>
diff --git a/res/layout/request_role_item.xml b/res/layout/request_role_item.xml
new file mode 100644
index 0000000..95c92e8
--- /dev/null
+++ b/res/layout/request_role_item.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ ~ 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.
+ -->
+
+<com.android.packageinstaller.role.ui.CheckableLinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ style="@style/RequestRoleItem">
+
+ <ImageView
+ android:id="@+id/icon"
+ android:duplicateParentState="true"
+ style="@style/RequestRoleItemIcon" />
+
+ <LinearLayout
+ android:id="@+id/title_and_subtitle"
+ android:duplicateParentState="true"
+ style="@style/RequestRoleItemTitleLayout">
+
+ <TextView
+ android:id="@+id/title"
+ android:duplicateParentState="true"
+ style="@style/RequestRoleItemTitleText" />
+
+ <TextView
+ android:id="@+id/subtitle"
+ android:duplicateParentState="true"
+ style="@style/RequestRoleItemSubtitleText" />
+ </LinearLayout>
+
+ <RadioButton
+ android:clickable="false"
+ android:duplicateParentState="true"
+ android:focusable="false"
+ style="@style/RequestRoleItemRadioButton" />
+</com.android.packageinstaller.role.ui.CheckableLinearLayout>
diff --git a/res/layout/request_role_title.xml b/res/layout/request_role_title.xml
new file mode 100644
index 0000000..48842f0
--- /dev/null
+++ b/res/layout/request_role_title.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ ~ 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.
+ -->
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ style="@style/RequestRoleTitle">
+
+ <ImageView
+ android:id="@+id/icon"
+ style="@style/RequestRoleTitleIcon" />
+
+ <TextView
+ android:id="@+id/title"
+ style="@style/RequestRoleTitleText" />
+</LinearLayout>
diff --git a/res/layout/request_role_view.xml b/res/layout/request_role_view.xml
new file mode 100644
index 0000000..f0b86df
--- /dev/null
+++ b/res/layout/request_role_view.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ ~ 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.
+ -->
+
+<FrameLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ style="@style/RequestRoleView">
+
+ <CheckBox
+ android:id="@+id/dont_ask_again"
+ android:text="@string/request_role_dont_ask_again"
+ style="@style/RequestRoleViewCheckbox" />
+</FrameLayout>
diff --git a/res/layout/review_permissions.xml b/res/layout/review_permissions.xml
index d771ce1..e38ec09 100644
--- a/res/layout/review_permissions.xml
+++ b/res/layout/review_permissions.xml
@@ -16,95 +16,68 @@
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_marginTop="32dip"
- android:layout_marginBottom="8dip"
- android:orientation="vertical">
+ style="@style/PermissionReview">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginStart="16dip"
- android:layout_marginEnd="16dip"
- android:layout_marginBottom="16dip"
- android:orientation="horizontal">
+ android:visibility="visible"
+ style="@style/PermissionReviewDescription">
<ImageView
android:id="@+id/app_icon"
- android:layout_width="36dip"
- android:layout_height="36dip"
- android:scaleType="fitCenter">
- </ImageView>
+ android:visibility="visible"
+ style="@style/PermissionReviewTitleIcon" />
<TextView
android:id="@+id/permissions_message"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginStart="16dip"
- style="?android:attr/textAppearanceMedium">
- </TextView>
+ android:visibility="visible"
+ style="@style/PermissionReviewTitleMessage" />
</LinearLayout>
<FrameLayout
android:id="@+id/preferences_frame"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_marginStart="2dip"
- android:layout_marginEnd="2dip"
- android:layout_weight="1">
- </FrameLayout>
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:visibility="visible"
+ style="@style/PermissionReviewSettings" />
<LinearLayout
- android:layout_width="fill_parent"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
- android:paddingStart="2dip"
- android:paddingTop="16dip">
+ style="?android:attr/buttonBarStyle">
<Button
android:id="@+id/permission_more_info_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom"
- style="?android:attr/buttonBarButtonStyle"
+ android:visibility="gone"
+ style="@style/PermissionReviewButtonMoreInfo"
android:text="@string/grant_dialog_button_more_info">
</Button>
<Space
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:visibility="invisible">
+ style="@style/PermissionReviewButtonBarSpace">
</Space>
- <com.android.packageinstaller.permission.ui.ButtonBarLayout
+ <LinearLayout
android:id="@+id/button_group"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom"
- android:orientation="horizontal"
- android:gravity="bottom">
+ style="@style/PermissionReviewButtonBar">
<Button
android:id="@+id/cancel_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- style="?android:attr/buttonBarButtonStyle"
+ style="@style/PermissionReviewButtonCancel"
android:text="@string/review_button_cancel">
</Button>
<Button
android:id="@+id/continue_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- style="?android:attr/buttonBarButtonStyle"
- android:layout_marginStart="8dip"
+ style="@style/PermissionReviewButtonContinue"
android:text="@string/review_button_continue">
</Button>
- </com.android.packageinstaller.permission.ui.ButtonBarLayout>
+ </LinearLayout>
</LinearLayout>
diff --git a/res/layout/settings.xml b/res/layout/settings.xml
new file mode 100644
index 0000000..bc34f2d
--- /dev/null
+++ b/res/layout/settings.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ ~ 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.
+ -->
+
+<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"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:orientation="vertical"
+ android:visibility="invisible">
+
+ <ProgressBar
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ style="?android:progressBarStyle" />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="8dp"
+ android:text="@string/loading"
+ android:textAppearance="@android:style/TextAppearance.Material.Body1" />
+ </LinearLayout>
+
+ <TextView
+ android:id="@+id/empty"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:visibility="invisible"
+ style="@android:style/TextAppearance.Material.Subhead" />
+</FrameLayout>
diff --git a/res/layout/settings_button_preference_widget.xml b/res/layout/settings_button_preference_widget.xml
new file mode 100644
index 0000000..1c1025a
--- /dev/null
+++ b/res/layout/settings_button_preference_widget.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ ~ 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.
+ -->
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:orientation="horizontal">
+
+ <View style="@style/SettingsButtonPreferenceWidgetDivider" />
+
+ <ImageButton
+ android:id="@+id/settings_button"
+ android:contentDescription="@string/settings_button"
+ android:src="@drawable/ic_settings_outline_accent"
+ style="@style/SettingsButtonPreferenceWidgetButton" />
+
+</LinearLayout>
diff --git a/res/layout/settings_preference_widget.xml b/res/layout/settings_preference_widget.xml
new file mode 100644
index 0000000..70f8cd6
--- /dev/null
+++ b/res/layout/settings_preference_widget.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 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.
+-->
+
+<ImageView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:src="@drawable/car_ic_settings"/>
diff --git a/res/layout/label.xml b/res/layout/title_summary_image_view.xml
similarity index 60%
rename from res/layout/label.xml
rename to res/layout/title_summary_image_view.xml
index e1a5143..2aa1440 100644
--- a/res/layout/label.xml
+++ b/res/layout/title_summary_image_view.xml
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
+<!-- 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.
@@ -14,9 +14,14 @@
limitations under the License.
-->
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:gravity="center"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:padding="16dp"/>
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content">
+
+ <com.android.packageinstaller.permission.ui.PreferenceImageView
+ android:id="@+id/icon"
+ style="@style/TitleSummaryImageViewIcon" />
+
+</LinearLayout>
diff --git a/res/layout/two_target_preference.xml b/res/layout/two_target_preference.xml
new file mode 100644
index 0000000..4e3fce9
--- /dev/null
+++ b/res/layout/two_target_preference.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ ~ 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.
+ -->
+
+<!-- The transparent background prevents PreferenceGroupAdapter from adding a background. -->
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ 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/res/layout/uninstall_confirm.xml b/res/layout/uninstall_confirm.xml
deleted file mode 100644
index 4c81771..0000000
--- a/res/layout/uninstall_confirm.xml
+++ /dev/null
@@ -1,130 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.
--->
-
-<!--
-
- Defines the layout of the confirmation screen that gets displayed when an
- application is about to be uninstalled. Includes ok and cancel buttons
- to let the uinstallation continue or abort.
--->
-
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <LinearLayout
- android:layout_weight="1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:orientation="vertical"
- android:paddingBottom="8dip">
-
- <!-- If an activity was specified, explains what package it's in. -->
- <TextView
- android:id="@+id/activity_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingStart="16dip"
- android:paddingEnd="16dip"
- android:textColor="?android:attr/textColorSecondary"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:visibility="gone" />
-
- <!-- The snippet (title & icon) about the application being uninstalled. -->
- <include
- layout="@layout/app_details"
- android:id="@+id/uninstall_activity_snippet" />
-
- <FrameLayout
- android:id="@+id/top_divider"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingTop="4dip"
- android:paddingStart="16dip"
- android:paddingEnd="16dip" >
- <ProgressBar
- android:id="@+id/progress_bar"
- style="?android:attr/progressBarStyleHorizontal"
- android:layout_width="match_parent"
- android:layout_height="wrap_content" />
- </FrameLayout>
-
- <!-- uninstall application confirmation text -->
- <TextView
- android:id="@+id/uninstall_confirm"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="?android:attr/textColorSecondary"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:paddingStart="24dip"
- android:paddingEnd="24dip" />
-
- </LinearLayout>
-
- <!-- OK confirm and cancel buttons. -->
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:divider="?android:attr/dividerHorizontal"
- android:showDividers="beginning"
- android:paddingTop="16dip">
-
- <LinearLayout
- style="?android:attr/buttonBarStyle"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:measureWithLargestChild="true">
-
- <LinearLayout android:id="@+id/leftSpacer"
- android:layout_weight="0.25"
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:visibility="gone" />
-
- <Button android:id="@+id/cancel_button"
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:layout_gravity="start"
- android:layout_weight="1"
- android:text="@string/cancel"
- android:maxLines="2"
- style="?android:attr/buttonBarButtonStyle" />
-
- <Button android:id="@+id/ok_button"
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:layout_gravity="end"
- android:layout_weight="1"
- android:text="@string/ok"
- android:maxLines="2"
- style="?android:attr/buttonBarButtonStyle" />
-
- <LinearLayout android:id="@+id/rightSpacer"
- android:layout_width="0dip"
- android:layout_weight="0.25"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:visibility="gone" />
-
- </LinearLayout>
- </LinearLayout>
-</LinearLayout>
diff --git a/res/menu/settings.xml b/res/menu/settings.xml
new file mode 100644
index 0000000..74c0e3f
--- /dev/null
+++ b/res/menu/settings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ ~ 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.
+ -->
+
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <item
+ android:id="@+id/action_search"
+ android:icon="@drawable/ic_search_24dp"
+ android:title="@string/search_menu"
+ android:showAsAction="always" />
+</menu>
diff --git a/res/values-af-television/strings.xml b/res/values-af-television/strings.xml
index b798b95..b887c72 100644
--- a/res/values-af-television/strings.xml
+++ b/res/values-af-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Weier en moenie weer vra nie"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Jy kan dit later verander in Instellings > Programme"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Wys stelselprogramme"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Programtoestemmings"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Programtoestemmings"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> toestemmings"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Bykomende toestemmings"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> toestemmings"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Weier en moenie weer vra nie"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Jy kan dit later verander in Instellings > Programme"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Wys stelselprogramme"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Programtoestemmings"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Programtoestemmings"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g>-toestemmings"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Bykomende toestemmings"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g>-toestemmings"</string>
</resources>
diff --git a/res/values-af-watch/strings.xml b/res/values-af-watch/strings.xml
index a62540f..e0c2e5f 100644
--- a/res/values-af-watch/strings.xml
+++ b/res/values-af-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Weier; moenie weer vra nie"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Wys stelselprogramme"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Onveranderbaar"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Ja"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Kanselleer"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Weier; moenie weer vra nie"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Wys stelselprogramme"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Onveranderbaar"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Ja"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Kanselleer"</string>
</resources>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 86fb9c6..557c7cf 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Pakketinstalleerder"</string>
- <string name="next" msgid="3057143178373252333">"Volgende"</string>
- <string name="install" msgid="5896438203900042068">"Installeer"</string>
- <string name="done" msgid="3889387558374211719">"Klaar"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Laat hierdie program toe om:"</string>
- <string name="cancel" msgid="8360346460165114585">"Kanselleer"</string>
- <string name="unknown" msgid="4742479012767208045">"Onbekend"</string>
- <string name="installing" msgid="8613631001631998372">"Installeer tans…"</string>
- <string name="installing_app" msgid="4097935682329028894">"Installeer tans <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> …"</string>
- <string name="install_done" msgid="3682715442154357097">"Program geïnstalleer."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Wil jy hierdie program installeer? Dit sal kan ingaan by:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Wil jy hierdie program installeer? Dit vereis nie enige spesiale toegang nie."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Wil jy \'n opdatering vir die bestaande program installeer? Jou bestaande data sal nie verlore gaan nie. Die opgedateerde program sal kan ingaan by:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Wil jy \'n opdatering vir hierdie ingeboude program installeer? Jou bestaande data sal nie verlore gaan nie. Die opgedateerde program sal kan ingaan by:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Wil jy \'n opdatering na hierdie bestaande program installeer? Jou bestaande data sal nie verlore raak nie. Dit vereis nie enige spesiale toegang nie."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Wil jy \'n opdatering na hierdie ingeboude program installeer? Jou bestaande data sal nie verlore raak nie. Dit vereis nie enige spesiale toegang nie."</string>
- <string name="install_failed" msgid="6579998651498970899">"Program nie geïnstalleer nie."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Die installering van die pakket is geblokkeer."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Program is nie geïnstalleer nie omdat pakket met \'n bestaande pakket bots."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Program is nie geïnstalleer nie omdat dit nie met jou tablet versoenbaar is nie."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Hierdie program is nie met jou TV versoenbaar nie."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Program is nie geïnstalleer nie omdat dit nie met jou foon versoenbaar is nie."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Program is nie geïnstalleer nie omdat pakket ongeldig blyk te wees."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> kon nie op jou tablet geïnstalleer word nie."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> kon nie op jou TV geïnstalleer word nie."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> kon nie op jou foon geïnstalleer word nie."</string>
- <string name="launch" msgid="4826921505917605463">"Open"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Jou administrateur laat nie toe dat programme wat by onbekende bronne verkry is, geïnstalleer word nie"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Hierdie gebruiker kan nie onbekende programme installeer nie"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Hierdie gebruiker word nie toegelaat om programme te installeer nie"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Instellings"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Bestuur programme"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Vervang program?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Die program wat jy installeer, sal \'n ander program vervang.\n\nAl jou vorige gebruikerdata sal gestoor word."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Dit is \'n stelselprogram.\n\nAl jou vorige gebruikerdata sal gestoor word."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Geen spasie oor nie"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> kon nie geïnstalleer word nie. Maak \'n bietjie plek en probeer weer."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Program nie gevind nie"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Die program is nie in die lys van geïnstalleerde programme gevind nie."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Nie toegelaat nie"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Die huidige gebruiker mag nie hierdie deïnstallering uitvoer nie."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Fout"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Program kon nie gedeïnstalleer word nie."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Deïnstalleer program"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Deïnstalleer opdatering"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> is deel van die volgende program:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Wil jy hierdie program deïnstalleer?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Wil jy hierdie program vir "<b>"alle"</b>" gebruikers deïnstalleer? Die program en sy data sal vir "<b>"alle"</b>" gebruikers op hierdie toestel verwyder word."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Wil jy hierdie program vir die gebruiker <xliff:g id="USERNAME">%1$s</xliff:g> deïnstalleer?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Vervang hierdie program met die fabriekweergawe? Alle data sal verwyder word."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Vervang hierdie program met die fabriekweergawe? Alle data sal verwyder word. Dit beïnvloed alle gebruikers van hierdie toestel, insluitend dié met werkprofiele."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Voer tans deïnstallerings uit"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Mislukte installerings"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Deïnstalleer tans…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Deïnstalleer tans <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> …"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Deïnstallering klaar."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Het <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> gedeïnstalleer"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Deïnstallasie onsuksesvol."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Kon nie <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> deïnstalleer nie."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Kan nie aktiewe toesteladministrasieprogram deïnstalleer nie"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Kan nie aktiewe toesteladministrasieprogram vir <xliff:g id="USERNAME">%1$s</xliff:g> deïnstalleer nie"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Dié program word vereis vir sommige gebruikers of profiele en is vir ander gedeïnstalleer"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Hierdie program is nodig vir jou profiel en kan nie gedeïnstalleer word nie."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Jou toesteladministrateur vereis die program; dit kan nie deïnstalleer word nie."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Bestuur toesteladministrasieprogramme"</string>
- <string name="manage_users" msgid="3125018886835668847">"Bestuur gebruikers"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> kon nie deïnstalleer word nie."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Kon nie die pakket ontleed nie."</string>
- <string name="newPerms" msgid="6039428254474104210">"Nuut"</string>
- <string name="allPerms" msgid="1024385515840703981">"Alle"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privaatheid"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Toesteltoegang"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Hierdie opdatering vereis geen nuwe toestemmings nie."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Wil jy die volgende toestemmings toestaan? Dit sal toegang kry tot:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Weier"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Meer inligting"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Weier in elk geval"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Laat <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toe om <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> is gedeaktiveer"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"alles is gedeaktiveer"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"geen is gedeaktiveer nie"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Laat toe"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Programme"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Programtoestemmings"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Moenie weer vra nie"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Geen toestemmings nie"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Bykomende toestemmings"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Toestemmingbeheerder"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"toestemmings"</string>
+ <string name="cancel" msgid="7279939269964834974">"Kanselleer"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Program nie gevind nie"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Weier"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Weier en moenie weer vra nie"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Meer inligting"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Weier in elk geval"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Laat <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toe om <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Laat <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> altyd toe om <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Net terwyl program gebruik word"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Altyd"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Weier en moenie weer vra nie"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> is gedeaktiveer"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"alles is gedeaktiveer"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"geen is gedeaktiveer nie"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Laat toe"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Laat altyd toe"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Laat net toe wanneer die program gebruik word"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Programme"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Programtoestemmings"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Toestemmingbestuurder"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Moenie weer vra nie"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Geen toestemmings nie"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Bykomende toestemmings"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Maak programinligting oop"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other">Nog <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="one">Nog <xliff:g id="COUNT_0">%1$d</xliff:g></item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Hierdie program is vir \'n ouer weergawe van Android ontwerp. As toestemming geweier word, kan dit veroorsaak dat dit nie meer soos beplan funksioneer nie."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"voer \'n onbekende handeling uit"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_0">%1$d</xliff:g> uit <xliff:g id="COUNT_1">%2$d</xliff:g> programme toegelaat"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Wys stelsel"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Versteek stelsel"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g>-toestemmings"</string>
- <string name="no_apps" msgid="1965493419005012569">"Geen programme nie"</string>
- <string name="location_settings" msgid="1774875730854491297">"Ligginginstellings"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> is \'n verskaffer van liggingdienste vir hierdie toestel. Liggingtoegang kan vanuit ligginginstellings verander word."</string>
- <string name="system_warning" msgid="7103819124542305179">"As jy hierdie toestemming weier, sal basiese kenmerke van jou toestel dalk nie meer soos bedoel werk nie."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Afgedwing deur beleid"</string>
- <string name="loading" msgid="7811651799620593731">"Laai tans …"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Alle toestemmings"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Ander programvermoëns"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Toestemmingsversoek"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Skermoorlegger bespeur"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Om hierdie toestemminginstelling te verander, moet jy eers die skermoorlegger by Instellings > Programme afskakel"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Maak instellings oop"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Installeer- en deïnstalleerhandelinge word nie in Wear gesteun nie."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> is opgedateer. Laat <xliff:g id="APP_NAME_1">%1$s</xliff:g> toegang tot die volgende kry?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Kies waartoe <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang mag kry"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> is opgedateer. Kies waartoe hierdie program toegang mag kry."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Kanselleer"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Gaan voort"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Nuwe toestemmings"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Huidige toestemmings"</string>
- <string name="message_staging" msgid="6151794817691100003">"Voer tans program uit …"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Onbekend"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Jou tablet word vir jou veiligheid nie toegelaat om onbekende programme van hierdie bron af te installeer nie."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Jou TV word vir jou veiligheid nie toegelaat om onbekende programme van hierdie bron af te installeer nie."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Jou foon word vir jou veiligheid nie toegelaat om onbekende programme van hierdie bron af te installeer nie."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Jou foon en persoonlike data is meer kwesbaar vir aanvalle deur onbekende programme. Deur hierdie program te installeer, stem jy in dat jy verantwoordelik is vir enige skade aan jou foon of verlies van data wat uit sy gebruik kan spruit."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Jou tablet en persoonlike data is meer kwesbaar vir aanvalle deur onbekende programme. Deur hierdie program te installeer, stem jy in dat jy verantwoordelik is vir enige skade aan jou tablet of verlies van data wat uit sy gebruik kan spruit."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Jou TV en persoonlike data is meer kwesbaar vir aanvalle deur onbekende programme. Deur hierdie program te installeer, stem jy in dat jy verantwoordelik is vir enige skade aan jou TV of verlies van data wat uit sy gebruik kan spruit."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Gaan voort"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Instellings"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Installeer/deïnstalleer Wear-programme"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Hierdie program is vir \'n ouer weergawe van Android ontwerp. As toestemming geweier word, kan dit veroorsaak dat dit dalk nie meer soos bedoel werk nie."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"voer \'n onbekende handeling uit"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> van <xliff:g id="COUNT_1">%2$d</xliff:g> programme toegelaat"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Onlangse gebruik"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Bekyk toestemmingkontroleskerm"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Wys stelsel"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Versteek stelsel"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Geen programme nie"</string>
+ <string name="location_settings" msgid="547378321761364906">"Ligginginstellings"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"As jy hierdie toestemming weier, sal basiese kenmerke van jou toestel dalk nie meer soos bedoel werk nie."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Afgedwing deur beleid"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Agtergrondtoegang is gedeaktiveer volgens beleid"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Agtergrondtoegang is geaktiveer volgens beleid"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Voorgrondtoegang is geaktiveer volgens beleid"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Beheer deur administrateur"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Admin het agtergrondtoegang gedeaktiveer"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Admin het agtergrondtoegang geaktiveer"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Admin het voorgrondtoegang geaktiveer"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Toestemming gestel deur stelsel"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Altyd"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Net terwyl program gebruik word"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Nooit"</string>
+ <string name="loading" msgid="323483393167148377">"Laai tans …"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Alle toestemmings"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Ander programvermoëns"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Toestemmingsversoek"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Skermoorlegger bespeur"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Om hierdie toestemminginstelling te verander, moet jy eers die skermoorlegger by Instellings > Programme afskakel"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Maak instellings oop"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Installeer- en deïnstalleerhandelinge word nie in Wear gesteun nie."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Kies waartoe <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang mag kry"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> is opgedateer. Kies waartoe hierdie program toegang mag kry."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Kanselleer"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Gaan voort"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Nuwe toestemmings"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Huidige toestemmings"</string>
+ <string name="message_staging" msgid="641286607664721291">"Voer tans program uit …"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Onbekend"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Kontroleskerm"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Jongste gebruik: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> keer gebruik (<xliff:g id="NUM_5">%3$s</xliff:g> keer op agtergrond)</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 (<xliff:g id="NUM_2">%3$s</xliff:g> keer op agtergrond)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Jongste gebruik: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> keer gebruik\nTydsduur: <xliff:g id="TIME_5">%3$s</xliff:g></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\nTydsduur: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Jongste gebruik: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> keer gebruik (<xliff:g id="NUM_6">%3$s</xliff:g> keer op agtergrond)\nTydsduur: <xliff:g id="TIME_7">%3$s</xliff:g></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 (<xliff:g id="NUM_2">%3$s</xliff:g> keer op agtergrond)\nTydsduur: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Enige toestemming"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Enige tyd"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Afgelope 7 dae"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Afgelope 24 uur"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Afgelope 1 uur"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Afgelope 15 minute"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Afgelope 1 minuut"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Geen toestemminggebruike nie"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Toegang in enige tyd"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Toegang in afgelope 7 dae"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Toegang in afgelope 24 uur"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Toegang in die afgelope uur"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Toegang in afgelope 15 minute"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Toegang in afgelope 1 minuut"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Toptoestemminggebruik in enige tyd"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Toptoestemminggebruik in afgelope 7 dae"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Toptoestemminggebruik in afgelope 24 uur"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Toptoestemminggebruik in afgelope 1 uur"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Toptoestemminggebruik in afgelope 15 minute"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Toptoestemminggebruik in afgelope 1 minuut"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Programme"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Gefiltreer volgens: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Verwyder filter"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtreer volgens"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtreer volgens toestemmings"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Meeste toestemmings"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Meeste toegange"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Onlangs"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Herlaai"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Programtoestemmingsgebruik"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Toegang: <xliff:g id="NUM">%1$s</xliff:g> keer. <xliff:g id="TIME">%2$s</xliff:g> gelede laas gebruik."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Laat toe"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Laat altyd toe"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Laat net toe terwyl die program gebruik word"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Weier"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g>-toestemming"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="PERM">%1$s</xliff:g>-toegang vir <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> het <xliff:g id="TIME">%3$s</xliff:g> gelede toegang tot jou <xliff:g id="PERM">%2$s</xliff:g> verkry."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> het nie toegang gekry tot jou <xliff:g id="PERM">%2$s</xliff:g> nie."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Bekyk gedetailleerde toestemmingsgebruik"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Jongste toegang: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Nooit gebruik nie"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Toegelaat"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Net toegelaat wanneer dit gebruik word"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Geweier"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Sien gedetailleerde gebruik"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dae</item>
+ <item quantity="one">1 dag</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> uur</item>
+ <item quantity="one">1 uur</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minute</item>
+ <item quantity="one">1 minuut</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sekondes</item>
+ <item quantity="one">1 sekonde</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Gebruik <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> as jou <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Gebruik <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> pleks van <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> as jou <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Toestemmingonthounotas"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> gebruik jou ligging"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Hierdie program het altyd toegang tot jou ligging. Tik om te verander."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Net terwyl die program gebruik word"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Geen toestemmings toegelaat nie"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Geen toestemmings geweier nie"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Geen programme toegelaat nie"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Geen programme geweier nie"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Maak oop"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Deïnstalleer"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Dwing stop"</string>
+ <string name="settings" msgid="2884124136779508907">"Instellings"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> het volle toegang tot jou toestel"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> toeganklikheiddienste het volle toegang tot jou toestel"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> kan jou skerm, handelinge en invoere bekyk, handelinge uitvoer, en die skerm beheer."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Hierdie dienste kan jou skerm, handelinge en invoere bekyk, handelinge uitvoer, en die skerm beheer."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Verstekprogramme"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Geen verstekprogramme nie"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Verstek vir werk"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Geen"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Geen programme nie"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Spesiale programtoegang"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Geen spesiale programtoegang nie"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Geen programme nie"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Bystandprogram"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Blaaierprogram"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Foonprogram"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS-program"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Noodprogram"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Huisprogram"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Musiekprogram"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Galeryprogram"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Motormodus-foonprogram"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Oproepherleidingprogram"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Oproepsiftingsprogram"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Oproepmetgeselprogram"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Motorprojeksie-program"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Steun nie werkprofiel nie"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Let wel: As jy jou toestel herbegin en \'n skermslot is gestel, kan hierdie program nie begin totdat jy jou toestel ontsluit nie."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Die assistent sal inligting oor programme wat tans op jou stelsel gebruik word, kan lees, insluitend inligting wat op jou skerm sigbaar is of toeganklik is binne die programme."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Deel ontfoutingsdata"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Deel gedetailleerde ontfoutingsdata?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> wil graag ontfoutingsinligting oplaai."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Deel ontfoutingsdata"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> versoek tans om \'n foutverslag wat op <xliff:g id="DATE">%2$s</xliff:g> om <xliff:g id="TIME">%3$s</xliff:g> op hierdie toestel gegenereer is, op te laai. Foutverslae sluit persoonlike inligting oor jou toestel of wat deur programme aangemeld is in, byvoorbeeld gebruikername, liggingdata, toestelidentifiseerders en netwerkinligting. Deel foutverslae net met mense en programme wat jy met hierdie inligting vertrou. Laat <xliff:g id="APP_NAME_1">%4$s</xliff:g> toe om \'n foutverslag op te laai?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Laat toe"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Weier"</string>
</resources>
diff --git a/res/values-am-television/strings.xml b/res/values-am-television/strings.xml
index e4f23c1..00861ce 100644
--- a/res/values-am-television/strings.xml
+++ b/res/values-am-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"አይቀበሉና እንደገና ይጠይቁ"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"ይሄንን በኋላ ላይ በቅንብሮችና መተግበሪያዎች ውስጥ ሊቀይሩት ይችላሉ"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"የስርዓት መተግበሪያዎችን አሳይ"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"የመተግበሪያ ፈቃዶች"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"የመተግበሪያ ፈቃዶች"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> ፈቃዶች"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"ተጨማሪ ፈቃዶች"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> ፈቃዶች"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"አትቀበል እና እንደገና አትጠይቅ"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"ይሄንን በኋላ ላይ በቅንብሮችና መተግበሪያዎች ውስጥ ሊቀይሩት ይችላሉ"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"የሥርዓት መተግበሪያዎችን አሳይ"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"የመተግበሪያ ፈቃዶች"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"የመተግበሪያ ፈቃዶች"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> ፈቃዶች"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"ተጨማሪ ፈቃዶች"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> ፈቃዶች"</string>
</resources>
diff --git a/res/values-am-watch/strings.xml b/res/values-am-watch/strings.xml
index 1b01ddd..ee9c220 100644
--- a/res/values-am-watch/strings.xml
+++ b/res/values-am-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"ከልክል፣ ዳግም አትጠይቅ"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"የስርዓት መተግበሪያዎችን አሳይ"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ሊለወጥ አይችልም"</string>
- <string name="generic_yes" msgid="3394094077553763689">"አዎ"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"ይቅር"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"ከልክል፣ ዳግም አትጠይቅ"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"የሥርዓት መተግበሪያዎችን አሳይ"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"ሊለወጥ አይችልም"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"አዎ"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"ይቅር"</string>
</resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 82156e3..b300a06 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"ጥቅል ጫኝ"</string>
- <string name="next" msgid="3057143178373252333">"ቀጣይ"</string>
- <string name="install" msgid="5896438203900042068">"ጫን"</string>
- <string name="done" msgid="3889387558374211719">"ተከናውኗል"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"ይሄን መተግበሪያ ይፈቅዳል ወደ፡-"</string>
- <string name="cancel" msgid="8360346460165114585">"ይቅር"</string>
- <string name="unknown" msgid="4742479012767208045">"ያልታወቀ"</string>
- <string name="installing" msgid="8613631001631998372">"በመጫን ላይ…"</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>ን በመጫን ላይ…"</string>
- <string name="install_done" msgid="3682715442154357097">"መተግበሪያ ተጭኗል፡፡"</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"ይህንን መተግበሪያ መጫን ይፈልጋሉ? ወደዚህ መዳረሻ ያገኛል፦"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"ይህንን መተግበሪያ መጫን ይፈልጋሉ? ምንም የተለየ መዳረሻ አይጠይቅም።"</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"ለእዚህ ነባር መተግበሪያ ማዘመኛ መጫን ይፈልጋሉ? የነበረው ውሂብህ አይጠፋም። የዘመነው መተግበሪያ ወደዚህ መዳረሻ ያገኛል፦"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"ለእዚህ አብሮ ለተሰራ መተግበሪያ ማዘመኛ መጫን ይፈልጋሉ? የነበረው ውሂብዎ አይጠፋም። የዘመነው መተግበሪያ ወደዚህ መዳረሻ ያገኛል፦"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"ለዚህ ነባር መተግበሪያ ዝማኔ መጫን ይፈልጋሉ? ነባር ውሂብዎ አይጠፉም። ምንም የተለየ መዳረሻ አይፈልግም።"</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"ለዚህ አብሮ ለተሰራ መተግበሪያ ዝማኔ መጫን ይፈልጋሉ? ነባር ውሂብዎ አይጠፉም። ምንም የተለየ መዳረሻ አይፈልግም።"</string>
- <string name="install_failed" msgid="6579998651498970899">"ትግበራ አልተጫነም።"</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"ጥቅሉ እንዳይጫን ታግዷል።"</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"እንደ ጥቅል ያልተጫነ መተግበሪያ ከነባር ጥቅል ጋር ይጋጫል።"</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"እንደ መተግበሪያ ያልተጫነ መተግበሪያ ከጡባዊዎ ጋር ተኳሃኝ አይደለም።"</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"ይሄ መተግበሪያ ከእርስዎ ቴሌቪዥን ጋር ተኳሃኝ አይደለም።"</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"እንደ መተግበሪያ ያልተጫነ መተግበሪያ ከስልክዎ ጋር ተኳሃኝ አይደለም።"</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"እንደ ጥቅል ያልተጫነ መተግበሪያ ልክ ያልሆነ ይመስላል።"</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> በዚህ ስልክ ላይ መጫን አልተቻለም።"</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> በእርስዎ ቴሌቪዥን ላይ ሊጫን አልቻለም።"</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g>በዚህ ስልክ ላይ መጫን አልተቻለም።"</string>
- <string name="launch" msgid="4826921505917605463">"ክፈት"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"የእርስዎ አስተዳዳሪ ካልታወቁ ምንጮች የመጡ መተግበሪያዎች እንዲጫኑ አይፈቅድም"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"ያልታወቁ መተግበሪያዎች በዚህ ተጠቃሚ ሊጫኑ አይችሉም"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"ይህ ተጠቃሚ መተግበሪያዎችን እንዲጭን አልተፈቀደለትም"</string>
- <string name="ok" msgid="3468756155452870475">"እሺ"</string>
- <string name="settings" msgid="6743583734099755409">"ቅንብሮች"</string>
- <string name="manage_applications" msgid="4033876279091996596">"መተግበሪያዎች አስተዳድር"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"መተግበሪያ ይለውጥ?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"እየጫኑት ያለው መተግበሪያ ሌላ መተግበሪያን ይለውጣል። \n\nሁሉም የቀድሞ የተጠቃሚ ውሂብዎ ይቀመጣል።"</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"ይሄ የስርዓት መተግበሪያ ነው። \n\nሁሉም የቀድሞ የተጠቃሚ ውሂብዎ ይቀመጣል።"</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"ቦታ ሞልቷል"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g>ለመጫን አልቻለም። ትንሽ ቦታ አስለቅቅ እና እንደገና ሞክር፡፡"</string>
- <string name="dlg_ok" msgid="6944357727705699232">"እሺ"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"ትግበራ አልተገኘም"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"መተግበሪያው በተጫኑ መተግበሪያዎች ዝርዝር ውስጥ አልተገኘም።"</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"አይፈቀድም"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"አሁን ያለው ተጠቃሚ ይህን ማራገፍ ሥራ እንዲያከናውን አይፈቀድለትም።"</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"ስሕተት"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"መተግበሪያ ሊራገፍ አልተቻለም"</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"ትግበራ አራግፍ"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"ማዘመን አራግፍ"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g>የሚከተለው ትግበራ አካል ነው፡"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"ይሄን መተግበሪያ ማራገፍ ይፈልጋሉ?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"ይህን መተግበሪያ "<b>"ለሁሉም"</b>" ተጠቃሚዎች መጫን ይፈልጋሉ? መተግበሪያው እና ውሂቡ በመሣሪያው ላይ ካሉ "<b>"ሁሉም"</b>" ተጠቃሚዎች ይሰረዛሉ።"</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"ይህን መተግበሪያ ለተጠቃሚ <xliff:g id="USERNAME">%1$s</xliff:g> ማራገፍ ይፈልጋሉ?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"ይህ መተግበሪያ በፋብሪክው ስሪት ይተካ? ሁሉም ውሂብ ይወገዳል።"</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"ይህ መተግበሪያ በፋብሪክው ስሪት ይተካ? ሁሉም ውሂብ ይወገዳል። እነዚያን የሥራ መገለጫዎች ያላቸውን ጨምሮ ሁሉንም በዚህ መሣሪያ ላይ ባሉ ተጠቃሚዎች ላይ ተጽዕኖ ያሳርፍባቸዋል።"</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"በማሄድ ላይ ያሉ ማራገፎች"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"ያልተሳኩ ማራገፎች"</string>
- <string name="uninstalling" msgid="5556217435895938250">"ባለመጫንላይ"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>ን በማራገፍ ላይ…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"አራግፍ ተጠናቋል"</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ተራግፏል"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"ማራገፍ አልተሳካም፡፡"</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>ን ማራገፍ ስኬታማ አልነበረም።"</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"ገባሪ የመሣሪያ አስተዳደር መተግበሪያን ማራገፍ አይቻልም"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"ለ<xliff:g id="USERNAME">%1$s</xliff:g> ገባሪ የመሣሪያ አስተዳደር መተግበሪያን ማራገፍ አይቻልም"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"ይህ መተግበሪያ ለአንዳንድ ተጠቃሚዎች ወይም መገለጫዎች ያስፈልጋል እና ለሌሎች ተራግፏል"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"ይህ መተግበሪያ ለእርስዎ መገለጫዎ ያስፈልጋል እና ሊራገፍ አይችልም።"</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"ይህ መተግበሪያ በመሣሪያዎ አስተዳዳሪ የሚፈለግ እና ሊራገፍ የማይችል ነው።"</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"የመሣሪያ አስተዳደር መተግበሪያዎችን ያስተዳድሩ"</string>
- <string name="manage_users" msgid="3125018886835668847">"ተጠቃሚዎችን ያስተዳድሩ"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g>ማራገፍ አልተቻለም"</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"አካታቹን መተንተን ችግር ነበረ።"</string>
- <string name="newPerms" msgid="6039428254474104210">"አዲስ"</string>
- <string name="allPerms" msgid="1024385515840703981">"ሁሉም"</string>
- <string name="privacyPerms" msgid="1850527049572617">"ግላዊነት"</string>
- <string name="devicePerms" msgid="6733560207731294504">"የመሳሪያ መዳረሻ"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"ይህ ዝማኔ ምንም አዲስ ፈቃድ አያስፈልገውም።"</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"የሚከተሉት ፍቃዶችን መስጠት ይፈልጋሉ? የእነዚህ መዳረሻዎችን ይሰጣል፦"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"ከልክል"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"ተጨማሪ መረጃ"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"ለማንኛውም ከልክል"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g> እንዲከናወን ይፈቀድለት?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> ተሰናክሏል"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"ሁሉም ተሰናክሏል"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"ምንም አልተሰናከለም"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"ፍቀድ"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"መተግበሪያዎች"</string>
- <string name="app_permissions" msgid="3146758905824597178">"የመተግበሪያ ፈቃዶች"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"ዳግም አትጠይቅ"</string>
- <string name="no_permissions" msgid="3210542466245591574">"ምንም ፍቃዶች የሉም"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"ተጨማሪ ፈቃዶች"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"የፈቃድ መቆጣጠሪያ"</string>
+ <string name="ok" msgid="4417794827535157922">"እሺ"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"ፈቃዶች"</string>
+ <string name="cancel" msgid="7279939269964834974">"ይቅር"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"ትግበራ አልተገኘም"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"ከልክል"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"ከልክል እና ዳግም አትጠይቅ"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"ተጨማሪ መረጃ"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"ለማንኛውም ከልክል"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g> እንዲያደርግ ይፈቀድለት?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"ሁልጊዜ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ወደ <xliff:g id="ACTION">%2$s</xliff:g> ይፈቀድ?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"መተግበሪያን በሥራ ላይ ሲሆን ብቻ"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"ሁልጊዜ"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"አትቀበል እና እንደገና አትጠይቅ"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> ተሰናክሏል"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"ሁሉም ተሰናክሏል"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"ምንም አልተሰናከለም"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"ፍቀድ"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"ሁልጊዜ ፍቀድ"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"መተግበሪያው ጥቅም ላይ እያለ ብቻ ፍቀድ"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"መተግበሪያዎች"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"የመተግበሪያ ፈቃዶች"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"የፈቃድ አቀናባሪ"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"ዳግም አትጠይቅ"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"ምንም ፈቃዶች የሉም"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"ተጨማሪ ፈቃዶች"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"የመተግበሪያ መረጃን ክፈት"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"ይህ መተግበሪያ ለAndroid አሮጌ ስሪት የተነደፈ ነበር። ፈቃድ መከልከል እንደሚፈለገው ከእንግዲህ እንዳይሰራ ሊያደርገው ይችላል።"</string>
- <string name="default_permission_description" msgid="4992892207044156668">"ያልታወቀ እርምጃ ያከናውናል"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"ስርዓትን አሳይ"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"ስርዓትን ደብቅ"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> ፍቃዶች"</string>
- <string name="no_apps" msgid="1965493419005012569">"ምንም መተግበሪያዎች የሉም"</string>
- <string name="location_settings" msgid="1774875730854491297">"የአካባቢ ቅንብሮች"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> የዚህ መሳሪያ አካባቢ አገልግሎቶች አቅራቢ ነው። የአካባቢ መዳረሻ ከአካባቢ ቅንብሮች ሊሻሻል ይችላል።"</string>
- <string name="system_warning" msgid="7103819124542305179">"ይህን ፍቃድ ከከለከሉ የመሳሪያዎ መሰረታዊ ባህሪያት ከዚህ በኋላ እንደተፈለገው ላይሰሩ ይችላሉ።"</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"በመመሪያ ተፈጻሚ የሆነ"</string>
- <string name="loading" msgid="7811651799620593731">"በመጫን ላይ…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"ሁሉም ፍቃዶች"</string>
- <string name="other_permissions" msgid="2016192512386091933">"ሌሎች የመተግበሪያ ችሎታዎች"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"የፍቃድ ጥያቄ"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"የማያ ገጽ ተደራቢ ተገኝቷል"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"ይህን የፍቃድ ቅንብር ለመቀየር መጀመሪያ የማያ ገጽ ተደራቢውን ከቅንብሮች > መተግበሪያዎች ማጥፋት አለብዎ"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"ቅንብሮችን ክፈት"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"በWear ላይ የመጫን/ማራገፍ እርምጃዎች አይደገፉም።"</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ተዘምኗል። <xliff:g id="APP_NAME_1">%1$s</xliff:g> የሚከተለው እንዲደርስ ይፍቀዱ?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ምን መድረስ እንደሚችል ይምረጡ"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ተዘምኗል። ይህ መተግበሪያ ምን መድረስ እንደሚችል ይምረጡ።"</string>
- <string name="review_button_cancel" msgid="957906817733578877">"ይቅር"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"ቀጥል"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"አዲስ ፍቃዶች"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"የአሁኖቹ ፍቃዶች"</string>
- <string name="message_staging" msgid="6151794817691100003">"መተግበሪያን በማዘጋጀት ላይ…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"ያልታወቀ"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"ለእርስዎ ደህንነት ሲባል የእርስዎ ጡባዊ ከዚህ ምንጭ የመጡ ያልታወቁ መተግበሪያዎችን እንዲጭን አልተፈቀደለትም።"</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"ለእርስዎ ደህንነት ሲባል የእርስዎ ቴሌቪዥን ከዚህ ምንጭ የመጡ ያልታወቁ መተግበሪያዎችን እንዲጭን አልተፈቀደለትም።"</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"ለእርስዎ ደህንነት ሲባል የእርስዎ ስልክ ከዚህ ምንጭ የመጡ ያልታወቁ መተግበሪያዎችን እንዲጭን አልተፈቀደለትም።"</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"የእርስዎ ስልክ እና የግል ውሂብ በማይታወቁ መተግበሪያዎች ለሚደርሱ ጥቃቶች በይልበልጥ ተጋላጭ ናቸው። ይህን መተግበሪያ በመጫንዎ በእርስዎ ስልክ ላይ ለሚደርስ ማናቸውም ጉዳት ወይም መተግበሪያውን በመጠቀም ለሚከሰት የውሂብ መጥፋት ኃላፊነቱን እንደሚወስዱ ተስማምተዋል።"</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"የእርስዎ ጡባዊ እና የግል ውሂብ በማይታወቁ መተግበሪያዎች ለሚደርሱ ጥቃቶች በይበልጥ ተጋላጭ ናቸው። ይህን መተግበሪያ በመጫንዎ በእርስዎ ጡባዊ ላይ ለሚደርስ ማናቸውም ጉዳት ወይም መተግበሪያውን በመጠቀም ለሚከሰት የውሂብ መጥፋት ኃላፊነቱን እንደሚወስዱ ተስማምተዋል።"</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"የእርስዎ ቴሌቪዥን እና የግል ውሂብ በማይታወቁ መተግበሪያዎች ለሚደርሱ ጥቃቶች በይበልጥ ተጋላጭ ናቸው። ይህን መተግበሪያ በመጫንዎ በእርስዎ ቴሌቪዥን ላይ ለሚደርስ ማናቸውም ጉዳት ወይም መተግበሪያውን በመጠቀም ለሚከሰት የውሂብ መጥፋት ኃላፊነቱን እንደሚወስዱ ተስማምተዋል።"</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"ቀጥል"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"ቅንብሮች"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"የWear መተግበሪያዎችን መጫን/ማራገፍ"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"ይህ መተግበሪያ ለAndroid አሮጌ ስሪት የተነደፈ ነበር። ፈቃድ መከልከል እንደሚፈለገው ከእንግዲህ እንዳይሠራ ሊያደርገው ይችላል።"</string>
+ <string name="default_permission_description" msgid="692254823411049573">"ያልታወቀ እርምጃ ያከናውናል"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> ከ<xliff:g id="COUNT_1">%2$d</xliff:g> መተግበሪያዎች ተፈቅዶላቸዋል"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"የቅርብ ጊዜ አጠቃቀም"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"የፈቃዶች ዳሽቦርድን ይመልከቱ"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"ሥርዓት አሳይ"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"ሥርዓትን ደብቅ"</string>
+ <string name="no_apps" msgid="2377153782338039463">"ምንም መተግበሪያዎች የሉም"</string>
+ <string name="location_settings" msgid="547378321761364906">"የአካባቢ ቅንብሮች"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> የዚህ መሣሪያ አካባቢ አገልግሎቶች አቅራቢ ነው። የአካባቢ መዳረሻ ከአካባቢ ቅንብሮች ሊሻሻል ይችላል።"</string>
+ <string name="system_warning" msgid="6868290533389195836">"ይህን ፍቃድ ከከለከሉ የመሣሪያዎ መሠረታዊ ባህሪያት ከዚህ በኋላ እንደተፈለገው ላይሠሩ ይችላሉ።"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"በመመሪያ ተፈጻሚ የሆነ"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"የጀርባ መዳረሻ በመመሪያ ተሰናክሏል"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"የጀርባ መዳረሻ በመመሪያ ነቅቷል"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"የፊት መዳረሻ በመመሪያ ነቅቷል"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"በአስተዳዳሪ ቁጥጥር የሚደረግበት"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"የዳራ መዳረሻ በአስተዳዳሪ ተሰናክሏል"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"የዳራ መዳረሻ በአስተዳዳሪ ነቅቷል"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"የፊት መዳረሻ በአስተዳዳሪ ነቅቷል"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"ፈቃድ በሥርዓት ተቀናብሯል"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"ሁልጊዜ"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"መተግበሪያን በሥራ ላይ ሲሆን ብቻ"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"በጭራሽ"</string>
+ <string name="loading" msgid="323483393167148377">"በመጫን ላይ…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"ሁሉም ፍቃዶች"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"ሌሎች የመተግበሪያ ችሎታዎች"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"የፍቃድ ጥያቄ"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"የማያ ገጽ ተደራቢ ተገኝ"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"ይህን የፍቃድ ቅንብር ለመቀየር መጀመሪያ የማያ ገጽ ተደራቢውን ከቅንብሮች > መተግበሪያዎች ማጥፋት አለብዎ"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"ቅንብሮችን ክፈት"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"በWear ላይ የመጫን/ማራገፍ እርምጃዎች አይደገፉም።"</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ምን መድረስ እንደሚችል ይምረጡ"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ተዘምኗል። ይህ መተግበሪያ ምን መድረስ እንደሚችል ይምረጡ።"</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"ይቅር"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"ቀጥል"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"አዲስ ፍቃዶች"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"የአሁኖቹ ፍቃዶች"</string>
+ <string name="message_staging" msgid="641286607664721291">"መተግበሪያን በማዘጋጀት ላይ…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"ያልታወቀ"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"ዳሽቦርድ"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">የመጨረሻ መዳረሻ፦ <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> መዳረሻዎች (በበስተጀርባ ውስጥ <xliff:g id="NUM_5">%3$s</xliff:g>)</item>
+ <item quantity="other">የመጨረሻ መዳረሻ፦ <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> መዳረሻዎች (በበስተጀርባ ውስጥ <xliff:g id="NUM_5">%3$s</xliff:g>)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">የመጨረሻ መዳረሻ፦ <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> መዳረሻዎች\nየጊዜ ቆይታ፦ <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">የመጨረሻ መዳረሻ፦ <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> መዳረሻዎች\nየጊዜ ቆይታ፦ <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">የመጨረሻ መዳረሻ፦ <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> መዳረሻዎች (በበስተጀርባ ላይ <xliff:g id="NUM_6">%3$s</xliff:g>)\nየጊዜ ቆይታ፦ <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">የመጨረሻ መዳረሻ፦ <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> መዳረሻዎች (በበስተጀርባ ላይ <xliff:g id="NUM_6">%3$s</xliff:g>)\nየጊዜ ቆይታ፦ <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"ማናቸውም ፈቃድ"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"በማንኛውም ጊዜ"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"ባለፉት 7 ቀኖች"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"ባለፉት 24 ሰዓቶች"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"ባለፈው 1 ሰዓት"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"ባለፉት 15 ደቂቃዎች"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"ባለፈው 1 ደቂቃ"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"ምንም ፈቃድ አጠቃቀሞች የሉም"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"በማናቸውም ጊዜ ይድረሱበት"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"ባለፉት 7 ቀናት የነበረ መድረስ"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"ባለፉት 24 ሰዓቶች ውስጥ የነበሩ መድረሶች"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"ባለፈው አንድ ሰዓት የነበረ መድረስ"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"ባለፉት 15 ደቂቃዎች ውስጥ ይደርሱበት"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"ባለፈው 1 ደቂቃ መድረስ"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"ከፍተኛ የፈቃድ አጠቃቀም በማናቸውም ጊዜ"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"ባለፉት 7 ቀናት ከፍተኛ የፈቃድ አጠቃቀም"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"ባለፉት 24 ሰዓቶች ውስጥ ከፍተኛ የፈቃድ አጠቃቀም"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"ባለፈው 1 ሰዓት ውስጥ ከፍተኛ የፈቃድ አጠቃቀም"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"ባለፉት 15 ደቂቃዎች ውስጥ የነበረ ከፍተኛ የፈቃድ አጠቃቀም"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"ባለፈው 1 ደቂቃ ውስጥ ከፍተኛ የፈቃድ አጠቃቀም"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"መተግበሪያዎች"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"የተጣራው በ፦ <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"ማጣሪያን አስወግድ"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"አጣራ በ"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"በፈቃዶች አጣራ"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"አብዛኛዎቹ ፈቃዶች"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"አብዛኛዎቹ መድረሶች"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"የቅርብ ጊዜ"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"አድስ"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"የመተግበሪያ ፈቃዶች አጠቃቀም"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"ድረስበት፦ <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="4040424337831328212">"ድረስበት፦ <xliff:g id="NUM">%1$s</xliff:g> ጊዜ። ለመጨረሻ ጥቅም ላይ የዋለው ከ<xliff:g id="TIME">%2$s</xliff:g> በፊት።"</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"ፍቀድ"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"ሁልጊዜ ፍቀድ"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"መተግበሪያው ጥቅም ላይ እያለ ብቻ ፍቀድ"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"ከልክል"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"የ<xliff:g id="PERM">%1$s</xliff:g> ፈቃድ"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"ለ<xliff:g id="APP">%2$s</xliff:g> የ<xliff:g id="PERM">%1$s</xliff:g> መዳረሻ"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> ከ<xliff:g id="TIME">%3$s</xliff:g> በፊት የእርስዎን <xliff:g id="PERM">%2$s</xliff:g> ደርሶ ነበር።"</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> የእርስዎን <xliff:g id="PERM">%2$s</xliff:g> አልደረሰበትም።"</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"ዝርዝር የፈቃዶች አጠቃቀምን ይመልከቱ"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"የመጨረሻ መዳረሻ፦ <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"ተደርሶ አያውቅም"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"ይፈቀዳል"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"ስራ ላይ ሲውል ብቻ የሚፈቀድ"</string>
+ <string name="denied_header" msgid="2277998574238617699">"ውድቅ ተደርጓል"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"በዝርዝር የቀረበ አጠቃቀምን ይመልከቱ"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <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="seconds" formatted="false" msgid="1632909606956324957">
+ <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="role_request_message_add" msgid="1977772335648650272">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>ን እንደ የእርስዎ <xliff:g id="ROLE_NAME">%2$s</xliff:g> ይጠቀሙበት?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"ከ<b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> ይልቅ <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b>ን እንደ የእርስዎ <xliff:g id="ROLE_NAME">%2$s</xliff:g> ይጠቀሙበት?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"የፈቃድ አስታዋሾች"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> የእርስዎን አካባቢ እየተጠቀመ ነበር"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"ይህ መተግበሪያ በማንኛውም ጊዜ አካባቢዎን መድረስ ይችላል። ለመቀየር መታ ያድርጉ።"</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"መተግበሪያው በጥቅም ላይ እያለ ብቻ"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"ምንም ፈቃዶች አልተፈቀዱም"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"ምንም ፈቃዶች አልተከለከሉም"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"ምንም መተግበሪያዎች አልተፈቀዱም"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"ምንም መተግበሪያዎች አልተከለከሉም"</string>
+ <string name="launch_app" msgid="5641437562665039291">"ክፈት"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"አራግፍ"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"በኃይል አቁም"</string>
+ <string name="settings" msgid="2884124136779508907">"ቅንብሮች"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ወደ የእርስዎ መሣሪያ ሙሉ መዳረሻ አለው"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> ተደራሽነት አገልግሎቶች ወደ የእርስዎ መሣሪያ ሙሉ መዳረሻ አላቸው።"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> የእርስዎን ማያ ገጽ፣ እርምጃዎች እና ግቤቶች መመልከት፣ እርምጃዎችን መውሰድ እና ማሳያን መቆጣጠር ይችላል።"</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"እነዚህ አገልግሎቶች የእርስዎን ማያ ገጽ፣ እርምጃዎች እና ግቤቶች መመልከት፣ እርምጃዎችን መውሰድ እና ማሳያን መቆጣጠር ይችላሉ።"</string>
+ <string name="default_apps" msgid="8554530939151957828">"ነባሪ መተግበሪያዎች"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"ምንም ነባሪ መተግበሪያዎች የሉም"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"ለሥራ ነባሪ"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"ምንም"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"መተግበሪያዎች የሉም"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"ልዩ የመተግበሪያ መዳረሻ"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"ምንም ልዩ መተግበሪያ መዳረሻ"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"መተግበሪያዎች የሉም"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"የእገዛ መተግበሪያ"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"የአሳሽ መተግበሪያ"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"የስልክ መተግበሪያ"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"የኤስኤምኤስ መተግበሪያ"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"የድንገተኛ አደጋ መተግበሪያ"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"የቤት መተግበሪያ"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"የሙዚቃ መተግበሪያ"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"የማዕከለ ሥዕላት መተግበሪያ"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"የመኪና ሁነታ የስልክ መተግበሪያ"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"የጥሪ ማዞሪያ መተግበሪያ"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"የጥሪ ማጣሪያ መተግበሪያ"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"የጥሪ አጋር መተግበሪያ"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"የመኪና መጠበቂያ መተግበሪያ"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"የሥራ መገለጫን አይደግፍም"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"ማስታወሻ፦ የእርስዎን መሣሪያ ዳግም ካስጀምሩ እና ማያ ገጽ መቆለፊያው እንዲቀናበር ካደረጉ፣ ይህ መተግበሪያ የእርስዎን መሣሪያ ዳግም እስከሚከፍቱ ድረስ መጀመር አይችልም።"</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"ረዳቱ በእርስዎ ስርዓት ላይ በአገልግሎት ላይ ስለሚውሉ መተግበሪያዎች መረጃን ማንበብ ይችላል፣ ይህም በእርስዎ ማያ ገጽ ላይ የሚታይ ወይም በመተግበሪያዎች ውስጥ የሚደረስበት መረጃን ይጨምራል።"</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"ሳንካ ማረሚያ ውሂብን አጋራ"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"ዝርዝር የሳንካ ማረሚያ መረጃ ይጋራ?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> የሳንካ ማረሚያ መረጃን መስቀል ይፈልጋል።"</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"ሳንካ ማረሚያ ውሂብን አጋራ"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> የሳንካ ሪፖርት ከዚህ መሣሪያ በ<xliff:g id="DATE">%2$s</xliff:g> ላይ በ<xliff:g id="TIME">%3$s</xliff:g> የተወሰደ የሳንካ ሪፖርትን ለመስቀል እየጠየቀ ነው። የሳንካ ሪፖርቶች ስለ የእርስዎ መሣሪያ ወይም በመተግበሪያዎች የተመዘገበ ለምሳሌ እንደ የተጠቃሚ ስሞች፣ የመገኛ አካባቢ ውሂብ፣ የመሣሪያ ለይቶ ማወቂያዎች እና የአውታረ መረብ መረጃን ያካትታል። ይህን መረጃ ከሚያምኗቸው ሰዎች እና መተግበሪያዎች ጋር ብቻ የሳንካ ሪፖርቶችን ያጋሩ። የሳንካ ሪፖርትን <xliff:g id="APP_NAME_1">%4$s</xliff:g> እንዲሰቅል ይፈቀድ?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"ፍቀድ"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"ከልክል"</string>
</resources>
diff --git a/res/values-ar-television/strings.xml b/res/values-ar-television/strings.xml
index 9297b88..ca13112 100644
--- a/res/values-ar-television/strings.xml
+++ b/res/values-ar-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"رفض وعدم طرح السؤال مرة أخرى"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"يمكنك تغيير ذلك لاحقًا من خلال الإعدادات > التطبيقات"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"عرض تطبيقات النظام"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"أذونات التطبيق"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"أذونات التطبيق"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"أذونات <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"أذونات إضافية"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"أذونات <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"رفض وعدم طرح السؤال مرة أخرى"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"يمكنك تغيير ذلك لاحقًا من خلال \"الإعدادات\" > \"التطبيقات\"."</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"عرض تطبيقات النظام"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"أذونات التطبيق"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"أذونات التطبيق"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"أذونات <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"أذونات إضافية"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"أذونات <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-ar-watch/strings.xml b/res/values-ar-watch/strings.xml
index 19930ea..ab68d73 100644
--- a/res/values-ar-watch/strings.xml
+++ b/res/values-ar-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"الرفض وعدم السؤال مرة أخرى"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"عرض تطبيقات النظام"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"لا يمكن التغيير"</string>
- <string name="generic_yes" msgid="3394094077553763689">"نعم"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"إلغاء"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"رفض وعدم طرح السؤال مرةً أخرى"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"عرض تطبيقات النظام"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"لا يمكن التغيير"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"نعم"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"إلغاء"</string>
</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index c9523f2..4d1297b 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,97 +16,42 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"أداة تثبيت الحزم"</string>
- <string name="next" msgid="3057143178373252333">"التالي"</string>
- <string name="install" msgid="5896438203900042068">"تثبيت"</string>
- <string name="done" msgid="3889387558374211719">"تم"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"السماح لهذا التطبيق بـ:"</string>
- <string name="cancel" msgid="8360346460165114585">"إلغاء"</string>
- <string name="unknown" msgid="4742479012767208045">"غير معروف"</string>
- <string name="installing" msgid="8613631001631998372">"جارٍ التثبيت..."</string>
- <string name="installing_app" msgid="4097935682329028894">"جارٍ تثبيت <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"تم تثبيت التطبيق."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"هل تريد تثبيت هذا التطبيق؟ سيكون بإمكانه الدخول إلى:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"هل تريد تثبيت هذا التطبيق؟ إنه لا يتطلب أي دخول خاص."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"هل تريد تثبيت تحديث لهذا التطبيق الحالي؟ لن تفقد بياناتك الحالية. سيكون بإمكان التطبيق المحدّث الدخول إلى:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"هل تريد تثبيت تحديث لهذا التطبيق المضمن؟ لن تفقد بياناتك الحالية. سيكون بإمكان التطبيق المحدّث الدخول إلى:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"هل تريد تثبيت تحديث لهذا التطبيق الحالي؟ لن يتم فقد بياناتك الحالية. كما أنه لا يتطلب أي دخول خاص."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"هل تريد تثبيت تحديث لهذا التطبيق المضمن؟ لن يتم فقد بياناتك الحالية. كما أنه لا يتطلب أي دخول خاص."</string>
- <string name="install_failed" msgid="6579998651498970899">"التطبيق ليس مثبتًا."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"تم حظر تثبيت الحزمة."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"لم يتم تثبيت التطبيق لأن حزمة التثبيت تتعارض مع حزمة حالية."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"لم يتم تثبيت التطبيق لأنه ليس متوافقًا مع جهازك اللوحي."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"هذا التطبيق لا يتوافق مع جهاز التلفزيون."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"لم يتم تثبيت التطبيق لأنه ليس متوافقًا مع هاتفك."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"لم يتم تثبيت التطبيق لأن الحزمة تبدو غير صالحة."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"تعذر تثبيت <xliff:g id="APP_NAME">%1$s</xliff:g> على جهازك اللوحي."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"تعذر تثبيت <xliff:g id="APP_NAME">%1$s</xliff:g> على جهاز التلفزيون."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"تعذر تثبيت <xliff:g id="APP_NAME">%1$s</xliff:g> على هاتفك."</string>
- <string name="launch" msgid="4826921505917605463">"فتح"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"لا يسمح المشرف بتثبيت التطبيقات التي يتم الحصول عليها من مصادر غير معروفة"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"يتعذر على هذا المستخدم تثبيت التطبيقات غير المعروفة"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"غير مسموح لهذا المستخدم بتثبيت التطبيقات"</string>
- <string name="ok" msgid="3468756155452870475">"موافق"</string>
- <string name="settings" msgid="6743583734099755409">"الإعدادات"</string>
- <string name="manage_applications" msgid="4033876279091996596">"إدارة التطبيقات"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"هل تريد استبدال التطبيق؟"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"سيحل التطبيق الذي تثبته الآن محل تطبيق آخر.\n\nسيتم حفظ جميع بيانات المستخدم السابقة."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"هذا تطبيق نظام.\n\nسيتم حفظ جميع بيانات المستخدم السابقة."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"نفدت مساحة التخزين"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"تعذر تثبيت <xliff:g id="APP_NAME">%1$s</xliff:g> يُرجى تحرير بعض المساحة والمحاولة مرة أخرى."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"موافق"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"لم يتم العثور على التطبيق"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"لم يتم العثور على التطبيق في قائمة التطبيقات المثبتة."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"غير مسموح به"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"غير مسموح للمستخدم الحالي بتنفيذ عملية إلغاء التثبيت هذه."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"الخطأ"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"تعذر إلغاء تثبيت التطبيق."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"إلغاء تثبيت التطبيق"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"إزالة التحديث"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> هو جزء من التطبيق التالي:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"هل تريد إزالة هذا التطبيق؟"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"هل تريد إزالة هذا التطبيق "<b>"لكل"</b>" المستخدمين؟ ستتم إزالة التطبيق وبياناته من "<b>"كل"</b>" المستخدمين على هذا الجهاز."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"هل تريد إزالة هذا التطبيق للمستخدم <xliff:g id="USERNAME">%1$s</xliff:g>؟"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"هل تريد استبدال هذا التطبيق بإصدار المصنع؟ ستتم إزالة جميع البيانات."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"هل تريد استبدال هذا التطبيق بإصدار المصنع؟ ستتم إزالة جميع البيانات. وسيؤثر هذا في جميع مستخدمي هذا الجهاز، بما في ذلك من لديهم ملفات شخصية للعمل."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"عمليات إلغاء التثبيت الجارية"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"عمليات إلغاء التثبيت غير الناجحة"</string>
- <string name="uninstalling" msgid="5556217435895938250">"جارٍ الإزالة..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"جارٍ إلغاء تثبيت <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"انتهت الإزالة."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"تم إلغاء تثبيت <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"تعذّر إلغاء التثبيت."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"لم يتم إلغاء تثبيت <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> بنجاح."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"تعذر إلغاء تثبيت تطبيق مشرف الأجهزة النشطة"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"تعذر إلغاء تثبيت تطبيق مشرف الأجهزة النشطة لدى <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"هذا التطبيق مطلوب لبعض المستخدمين أو الملفات الشخصية وتم إلغاء تثبيته لآخرين."</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"هذا التطبيق مطلوب لملفك الشخصي ولا يمكن إلغاء تثبيته."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"مشرف الجهاز يحتاج إلى هذا التطبيق ولا يمكن إزالته."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"إدارة تطبيقات مشرف الجهاز"</string>
- <string name="manage_users" msgid="3125018886835668847">"إدارة حسابات المستخدمين"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"تعذرت إزالة <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"حدثت مشكلة أثناء تحليل الحزمة."</string>
- <string name="newPerms" msgid="6039428254474104210">"جديد"</string>
- <string name="allPerms" msgid="1024385515840703981">"الكل"</string>
- <string name="privacyPerms" msgid="1850527049572617">"الخصوصية"</string>
- <string name="devicePerms" msgid="6733560207731294504">"الدخول إلى الجهاز"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"لا يتطلب هذا التحديث أي أذونات جديدة."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"هل ترغب في منح الأذونات التالية؟ علمًا بأنها تتيح الدخول إلى:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"رفض"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"مزيد من المعلومات"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"الرفض على أي حال"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"هل توافق على منح <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> إذن <xliff:g id="ACTION">%2$s</xliff:g>؟"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> إذن معطَّل"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"كل الأذونات معطّلة"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"ليس هناك أذونات معطّلة"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"سماح"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"التطبيقات"</string>
- <string name="app_permissions" msgid="3146758905824597178">"أذونات التطبيق"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"عدم السؤال مرة أخرى"</string>
- <string name="no_permissions" msgid="3210542466245591574">"ليست هناك أذونات"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"أذونات إضافية"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"مسؤول التحكّم بالأذونات"</string>
+ <string name="ok" msgid="4417794827535157922">"حسنًا"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"أذونات"</string>
+ <string name="cancel" msgid="7279939269964834974">"إلغاء"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"لم يتمّ العثور على التطبيق."</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"رفض"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"رفض وعدم طرح السؤال مرةً أخرى"</string>
+ <!-- no translation found for grant_dialog_button_deny_background (5378693207810841555) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_deny_background_and_dont_ask_again (1032019626928637454) -->
+ <skip />
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"معلومات أكثر"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"رفض على أيّ حال"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"هل تريد السماح للتطبيق <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بإجراء <xliff:g id="ACTION">%2$s</xliff:g>؟"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"هل تريد السماح دائمًا للتطبيق <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بهذا الإجراء <xliff:g id="ACTION">%2$s</xliff:g>؟"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"أثناء استخدام التطبيق فقط"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"دومًا"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"رفض وعدم طرح السؤال مرةً أخرى"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> إذن موقوف"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"كل الأذونات موقوفة."</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"ليس هناك أذونات موقوفة."</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"سماح"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"السماح طوال الوقت"</string>
+ <!-- no translation found for grant_dialog_button_allow_foreground (8090382319222429427) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_allow_background (3190568549032350790) -->
+ <skip />
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"تطبيقات"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"أذونات التطبيق"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"مدير الأذونات"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"عدم السؤال مجدّدًا"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"ليس هناك أيّ أذونات."</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"أذونات إضافية"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"فتح معلومات التطبيق"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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>
@@ -114,42 +59,263 @@
<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="old_sdk_deny_warning" msgid="3872277112584842615">"تم تصميم هذا التطبيق لإصدار قديم من Android. وقد يؤدي رفض الإذن إلى عدم العمل على النحو المطلوب مرة أخرى."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"تنفيذ إجراء غير معروف"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"تم السماح لعدد <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="6773743421743728921">"عرض النظام"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"إخفاء النظام"</string>
- <string name="permission_title" msgid="6495415273398916381">"أذونات <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"ليس هناك أي تطبيقات"</string>
- <string name="location_settings" msgid="1774875730854491297">"إعدادات الموقع"</string>
- <string name="location_warning" msgid="8778701356292735971">"يعد <xliff:g id="APP_NAME">%1$s</xliff:g> أحد مقدمي خدمات الموقع لهذا الجهاز. يمكن تعديل إمكانية الوصول إلى الموقع من إعدادات الموقع."</string>
- <string name="system_warning" msgid="7103819124542305179">"في حال رفض هذا الإذن، قد لا تعمل ميزات أساسية في جهازك على النحو المنشود."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"فرضته إحدى السياسات"</string>
- <string name="loading" msgid="7811651799620593731">"جارٍ التحميل..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"كل الأذونات"</string>
- <string name="other_permissions" msgid="2016192512386091933">"إمكانات التطبيق الأخرى"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"طلب الإذن"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"تم اكتشاف طبقة متراكبة للشاشة"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"لتغيير إعداد هذا الإذن، يتعين عليك أولاً تعطيل الطبقة المتراكبة للشاشة من الإعدادات > التطبيقات"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"فتح الإعدادات"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"لا تتوافق إجراءات التثبيت/إلغاء التثبيت مع نظام Android Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"تم تحديث <xliff:g id="APP_NAME_0">%1$s</xliff:g>. هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">%1$s</xliff:g> بالوصول إلى ما يلي؟"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"اختيار ما تريد السماح لتطبيق <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بالوصول إليه"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"تم تحديث <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>. عليك اختيار ما تريد السماح لهذا التطبيق بالوصول إليه."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"إلغاء"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"متابعة"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"الأذونات الجديدة"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"الأذونات الحالية"</string>
- <string name="message_staging" msgid="6151794817691100003">"جارٍ الطرح المرحلي للتطبيق…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"غير معروف"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"لأغراض الأمان، غير مسموح لجهازك اللوحي بتثبيت تطبيقات غير معروفة من هذا المصدر."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"لأغراض الأمان، غير مسموح لجهاز التلفزيون الذي تستخدمه بتثبيت تطبيقات غير معروفة من هذا المصدر."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"لأغراض الأمان، غير مسموح لهاتفك بتثبيت تطبيقات غير معروفة من هذا المصدر."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"يعتبر الهاتف والبيانات الشخصية أكثر عرضة لهجوم التطبيقات غير المعروفة. من خلال تثبيت هذا التطبيق، توافق على تحمل مسؤولية أي ضرر يحدث لهاتفك أو فقدان البيانات الذي قد ينتج عن استخدامه."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"يعتبر الجهاز اللوحي والبيانات الشخصية أكثر عرضة لهجوم التطبيقات غير المعروفة. من خلال تثبيت هذا التطبيق، توافق على تحمل مسؤولية أي ضرر يحدث للجهاز اللوحي أو فقدان البيانات الذي قد ينتج عن استخدامه."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"يعتبر جهاز التلفزيون والبيانات الشخصية أكثر عرضة لهجوم التطبيقات غير المعروفة. من خلال تثبيت هذا التطبيق، توافق على تحمل مسؤولية أي ضرر يحدث لجهاز التلفزيون أو فقدان البيانات الذي قد ينتج عن استخدامه."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"متابعة"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"الإعدادات"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"تثبيت / إلغاء تثبيت تطبيقات Android Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"تمّ تصميم هذا التطبيق لإصدار قديم من Android. وقد يؤدي رفض الإذن إلى عدم العمل على النحو المطلوب مرة أخرى."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"تنفيذ إجراء غير معروف"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"تمّ السماح لـ <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="7623002570829860709">"عرض النظام"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"إخفاء النظام"</string>
+ <string name="no_apps" msgid="2377153782338039463">"ليس هناك أيّ تطبيقات."</string>
+ <string name="location_settings" msgid="547378321761364906">"إعدادات الموقع الجغرافي"</string>
+ <string name="location_warning" msgid="4687406043150343369">"يعد <xliff:g id="APP_NAME">%1$s</xliff:g> أحد مقدِّمي خدمات الموقع الجغرافي لهذا الجهاز. ويمكن تعديل إمكانية الوصول إلى الموقع الجغرافي من إعدادات الموقع الجغرافي."</string>
+ <string name="system_warning" msgid="6868290533389195836">"في حال رفض هذا الإذن، قد لا تعمل ميزات أساسية في جهازك على النحو المنشود."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"فرضته إحدى السياسات"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"تمّ إيقاف الوصول إلى الخلفية بواسطة السياسة."</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"تمّ تفعيل الوصول إلى الخلفية بواسطة السياسة."</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"تمّ تفعيل الوصول إلى المقدمة بواسطة السياسة."</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"إعدادات يتحكم فيها المشرف"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"أوقف المشرف وصول التطبيق للبيانات أثناء عدم نشاطه."</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"فعَّل المشرف وصول التطبيق للبيانات أثناء عدم نشاطه."</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"فعَّل المشرف وصول التطبيق للبيانات أثناء نشاطه."</string>
+ <!-- no translation found for permission_summary_enabled_system_fixed (5463084832974856683) -->
+ <skip />
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <!-- no translation found for permission_access_always (5419580764084361573) -->
+ <skip />
+ <!-- no translation found for permission_access_only_foreground (2857031150724321567) -->
+ <skip />
+ <!-- no translation found for permission_access_never (425385910378172045) -->
+ <skip />
+ <string name="loading" msgid="323483393167148377">"جارٍ التحميل…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"كل الأذونات"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"إمكانات التطبيق الأخرى"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"طلب الإذن"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"تمّ اكتشاف طبقة متراكبة للشاشة."</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"لتغيير إعداد هذا الإذن، يتعيَّن عليك أولاً إيقاف الطبقة المتراكبة للشاشة من الإعدادات > التطبيقات"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"فتح الإعدادات"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"لا تتوافق إجراءات التثبيت/إلغاء التثبيت مع نظام Android Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"اختيار ما تريد السماح لتطبيق <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بالوصول إليه"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"تمّ تحديث <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>. وعليك اختيار ما تريد السماح لهذا التطبيق بالوصول إليه."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"إلغاء"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"متابعة"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"الأذونات الجديدة"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"الأذونات الحالية"</string>
+ <string name="message_staging" msgid="641286607664721291">"جارٍ الطرح المرحلي للتطبيق…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"غير معروف"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"لوحة التحكّم"</string>
+ <!-- no translation found for permission_usage_summary_foreground (3203419920107457274) -->
+ <skip />
+ <!-- no translation found for permission_usage_summary_background (5719598203265078254) -->
+ <skip />
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"أيّ إذن"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"أي وقت"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"آخر 7 أيام"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"آخر 24 ساعة"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"آخر ساعة"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"آخر 15 دقيقة"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"الدقيقة الماضية"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"لم يتمّ استخدام الأذونات"</string>
+ <!-- no translation found for permission_usage_list_title_any_time (5641676869304328239) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_7_days (2972289322203714509) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_day (6298662604046093174) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_hour (7224982939487774388) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_15_minutes (49045607172810502) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_minute (7716966405942817635) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_any_time (862654449303514044) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_7_days (5393381637937213483) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_day (7202567658282481259) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_hour (4672313408976666479) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_15_minutes (1776918144361651860) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_minute (236300476767668315) -->
+ <skip />
+ <!-- no translation found for app_permission_usage_bar_label (7261634017833698654) -->
+ <!-- no translation found for permission_usage_view_details (4728049344017619500) -->
+ <skip />
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"تمّت التصفية حسب: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"إزالة الفلتر"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"تصفية بحسب"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"تصفية بحسب الأذونات"</string>
+ <!-- no translation found for filter_by_time (1763143592970195407) -->
+ <skip />
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"معظم الأذونات"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"معظم مرّات الدخول"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"آخر دخول"</string>
+ <!-- no translation found for sort_by_app (1912228966803416485) -->
+ <skip />
+ <!-- no translation found for sort_by_time (8280378662234104410) -->
+ <skip />
+ <!-- no translation found for item_separator (8266062815210378175) -->
+ <skip />
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"إعادة تحميل"</string>
+ <!-- no translation found for permission_usage_permission_filter_subtitle (5539392196389332769) -->
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"استخدام أذونات التطبيق"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"استخدام الإذن: <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="4040424337831328212">"استخدام الإذن: <xliff:g id="NUM">%1$s</xliff:g> مرّة آخر استخدام قبل <xliff:g id="TIME">%2$s</xliff:g>."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"سماح"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"السماح طوال الوقت"</string>
+ <!-- no translation found for app_permission_button_allow_foreground (2303741829613210541) -->
+ <skip />
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"رفض"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"إذن <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <!-- no translation found for app_permission_header (228974007660007656) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_usage_summary (1034436308858219976) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_no_usages (4444374134047275841) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_app_permissions_link (8033278634020892918) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_permission_apps_link (8759141212929298774) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_generic (5479202003136667039) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_activity_recognition (2022880340017289990) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_calendar (2846128908236787586) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_call_log (2429916962093948340) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_camera (6699611334403400091) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_contacts (5169995707720233126) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_location (687820658574645201) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_aural (2102206495149326019) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_visual (3105938942794669520) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_microphone (2300290217308759293) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_phone (3773977614654088578) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sensors (6733606479604624853) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sms (8850213022386508528) -->
+ <skip />
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"آخر إذن وصول: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"لم يتم الوصول مطلقًا."</string>
+ <string name="allowed_header" msgid="6279244592227088158">"التطبيقات أو الأذونات المسموح بها"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"السماح فقط أثناء الاستخدام"</string>
+ <string name="denied_header" msgid="2277998574238617699">"التطبيقات أو الأذونات المرفوضة"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"الاطّلاع على الاستخدام التفصيلي"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <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="seconds" formatted="false" msgid="1632909606956324957">
+ <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_reminders" msgid="8040710767178843151">"تذكيرات الأذونات"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"يستخدِم التطبيق <xliff:g id="APP_NAME">%s</xliff:g> موقعك الجغرافي."</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"يمكن لهذا التطبيق دائمًا الوصول إلى بيانات موقعك الجغرافي. انقر لتغيير ذلك."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"أثناء استخدام التطبيق فقط"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"لم يتم منح أي أذونات."</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"لم يتم رفض أي أذونات."</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"لم يتم السماح لأي تطبيقات."</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"لم يتم رفض أي تطبيقات."</string>
+ <string name="settings" msgid="2884124136779508907">"الإعدادات"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"تحظى خدمة <xliff:g id="SERVICE_NAME">%s</xliff:g> بوصول كامل إلى جهازك."</string>
+ <!-- no translation found for accessibility_service_dialog_title_multiple (8129325613496173909) -->
+ <skip />
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"يمكن لخدمة <xliff:g id="SERVICE_NAME">%s</xliff:g> عرض شاشتك وإجراءاتك ومدخلاتك وتنفيذ الإجراءات والتحكم في العرض."</string>
+ <!-- no translation found for accessibility_service_dialog_bottom_text_multiple (1387803460488775887) -->
+ <skip />
+ <!-- no translation found for request_role_title (3611734134669430568) -->
+ <skip />
+ <!-- no translation found for request_role_current_default (7512045433655289638) -->
+ <skip />
+ <!-- no translation found for request_role_set_as_default (5706081295230541240) -->
+ <skip />
+ <!-- no translation found for default_app_search_keyword (6938709626391437391) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_ok (3007005536659549573) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_open_settings (3368892579319881043) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_title (7173961211414061803) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_separator (9008030412869423988) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_last_separator (7455459775266515801) -->
+ <skip />
+ <string name="default_apps" msgid="8554530939151957828">"التطبيقات التلقائية"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"ليست هناك تطبيقات تلقائية."</string>
+ <!-- no translation found for default_apps_manage_domain_urls (3146379064445013719) -->
+ <skip />
+ <string name="default_apps_for_work" msgid="8582151955372061208">"التطبيقات التلقائية للعمل"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"بدون"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"ليست هناك تطبيقات."</string>
+ <!-- no translation found for special_app_access_search_keyword (462008045110320714) -->
+ <skip />
+ <string name="special_app_access" msgid="2561673957499408877">"أذونات خاصة للتطبيقات"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"لا إذن وصول خاص إلى التطبيق."</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"ليست هناك تطبيقات."</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"تطبيق المساعد"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"تطبيق المتصفّح"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"تطبيق الهاتف"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"تطبيق SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"تطبيق الطوارئ"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"تطبيق الصفحة الرئيسية"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"تطبيق الموسيقى"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"تطبيق المعرض"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"تطبيق الهاتف في وضع السيارة"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"تطبيق إعادة توجيه المكالمات"</string>
+ <!-- no translation found for role_label_call_screening (1089966334646538858) -->
+ <skip />
+ <string name="role_label_call_companion" msgid="7369723859682076467">"تطبيق مصاحب للمكالمات"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"لا يتوافق التطبيق مع الملف الشخصي للعمل."</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"ملاحظة: في حال إعادة تشغيل جهازك وضبط قفل شاشة، لا يمكن بدء هذا التطبيق إلى أن تفتح جهازك."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"سيتمكن المساعد من قراءة المعلومات عن التطبيقات قيد الاستخدام على نظامك، بما في ذلك المعلومات المرئية على شاشتك أو التي يمكن الوصول إليها داخل التطبيقات."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"مشاركة بيانات تصحيح الأخطاء"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"هل تريد مشاركة بيانات تصحيح الأخطاء التفصيلية؟"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"يريد تطبيق <xliff:g id="APP_NAME">%1$s</xliff:g> تحميل معلومات تصحيح الأخطاء."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"مشاركة بيانات تصحيح الأخطاء"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"يطلب تطبيق <xliff:g id="APP_NAME_0">%1$s</xliff:g> تحميل تقرير خطأ من هذا الجهاز تم تسجيله بتاريخ <xliff:g id="DATE">%2$s</xliff:g> في <xliff:g id="TIME">%3$s</xliff:g>. وتشمل تقارير الأخطاء المعلومات الشخصية حول جهازك أو المعلومات التي سجلتها التطبيقات، مثل أسماء المستخدمين وبيانات الموقع الجغرافي ومعرّفات الأجهزة ومعلومات الشبكة. ويجب عدم مشاركة تقارير الأخطاء إلا مع المستخدمين والتطبيقات التي تثق بمشاركة هذه المعلومات معها. هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">%4$s</xliff:g> بتحميل تقرير خطأ؟"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"سماح"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"رفض"</string>
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_title (5699953608028268176) -->
+ <skip />
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_content (6960592986228883592) -->
+ <skip />
+ <!-- no translation found for dismiss_with_acknowledgment (2879819713128822468) -->
+ <skip />
</resources>
diff --git a/res/values-as-television/strings.xml b/res/values-as-television/strings.xml
new file mode 100644
index 0000000..1e290a1
--- /dev/null
+++ b/res/values-as-television/strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 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.
+ -->
+
+<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="7721279038965659947">"অস্বীকাৰ কৰক আৰু পুনৰাই নুসুধিব"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"আপুনি ইয়াক পিছত ছেটিংসমূহ > এপসমূহলৈ গৈ সলনি কৰিব পাৰিব"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"ছিষ্টেম এপসমূহ দেখুৱাওক"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"এপ্ৰ অনুমতি"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"এপ্ৰ অনুমতি"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> অনুমতি"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"অতিৰিক্ত অনুমতি"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> অনুমতি"</string>
+</resources>
diff --git a/res/values-as-watch/strings.xml b/res/values-as-watch/strings.xml
new file mode 100644
index 0000000..d1e4cd6
--- /dev/null
+++ b/res/values-as-watch/strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 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.
+ -->
+
+<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="2362190433398675134">"অস্বীকাৰ কৰক, পুনৰাই নুসুধিব"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"ছিষ্টেম এপসমূহ দেখুৱাওক"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"সলনি কৰিব নোৱাৰি"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"হয়"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"বাতিল কৰক"</string>
+</resources>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index f195779..dba1de5 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,205 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"পেকেজ ইনষ্টলাৰ"</string>
- <string name="next" msgid="3057143178373252333">"পৰৱৰ্তী"</string>
- <string name="install" msgid="5896438203900042068">"ইনষ্টল কৰক"</string>
- <string name="done" msgid="3889387558374211719">"সম্পন্ন হ\'ল"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"এই এপটোক এইবোৰৰ অনুমতি দিয়ক:"</string>
- <string name="cancel" msgid="8360346460165114585">"বাতিল কৰক"</string>
- <string name="unknown" msgid="4742479012767208045">"অজ্ঞাত"</string>
- <string name="installing" msgid="8613631001631998372">"ইনষ্টল কৰি থকা হৈছে…"</string>
- <!-- no translation found for installing_app (4097935682329028894) -->
- <skip />
- <string name="install_done" msgid="3682715442154357097">"এপ্ ইনষ্টল কৰা হ\'ল।"</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"আপুনি এই এপ্লিকেশ্বন ইনষ্টল কৰিব বিচাৰেনে? ই এইবোৰ ব্যৱহাৰ কৰিব পাৰিব:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"আপুনি এই এপ্লিকেশ্বন ইনষ্টল কৰিব বিচাৰেনে? ইয়াক ব্য়ৱহাৰ সম্পৰ্কীয় কোনো অনুমতিৰ প্ৰয়োজন নাই।"</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"আপুনি পূর্বৰে পৰা থকা এপ্লিকেশ্বন আপডেট কৰিব বিচাৰেনে? আপুনি কোনো পুৰণি ডেটা নেহেৰুৱাই। আপডেট হোৱা এপ্লিকেশ্বনে এইবোৰ ব্যৱহাৰ কৰিব পাৰিব:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"আপুনি এই অন্তনির্মিত এপ্লিকেশ্বন আপডেট কৰিব বিচাৰেনে? আপুনি কোনো পুৰণি ডেটা নেহেৰুৱাই। আপডেট হোৱা এপ্লিকেশ্বনে এইবোৰ ব্যৱহাৰ কৰিব পাৰিব:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"আপুনি পূর্বৰে পৰা থকা এপ্লিকেশ্বন আপডেট কৰিব বিচাৰেনে? আপুনি কোনো পুৰণি ডেটা নেহেৰুৱাব। ব্যৱহাৰৰ বাবে ইয়াক কোনো বিশেষ অনুমতিৰ প্ৰয়োজন নাই৷"</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"আপুনি এই অন্তনির্মিত এপ্লিকেশ্বন আপডেট কৰিব বিচাৰেনে? আপুনি নিজৰ পুৰণি ডেটা নেহেৰুৱাব৷ ব্যৱহাৰৰ বাবে ইয়াক কোনো বিশেষ অনুমতিৰ প্ৰয়োজন নাই৷"</string>
- <string name="install_failed" msgid="6579998651498970899">"এপ্ ইনষ্টল কৰা হোৱা নাই।"</string>
- <!-- no translation found for install_failed_blocked (1606870930588770025) -->
- <skip />
- <!-- no translation found for install_failed_conflict (5336045235168070954) -->
- <skip />
- <!-- no translation found for install_failed_incompatible (6682387386242708974) -->
- <skip />
- <!-- no translation found for install_failed_incompatible (3553367270510072729) -->
- <skip />
- <!-- no translation found for install_failed_incompatible (7917996365659426872) -->
- <skip />
- <!-- no translation found for install_failed_invalid_apk (269885385245534742) -->
- <skip />
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g>ক আপোনাৰ টে\'বলেটত ইনষ্টল কৰিব পৰা নগ\'ল৷"</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"আপোনাৰ টিভিত <xliff:g id="APP_NAME">%1$s</xliff:g> ইনষ্টল কৰিব পৰা নগ\'ল।"</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g>ক আপোনাৰ ফ\'নত ইনষ্টল কৰিব পৰা নগ\'ল৷"</string>
- <string name="launch" msgid="4826921505917605463">"খোলক"</string>
- <!-- no translation found for unknown_apps_admin_dlg_text (7488386758312008790) -->
- <skip />
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"এই ব্যৱহাৰকাৰীয়ে অজ্ঞাত উৎসৰপৰা লাভ কৰা এপসমূহ ইনষ্টল কৰিব নোৱাৰে"</string>
- <!-- no translation found for install_apps_user_restriction_dlg_text (5041150186260066212) -->
- <skip />
- <string name="ok" msgid="3468756155452870475">"ঠিক আছে"</string>
- <string name="settings" msgid="6743583734099755409">"ছেটিংসমূহ"</string>
- <string name="manage_applications" msgid="4033876279091996596">"এপসমূহ পৰিচালনা কৰক"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"এপ্ সলনি কৰিবনে?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"আপুনি ইনষ্টল কৰা এপে অন্য এটা এপক সলনি কৰিব।\n\nআপোনাৰ পূৰ্বৰ সকলো ডেটা ছেভ কৰা হ\'ব।"</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"এইটো এটা ছিষ্টেম এপ্।\n\nআপোনাৰ পূৰ্বৰ সকলো ডেটা ছেভ কৰা হ\'ব।"</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"পৰ্যাপ্ত খালী ঠাই নাই"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g>ক ইনষ্টল কৰিব পৰা নগ\'ল। কিছু খালী ঠাই উলিয়াই পুনৰ চেষ্টা কৰক৷"</string>
- <string name="dlg_ok" msgid="6944357727705699232">"ঠিক আছে"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"এপ্ পোৱা নগ\'ল"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"ইনষ্টল হৈ থকা এপসমূহৰ তালিকাত এই এপটো পোৱা নগ\'ল।"</string>
- <!-- no translation found for user_is_not_allowed_dlg_title (118128026847201582) -->
- <skip />
- <!-- no translation found for user_is_not_allowed_dlg_text (739716827677987545) -->
- <skip />
- <!-- no translation found for generic_error_dlg_title (2684806600635296961) -->
- <skip />
- <!-- no translation found for generic_error_dlg_text (4288738047825333954) -->
- <skip />
- <string name="uninstall_application_title" msgid="1860074100811653963">"এপ্ আনইনষ্টল কৰক"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"আপডেট আনইনষ্টল কৰক"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> হৈছে তলৰ এপটোৰ এটা অংশ:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"আপুনি এই এপটো আনইনষ্টল কৰিব বিচাৰেনে?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"আপুনি "<b>"সকলো"</b>" ব্যৱহাৰকাৰীৰ বাবে এই এপটো আনইনষ্টল কৰিবলৈ বিচাৰেনে? এপ্লিকেশ্বন আৰু ইয়াৰ ডেটাক ডিভাইচটোত থকা "<b>"সকলো"</b>" ব্যৱহাৰকাৰীৰ পৰা আঁতৰোৱা হ\'ব৷"</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"আপুনি ব্যৱহাৰকাৰী <xliff:g id="USERNAME">%1$s</xliff:g>ৰ বাবে এই এপটো আনইনষ্টল কৰিব বিচাৰেনে?"</string>
- <!-- no translation found for uninstall_update_text (1394549691152728409) -->
- <skip />
- <!-- no translation found for uninstall_update_text_multiuser (2083665452990861991) -->
- <skip />
- <!-- no translation found for uninstalling_notification_channel (5698369661583525583) -->
- <skip />
- <!-- no translation found for uninstall_failure_notification_channel (8224276726364132314) -->
- <skip />
- <string name="uninstalling" msgid="5556217435895938250">"আনইনষ্টল কৰি থকা হৈছে…"</string>
- <!-- no translation found for uninstalling_app (2773617614877719294) -->
- <skip />
- <string name="uninstall_done" msgid="3792487853420281888">"আনইনষ্টল কাৰ্যটো সমাপ্ত হ\'ল৷"</string>
- <!-- no translation found for uninstall_done_app (775837862728680479) -->
- <skip />
- <string name="uninstall_failed" msgid="631122574306299512">"আনইনষ্টল কৰিব পৰা নগ\'ল।"</string>
- <!-- no translation found for uninstall_failed_app (945277834056527022) -->
- <skip />
- <!-- no translation found for uninstall_failed_device_policy_manager (2727361164694743362) -->
- <skip />
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"<xliff:g id="USERNAME">%1$s</xliff:g>ৰ সক্ৰিয় ডিভাইচৰ প্ৰশাসকীয় এপ্ আনইনষ্টল কৰিব নোৱাৰি"</string>
- <!-- no translation found for uninstall_all_blocked_profile_owner (3544933038594382346) -->
- <skip />
- <!-- no translation found for uninstall_blocked_profile_owner (6912141045528994954) -->
- <skip />
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"আপোনাৰ ডিভাইচৰ প্ৰশাসকে এই এপটো ৰখাটো বাধ্যতামূলক কৰি ৰাখিছে, গতিকে ইয়াক আনইনষ্টল কৰিব পৰা নাযায়।"</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"ডিভাইচৰ প্ৰশাসকীয় এপসমূহ পৰিচালনা কৰক"</string>
- <!-- no translation found for manage_users (3125018886835668847) -->
- <skip />
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g>ক আনইনষ্টল কৰিব নোৱাৰি৷"</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"পেকেজটো পাৰ্ছ কৰোঁতে এটা সমস্যাই দেখা দিছিল।"</string>
- <string name="newPerms" msgid="6039428254474104210">"নতুন"</string>
- <string name="allPerms" msgid="1024385515840703981">"সকলো"</string>
- <string name="privacyPerms" msgid="1850527049572617">"গোপনীয়তা"</string>
- <string name="devicePerms" msgid="6733560207731294504">"ডিভাইচৰ ব্যৱহাৰ"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"এই আপডেটক কোনো নতুন অনুমতিৰ প্ৰয়োজন নাই।"</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"আপুনি তলৰ অনুমতিসমূহৰ অনুমোদন জনাব বিচাৰেনে? ই এই প্ৰৱেশাধিকাৰ লাভ কৰিব:"</string>
- <!-- no translation found for grant_dialog_button_deny (2176510645406614340) -->
- <skip />
- <!-- no translation found for grant_dialog_button_more_info (2218220771432058426) -->
- <skip />
- <!-- no translation found for grant_dialog_button_deny_anyway (847960499284125250) -->
- <skip />
- <!-- no translation found for current_permission_template (6378304249516652817) -->
- <skip />
- <!-- no translation found for permission_warning_template (7332275268559121742) -->
- <skip />
- <!-- no translation found for permission_revoked_count (7386129423432613024) -->
- <skip />
- <!-- no translation found for permission_revoked_all (8595742638132863678) -->
- <skip />
- <!-- no translation found for permission_revoked_none (2059511550181271342) -->
- <skip />
- <!-- no translation found for grant_dialog_button_allow (4616529495342337095) -->
- <skip />
- <!-- no translation found for app_permissions_breadcrumb (3390836200791539264) -->
- <skip />
- <!-- no translation found for app_permissions (3146758905824597178) -->
- <skip />
- <!-- no translation found for never_ask_again (1089938738199748687) -->
- <skip />
- <!-- no translation found for no_permissions (3210542466245591574) -->
- <skip />
- <!-- no translation found for additional_permissions (6667573114240111763) -->
- <skip />
- <!-- no translation found for additional_permissions_more (945127158155064388) -->
- <!-- no translation found for old_sdk_deny_warning (3872277112584842615) -->
- <skip />
- <!-- no translation found for default_permission_description (4992892207044156668) -->
- <skip />
- <!-- no translation found for app_permissions_group_summary (4787239772223699263) -->
- <skip />
- <!-- no translation found for menu_show_system (6773743421743728921) -->
- <skip />
- <!-- no translation found for menu_hide_system (7595471742649432977) -->
- <skip />
- <!-- no translation found for permission_title (6495415273398916381) -->
- <skip />
- <!-- no translation found for no_apps (1965493419005012569) -->
- <skip />
- <!-- no translation found for location_settings (1774875730854491297) -->
- <skip />
- <!-- no translation found for location_warning (8778701356292735971) -->
- <skip />
- <!-- no translation found for system_warning (7103819124542305179) -->
- <skip />
- <!-- no translation found for permission_summary_enforced_by_policy (3418617316188986205) -->
- <skip />
- <!-- no translation found for loading (7811651799620593731) -->
- <skip />
- <!-- no translation found for all_permissions (5156669007784613042) -->
- <skip />
- <!-- no translation found for other_permissions (2016192512386091933) -->
- <skip />
- <!-- no translation found for permission_request_title (1204446718549121199) -->
- <skip />
- <!-- no translation found for screen_overlay_title (3021729846864038529) -->
- <skip />
- <!-- no translation found for screen_overlay_message (2141944461571677331) -->
- <skip />
- <!-- no translation found for screen_overlay_button (4344544843349937743) -->
- <skip />
- <!-- no translation found for wear_not_allowed_dlg_title (8104666773577525713) -->
- <skip />
- <!-- no translation found for wear_not_allowed_dlg_text (1322352525843583064) -->
- <skip />
- <!-- no translation found for permission_review_warning_title_template_update (2569412700408535872) -->
- <skip />
- <!-- no translation found for permission_review_title_template_install (6819338441305295479) -->
- <skip />
- <!-- no translation found for permission_review_title_template_update (8632233603161669426) -->
- <skip />
- <!-- no translation found for review_button_cancel (957906817733578877) -->
- <skip />
- <!-- no translation found for review_button_continue (4809162078179371370) -->
- <skip />
- <!-- no translation found for new_permissions_category (3213523410139204183) -->
- <skip />
- <!-- no translation found for current_permissions_category (998210994450606094) -->
- <skip />
- <!-- no translation found for message_staging (6151794817691100003) -->
- <skip />
- <!-- no translation found for app_name_unknown (8931522764510159105) -->
- <skip />
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"আপোনাৰ টেবলেটটো যাতে সুৰক্ষিত থাকে তাৰ বাবে আপোনাৰ টেবলেটটোক এই উৎসৰ পৰা অজ্ঞাত এপসমূহ ইনষ্টল কৰিবলৈ অনুমতি দিয়া হোৱা নাই।"</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"আপোনাৰ টিভিটো যাতে সুৰক্ষিত থাকে তাৰ বাবে আপোনাৰ টিভিটোক এই উৎসৰ পৰা অজ্ঞাত এপসমূহ ইনষ্টল কৰিবলৈ অনুমতি দিয়া হোৱা নাই।"</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"আপোনাৰ ফ\'নটো যাতে সুৰক্ষিত থাকে তাৰ বাবে আপোনাৰ ফ\'নটোক এই উৎসৰ পৰা অজ্ঞাত এপসমূহ ইনষ্টল কৰিবলৈ অনুমতি দিয়া হোৱা নাই।"</string>
- <!-- no translation found for anonymous_source_warning (7700263729981815614) -->
- <skip />
- <!-- no translation found for anonymous_source_warning (8854462805499848630) -->
- <skip />
- <!-- no translation found for anonymous_source_warning (1291472686734385872) -->
- <skip />
- <!-- no translation found for anonymous_source_continue (2094381167954332292) -->
- <skip />
- <string name="external_sources_settings" msgid="8601453744517291632">"ছেটিংবোৰ"</string>
- <!-- no translation found for wear_app_channel (6200840123672949356) -->
- <skip />
+ <string name="app_name" msgid="2792757108872430971">"অনুমতি নিয়ন্ত্ৰক"</string>
+ <string name="ok" msgid="4417794827535157922">"ঠিক আছে"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"অনুমতি"</string>
+ <string name="cancel" msgid="7279939269964834974">"বাতিল কৰক"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"এপ্ পোৱা নগ\'ল"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"অস্বীকাৰ কৰক"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"অস্বীকাৰ কৰক, পুনৰাই নুসুধিব"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"অধিক তথ্য"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"অস্বীকাৰেই কৰক"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>ক <xliff:g id="ACTION">%2$s</xliff:g>ৰ বাবে অনুমতি দিবনে?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>ক সদায় <xliff:g id="ACTION">%2$s</xliff:g> কৰাৰ অনুমতি দিবনে?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"এপ্ ব্য়ৱহাৰ কৰি থাকোঁতে মাত্ৰ"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"সদায়"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"অস্বীকাৰ কৰক আৰু পুনৰাই নুসুধিব"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g>টা অক্ষম কৰা হ’ল"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"সকলো অক্ষম কৰা হ’ল"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"একো অক্ষম কৰা হোৱা নাই"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"অনুমতি দিয়ক"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"সদায় অনুমতি দিয়ক"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"কেৱল এপটো ব্যৱহাৰ হৈ থকা সময়ত অনুমতি দিয়ক"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"এপ্"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"এপ্ৰ অনুমতি"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"অনুমতি পৰিচালক"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"পুনৰাই নুসুধিব"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"কোনো অনুমতি নাই"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"অতিৰিক্ত অনুমতি"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"এপৰ তথ্য় খোলক"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
+ <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="old_sdk_deny_warning" msgid="6018489265342857714">"এই এপটো Androidৰ এটা পুৰণা সংস্কৰণৰ বাবে প্ৰস্তুত কৰা হৈছিল। অনুমতি নিদিলে ই বিচৰা ধৰণে কাম নকৰিবও পাৰে।"</string>
+ <string name="default_permission_description" msgid="692254823411049573">"অজ্ঞাত কাৰ্য কৰিব পাৰে"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_1">%2$d</xliff:g>ৰ ভিতৰত <xliff:g id="COUNT_0">%1$d</xliff:g>টা এপক অনুমতি দিয়া হৈছে"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"শেহতীয়া ব্যৱহাৰৰ তথ্য"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"অনুমতিৰ ডেশ্বব’ৰ্ড চাওক"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"ছিষ্টেম দেখুৱাওক"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"ছিষ্টেম লুকুৱাওক"</string>
+ <string name="no_apps" msgid="2377153782338039463">"কোনো এপে এই অনুমতি বিচৰা নাই"</string>
+ <string name="location_settings" msgid="547378321761364906">"অৱস্থান ছেটিংসমূহ"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> হ’ল এই ডিভাইচৰ অৱস্থান সেৱা প্ৰদানকাৰী। অৱস্থানৰ ছেটিংসমূহত অৱস্থানৰ এক্সেছ সলনি কৰিব পাৰি।"</string>
+ <string name="system_warning" msgid="6868290533389195836">"আপুনি যদি এই অনুমতি প্ৰদান নকৰে, তেন্তে আপোনাৰ ডিভাইচৰ মৌলিক সুবিধাসমূহে বিচৰা ধৰণে কাম নকৰিবও পাৰে।"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"নীতিৰ যোগেদি বলৱৎ কৰা"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"নীতি অনুসৰি নেপথ্য়ৰ এক্সেছ অক্ষম কৰা হ’ল"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"নীতি অনুসৰি নেপথ্য়ৰ এক্সেছ সক্ষম কৰা হ’ল"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"নীতি অনুসৰি অগ্ৰভূমিৰ এক্সেছ সক্ষম কৰা হ’ল"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"প্ৰশাসকে নিয়ন্ত্ৰিত কৰা"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"প্ৰশাসকে নেপথ্যৰ এক্সেছ অক্ষম কৰি ৰাখিছে"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"প্ৰশাসকে নেপথ্যৰ এক্সেছ সক্ষম কৰি ৰাখিছে"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"প্ৰশাসকে অগ্ৰভূমিৰ এক্সেছ সক্ষম কৰি ৰাখিছে"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"ছিষ্টেমে অনুমতি ছেট কৰিছে"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"সদায়"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"এপ্ ব্য়ৱহাৰ কৰি থাকোঁতে মাত্ৰ"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"কেতিয়াও নহয়"</string>
+ <string name="loading" msgid="323483393167148377">"ল’ড হৈ আছে…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"সকলো অনুমতি"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"অন্য এপৰ কার্যক্ষমতা"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"অনুমতি বিচাৰি কৰা অনুৰোধ"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"স্ক্ৰীণ অভাৰলে\' চিনাক্ত কৰা হৈছে"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"এই অনুমতিৰ ছেটিং সলনি কৰিবলৈ আপুনি প্ৰথমে ছেটিংসমূহ > এপসমূহলৈ গৈ স্ক্ৰীণ অভাৰলে\' অফ কৰিব লাগিব"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"ছেটিংসমূহ খোলক"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"ইনষ্টল/আনইনষ্টল কাৰ্য Wearত কৰিব নোৱাৰি।"</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>ক ক’ত এক্সেছ দিব লাগে বাছনি কৰক"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> আপডে’ট কৰা হৈছে। এই এপক ক’ত এক্সেছ দিব লাগে বাছনি কৰক।"</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"বাতিল কৰক"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"অব্যাহত ৰাখক"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"নতুন অনুমতি"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"সাম্প্ৰতিক অনুমতি"</string>
+ <string name="message_staging" msgid="641286607664721291">"এপৰ অন্তিম পর্যায়ৰ পৰীক্ষণ চলি আছে…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"অজ্ঞাত"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"ডেশ্বব’ৰ্ড"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">শেহতীয়া এক্সেছৰ সংখ্যা: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g>টা এক্সেছ (নেপথ্যত <xliff:g id="NUM_5">%3$s</xliff:g>টা)</item>
+ <item quantity="other">শেহতীয়া এক্সেছৰ সংখ্যা: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g>টা এক্সেছ (নেপথ্যত <xliff:g id="NUM_5">%3$s</xliff:g>টা)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">শেহতীয়া এক্সেছৰ সংখ্যা: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g>টা এক্সেছ\nদৈৰ্ঘ্য: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">শেহতীয়া এক্সেছৰ সংখ্যা: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g>টা এক্সেছ\nদৈৰ্ঘ্য: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">শেহতীয়া এক্সেছৰ সংখ্যা: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g>টা এক্সেছ (নেপথ্যত <xliff:g id="NUM_6">%3$s</xliff:g>টা)\nদৈৰ্ঘ্য: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">শেহতীয়া এক্সেছৰ সংখ্যা: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g>টা এক্সেছ (নেপথ্যত <xliff:g id="NUM_6">%3$s</xliff:g>টা)\nদৈৰ্ঘ্য: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"যিকোনো অনুমতি"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"যিকোনো সময়ত"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"যোৱা ৭ দিনত"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"যোৱা ২৪ ঘণ্টাত"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"যোৱা ১ ঘণ্টাত"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"যোৱা ১৫ মিনিটত"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"যোৱা ১ মিনিটত"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"অনুমতি ব্যৱহাৰ কৰা হোৱা নাই"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"যিকোনো সময়ত কৰা এক্সেছ"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"যোৱা ৭ দিনত কৰা এক্সেছ"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"যোৱা ২৪ ঘণ্টাত কৰা এক্সেছ"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"যোৱা এঘণ্টাত কৰা এক্সেছ"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"যোৱা ১৫ মিনিটত কৰা এক্সেছ"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"যোৱা ১ মিনিটত কৰা এক্সেছ"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"যিকোনো সময়ত আটাইতকৈ বেছি অনুমতিৰ ব্যৱহাৰ"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"যোৱা ৭ দিনত আটাইতকৈ বেছি অনুমতিৰ ব্যৱহাৰ"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"যোৱা ২৪ ঘণ্টাত আটাইতকৈ বেছি অনুমতিৰ ব্যৱহাৰ"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"যোৱা ১ ঘণ্টাত আটাইতকৈ বেছি অনুমতিৰ ব্যৱহাৰ"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"যোৱা ১৫ মিনিটত আটাইতকৈ বেছি অনুমতিৰ ব্যৱহাৰ"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"যোৱা ১ মিনিটত আটাইতকৈ বেছিকৈ বিচৰা অনুমতি"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"এপ্"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"এই অনুসৰি ফিল্টাৰ কৰা: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"ফিল্টাৰ আঁতৰাওক"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"এই অনুসৰি ফিল্টাৰ কৰক"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"অনুমতি অনুসৰি ফিল্টাৰ কৰক"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"আটাইতকৈ বেছি অনুমতি"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"আটাইতকৈ বেছি এক্সেছ"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"শেহতীয়া"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"ৰিফ্ৰে’শ্ব কৰক"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"এপৰ অনুমতিৰ ব্যৱহাৰ"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"এক্সেছ কৰা হৈছে: <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="4040424337831328212">"এক্সেছ কৰা হৈছে: <xliff:g id="NUM">%1$s</xliff:g> বাৰ। অন্তিমবাৰ <xliff:g id="TIME">%2$s</xliff:g> আগত ব্যৱহাৰ কৰা হৈছিল।"</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"অনুমতি দিয়ক"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"সকলো সময়ৰ বাবে অনুমতি দিয়ক"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"কেৱল এপটো ব্যৱহাৰ হৈ থকা সময়ত অনুমতি দিয়ক"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"অস্বীকাৰ কৰক"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> অনুমতি"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="APP">%2$s</xliff:g>ৰ <xliff:g id="PERM">%1$s</xliff:g> এক্সেছ"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g>এ আপোনাৰ <xliff:g id="PERM">%2$s</xliff:g>ত <xliff:g id="TIME">%3$s</xliff:g> পূর্বে এক্সেছ পাইছিল।"</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g>এ আপোনাৰ <xliff:g id="PERM">%2$s</xliff:g> এক্সেছ কৰা নাই।"</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"অনুমতিৰ ব্যৱহাৰৰ সবিশেষ চাওক"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"অন্তিমবাৰ এক্সেছ কৰা হৈছিল: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"কেতিয়াও এক্সেছ কৰা নাই"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"অনুমতি দিয়া হৈছে"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"কেৱল ব্যৱহাৰ হৈ থকা সময়ত অনুমতি দিয়া হয়"</string>
+ <string name="denied_header" msgid="2277998574238617699">"অস্বীকাৰ কৰা হৈছে"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"ব্যৱহাৰৰ সবিশেষ তথ্য চাওক"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <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="seconds" formatted="false" msgid="1632909606956324957">
+ <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="role_request_message_add" msgid="1977772335648650272">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>ক আপোনাৰ <xliff:g id="ROLE_NAME">%2$s</xliff:g>হিচাপে ব্যৱহাৰ কৰিবনে?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"<b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b>ৰ পৰিৱৰ্তে <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b>ক আপোনাৰ <xliff:g id="ROLE_NAME">%2$s</xliff:g>হিচাপে ব্যৱহাৰ কৰিবনে?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"অনুমতি বিষয়ক ৰিমাইণ্ডাৰ"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g>এ আপোনাৰ অৱস্থান ব্যৱহাৰ কৰি আছে"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"এই এপটোৱে সদায় আপোনাৰ অৱস্থান এক্সেছ কৰিব পাৰে। সলনি কৰিবলৈ টিপক।"</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"কেৱল এপটো ব্যৱহাৰ হৈ থকা সময়ত"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"কোনো অনুমতি দিয়া নাই"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"কোনো অনুমতি প্ৰত্যাখ্যান কৰা নাই"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"কোনো এপক অনুমতি দিয়া নাই"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"কোনো এপ্ প্ৰত্যাখ্যান কৰা নাই"</string>
+ <string name="launch_app" msgid="5641437562665039291">"খোলক"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"আনইনষ্টল কৰক"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"বলেৰে বন্ধ কৰক"</string>
+ <string name="settings" msgid="2884124136779508907">"ছেটিংসমূহ"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g>এ আপোনাৰ ডিভাইচটো সম্পূৰ্ণভাৱে এক্সেছ কৰিব পাৰে"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> সাধ্য সুবিধাসমূহে আপোনাৰ ডিভাইচটো সম্পূৰ্ণভাৱে এক্সেছ কৰিব পাৰে"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g>এ আপোনাৰ স্ক্ৰীণ, কাৰ্য আৰু ইনপুট চাব পাৰে, কাৰ্য সম্পন্ন কৰিব পাৰে আৰু ডিছপ্লে’ নিয়ন্ত্ৰণ কৰিব পাৰে।"</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"এই সেৱাবোৰে আপোনাৰ স্ক্ৰীণ, কাৰ্য আৰু ইনপুট চাব পাৰে, কাৰ্য সম্পন্ন কৰিব পাৰে আৰু ডিছপ্লে’ নিয়ন্ত্ৰণ কৰিব পাৰে।"</string>
+ <string name="default_apps" msgid="8554530939151957828">"ডিফ’ল্ট এপ্"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"কোনো ডিফ’ল্ট এপ্ নাই"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"কৰ্মস্থানৰ বাবে ডিফ’ল্ট"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"নাই"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"কোনো এপ্ নাই"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"বিশেষ এপ্ এক্সেছ"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"কোনো বিশেষ এপ্ এক্সেছ নাই"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"কোনো এপ্ নাই"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"সহায়ক এপ্"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"ব্ৰাউজাৰ এপ্"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"ফ\'ন এপ্"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"এছএমএছ এপ্"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"জৰুৰীকালীন এপ্"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"হ’ম এপ্"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Music এপ্"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Gallery এপ্"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"গাড়ী ম’ড ফ’ন এপ্"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"কল ৰিডাইৰেক্ট কৰা এপ্"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"কল স্ক্ৰীণ কৰা এপ্"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"কল সহযোগী এপ্"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"গাড়ীৰ প্ৰজেকশ্বন এপ্"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"কৰ্মস্থানৰ প্ৰ’ফাইল সমৰ্থন নকৰে"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"টোকা: যদি আপুনি আপোনাৰ ডিভাইচটো ৰিষ্টাৰ্ট কৰে আৰু আপোনাৰ এটা স্ক্ৰীণ লক ছেট কৰি থোৱা আছে, তেন্তে এই এপটো আপুনি ডিভাইচটো আনলক নকৰালৈকে আৰম্ভ নহ’ব।"</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"এই সহায়কটোৱে আপোনাৰ ছিষ্টেমত ব্যৱহৃত হৈ থকা এপ্সমূহৰ বিষয়ে তথ্য পঢ়িব পাৰিব। সেই তথ্যসমূহৰ ভিতৰত আপোনাৰ স্ক্ৰীণত দেখা পোৱা বা এপে চাব পৰা তথ্যসমূহ অন্তৰ্ভুক্ত।"</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"ডিবাগ ডেটা শ্বেয়াৰ কৰক"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"ডিবাগৰ সবিশেষ ডেটা শ্বেয়াৰ কৰিবনে?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g>এ ডিবাগ তথ্য আপল’ড কৰিব বিচাৰিছে।"</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"ডিবাগ ডেটা শ্বেয়াৰ কৰক"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g>এ এই ডিভাইচটোৰ <xliff:g id="DATE">%2$s</xliff:g> তাৰিখে <xliff:g id="TIME">%3$s</xliff:g>ত সংগ্ৰহ কৰা এটা বাগ ৰিপ’ৰ্ট আপল’ড কৰাৰ অনুমতি বিচাৰিছে। সেই বাগ ৰিপ’ৰ্টটোত আপোনাৰ ডিভাইচটোৰ বিষয়ে ব্যক্তিগত তথ্য বা এপে লগ কৰা তথ্য, যেনে ব্যৱহাৰকাৰীৰ নাম, অৱস্থান ডেটা, ডিভাইচ পৰিচায়ক আৰু নেটৱৰ্ক সম্পৰ্কীয় তথ্য ইত্যাদি অন্তৰ্ভুক্ত থাকিব। এইখিনি তথ্যৰ ক্ষেত্ৰত কেৱল আপুনি বিশ্বাস কৰা ব্যক্তি বা এপৰ সৈতেহে বাগ ৰিপ’ৰ্ট শ্বেয়াৰ কৰক। <xliff:g id="APP_NAME_1">%4$s</xliff:g>ক বাগ ৰিপ’ৰ্ট আপল’ড কৰাৰ অনুমতি দিবনে?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"অনুমতি দিয়ক"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"অস্বীকাৰ কৰক"</string>
</resources>
diff --git a/res/values-az-television/strings.xml b/res/values-az-television/strings.xml
index 92fa527..d1dd32d 100644
--- a/res/values-az-television/strings.xml
+++ b/res/values-az-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Rədd edin və daha soruşmayın"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Bunu sonra Ayarlar vəTətbiqlər bölməsindən dəyişə bilərsiniz"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Sistem tətbiqlərini göstərin"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Tətbiq icazələri"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Tətbiq icazələri"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> icazələri"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Əlavə icazələr"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> icazələri"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Rədd edin və daha soruşmayın"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Bunu sonra Ayarlar vəTətbiqlər bölməsindən dəyişə bilərsiniz"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Sistem tətbiqlərini göstərin"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Tətbiq icazələri"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Tətbiq icazələri"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> icazələri"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Əlavə icazələr"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> icazələri"</string>
</resources>
diff --git a/res/values-az-watch/strings.xml b/res/values-az-watch/strings.xml
index ef6723b..dc0748e 100644
--- a/res/values-az-watch/strings.xml
+++ b/res/values-az-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Rədd edin, bir daha soruşmayın"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Sistem tətbiqlərini göstərin"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Dəyişdirilə bilməz"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Bəli"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Ləğv edin"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Rədd edin, bir daha soruşmayın"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Sistem tətbiqlərini göstərin"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Dəyişdirilmədi"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Bəli"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Ləğv edin"</string>
</resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 3e9a5b4..536c2da 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Paket quraşdırıcı"</string>
- <string name="next" msgid="3057143178373252333">"Növbəti"</string>
- <string name="install" msgid="5896438203900042068">"Quraşdır"</string>
- <string name="done" msgid="3889387558374211719">"Hazırdır"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Bu tətbiqə imkan verin:"</string>
- <string name="cancel" msgid="8360346460165114585">"Ləğv et"</string>
- <string name="unknown" msgid="4742479012767208045">"Naməlum"</string>
- <string name="installing" msgid="8613631001631998372">"Quraşdırılır..."</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> quraşdırılır…"</string>
- <string name="install_done" msgid="3682715442154357097">"Tətbiq quraşdırılıb."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Bu tətbiqi quraşdırmaq istəyirsiniz? Tətbiq buraya giriş əldə edəcək:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Bu tətbiqi quraşdırmaq istəyirsiniz? Hər hansı bir xüsusi keçid tələb etmir."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Bu cari tətbiq güncəllənməsini quraşdırmaq istəyirsiniz? Hazırki datanız itməyəcək. Güncəllənmiş tətbiq aşağıdakılara çıxış əldə edəcək:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Daxili tətbiqdən yenilənməni quraşdırmaq istəyirsiniz? Hazırki datanız itməyəcək. Yenilənmiş tətbiq aşağıdakılara çıxış əldə edəcək:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Bu cari tətbiq güncəllənməsini quraşdırmaq istəyirsiniz? Hazırki datanız itməyəcək. O, xüsusi giriş tələb etmir."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Bu daxili tətbiq güncəllənməsini quraşdırmaq istəyirsiniz? Hazırki datanız itməyəcək. O, xüsusi giriş tələb etmir."</string>
- <string name="install_failed" msgid="6579998651498970899">"Tətbiq quraşdırılmayıb."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Paket yüklənməyə qarşı blok edildi."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Bu paketin mövcud paket ilə ziddiyəti səbəbiylə tətbiq quraşdırılmadı."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Bu tətbiq planşetinizə uyğun gəlmədiyi üçün tətbiq quraşdırılmadı."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Bu proqram TV-nizlə uyğun gəlmir."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Bu tətbiq telefonunuza uyğun gəlmədiyi üçün tətbiq quraşdırılmadı."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Paket yanlış kimi göründüyü üçün tətbiq quraşdırılmadı."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> planşetinizə yüklənə bilmədi."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> proqramını TV-nizdə quraşdırmaq mümkün olmadı."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> telefonunuza quraşdırıla bilmədi."</string>
- <string name="launch" msgid="4826921505917605463">"Aç"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Naməlum mənbələrdən əldə edilmiş tətbiqlərin quraşdırılmasına admin tərəfindən icazə verilmir"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Naməlum tətbiqlər bu istifadəçi tərəfindən quraşdırıla bilməz"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Bu istifadəçinin tətbiqi quraşdırmaq üçün icazəsi yoxdur"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Ayarlar"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Tətbiqləri idarə et"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Tətbiq əvəz edilsin?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Quraşdırdığınız tətbiq digər tətbiqi əvəz edəcək.\n\nLakin bütün öncəki istifadəçi datanız qorunacaq."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Bu, sistem tətbiqidir.\n\n Bütün öncəki istifadəçi datanız qorunacaq."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Boş yer yoxdur"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> quraşdırıla bilməz. Yaddaş üçün yer boşaldıb yenidən təkrar edin."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Tətbiq tapılmadı"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Tətbiq quraşdırılmış tətbiqlər siyahısında tapılmadı."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"İcazə verilmir"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Cari istifadəçiyə bu silinməni həyata keçirməyə icazə verilmir."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Xəta"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Tətbiq sistemdən silinmədi."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Tətbiqi qaldır"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Güncəlləməni sil"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> bu tətbiqin hissəsidir:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Bu tətbiqi aradan qaldırmaq istəyirsiniz mi?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Bu tətbiqi "<b>"bütün"</b>" istifadəçilər üçün silmək istəyirsiz? Tətbiq və onun datası cihazdakı "<b>"bütün"</b>" istifadəçilər üçün silinəcək."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"<xliff:g id="USERNAME">%1$s</xliff:g> adlı istifadəçi üçün bu tətbiqi sistemdən silmək istəyirsiniz?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Tətbiq zavod versiyası ilə əvəz olunsun? Bütün data silinəcək."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Tətbiq zavod versiyası ilə əvəz olunsun? Bütün data silinəcək. Bu, iş profilləri olanlar da daxil olmaqla bu cihazın bütün istifadəçilərinə təsir edir."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"İşləyən sistemlər silinmələr"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Uğursuz olan sistemlər silinmələr"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Silinir..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> sistemdən silinir…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Sistemdən silmə tamamlandı."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> sistemdən silindi"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Aradan qaldırılma uğursuz oldu."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> sistemdən silinməsi uğursuz oldu."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Aktiv cihaz admin tətbiqini sistemdən silmək mümkün olmadı"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"<xliff:g id="USERNAME">%1$s</xliff:g> üçün aktiv cihaz admin tətbiqini sistemdən silmək mümkün olmadı"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Bu tətbiq bəzi istifadəçi və profillər tərəfindən tələb olunur və digərləri üçün silinib"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Bu tətbiq profil üçün tələb olunur və silinə bilməz."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Bu tətbiq cihaz administratoru tərəfindən tələb olunur və sistemdən silinə bilməz."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Cihaz admin tətbiqlərini idarə edin"</string>
- <string name="manage_users" msgid="3125018886835668847">"İstifadəçiləri idarə edin"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> sistemdən silinə bilməz."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Paketin təhlilində problem var idi."</string>
- <string name="newPerms" msgid="6039428254474104210">"Yeni"</string>
- <string name="allPerms" msgid="1024385515840703981">"Hamısı"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Məxfilik"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Qurğu icazəsi"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Bu güncəllənmə heç bir icazə istəmir"</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Aşağıdakı icazələri vermək istəyirsiz? Əldə ediləcək çıxışlar:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Rədd edin"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Daha ətraflı"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Hər bir halda rədd edin"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g> icazədən <xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> ədəd"</string>
- <string name="permission_warning_template" msgid="7332275268559121742">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> tətbiqinə <xliff:g id="ACTION">%2$s</xliff:g> fəaliyyəti üçün icazə verilsin?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> deaktiv edildi"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"hamısı deaktiv edildi"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"heç biri deaktiv edilmədi"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"İcazə verin"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Tətbiqlər"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Tətbiq icazələri"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Bir daha soruşmayın"</string>
- <string name="no_permissions" msgid="3210542466245591574">"İcazə yoxdur"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Əlavə icazələr"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
- <item quantity="other">daha <xliff:g id="COUNT_1">%1$d</xliff:g></item>
- <item quantity="one">daha <xliff:g id="COUNT_0">%1$d</xliff:g></item>
+ <string name="app_name" msgid="2792757108872430971">"İcazə nəzarətçisi"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"icazələr"</string>
+ <string name="cancel" msgid="7279939269964834974">"Ləğv edin"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Tətbiq tapılmadı"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Rədd edin"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Rədd edin və təkrar soruşmayın"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Ətraflı məlumat"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Hər bir halda rədd edin"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> 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="1046864917164159751">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> tətbiqinin <xliff:g id="ACTION">%2$s</xliff:g> əməliyyatına daima icazə verilsin?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Ancaq tətbiq istifadəsi zamanı"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Həmişə"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Rədd edin və daha soruşmayın"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> deaktiv edildi"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"hamısı deaktiv edildi"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"heç biri deaktiv edilmədi"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"İcazə verin"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Həmişə icazə verin"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Yalnız tətbiqin istifadəsi zamanı icazə verin"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Tətbiq"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Tətbiq icazələri"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"İcazə meneceri"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Bir daha soruşmayın"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"İcazə yoxdur"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Əlavə icazələr"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Tətbiq məlumatını açın"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
+ <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="old_sdk_deny_warning" msgid="3872277112584842615">"Bu tətbiq köhnə Android versiyası üçün nəzərdə tutulub. İcazəni rədd etmək onun lazımi şəkildə işləməməsinə səbəb ola bilər."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"naməlum əməliyyat etmək"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_1">%2$d</xliff:g> tətbiqdən <xliff:g id="COUNT_0">%1$d</xliff:g> ədədinə icazə var"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Sistemi göstərin"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Sistemi gizlədin"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> icazələr"</string>
- <string name="no_apps" msgid="1965493419005012569">"Tətbiq yoxdur"</string>
- <string name="location_settings" msgid="1774875730854491297">"Məkan Ayarları"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"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="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Siyasət tərəfindən tətbiq olunur"</string>
- <string name="loading" msgid="7811651799620593731">"Yüklənir…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Bütün icazələr"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Digər tətbiq imkanları"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"İcazə sorğusu"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Ekran örtüyü aşkarlandı"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Bu icazə ayarını dəyişdirmək üçün əvvəldə Ayarlar və Tətbiqlər bölməsindən ekran örtüyünü söndürməlisiniz"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Ayarları açın"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Yükləmə/Silmə fəaliyyətləri Wear\'də dəstəklənmir."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> tətbiqi güncəlləndi. <xliff:g id="APP_NAME_1">%1$s</xliff:g> tətbiqinə aşağıdakılara giriş hüququ verilsin?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> tətbiqinin giriş hüququnu seçin"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> tətbiqi güncəlləndi. Bu tətbiqin giriş hüququnu seçin."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Ləğv edin"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Davam edin"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Yeni icazələr"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Cari icazələr"</string>
- <string name="message_staging" msgid="6151794817691100003">"Tətbiq hazırlanır..."</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Naməlum"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Təhlükəsizliyiniz üçün planşetə bu mənbədən olan naməlum tətbiqləri quraşdırmağa icazə verilmir."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Təhlükəsizliyiniz üçün TV-yə bu mənbədən olan naməlum tətbiqləri quraşdırmağa icazə verilmir."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Təhlükəsizliyiniz üçün telefona bu mənbədən olan naməlum tətbiqləri quraşdırmağa icazə verilmir."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Telefon və şəxsi data naməlum tətbiqlərin hücumuna qarşı daha həssasdır. Bu tətbiqi quraşdırmaqla telefona dəyə biləcək zərər və ya onun istifadəsi nəticəsində baş verən data itkisinə görə məsuliyyət daşıdığınızı qəbul edirsiniz."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Planşet və şəxsi data naməlum tətbiqlərin hücumuna qarşı daha həssasdır. Bu tətbiqi quraşdırmaqla planşetə dəyə biləcək zərər və ya onun istifadəsi nəticəsində baş verə biləcək data itkisinə görə məsuliyyət daşıdığınızı qəbul edirsiniz."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Tv və şəxsi data naməlum tətbiqlərin hücumuna qarşı daha həssasdır. Bu tətbiqi quraşdırmaqla Tv\'ə dəyə biləcək zərər və ya onun istifadəsi nəticəsində baş verən data itkisinə görə məsuliyyət daşıdığınızı qəbul edirsiniz."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Davam edin"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Ayarlar"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Wear tətbiqləri quraşdırılır/silinir"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Bu tətbiq köhnə Android versiyası üçün nəzərdə tutulub. İcazəni rədd etmək onun lazımi şəkildə işləməməsinə səbəb ola bilər."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"naməlum əməliyyat etmək"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_1">%2$d</xliff:g> tətbiqdən <xliff:g id="COUNT_0">%1$d</xliff:g> ədədi icazəlidir"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Ən son istifadə"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"İcazələrin İdarə Panelinə Baxın"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Sistemi göstərin"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Sistemi gizlədin"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Tətbiq yoxdur"</string>
+ <string name="location_settings" msgid="547378321761364906">"Məkan Ayarları"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"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="permission_summary_enforced_by_policy" msgid="632945329450867948">"Siyasət tərəfindən tətbiq olunur"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Arxa fon girişi siyasətə əsasən deaktiv edildi"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Arxa fon girişi siyasət tərəfindən aktiv edildi"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Ön fon girişi siyasət tərəfindən aktiv edildi"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Admin tərəfindən nəzarət olunur"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Arxa fon girişi admin tərəfindən deaktiv edildi"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Arxa fon girişi admin tərəfindən aktiv edildi"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Ön fon girişi admin tərəfindən aktiv edildi"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Sistemin təyin etdiyi icazə"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Həmişə"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Ancaq tətbiq istifadəsi zamanı"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Heç vaxt"</string>
+ <string name="loading" msgid="323483393167148377">"Yüklənir…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Bütün icazələr"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Digər tətbiq imkanları"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"İcazə sorğusu"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Ekran örtüyü aşkarlandı"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Bu icazə ayarını dəyişdirmək üçün əvvəldə Ayarlar və Tətbiqlər bölməsindən ekran örtüyünü deaktiv etməlisiniz"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Ayarları açın"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Yükləmə/Sistemdən silmə fəaliyyətləri Wear\'də dəstəklənmir."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> tətbiqinin daxil olacağı elementləri seçin"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> güncəlləndi. Bu tətbiqin daxil olacağı elementləri seçin."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Ləğv edin"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Davam edin"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Yeni icazələr"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Cari icazələr"</string>
+ <string name="message_staging" msgid="641286607664721291">"Tətbiq hazırlanır..."</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Naməlum"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"İdarə paneli"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Son giriş: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> giriş (arxa fonda <xliff:g id="NUM_5">%3$s</xliff:g>)</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ş (arxa fonda <xliff:g id="NUM_2">%3$s</xliff:g>)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Son giriş: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> giriş\nMüddət: <xliff:g id="TIME_5">%3$s</xliff:g></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ş\nMüddət: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Son giriş: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> giriş (arxa fonda <xliff:g id="NUM_6">%3$s</xliff:g>)\nMüddət: <xliff:g id="TIME_7">%3$s</xliff:g></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ş (arxa fonda<xliff:g id="NUM_2">%3$s</xliff:g>)\nMüddət: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Hər hansı icazə"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"İstənilən vaxt"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Son 7 gün"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Son 24 saat"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Son 1 saat"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Son 15 dəqiqə"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Son 1 dəqiqə"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"İcazələrdən istifadə olunmayıb"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"İstənilən vaxt giriş edin"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Son 7 gündə edilən giriş"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Son 24 saatda edilən giriş"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Son 1 saatda edilən giriş"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Son 15 dəqiqədə edilən giriş"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Son 1 dəqiqədə edilən giriş"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Ən çox işlənən icazə istifadəsi"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Son 7 gündə ən çox işlənən icazə istifadəsi"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Son 24 saatda ən çox işlənən icazə istifadəsi"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Son 1 saatda ən çox işlənən icazə istifadəsi"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Son 15 dəqiqədə ən çox işlənən icazə istifadəsi"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Son 1 dəqiqədə ən çox işlənən icazə istifadəsi"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Tətbiqlər"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtrlədi: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Filtri silin"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtrləyin:"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"İcazələr üzrə filtrləyin"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Verilən icazələrin sayı"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Edilən girişlərin sayı"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Ən son"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Yeniləyin"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Tətbiq icazələri istifadəsi"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Giriş: <xliff:g id="NUM">%1$s</xliff:g> dəfə. Son istifadə <xliff:g id="TIME">%2$s</xliff:g> əvvəl."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"İcazə verin"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Həmişə icazə verin"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Yalnız tətbiqin istifadəsi zamanı icazə verin"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"İmtina edin"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> üçün icazə"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="APP">%2$s</xliff:g> üçün <xliff:g id="PERM">%1$s</xliff:g> girişi"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> <xliff:g id="PERM">%2$s</xliff:g> adlı məkana <xliff:g id="TIME">%3$s</xliff:g> əvvəl daxil oldu."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> üçün <xliff:g id="PERM">%2$s</xliff:g> icazəsi əlçatan deyil."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"İcazələrin istifadəsi ilə bağlı ətraflı məlumata baxın"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Son giriş: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Heç vaxt giriş edilməyib"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"İcazə verilib"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Yalnız istifadədə olarkən icazə verildi"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Ləğv edildi"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"İstifadə haqqında ətraflı məlumat"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> gün</item>
+ <item quantity="one">1 gün</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> saat</item>
+ <item quantity="one">1 saat</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dəqiqə</item>
+ <item quantity="one">1 dəqiqə</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> saniyə</item>
+ <item quantity="one">1 saniyə</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> tətbiqi <xliff:g id="ROLE_NAME">%2$s</xliff:g> olaraq istifadə edilsin?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"<b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> tətbiqinin əvəzinə <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> <xliff:g id="ROLE_NAME">%2$s</xliff:g> olaraq istifadə edilsin?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"İcazə xatırladıcıları"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> məkandan istifadə edir"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Bu tətbiq daima məkana daxil ola bilər. Dəyişmək üçün klikləyin."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Yalnız tətbiqin istifadəsi zamanı"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"İcazə verilmədi"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"İcazə verilib"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"İcazəli tətbiq yoxdur"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Rədd edilən tətbiq yoxdur"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Açın"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Sistemdən silin"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Məcburi dayandırın"</string>
+ <string name="settings" msgid="2884124136779508907">"Ayarlar"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> xidmətinin cihazınıza tam girişi var"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> əlçatımlılıq xidmətinin cihazınıza tam giriş icazəsi var"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ekran, əməliyyat və daxiletməyə baxa, əməliyyatlar icra edə və displeyə nəzarət edə bilər."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Bu xidmətlər ekran, əməliyyat və daxiletməyə baxa, əməliyyatlar icra edə və displeyə nəzarət edə bilər."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Defolt tətbiqlər"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Defolt tətbiq yoxdur"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"İş üçün defolt"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Yoxdur"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Tətbiq yoxdur"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Xüsusi tətbiq girişi"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Xüsusi tətbiq girişi yoxdur"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Tətbiq yoxdur"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Köməkçi tətbiq"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Brauzer tətbiqi"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Telefon tətbiqi"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS tətbiqi"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Emergency tətbiqi"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Home tətbiqi"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Musiqi tətbiqi"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Qalereya tətbiqi"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Avtomobil rejimi olan telefon"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Zəng yönləndirmə tətbiqi"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Ekran zəngi tətbiqi"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Zəng kompanyon tətbiqi"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Car Projection tətbiqi"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"İş profilini dəstəkləmir"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Qeyd: Cihazı yenidən başlatmısınızsa və cihazda ekran kilidi varsa, kilidi açmamış tətbiq başlaya bilməz."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Assistent sistemdə istifadə edilən tətbiqlər haqqında məlumatı oxuya biləcək, bura ekranınızda görünən və ya tətbiqlər daxilində əlçatan olan məlumatlar da daxildir."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Sazlama Datasını Paylaşın"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Ətraflı sazlama datası paylaşılsın?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> sazlama məlumatını yükləmək istəyir."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Sazlama Datasını Paylaşın"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> bu cihazdan <xliff:g id="DATE">%2$s</xliff:g>, <xliff:g id="TIME">%3$s</xliff:g> tarixində götürülmüş baq hesabatını yükləmək istəyir. Baq hesabatlarına istifadəçi adları, məkan datası, cihaz identifikatorları və şəbəkə məlumatı kimi cihaz və ya tətbiqlər haqqında məxfi məlumat daxildir. Baq hesabatlarını yalnız güvəndiyiniz şəxs və tətbiqlərlə paylaşın. <xliff:g id="APP_NAME_1">%4$s</xliff:g> tətbiqinə baq hesabatını yükləməyə icazə verilsin?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"İcazə verin"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Rədd edin"</string>
</resources>
diff --git a/res/values-b+sr+Latn-television/strings.xml b/res/values-b+sr+Latn-television/strings.xml
index 5dce759..118f41a 100644
--- a/res/values-b+sr+Latn-television/strings.xml
+++ b/res/values-b+sr+Latn-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Odbij i ne pitaj ponovo"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Ovo možete da promenite kasnije u Podešavanjima > Aplikacije"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Prikaži sistemske aplikacije"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Dozvole za aplikacije"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Dozvole za aplikacije"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Dozvole za aplikaciju <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Dodatne dozvole"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Dozvole za aplikaciju <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Odbij i ne pitaj ponovo"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Ovo možete da promenite kasnije u Podešavanjima > Aplikacije"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Prikaži sistemske aplikacije"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Dozvole za aplikacije"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Dozvole za aplikacije"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Dozvole za aplikaciju <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Dodatne dozvole"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Dozvole za aplikaciju <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-b+sr+Latn-watch/strings.xml b/res/values-b+sr+Latn-watch/strings.xml
index 63a44db..df9eae5 100644
--- a/res/values-b+sr+Latn-watch/strings.xml
+++ b/res/values-b+sr+Latn-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Odbij i ne pitaj ponovo"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Prikaži sistemske aplikacije"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Ne može da se promeni"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Da"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Otkaži"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Odbij i ne pitaj ponovo"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Prikaži sistemske aplikacije"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Ne može da se promeni"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Da"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Otkaži"</string>
</resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index d316221..dceb94e 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,137 +16,217 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Upakovani program za instalaciju"</string>
- <string name="next" msgid="3057143178373252333">"Sledeće"</string>
- <string name="install" msgid="5896438203900042068">"Instaliraj"</string>
- <string name="done" msgid="3889387558374211719">"Gotovo"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Dozvoli da ova aplikacija:"</string>
- <string name="cancel" msgid="8360346460165114585">"Otkaži"</string>
- <string name="unknown" msgid="4742479012767208045">"Nepoznato"</string>
- <string name="installing" msgid="8613631001631998372">"Instaliranje..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Instalira se <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Aplikacija je instalirana."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Želite li da instalirate ovu aplikaciju? Imaće pristup sledećem:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Želite li da instalirate ovu aplikaciju? Ne zahteva poseban pristup."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Želite li da instalirate ažuriranje za ovu postojeću aplikaciju? Postojeći podaci neće biti izgubljeni. Ažurirana aplikacija imaće pristup sledećem:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Želite li da instalirate ažuriranje za ovu ugrađenu aplikaciju? Postojeći podaci neće biti izgubljeni. Ažurirana aplikacija će imati pristup sledećem:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Da li želite da instalirate ažuriranje ove postojeće aplikacije? Postojeći podaci neće biti izgubljeni. Nije potreban poseban pristup."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Da li želite da instalirate ažuriranje ove ugrađene aplikacije? Postojeći podaci neće biti izgubljeni. Nije potreban poseban pristup."</string>
- <string name="install_failed" msgid="6579998651498970899">"Aplikacija nije instalirana."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Instaliranje paketa je blokirano."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Aplikacija nije instalirana jer je paket neusaglašen sa postojećim paketom."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Aplikacija nije instalirana jer nije kompatibilna sa tabletom."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Ova aplikacija nije kompatibilna sa TV-om."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Aplikacija nije instalirana jer nije kompatibilna sa telefonom."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Aplikacija nije instalirana jer je paket nevažeći."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Nije moguće instalirati aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g> na tablet."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Nismo uspeli da instaliramo <xliff:g id="APP_NAME">%1$s</xliff:g> na TV."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Nije moguće instalirati aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g> na telefon."</string>
- <string name="launch" msgid="4826921505917605463">"Otvori"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Administrator ne dozvoljava instaliranje aplikacija dobijenih iz nepoznatih izvora"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Ovaj korisnik ne može da instalira nepoznate aplikacije"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Ovom korisniku nije dozvoljeno da instalira aplikacije"</string>
- <string name="ok" msgid="3468756155452870475">"Potvrdi"</string>
- <string name="settings" msgid="6743583734099755409">"Podešavanja"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Upravljanje aplikacijama"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Želite li da zamenite aplikaciju?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Aplikacija koju instalirate zameniće drugu aplikaciju.\n\nSvi prethodni korisnički podaci biće sačuvani."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Ovo je sistemska aplikacija.\n\nSvi prethodni korisnički podaci biće sačuvani."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Nema više mesta"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Nije moguće instalirati aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>. Oslobodite dodatni prostor i pokušajte ponovo."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"Potvrdi"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Aplikacija nije pronađena"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Aplikacija nije pronađena na listi instaliranih aplikacija."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Nije dozvoljeno"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Aktuelnom korisniku nije dozvoljeno da obavi ovo deinstaliranje."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Greška"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Deinstaliranje aplikacije nije uspelo."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Deinstaliranje aplikacije"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Deinstaliranje ažuriranja"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> je deo sledeće aplikacije:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Da li želite da deinstalirate ovu aplikaciju?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Da li želite da deinstalirate ovu aplikaciju za "<b>"sve"</b>" korisnike? Aplikacija i podaci koji se na nju odnose biće uklonjeni za "<b>"sve"</b>" korisnike ovog uređaja."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Želite li da deinstalirate ovu aplikaciju za korisnika <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Želite li da zamenite ovu aplikaciju fabričkom verzijom? Svi podaci će biti uklonjeni."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Želite li da zamenite ovu aplikaciju fabričkom verzijom? Svi podaci će biti uklonjeni. Ovo utiče na sve korisnike ovog uređaja, uključujući i one sa profilima za Work."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Aktivna deinstaliranja"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Neuspela deinstaliranja"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Deinstaliranje..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> se deinstalira…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Deinstaliranje je završeno."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Aplikacija <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> je deinstalirana"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Deinstaliranje nije uspelo."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Deinstaliranje aplikacije <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> nije uspelo."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Ne možete da deinstalirate aplikaciju za aktivnog administratora uređaja"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Ne možete da deinstalirate aplikaciju za aktivnog administratora uređaja za <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Ova aplikacija je potrebna za neke korisnike ili profile, a deinstalirana je za druge"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Ova aplikacija je potrebna za vaš profil i ne može da se deinstalira."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Ova aplikacija je potrebna administratoru uređaja i ne može da se deinstalira."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Upravljaj aplikacijama za administratore uređaja"</string>
- <string name="manage_users" msgid="3125018886835668847">"Upravljaj korisnicima"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Nije moguće deinstalirati aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Došlo je do problema pri raščlanjivanju paketa."</string>
- <string name="newPerms" msgid="6039428254474104210">"Novo"</string>
- <string name="allPerms" msgid="1024385515840703981">"Sve"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privatnost"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Pristup uređaju"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Ovo ažuriranje ne zahteva nove dozvole."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Da li želite da odobrite sledeće dozvole? Odobrićete pristup za:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Odbaci"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Više informacija"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Ipak odbij"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Želite li da dozvolite da <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"Onemogućenih: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"sve su onemogućene"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"nijedna nije onemogućena"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Dozvoli"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Aplikacije"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Dozvole za aplikacije"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Ne pitaj ponovo"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Nema dozvola"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Dodatne dozvole"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Kontroler dozvola"</string>
+ <string name="ok" msgid="4417794827535157922">"Potvrdi"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"dozvole"</string>
+ <string name="cancel" msgid="7279939269964834974">"Otkaži"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Aplikacija nije pronađena"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Odbij"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Odbij i ne pitaj ponovo"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Više infor."</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Ipak odbij"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Želite li da dozvolite da <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> obavi sledeću radnju: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Želite li da uvek dozvolite da <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> obavlja sledeću radnju: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Samo dok se aplikacija koristi"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Uvek"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Odbij i ne pitaj ponovo"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"Onemogućenih: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"sve su onemogućene"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"nijedna nije onemogućena"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Dozvoli"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Dozvoli uvek"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Dozvoli samo dok se aplikacija koristi"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Aplikacije"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Dozvole za aplikacije"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Menadžer dozvola"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Ne pitaj ponovo"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Nema dozvola"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Dodatne dozvole"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Otvori informacije o aplikaciji"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="one">još <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="few">još <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="other">još <xliff:g id="COUNT_1">%1$d</xliff:g></item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Ova aplikacija je dizajnirana za stariju verziju Android-a. Ako odbijete dozvolu, ona možda više neće pravilno da funkcioniše."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"obavlja nepoznatu radnju"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_0">%1$d</xliff:g> od <xliff:g id="COUNT_1">%2$d</xliff:g> aplikacija ima dozvolu"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Prikaži sistemske"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Sakrij sistemske"</string>
- <string name="permission_title" msgid="6495415273398916381">"Dozvole za <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Nema aplikacija"</string>
- <string name="location_settings" msgid="1774875730854491297">"Podešavanja lokacije"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Ako odbijete ovu dozvolu, osnovne funkcije uređaja možda neće više funkcionisati ispravno."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Primenjuje se u skladu sa smernicama"</string>
- <string name="loading" msgid="7811651799620593731">"Učitava se…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Sve dozvole"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Ostale mogućnosti aplikacije"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Zahtev za dozvolu"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Otkriven je element koji prekriva sadržaj ekrana"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Da biste promenili podešavanje ove dozvole, prvo treba da isključite element koji prekriva sadržaj ekrana u odeljku Podešavanja > Aplikacije"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Otvori podešavanja"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Radnje Instaliraj/Deinstaliraj nisu podržane u Wear-u."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"Aplikacija <xliff:g id="APP_NAME_0">%1$s</xliff:g> je ažurirana. Želite li da dozvolite da <xliff:g id="APP_NAME_1">%1$s</xliff:g> pristupa sledećim stavkama?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Izaberite čemu <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> može da pristupa"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"Aplikacija <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> je ažurirana. Izaberite čemu ova aplikacija može da pristupa."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Otkaži"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Nastavi"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Nove dozvole"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Aktuelne dozvole"</string>
- <string name="message_staging" msgid="6151794817691100003">"Aplikacija se priprema…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Nepoznato"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Tabletu iz bezbednosnih razloga nije dozvoljeno da instalira nepoznate aplikacije iz ovog izvora."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Televizoru iz bezbednosnih razloga nije dozvoljeno da instalira nepoznate aplikacije iz ovog izvora."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Telefonu iz bezbednosnih razloga nije dozvoljeno da instalira nepoznate aplikacije iz ovog izvora."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Telefon i lični podaci su podložniji napadu nepoznatih aplikacija. Ako instalirate ovu aplikaciju, prihvatate da ste odgovorni za eventualna oštećenja telefona ili gubitak podataka do kojih može da dođe zbog njenog korišćenja."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Tablet i lični podaci su podložniji napadu nepoznatih aplikacija. Ako instalirate ovu aplikaciju, prihvatate da ste odgovorni za eventualna oštećenja tableta ili gubitak podataka do kojih može da dođe zbog njenog korišćenja."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"TV i lični podaci su podložniji napadu nepoznatih aplikacija. Ako instalirate ovu aplikaciju, prihvatate da ste odgovorni za eventualna oštećenja TV-a ili gubitak podataka do kojih može da dođe zbog njenog korišćenja."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Nastavi"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Podešavanja"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Instaliranje/deinstaliranje Wear aplikacija"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Ova aplikacija je dizajnirana za stariju verziju Android-a. Ako odbijete dozvolu, možda neće raditi ispravno."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"obavlja nepoznatu radnju"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"Aplikacije sa dozvolom: <xliff:g id="COUNT_0">%1$d</xliff:g> od <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Nedavna upotreba"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Prikaži kontrolnu tablu za dozvole"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Prikaži sistemske"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Sakrij sistemske"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Nema aplikacija"</string>
+ <string name="location_settings" msgid="547378321761364906">"Podešavanja lokacije"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Ako odbijete ovu dozvolu, osnovne funkcije uređaja možda neće više funkcionisati ispravno."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Primenjuje se u skladu sa smernicama"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Pristup u pozadini je onemogućen smernicama"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Pristup u pozadini je omogućen smernicama"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Pristup u prvom planu je omogućen smernicama"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Kontroliše administrator"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Administrator je onemogućio pristup u pozadini"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Administrator je omogućio pristup u pozadini"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Administrator je omogućio pristup u prvom planu"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Sistem je podesio dozvolu"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Uvek"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Samo dok se aplikacija koristi"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Nikad"</string>
+ <string name="loading" msgid="323483393167148377">"Učitava se…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Sve dozvole"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Ostale mogućnosti aplikacije"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Zahtev za dozvolu"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Otkriven je element koji prekriva sadržaj ekrana"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Da biste promenili podešavanje ove dozvole, prvo treba da isključite element koji prekriva sadržaj ekrana u odeljku Podešavanja > Aplikacije"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Otvori podešavanja"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Radnje Instaliraj/Deinstaliraj nisu podržane u Wear-u."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Izaberite čemu <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> može da pristupa"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"Aplikacija <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> je ažurirana. Izaberite čemu ova aplikacija može da pristupa."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Otkaži"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Nastavi"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Nove dozvole"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Aktuelne dozvole"</string>
+ <string name="message_staging" msgid="641286607664721291">"Aplikacija se priprema…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Nepoznato"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Kontrolna tabla"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ <item quantity="other">Poslednji pristup: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> pristupa</item>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">Poslednji pristup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> pristup (<xliff:g id="NUM_5">%3$s</xliff:g> u pozadini)</item>
+ <item quantity="few">Poslednji pristup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> pristupa (<xliff:g id="NUM_5">%3$s</xliff:g> u pozadini)</item>
+ <item quantity="other">Poslednji pristup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> pristupa (<xliff:g id="NUM_5">%3$s</xliff:g> u pozadini)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">Poslednji pristup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> pristup\nTrajanje: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="few">Poslednji pristup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> pristupa\nTrajanje: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">Poslednji pristup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> pristupa\nTrajanje: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">Poslednji pristup: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> pristup (<xliff:g id="NUM_6">%3$s</xliff:g> u pozadini)\nTrajanje: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="few">Poslednji pristup: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> pristupa (<xliff:g id="NUM_6">%3$s</xliff:g> u pozadini)\nTrajanje: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">Poslednji pristup: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> pristupa (<xliff:g id="NUM_6">%3$s</xliff:g> u pozadini)\nTrajanje: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Bilo koja dozvola"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Bilo kada"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Poslednjih 7 dana"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Poslednja 24 sata"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Poslednji sat"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Poslednjih 15 minuta"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Poslednji minut"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Dozvole nisu korišćene"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Pristup u bilo kom trenutku"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Pristup u poslednjih 7 dana"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Pristup u poslednja 24 sata"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Pristup u poslednjih sat vremena"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Pristup u poslednjih 15 minuta"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Pristup u poslednjem minutu"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Najviše korišćene dozvole u bilo kom trenutku"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Najviše korišćene dozvole u poslednjih 7 dana"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Najviše korišćene dozvole u poslednja 24 sata"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Najviše korišćene dozvole u poslednjih sat vremena"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Najviše korišćene dozvole u poslednjih 24 minuta"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Najviše korišćene dozvole u poslednjem minutu"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Aplikacije"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtrirano prema: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Ukloni filter"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtriraj prema"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtriraj prema dozvolama"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Najviše dozvola"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Najveći broj pristupa"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Nedavno"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Osveži"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Korišćenje dozvola za aplik."</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"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>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Dozvoli"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Dozvoli uvek"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Dozvoli samo dok se aplikacija koristi"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Odbij"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Dozvola <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Pristup dozvoli <xliff:g id="PERM">%1$s</xliff:g> za aplikaciju <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"Aplikacija <xliff:g id="APP">%1$s</xliff:g> je pristupila dozvoli <xliff:g id="PERM">%2$s</xliff:g> pre <xliff:g id="TIME">%3$s</xliff:g>."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"Aplikacija <xliff:g id="APP">%1$s</xliff:g> nije pristupila dozvoli <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Pregledajte detaljne dozvole za korišćenje"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Poslednji pristup: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Bez pristupa"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Dozvoljeno"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Dozvoljeno samo dok se aplikacija koristi"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Odbijeno"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Pogledajte detaljnu upotrebu"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> minut</item>
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> minuta</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minuta</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> sekunda</item>
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> sekunde</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sekundi</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Želite li da <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> bude <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Želite li da <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> bude <xliff:g id="ROLE_NAME">%2$s</xliff:g> umesto <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Podsetnici za dozvole"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> koristi vašu lokaciju"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Ova aplikacija može uvek da pristupa lokaciji. Dodirnite da biste to promenili."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Samo dok se aplikacija koristi"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Dozvole nisu odobrene"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Nijedna dozvola nije odbijena"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Aplikacije nisu dozvoljene"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Nije odbijena nijedna aplikacija"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Otvori"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Deinstaliraj"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Prinudno zaustavi"</string>
+ <string name="settings" msgid="2884124136779508907">"Podešavanja"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ima potpun pristup uređaju"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"Usluge pristupačnosti (<xliff:g id="NUM_SERVICES">%s</xliff:g>) imaju potpun pristup uređaju"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> može da pregleda sadržaj ekrana, radnje i unose, obavlja radnje i upravlja ekranom."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Ove usluge mogu da pregledaju sadržaj ekrana, radnje i unose, obavljaju radnje i upravljaju ekranom."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Podrazumevane aplikacije"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Nema podrazumevane aplikacije."</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Podrazumevana za posao"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Ništa"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Nema aplikacija"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Pristup za spec. aplikaciju"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Nema pristupa za spec. apl."</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Nema aplikacija"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Aplikacija za pomoć"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Aplikacija pregledača"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Aplikacija Telefon"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Aplikacija za SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Aplikacija za hitne slučajeve"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Aplikacija početne stranice"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Aplikacija Muzika"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Aplikacija Galerija"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Aplikacija za telefon sa režimom rada u automobilu"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Aplikacija preusmerava pozive"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Aplik. za uprav. dolaz. poziv."</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Pozivanje prateće aplikacije"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Aplik. Projekcija u automobilu"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Ne podržava profil za Work"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Napomena: Ako restartujete uređaj i podesili ste zaključavanje ekrana, ova aplikacija ne može da se pokrene dok ne otključate uređaj."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Pomoćnik će moći da čita informacije o aplikacijama koje se koriste u sistemu, uključujući informacije vidljive na ekranu ili kojima može da se pristupa u okviru aplikacija."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Deljenje podataka o otklanjanju grešaka"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Delite detaljne podatke za otklanjanje grešaka?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> želi da otpremi informacije za otklanjanje grešaka."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Deljenje podataka o otklanjanju grešaka"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> traži da otpremi izveštaj o greškama sa ovog uređaja koji je napravljen <xliff:g id="DATE">%2$s</xliff:g> u <xliff:g id="TIME">%3$s</xliff:g>. Izveštaji o greškama obuhvataju lične podatke o uređaju ili podatke koje su evidentirale aplikacije, na primer, korisnička imena, podatke o lokaciji, identifikatore uređaja i informacije o mreži. Delite izveštaje o greškama samo sa ljudima i aplikacijama kojima možete da poverite te informacije. Želite li da dozvolite da <xliff:g id="APP_NAME_1">%4$s</xliff:g> otpremi izveštaj o grešci?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Dozvoli"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Odbij"</string>
</resources>
diff --git a/res/values-be-television/strings.xml b/res/values-be-television/strings.xml
index befb367..9f0217f 100644
--- a/res/values-be-television/strings.xml
+++ b/res/values-be-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Адхіліць і больш не пытацца"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Пазней гэта можна змянiць у раздзеле «Налады > Праграмы»"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Паказваць сістэмныя праграмы"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Дазволы праграм"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Дазволы праграм"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Дазволы праграмы <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Дадатковыя дазволы"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Дазволы праграмы <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Адхіліць і больш не пытацца"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Пазней гэта можна змяніць у раздзеле \"Налады > Праграмы\""</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Паказваць сістэмныя праграмы"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Дазволы праграмы"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Дазволы праграмы"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Дазволы: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Дадатковыя дазволы"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Дазволы: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-be-watch/strings.xml b/res/values-be-watch/strings.xml
index 99b2ce8..bde58f8 100644
--- a/res/values-be-watch/strings.xml
+++ b/res/values-be-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Адхіліць, больш не пытацца"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Паказваць сістэмныя праграмы"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Нельга змяніць"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Так"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Скасаваць"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Адхіліць, больш не пытацца"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Паказваць сістэмныя праграмы"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Не ўдалося змяніць"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Так"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Скасаваць"</string>
</resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index b4784c8..c39d4ba 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,138 +16,226 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Усталёўшчык пакетаў"</string>
- <string name="next" msgid="3057143178373252333">"Далей"</string>
- <string name="install" msgid="5896438203900042068">"Усталяваць"</string>
- <string name="done" msgid="3889387558374211719">"Гатова"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Дазволіць гэтаму прыкладанню выконваць наступныя дзеяннi:"</string>
- <string name="cancel" msgid="8360346460165114585">"Скасаваць"</string>
- <string name="unknown" msgid="4742479012767208045">"Невядомы"</string>
- <string name="installing" msgid="8613631001631998372">"Усталяванне..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Ідзе ўсталяванне <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Прыкладанне ўсталявана."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Усталяваць гэта прыкладанне? Яно атрымае доступ да:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Усталяваць гэта прыкладанне? Яно не патрабуе спецыяльнага доступу."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Усталяваць абнаўленне для гэтага існуючага прыкладання? Існуючыя дадзеныя не будуць страчаны. Абноўленае прыкладанне атрымае доступ да:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Усталяваць абнаўленне для гэтага ўбудаванага прыкладання? Існуючыя дадзеныя не будуць страчаны. Абноўленае прыкладанне атрымае доступ да:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Усталяваць абнаўленне для гэтага прыкладання? Вашы iснуючыя дадзеныя не будуць згублены. Спецыяльны доступ не патрабуецца."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Усталяваць абнаўленне для гэтага ўбудаванага прыкладання? Вашы iснуючыя дадзеныя не будуць згублены. Спецыяльны доступ не патрабуецца."</string>
- <string name="install_failed" msgid="6579998651498970899">"Прыкладанне не ўсталявана."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Для пакета заблакіравана магчымасць усталявання."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Праграма не ўсталявана, таму што пакет канфліктуе з існуючым пакетам."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Праграма не ўсталявана, таму што яна несумяшчальная з вашым планшэтам."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Гэта праграма несумяшчальная з вашым тэлевізарам."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Праграма не ўсталявана, таму што яна несумяшчальная з вашым тэлефонам."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Праграма не ўсталявана, таму што пакет, магчыма, з\'яўляецца несапраўдным."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"На гэтым планшэце немагчыма ўсталяваць прыкладанне <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"На вашым тэлевізары немагчыма ўсталяваць праграму <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"На гэтым тэлефоне немагчыма ўсталяваць прыкладанне <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="launch" msgid="4826921505917605463">"Адкрыць"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Ваш адміністратар не дазваляе ўсталёўку праграм з невядомых крыніц."</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Гэты карыстальнік не можа ўсталёўваць невядомыя праграмы"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Гэты карыстальнік не можа ўсталёўваць праграмы"</string>
- <string name="ok" msgid="3468756155452870475">"ОК"</string>
- <string name="settings" msgid="6743583734099755409">"Налады"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Кіраванне прыкладаннямі"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Замянiць прыкладанне?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Прыкладанне, якое вы ўсталёўваеце, заменіць іншае прыкладанне. \n\nУсе вашы папярэднія дадзеныя карыстальніка будуць захаваны."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Гэта сістэмнае прыкладанне.\n\nУсе вашы папярэднія дадзеныя карыстальніка будуць захаваны."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Не хапае месца"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Немагчыма ўсталяваць прыкладанне <xliff:g id="APP_NAME">%1$s</xliff:g>. Вызваліце месца і паўтарыце спробу."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"ОК"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Прыкладанне не знойдзена"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Прыкладанне не знойдзена ў спісе ўсталяваных прыкладанняў."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Забаронена"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Бягучы карыстальнік не мае дазволу на гэта выдаленне."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Памылка"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Нельга выдаліць праграму."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Выдалiць прыкладанне"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Выдаліць абнаўленні"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> з\'яўляецца часткай наступнага прыкладання:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Выдаліць гэта прыкладанне?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Выдалiць гэта прыкладанне для "<b>"ўсiх"</b>" карыстальнirfў? Прыкладанне i яго дадзеныя будуць выдалены для "<b>"ўсiх"</b>" карыстальнiкаў прылады."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Хочаце выдаліць гэту праграму для карыстальніка <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Замяніць гэту праграму заводскай версіяй? Усе даныя будуць выдалены."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Замяніць гэту праграму заводскай версіяй? Усе даныя будуць выдаленыя. Гэта паўплывае на ўсіх карыстальнікаў гэтай прылады, у тым ліку карыстальнікаў з працоўнымі профілямі."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Актыўныя выдаленні"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Збоі выдалення"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Выдаленне..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> выдаляецца…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Выдаленне завершана"</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Выдалена <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Няўдалае выдаленне."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Не атрымалася выдаліць <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Немагчыма выдаліць актыўную праграму адміністратара прылады"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Немагчыма выдаліць актыўную праграму адміністратара прылады для карыстальніка <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Гэта праграма патрабуецца для некаторых карыстальнікаў або профіляў і была выдалена для іншых"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Гэта праграма неабходная для вашага профілю і не можа быць выдалена."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Гэта праграма патрабуецца адміністратару вашай прылады і не можа быць выдалена."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Праграмы адміністратара для кіравання прыладамі"</string>
- <string name="manage_users" msgid="3125018886835668847">"Кіраванне карыстальнікамі"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Немагчыма выдалiць прыкладанне <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Памылка аналiзу пакета."</string>
- <string name="newPerms" msgid="6039428254474104210">"Новыя"</string>
- <string name="allPerms" msgid="1024385515840703981">"Усе"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Прыватнасць"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Доступ да прылады"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Гэтае абнаўленне не патрабуе ніякіх новых дазволаў."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Даць наступны дазвол? Ён будзе атрымліваць доступ да:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Адмовіць"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Дадатковая iнфармацыя"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Усё роўна адмовіць"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Дазволіць <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"Адключана: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"усе адключаны"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"няма адключаных"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Дазволіць"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Праграмы"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Дазволы праграм"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Больш не пытацца"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Няма дазволаў"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Дадатковыя дазволы"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
- <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>
+ <string name="app_name" msgid="2792757108872430971">"Кантралёр дазволаў"</string>
+ <string name="ok" msgid="4417794827535157922">"ОК"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"дазволы"</string>
+ <string name="cancel" msgid="7279939269964834974">"Скасаваць"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Праграма не знойдзена"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Адмовіць"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Адхіліць і больш не пытацца"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Разгарнуць"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Адмовіць"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Дазволіць <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Заўсёды дазваляць праграме <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Толькі пры актыўнай праграме"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Заўсёды"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Адхіліць і больш не пытацца"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"Адключана: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"усе адключаны"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"няма адключаных"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Дазволіць"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Дазволіць у любым рэжыме"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Дазволіць толькі ў актыўным рэжыме праграмы"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Праграмы"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Дазволы праграмы"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Менеджар дазволаў"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Больш не пытацца"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Няма дазволаў"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Дадатковыя дазволы"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Паказаць звесткі пра праграму"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
+ <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="old_sdk_deny_warning" msgid="3872277112584842615">"Гэта праграма была распрацавана для больш старой версіі Android. Адхіленне дазволу можа прывесці да таго, што яна не будзе працаваць належным чынам."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"выканаць невядомае дзеянне"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"Паказаць сістэмныя"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Схаваць сістэмныя"</string>
- <string name="permission_title" msgid="6495415273398916381">"Дазволы: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Няма праграм"</string>
- <string name="location_settings" msgid="1774875730854491297">"Налады месцазнаходжання"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> з\'яўляецца службай вызначэння месцазнаходжання для гэтай прылады. Доступ да вызначэння месцазнаходжання можна змяніць у наладах вызначэння месцазнаходжання."</string>
- <string name="system_warning" msgid="7103819124542305179">"Калі вы адхіліце гэты дазвол, асноўныя функцыі прылады могуць перастаць працаваць належным чынам."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Ажыццёўлена палітыкай"</string>
- <string name="loading" msgid="7811651799620593731">"Загрузка..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"Усе дазволы"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Іншыя магчымасці праграмы"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Запыт дазволу"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Выяўлены слой экрана"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Каб змяніць гэту наладу дазволу, вы павінны спачатку выключыць слой экрана з меню Налады > Праграмы"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Адкрыць налады"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Дзеянні па ўсталяванні або выдаленні не падтрымліваюцца на Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"Праграма <xliff:g id="APP_NAME_0">%1$s</xliff:g> абноўлена. Дазволіць <xliff:g id="APP_NAME_1">%1$s</xliff:g> доступ да наступнага?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Выберыце, да чаго дазволіць доступ праграме <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"Праграма <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> была абноўлена. Выберыце, да чаго ёй дазволіць доступ."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Скасаваць"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Далей"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Новыя дазволы"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Бягучыя дазволы"</string>
- <string name="message_staging" msgid="6151794817691100003">"Падрыхтоўка праграмы..."</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Невядома"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"У мэтах бяспекі вашаму планшэту не дазваляецца ўсталёўваць невядомыя праграмы з гэтай крыніцы."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"У мэтах бяспекі вашаму тэлевізару не дазваляецца ўсталёўваць невядомыя праграмы з гэтай крыніцы."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"У мэтах бяспекі вашаму тэлефону не дазваляецца ўсталёўваць невядомыя праграмы з гэтай крыніцы."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Ваш тэлефон і асабістыя даныя больш уразлівыя для нападаў невядомых праграм. Пры ўсталёўцы гэтай праграмы вы згаджаецеся, што несяце адказнасць за любыя пашкоджанні тэлефона ці страту даных, якія могуць адбыцца ў выніку выкарыстання гэтай праграмы."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Ваш планшэт і асабістыя даныя больш уразлівыя для нападаў невядомых праграм. Пры ўсталёўцы гэтай праграмы вы згаджаецеся, што несяце адказнасць за любыя пашкоджанні планшэта ці страту даных, якія могуць адбыцца ў выніку выкарыстання гэтай праграмы."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Ваш тэлевізар і асабістыя даныя больш уразлівыя для нападаў невядомых праграм. Пры ўсталёўцы гэтай праграмы вы згаджаецеся, што несяце адказнасць за любыя пашкоджанні тэлевізара ці страту даных, якія могуць адбыцца ў выніку выкарыстання гэтай праграмы."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Працягнуць"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Налады"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Усталяванне/выдаленне праграм wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Гэта праграма была распрацавана для больш старой версіі Android. Адхіленне дазволу можа прывесці да таго, што яна не будзе працаваць належным чынам."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"выканаць невядомае дзеянне"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> з <xliff:g id="COUNT_1">%2$d</xliff:g> праграм з дазволам"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Нядаўняе выкарыстанне"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Паказаць панэль кіравання"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Паказаць сістэмныя"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Схаваць сістэмныя"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Няма праграм"</string>
+ <string name="location_settings" msgid="547378321761364906">"Налады месцазнаходжання"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> з\'яўляецца службай геалакацыі для гэтай прылады. Доступ да вызначэння месцазнаходжання можна змяніць у наладах."</string>
+ <string name="system_warning" msgid="6868290533389195836">"Калі вы адхіліце гэты дазвол, асноўныя функцыі прылады могуць перастаць працаваць належным чынам."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"У адпаведнасці з правіламі"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Доступ у фонавым рэжыме адключаны згодна з правіламі"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Доступ у фонавым рэжыме ўключаны згодна з правіламі"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Доступ у актыўным рэжыме ўключаны згодна з правіламі"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Кантралюецца адміністратарам"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Адміністратар адключыў доступ у фонавым рэжыме"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Адміністратар уключыў доступ у фонавым рэжыме"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Адміністратар уключыў доступ у актыўным рэжыме"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Дазвол дадзены сістэмай"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Заўсёды"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Толькі пры актыўнай праграме"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Ніколі"</string>
+ <string name="loading" msgid="323483393167148377">"Загрузка…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Усе дазволы"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Іншыя магчымасці праграмы"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Запыт дазволу"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Выяўлена накладанне на экран"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Каб змяніць гэту наладу дазволу, вы павінны спачатку выключыць накладанне на экран з меню \"Налады > Праграмы\""</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Адкрыць налады"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Дзеянні па ўсталяванні або выдаленні не падтрымліваюцца на Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Выберыце, да чаго дазволіць доступ праграме <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"Праграма <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> была абноўлена. Выберыце, да чаго ёй дазволіць доступ."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Скасаваць"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Далей"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Новыя дазволы"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Бягучыя дазволы"</string>
+ <string name="message_staging" msgid="641286607664721291">"Падрыхтоўка праграмы…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Невядома"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Панэль кіравання"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ <item quantity="many">Апошні доступ: <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">Апошні доступ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> доступ (у фонавым рэжыме: <xliff:g id="NUM_5">%3$s</xliff:g>)</item>
+ <item quantity="few">Апошні доступ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> доступы (у фонавым рэжыме: <xliff:g id="NUM_5">%3$s</xliff:g>)</item>
+ <item quantity="many">Апошні доступ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> доступаў (у фонавым рэжыме: <xliff:g id="NUM_5">%3$s</xliff:g>)</item>
+ <item quantity="other">Апошні доступ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> доступу (у фонавым рэжыме: <xliff:g id="NUM_5">%3$s</xliff:g>)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">Апошні доступ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> доступ\nПрацягласць: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="few">Апошні доступ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> доступы\nПрацягласць: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="many">Апошні доступ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> доступаў\nПрацягласць: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">Апошні доступ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> доступу\nПрацягласць: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">Апошні доступ: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> доступ (у фонавым рэжыме: <xliff:g id="NUM_6">%3$s</xliff:g>)\nПрацягласць: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="few">Апошні доступ: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> доступы (у фонавым рэжыме: <xliff:g id="NUM_6">%3$s</xliff:g>)\nПрацягласць: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="many">Апошні доступ: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> доступаў (у фонавым рэжыме: <xliff:g id="NUM_6">%3$s</xliff:g>)\nПрацягласць: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">Апошні доступ: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> доступу (у фонавым рэжыме: <xliff:g id="NUM_6">%3$s</xliff:g>)\nПрацягласць: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Любы дазвол"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"За любы час"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"За апошнія 7 дзён"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"За апошнія 24 гадзіны"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"За апошнюю гадзіну"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"За апошнія 15 хвілін"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"За апошнюю хвіліну"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Без выкарыстання дазволаў"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Доступ за любы час"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Доступ за апошнія 7 дзён"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Доступ за апошнія 24 гадзіны"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Доступ за апошнюю гадзіну"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Доступ за апошнія 15 хвілін"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Доступы, выкарыстаныя за апошнюю хвіліну"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Самыя частыя дазволы за любы час"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Самыя частыя дазволы за апошнія 7 дзён"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Самыя частыя дазволы за апошнія 24 гадзіны"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Самыя частыя дазволы за апошнюю 1 гадзіну"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Самыя частыя дазволы за апошнія 15 хвілін"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Найчасцей выкарыстаныя дазволы за апошнюю хвіліну"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Праграмы"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Параметр фільтравання: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Выдаліць фільтр"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Параметр фільтравання"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Фільтраваць па дазволах"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Найбольшая колькасць дазволаў"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Найбольшая колькасць доступаў"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Нядаўнія"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Абнавіць"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Выкарыстанне дазволаў праграмы"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"Доступ: колькасць разоў – <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="4040424337831328212">"Доступ: колькасць разоў – <xliff:g id="NUM">%1$s</xliff:g>. Апошняе выкарыстанне – <xliff:g id="TIME">%2$s</xliff:g> таму назад."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Дазволіць"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Дазволіць у любым рэжыме"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Дазволіць толькі ў актыўным рэжыме праграмы"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Адмовіць"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Дазвол \"<xliff:g id="PERM">%1$s</xliff:g>\""</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Доступ да дазволу \"<xliff:g id="PERM">%1$s</xliff:g>\" для праграмы \"<xliff:g id="APP">%2$s</xliff:g>\""</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"Праграма \"<xliff:g id="APP">%1$s</xliff:g>\" атрымала доступ да дазволу \"<xliff:g id="PERM">%2$s</xliff:g>\" <xliff:g id="TIME">%3$s</xliff:g> таму назад."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"Праграма \"<xliff:g id="APP">%1$s</xliff:g>\" не атрымала доступу да функцыі \"<xliff:g id="PERM">%2$s</xliff:g>\"."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Прагледзець звесткі пра выкарыстанне дазволаў"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Апошні доступ: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Без доступаў"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Дазволеныя"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Дазволена толькі падчас карыстання"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Адмоўленыя"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Паказаць падрабязнасці выкарыстання"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <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="seconds" formatted="false" msgid="1632909606956324957">
+ <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="role_request_message_add" msgid="1977772335648650272">"Выкарыстоўваць праграму <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> як <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Выкарыстоўваць праграму <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> замест праграмы <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> як <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Напаміны пра дазволы"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"Праграма \"<xliff:g id="APP_NAME">%s</xliff:g>\" выкарыстоўвае даныя пра ваша месцазнаходжанне"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Гэта праграма заўсёды можа атрымаць доступ да даных пра ваша месцазнаходжанне. Націсніце, каб змяніць."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Толькі ў актыўным рэжыме праграмы"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Няма дазволаў"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Дазволы не адхілены"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Праграмы не дазволены"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Праграмы не адхілены"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Адкрыць"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Выдаліць"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Прымусова спыніць"</string>
+ <string name="settings" msgid="2884124136779508907">"Налады"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> мае поўны доступ да даных вашай прылады"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"Спецыяльныя магчымасці (<xliff:g id="NUM_SERVICES">%s</xliff:g> шт.) маюць поўны доступ да даных вашай прылады"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> можа праглядаць ваш экран, дзеянні і ўводы, самастойна выконваць дзеянні і кіраваць дысплэем."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Гэтыя сэрвісы могуць праглядаць ваш экран, дзеянні і ўводы, самастойна выконваць дзеянні і кіраваць дысплэем."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Стандартныя праграмы"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Няма стандартных праграм"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Стандартныя для працы"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Няма"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Няма праграм"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Спецыяльны доступ да праграм"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Няма доступу да праграм"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Няма праграм"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Праграма-памочнік"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Браўзер"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Праграма \"Тэлефон\""</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Праграма для SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Праграма экстраннай дапамогі"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Галоўная праграма"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Праграма \"Музыка\""</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Праграма \"Галерэя\""</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Праграма рэжыму \"У аўтамабілі\""</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Праграма перанакіравання выклікаў"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Праграма фільтравання выклікаў"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Спадарожная праграма выклікаў"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Праграма трансляцыі на экран"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Працоўны профіль не падтрымліваецца"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Заўвага. Калі перазапусціць прыладу з наладжанай блакіроўкай экрана, праграма не запусціцца, пакуль вы не разблакіруеце прыладу."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Памочнік атрымае доступ да інфармацыі пра праграмы, якія выкарыстоўваюцца ў вашай сістэме, у тым ліку да інфармацыі, бачнай на вашым экране ці даступнай у праграмах."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Абагульванне даных адладкі"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Абагуліць падрабязнасці адладкі?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"Праграма \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" спрабуе запампаваць звесткі пра адладку."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Абагульванне даных адладкі"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"Праграма \"<xliff:g id="APP_NAME_0">%1$s</xliff:g>\" запытвае запампоўку справаздачы пра памылкі з гэтай прылады ад <xliff:g id="DATE">%2$s</xliff:g> у <xliff:g id="TIME">%3$s</xliff:g>. Справаздача пра памылкі ўключае персанальную інфармацыю пра вашу прыладу ці зарэгістраваныя праграмы, напрыклад імёны карыстальнікаў, звесткі пра месцазнаходжанне, ідэнтыфікатары прылады і даныя пра сетку. Абагульвайце справаздачы пра памылкі толькі з людзьмі і праграмамі, якім давяраеце. Дазволіць праграме \"<xliff:g id="APP_NAME_1">%4$s</xliff:g>\" запампаваць справаздачу пра памылкі?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Дазволіць"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Адмовіць"</string>
</resources>
diff --git a/res/values-bg-television/strings.xml b/res/values-bg-television/strings.xml
index 7429955..d594454 100644
--- a/res/values-bg-television/strings.xml
+++ b/res/values-bg-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Отказване, без повторно запитване"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Можете да промените това по-късно от „Настройки“ > „Приложения“"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Показване на системните приложения"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Разрешения за приложението"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Разрешения за приложението"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Разрешения за <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Допълнителни разрешения"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Разрешения за <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Отказване, без повторно запитване"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Можете да промените това по-късно от „Настройки“ > „Приложения“"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Показване на системните приложения"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Разрешения за приложенията"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Разрешения за приложенията"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Разрешения за <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Допълнителни разрешения"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Разрешения за <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-bg-watch/strings.xml b/res/values-bg-watch/strings.xml
index b71606b..6b0ec7f 100644
--- a/res/values-bg-watch/strings.xml
+++ b/res/values-bg-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Отказ, без повторно запитване"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Показване на системните приложения"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Без промяна"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Да"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Отказ"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Отказ, без повторно запитване"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Показване на системните приложения"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Без промяна"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Да"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Отказ"</string>
</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 2048ccf..40ac6cd 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Инсталираща програма за пакети"</string>
- <string name="next" msgid="3057143178373252333">"Напред"</string>
- <string name="install" msgid="5896438203900042068">"Инсталиране"</string>
- <string name="done" msgid="3889387558374211719">"Готово"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Да се разреши на това приложение следното:"</string>
- <string name="cancel" msgid="8360346460165114585">"Назад"</string>
- <string name="unknown" msgid="4742479012767208045">"Неизвестно"</string>
- <string name="installing" msgid="8613631001631998372">"Инсталира се..."</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> се инсталира…"</string>
- <string name="install_done" msgid="3682715442154357097">"Приложението бе инсталирано."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Искате ли да инсталирате това приложение? То ще получи достъп до:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Искате ли да инсталирате това приложение? То не изисква никакъв специален достъп."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Искате ли да инсталирате актуализация за това съществуващо приложение? Съществуващите ви данни няма да бъдат загубени. Актуализираното приложение ще получи достъп до:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Искате ли да инсталирате актуализация за това вградено приложение? Съществуващите ви данни няма да бъдат загубени. Актуализираното приложение ще получи достъп до:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Искате ли да инсталирате актуализация за това съществуващо приложение? Съществуващите ви данни няма да бъдат загубени. Не се изисква специален достъп."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Искате ли да инсталирате актуализация за това вградено приложение? Съществуващите ви данни няма да бъдат загубени. Не се изисква специален достъп."</string>
- <string name="install_failed" msgid="6579998651498970899">"Приложението не бе инсталирано."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Инсталирането на пакета бе блокирано."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Приложението не бе инсталирано, тъй като пакетът е в конфликт със съществуващ пакет."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Приложението не бе инсталирано, тъй като не е съвместимо с таблета ви."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Това приложение не е съвместимо с телевизора ви."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Приложението не бе инсталирано, тъй като не е съвместимо с телефона ви."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Приложението не бе инсталирано, тъй като изглежда, че пакетът е невалиден."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> не можа да се инсталира на таблета ви."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> не можа да се инсталира на телевизора ви."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> не можа да се инсталира на телефона ви."</string>
- <string name="launch" msgid="4826921505917605463">"Отваряне"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Администраторът ви не разрешава инсталирането на приложения, получени от неизвестни източници"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Този потребител не може да инсталира неизвестни приложения"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Този потребител няма разрешение да инсталира приложения"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Настройки"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Управление на приложенията"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Да се замени ли приложението?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Приложението, което инсталирате, ще замени друго.\n\nВсичките ви досегашни потребителски данни ще бъдат запазени."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Това е системно приложение.\n\nВсичките ви досегашни потребителски данни ще бъдат запазени."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Няма място"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> не можа да се инсталира. Освободете място и опитайте отново."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Приложението не бе намерено"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Приложението не бе намерено в списъка с инсталирани приложения."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Няма разрешение"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Текущият потребител няма разрешение да извърши това деинсталиране."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Грешка"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Приложението не можа да бъде деинсталирано."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Деинсталиране на приложението"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Деинсталиране на актуализацията"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> е част от следното приложение:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Искате ли да деинсталирате това приложение?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Искате ли да деинсталирате това приложение за "<b>"всички"</b>" потребители? Приложението и данните му ще бъдат премахнати от "<b>"всички"</b>" потребители на устройството."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Искате ли да деинсталирате това приложение за потребителя <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Това приложение да се замени ли с фабричната версия? Всички данни ще бъдат премахнати."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Това приложение да се замени ли с фабричната версия? Всички данни ще бъдат премахнати. Промяната ще засегне всеки потребител на устройството, включително тези със служебни потребителски профили."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Активни деинсталирания"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Неуспешни деинсталирания"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Деинсталира се..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> се деинсталира…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Деинсталирането завърши."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Деинсталирахте <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Деинсталирането не бе успешно."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Деинсталирането на <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> бе неуспешно."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Активното приложение за администриране на устройството не може да се деинсталира"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Активното приложение за администриране на устройството не може да се деинсталира за <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Това приложение е необходимо за някои потребители или потребителски профили и бе деинсталирано за други."</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Това приложение е необходимо за потребителския ви профил и не може да се деинсталира."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Приложението се изисква от администратора на у-вото и не може да се деинсталира."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Управление на прилож. за администриране на у-вото"</string>
- <string name="manage_users" msgid="3125018886835668847">"Управление на потребителите"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> не можа да се деинсталира."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"При синтактичния анализ на пакета възникна проблем."</string>
- <string name="newPerms" msgid="6039428254474104210">"Нови"</string>
- <string name="allPerms" msgid="1024385515840703981">"Всички"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Поверителност"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Достъп до у-вото"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Тази актуализация не изисква нови разрешения."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Искате ли да предоставите следните разрешения? Така ще се получи достъп до:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Отказване"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Още информация"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Отказване въпреки това"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Разрешаване на <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> да <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"Деактивирахте <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"всички са деактивирани"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"няма деактивирани"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Разрешаване"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Приложения"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Разрешения за приложения"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Без повторно питане"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Няма разрешения"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Допълнителни разрешения"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Управление на разрешения"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"разрешения"</string>
+ <string name="cancel" msgid="7279939269964834974">"Отказ"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Приложението не бе намерено"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Отказ"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Отказване, без повторно запитване"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Още информация"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Отказване"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Да се разреши ли на <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> следното действие: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Винаги ли да се разрешава на <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> да <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Само при използване на приложението"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Винаги"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Отказване, без повторно запитване"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"Деактивирахте <xliff:g id="COUNT">%1$d</xliff:g>"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"всички са деактивирани"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"няма деактивирани"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Разрешаване"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Разрешаване във всички случаи"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Разрешаване само докато приложението се използва"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Приложения"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Разрешения за приложенията"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Мениджър на разрешенията"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Без повторно запитване"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Няма разрешения"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Допълнителни разрешения"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Отваряне на информацията за приложението"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"Това приложение е създадено за по-стара версия на Android. То може да спре да функционира нормално при отказване на разрешението."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"извършване на неизвестно действие"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"Системни приложения"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Скриване на системните"</string>
- <string name="permission_title" msgid="6495415273398916381">"Разрешения за <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Няма приложения"</string>
- <string name="location_settings" msgid="1774875730854491297">"Настройки за местоположението"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> е доставчик на услуги за местоположението за това устройство. Достъпът до местоположението може да бъде променен от съответните настройки."</string>
- <string name="system_warning" msgid="7103819124542305179">"Ако откажете това разрешение, основни функции на устройството ви може да спрат да работят както трябва."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Наложено чрез правило"</string>
- <string name="loading" msgid="7811651799620593731">"Зарежда се…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Всички разрешения"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Други възможности на приложението"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Заявка за разрешение"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Открито е екранно наслагване"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"За да промените настройката за това разрешение, трябва първо да изключите екранното наслагване от „Настройки“ > „Приложения“"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Отваряне на настройките"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Действията инсталиране и деинсталиране не се поддържат на устройства с Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"Приложението <xliff:g id="APP_NAME_0">%1$s</xliff:g> е актуализирано. Искате ли да разрешите на <xliff:g id="APP_NAME_1">%1$s</xliff:g> достъп до следните неща?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Изберете до какво да има достъп <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"Приложението <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> е актуализирано. Изберете до какво да има достъп."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Отказ"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Напред"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Нови разрешения"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Текущи разрешения"</string>
- <string name="message_staging" msgid="6151794817691100003">"Приложението се подготвя…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Неизвестно"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"От съображения за сигурност на таблета ви не могат да се инсталират неизвестни приложения от този източник."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"От съображения за сигурност на телевизора ви не могат да се инсталират неизвестни приложения от този източник."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"От съображения за сигурност на телефона ви не могат да се инсталират неизвестни приложения от този източник."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Телефонът и личните ви данни са по-уязвими към атаки от неизвестни приложения. С инсталирането на това приложение приемате, че носите отговорност при евентуална повреда на телефона или загуба на информация вследствие на използването на приложението."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Таблетът и личните ви данни са по-уязвими към атаки от неизвестни приложения. С инсталирането на това приложение приемате, че носите отговорност при евентуална повреда на таблета или загуба на информация вследствие на използването на приложението."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Телевизорът и личните ви данни са по-уязвими към атаки от неизвестни приложения. С инсталирането на това приложение приемате, че носите отговорност при евентуална повреда на телевизора или загуба на информация вследствие на използването на приложението."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Напред"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Настройки"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Инсталир./деинсталир. на прилож. за Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Това приложение е създадено за по-стара версия на Android. То може да спре да функционира нормално при отказване на разрешението."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"извършване на неизвестно действие"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> от <xliff:g id="COUNT_1">%2$d</xliff:g> приложения имат разрешение"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Скорошна употреба"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Табло за управл. на разреш.: Преглед"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Показване на системните приложения"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Скриване на системните приложения"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Няма приложения"</string>
+ <string name="location_settings" msgid="547378321761364906">"Настройки за местоположението"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> е доставчик на услуги за местоположението за това устройство. Достъпът до местоположението може да бъде променен от съответните настройки."</string>
+ <string name="system_warning" msgid="6868290533389195836">"Ако откажете това разрешение, основни функции на устройството ви може да спрат да работят както трябва."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Наложено чрез правило"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Достъпът на заден план е деактивиран от правилата"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Достъпът на заден план е активиран от правилата"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Достъпът на преден план е активиран от правилата"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Контролира се от администратор"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Достъпът на заден план е деактивиран от администратора"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Достъпът на заден план е активиран от администратора"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Достъпът на преден план е активиран от администратора"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Разрешението е зададено от системата"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Винаги"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Само при използване на прилож."</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Никога"</string>
+ <string name="loading" msgid="323483393167148377">"Зарежда се…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Всички разрешения"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Други възможности на приложението"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Заявка за разрешение"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Открито е екранно наслагване"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"За да промените настройката за това разрешение, трябва първо да изключите екранното наслагване от „Настройки“ > „Приложения“"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Отваряне на настройките"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Действията инсталиране и деинсталиране не се поддържат на устройства с Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Изберете до какво да има достъп <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"Приложението <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> е актуализирано. Изберете до какво да има достъп."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Отказ"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Напред"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Нови разрешения"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Текущи разрешения"</string>
+ <string name="message_staging" msgid="641286607664721291">"Приложението се подготвя…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Неизвестно"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Табло за управление"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Последен достъп: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> осъществявания на достъп (<xliff:g id="NUM_5">%3$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> осъществяване на достъп (<xliff:g id="NUM_2">%3$s</xliff:g> на заден план)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Последен достъп: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> осъществявания на достъп\nПродължителност: <xliff:g id="TIME_5">%3$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> осъществяване на достъп\nПродължителност: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Последен достъп: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> осъществявания на достъп (<xliff:g id="NUM_6">%3$s</xliff:g> на заден план)\nПродължителност: <xliff:g id="TIME_7">%3$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> осъществяване на достъп (<xliff:g id="NUM_2">%3$s</xliff:g> на заден план)\nПродължителност: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Всички разрешения"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"По всяко време"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Последните 7 дни"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Последните 24 часа"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Последният 1 час"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Последните 15 минути"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Последната минута"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Разрешенията не са използвани"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Достъп по всяко време"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Достъп през последните 7 дни"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Достъп през последните 24 часа"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Достъп през последния час"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Достъп през последните 15 минути"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Достъп през последната минута"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Най-използваните разрешения по всяко време"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Най-използваните разрешения през последните 7 дни"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Най-използваните разрешения през последните 24 ч"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Най-използваните разрешения през последния 1 час"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Най-използвани разрешения през последните 15 мин"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Най-използваните разрешения през последната минута"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Приложения"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Филтрирано по: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Премахване на филтъра"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Филтриране по"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Филтриране по разрешения"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Най-много разрешения"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Най-много осъществ. на достъп"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Скорошни"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Опресняване"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Използване на разрешенията"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"Достъп: <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="4040424337831328212">"Достъп: <xliff:g id="NUM">%1$s</xliff:g> пъти. Последно използване преди <xliff:g id="TIME">%2$s</xliff:g>."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Разрешаване"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Разрешаване във всички случаи"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Разрешаване само докато приложението се използва"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Отказ"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Разрешение за <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Достъп до <xliff:g id="PERM">%1$s</xliff:g> за <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> осъществи достъп до <xliff:g id="PERM">%2$s</xliff:g> ви преди <xliff:g id="TIME">%3$s</xliff:g>."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"Приложението <xliff:g id="APP">%1$s</xliff:g> не е осъществило достъп до <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Преглед на подробности за използването на разрешенията"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Последен достъп: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Никога не е осъществяван достъп"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Разрешено"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Разрешено само при използване"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Отказано"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Преглед на подробната употреба"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> дни</item>
+ <item quantity="one">1 ден</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> часа</item>
+ <item quantity="one">1 час</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> минути</item>
+ <item quantity="one">1 минута</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> секунди</item>
+ <item quantity="one">1 секунда</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Да се използва ли <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> като <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Да се използва ли <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> вместо <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> като <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Напомняния за разрешения"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> използва местоположението ви"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Приложението винаги има достъп до местоположението ви. Докоснете, за да промените това."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Само докато приложението се използва"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Няма позволени разрешения"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Няма отказани разрешения"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Няма разрешени приложения"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Няма отказани приложения"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Отваряне"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Деинсталиране"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Принудително спиране"</string>
+ <string name="settings" msgid="2884124136779508907">"Настройки"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> има пълен достъп до устройството ви"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> услуги за достъпност имат пълен достъп до устройството ви"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> може да вижда екрана, действията ви и данните, които въвеждате, както и да извършва действия и да контролира дисплея."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Тези услуги могат да виждат екрана, действията ви и данните, които въвеждате, както и да извършват действия и да контролират дисплея."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Приложения по подразбиране"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Няма стандартни приложия"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"По подразбиране за работа"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Няма"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Няма приложения"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Специален достъп за прилож."</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Няма спец. достъп за прилож."</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Няма приложения"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Помощно приложение"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Приложение за браузър"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Приложение за телефон"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Приложение за SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Приложение за спешни случаи"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Приложение за начален екран"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Приложение за музика"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Приложение за галерия"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Прил. за телефон в моторежим"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Прил. за пренас. на обаждания"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Прил. за отсяване на обажд."</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Придружаващо прил. за обажд."</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Прожектиране в автомобила"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Не се поддържат служебни потребителски профили"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Забележка: Ако рестартирате устройството си и сте задали опция за заключване на екрана, това приложение не може да стартира, докато не отключите устройството си."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Асистентът ще може да чете информацията за използваните в системата приложения, включително данните, видими на екрана или достъпни в тях."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Споделяне на данните за отстраняване на грешки"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Споделяне на подробни данни за отстран. на грешки?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> иска да качи информация за отстраняване на грешки."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Споделяне на данните за отстраняване на грешки"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> иска да качи сигнал за програмна грешка от това устройство, създаден на <xliff:g id="DATE">%2$s</xliff:g> в <xliff:g id="TIME">%3$s</xliff:g>. Сигналите за програмни грешки включват лична информация за устройството ви или регистрирана от приложенията, като например потребителски имена, данни за местоположението, идентификатори на устройството и информация за мрежата. Споделяйте сигналите за програмни грешки само с хора и приложения, на които бихте доверили тази информация. Да се разреши ли на <xliff:g id="APP_NAME_1">%4$s</xliff:g> да качи сигнал за програмна грешка?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Разрешаване"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Отказ"</string>
</resources>
diff --git a/res/values-bn-television/strings.xml b/res/values-bn-television/strings.xml
index a83d7b8..760432e 100644
--- a/res/values-bn-television/strings.xml
+++ b/res/values-bn-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"অস্বীকার করুন এবং আবার জিজ্ঞাসা করবেন না"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"আপনি সেটিংস > অ্যাপ্লিকেশান এ এটি পরে পরিবর্তন করতে পারেন"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"সিস্টেম অ্যাপ্লিকেশানগুলি দেখান"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"অ্যাপ্লিকেশনের অনুমতি"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"অ্যাপ্লিকেশনের অনুমতি"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> অনুমতিগুলি"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"অতিরিক্ত অনুমতিগুলি"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> অনুমতিগুলি"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"প্রত্যাখান করুন এবং আর জিজ্ঞেস না করার জন্য চিহ্নিত করুন"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"আপনি পরে সেটিংস > অ্যাপ বিকল্পে গিয়ে এটি পরিবর্তন করতে পারেন"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"সিস্টেম অ্যাপ দেখুন"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"অ্যাপের অনুমতি"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"অ্যাপের অনুমতি"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> ব্যবহারের অনুমতি"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"অতিরিক্ত অনুমতি"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> ব্যবহারের অনুমতি"</string>
</resources>
diff --git a/res/values-bn-watch/strings.xml b/res/values-bn-watch/strings.xml
index 79a91f4..9197bf8 100644
--- a/res/values-bn-watch/strings.xml
+++ b/res/values-bn-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"অস্বীকার করুন, আবার জিজ্ঞাসা করবেন না"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"সিস্টেম অ্যাপ্লিকেশানগুলি দেখান"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"পরিবর্তন করা যাবে না"</string>
- <string name="generic_yes" msgid="3394094077553763689">"হ্যাঁ"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"বাতিল করুন"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"না বলুন, আর চাওয়া হবে না"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"সিস্টেম অ্যাপ দেখুন"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"পাল্টানো যাবে না"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"হ্যাঁ"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"বাতিল করুন"</string>
</resources>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index df792ff..cfe43bc 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,215 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"প্যাকেজ ইনস্টলার"</string>
- <string name="next" msgid="3057143178373252333">"পরবর্তী"</string>
- <string name="install" msgid="5896438203900042068">"ইনস্টল করুন"</string>
- <string name="done" msgid="3889387558374211719">"সম্পন্ন হয়েছে"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"এই অ্যাপ্লিকেশানটিকে এতে অনুমোদিত করুন:"</string>
- <string name="cancel" msgid="8360346460165114585">"বাতিল করুন"</string>
- <string name="unknown" msgid="4742479012767208045">"অজানা"</string>
- <string name="installing" msgid="8613631001631998372">"ইনস্টল করা হচ্ছে…"</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ইন্সটল করা হচ্ছে…"</string>
- <string name="install_done" msgid="3682715442154357097">"অ্যাপ্লিকেশান ইনস্টল করা হয়েছে৷"</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"আপনি কি এই অ্যাপ্লিকেশানটি ইনস্টল করতে চান? এর মাধ্যমে যেসব জিনিস অ্যাক্সেস করার সুবিধা পাবেন সেগুলি হল:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"আপনি কি এই অ্যাপ্লিকেশানটি ইনস্টল করতে চান? এর জন্য কোনো বিশেষ অ্যাক্সেসের প্রয়োজন নেই৷"</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"আপনি কি এই বিদ্যমান অ্যাপ্লিকেশানের একটি আপডেট ইনস্টল করতে চান? আপনার বিদ্যমান ডেটাগুলি একই রকম থাকবে৷ এই আপডেট হওয়া অ্যাপ্লিকেশানটির মাধ্যমে যেসব জিনিস অ্যাক্সেস করার সুবিধা পাবেন সেগুলি হল:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"আপনি কি এই ভেতরে থাকা অ্যাপ্লিকেশানের একটি আপডেট ইনস্টল করতে চান? আপনার বিদ্যমান ডেটাগুলি একই রকম থাকবে৷ এই আপডেট হওয়া অ্যাপ্লিকেশানটির মাধ্যমে যেসব জিনিস অ্যাক্সেস করার সুবিধা পাবেন সেগুলি হল:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"আপনি কি এই বিদ্যমান অ্যাপ্লিকেশানের একটি আপডেট ইনস্টল করতে চান? আপনার বিদ্যমান ডেটাগুলি একই রকম থাকবে৷ এর জন্য কোনো বিশেষ অ্যাক্সেসের প্রয়োজন নেই৷"</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"আপনি কি ভেতরে থাকা অ্যাপ্লিকেশানের একটি আপডেট ইনস্টল করতে চান? আপনার বিদ্যমান ডেটাগুলি একই রকম থাকবে৷ এর জন্য কোনো বিশেষ অ্যাক্সেসের প্রয়োজন নেই৷"</string>
- <string name="install_failed" msgid="6579998651498970899">"অ্যাপ্লিকেশান ইনস্টল করা হয়নি৷"</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"ইনস্টল হওয়া থেকে প্যাকেজটিকে অবরুদ্ধ করা হয়েছে।"</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"কোনো বিদ্যমান প্যাকেজের সাথে এই প্যাকেজটির বিবাদ থাকার ফলে অ্যাপ ইনস্টল করা হয়নি৷"</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"অ্যাপটি আপনার ট্যাবলেটের জন্য উপযুক্ত না হওয়ার কারণে এটি ইনস্টল করা হয়নি৷"</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"এই অ্যাপ্লিকেশানটি আপনার টিভির জন্য উপযুক্ত নয়৷"</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"অ্যাপটি আপনার ফোনের জন্য উপযুক্ত না হওয়ার কারণে এটি ইনস্টল করা হয়নি৷"</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"প্যাকেজটি অবৈধ বলে মনে হওয়ার কারণে অ্যাপ ইনস্টল করা হয়নি৷"</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> আপনার ট্যাবলেটে ইনস্টল করা যায়নি৷"</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g>-কে আপনার টিভিতে ইনস্টল করা যাবে না৷"</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> আপনার ফোনে ইনস্টল করা যায়নি৷"</string>
- <string name="launch" msgid="4826921505917605463">"খুলুন"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"আপনার প্রশাসক অজানা উৎস থেকে প্রাপ্ত অ্যাপ ইনস্টল করার অনুমতি দেয় না"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"এই ব্যবহারকারী অজানা অ্যাপ ইনস্টল করতে পারবেন না"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"এই ব্যবহারকারী অ্যাপ ইনস্টল করার অনুমতি পাননি"</string>
- <string name="ok" msgid="3468756155452870475">"ঠিক আছে"</string>
- <string name="settings" msgid="6743583734099755409">"সেটিংস"</string>
- <string name="manage_applications" msgid="4033876279091996596">"অ্যাপ্লিকেশানগুলির পরিচালনা করুন"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"অ্যাপ্লিকেশান প্রতিস্থাপন করতে চান?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"আপনি যে অ্যাপ্লিকেশানটি ইনস্টল করছেন তা অন্য একটি অ্যাপ্লিকেশানকে প্রতিস্থাপিত করবে৷\n\nআপনার সমস্ত পূর্ববর্তী ব্যবহারকারী ডেটা সংরক্ষিত হবে৷"</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"এটি হল একটি সিস্টেম অ্যাপ্লিকেশান৷\n\nআপনার সমস্ত পূর্ববর্তী ব্যবহারকারী ডেটা সংরক্ষিত হবে৷"</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"পর্যাপ্ত জায়গা খালি নেই"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> ইনস্টল করা যায়নি৷ কিছু পরিমাণ জায়গা খালি করে আবার চেষ্টা করুন৷"</string>
- <string name="dlg_ok" msgid="6944357727705699232">"ঠিক আছে"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"অ্যাপ্লিকেশান পাওয়া যায়নি"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"অ্যাপ্লিকেশানটিকে ইনস্টল করা অ্যাপ্লিকেশানের তালিকাতে পাওয়া যায়নি৷"</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"অনুমোদিত নয়"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"বর্তমান ব্যবহারকারী এই আনইনস্টলের কাজটি করার জন্য অনুমোদিত নয়৷"</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"ত্রুটি"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"অ্যাপ আনইনস্টল করা গেল না৷"</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"অ্যাপ্লিকেশানটিকে আনইনস্টল করুন"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"আপডেট আনইনস্টল করুন"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> হল নিম্নলিখিত অ্যাপ্লিকেশানগুলির অংশ বিশেষ:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"আপনি কি এই অ্যাপ্লিকেশানটিকে আনইনস্টল করতে চান?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"আপনি কি "<b>"সমস্ত"</b>" ব্যবহারকারীর জন্য এই অ্যাপ্লিকেশানটিকে আনইনস্টল করতে চান? এই ডিভাইসের "<b>"সমস্ত"</b>" ব্যবহারকারীর কাছ থেকে অ্যাপ্লিকেশানটি ও এর ডেটা হারিয়ে যাবে৷"</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"আপনি কি ব্যবহারকারী <xliff:g id="USERNAME">%1$s</xliff:g> এর জন্য এই অ্যাপ্লিকেশানটি আনইনস্টল করতে চান?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"ফ্যাক্টরি সংস্করণের সাথে এই অ্যাপটিকে বদলাবেন? সব ডেটা মুছে যাবে।"</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"ফ্যাক্টরি সংস্করণের সাথে এই অ্যাপটিকে বদলাবেন? সমস্ত ডেটা মুছে যাবে। এটি এই ডিভাইসের সমস্ত ব্যবহারকারী সহ তাদের কার্যের প্রোফাইলের উপরেও প্রভাব ফেলবে।"</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"এগুলি আনইনস্টল করা হচ্ছে"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"এগুলি আনইনস্টল করা যায়নি"</string>
- <string name="uninstalling" msgid="5556217435895938250">"আনইনস্টল করা হচ্ছে ..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> আনইনস্টল করা হচ্ছে…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"আনইনস্টল সমাপ্ত হয়েছে৷"</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> আনইনস্টল করা হয়েছে"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"আনইনস্টল সফল হয়নি৷"</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> আনইনস্টল করা গেল না৷"</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"সক্রিয় থাকা ডিভাইস প্রশাসক অ্যাপটি আনইনস্টল করা যাবে না"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"<xliff:g id="USERNAME">%1$s</xliff:g> এর সক্রিয় থাকা ডিভাইস প্রশাসক অ্যাপটি আনইনস্টল করা যাবে না"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"কিছু ব্যবহারকারী বা প্রোফাইলের জন্য এই অ্যাপ্লিকেশানটি আবশ্যক এবং অন্যদের জন্য আনইনস্টল করা হবে"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"আপনার প্রোফাইলের জন্য এই অ্যাপ্লিকেশানটি প্রয়োজন এবং এটিকে আনইনস্টল করা যাবে না৷"</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"আপনার ডিভাইস প্রশাসকের চাহিদা অনুযায়ী এই অ্যাপ্লিকেশানটি আবশ্যক এবং এটি আনইনস্টল করা যাবে না।"</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"ডিভাইস প্রশাসক অ্যাপগুলি পরিচালনা করুন"</string>
- <string name="manage_users" msgid="3125018886835668847">"ব্যবহারকারীদের পরিচালনা করুন"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> আনইনস্টল করা যায়নি৷"</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"প্যাকেজটি বিশ্লেষণ করার ক্ষেত্রে একটি সমস্যা হয়েছে৷"</string>
- <string name="newPerms" msgid="6039428254474104210">"নতুন"</string>
- <string name="allPerms" msgid="1024385515840703981">"সমস্ত"</string>
- <string name="privacyPerms" msgid="1850527049572617">"গোপনীয়তা"</string>
- <string name="devicePerms" msgid="6733560207731294504">"ডিভাইসের অ্যাক্সেস"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"এই আপডেটের জন্য কোনো নতুন অনুমতির প্রয়োজন নেই৷"</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"আপনি কি নিম্নলিখিত অনুমতিগুলি প্রদান করতে চান? এটি এতে অ্যাক্সেস করার সুযোগ পাবে:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"প্রত্যাখ্যান করুন"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"আরও তথ্য"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"যাইহোক অস্বীকার করুন"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>কে <xliff:g id="ACTION">%2$s</xliff:g> এর অনুমতি দেবেন?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g>টি অক্ষম করা হয়েছে"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"সমস্ত অক্ষম করা হয়েছে"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"কোনো কিছুই অক্ষম করা হয়নি"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"অনুমতি দিন"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"অ্যাপ"</string>
- <string name="app_permissions" msgid="3146758905824597178">"অ্যাপ্লিকেশনের অনুমতি"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"আর জিজ্ঞাসা করবেন না"</string>
- <string name="no_permissions" msgid="3210542466245591574">"কোনো অনুমতি নেই"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"অতিরিক্ত অনুমতিগুলি"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"অনুমতি নিয়ন্ত্রক"</string>
+ <string name="ok" msgid="4417794827535157922">"ঠিক আছে"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"অনুমতি"</string>
+ <string name="cancel" msgid="7279939269964834974">"বাতিল করুন"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"অ্যাপটি পাওয়া যায়নি"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"না বলুন"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"বাতিল করুন ও আর দেখাবেন না"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"আরও তথ্য"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"তবুও না বলুন"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> অ্যাপটিকে <xliff:g id="ACTION">%2$s</xliff:g> করার অনুমতি দেবেন?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> অ্যাপটিকে সব সময় <xliff:g id="ACTION">%2$s</xliff:g> করার অনুমতি দেবেন?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"শুধুমাত্র অ্যাপ ব্যবহার করার সময়"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"সব সময়"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"না বলুন, আবার জিজ্ঞেস না করার জন্য চিহ্নিত করুন"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g>টি বন্ধ করা হয়েছে"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"সবগুলি বন্ধ করা হয়েছে"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"কোনওটিই বন্ধ করা হয়নি"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"হ্যাঁ বলুন"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"সর্বদা অনুমতি দিন"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"শুধুমাত্র অ্যাপ ব্যবহারের সময়ই অনুমতি দিন"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"অ্যাপ"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"অ্যাপের অনুমতি"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"অনুমতি ম্যানেজার"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"আর জিজ্ঞেস না করার জন্য বলুন"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"কোনও অনুমতি নেই"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"অতিরিক্ত অনুমতি"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"অ্যাপের তথ্য দেখুন"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"একটি পুরোনো সংস্করণের Android এর জন্য এই অ্যাপ্লিকেশানটি ডিজাইন করা হয়েছিল৷ অনুমতি অস্বীকার করলে এটিকে যে কাজের উদ্দেশ্যে তৈরি করা হয়েছিল সেটি নাও করতে পারে৷"</string>
- <string name="default_permission_description" msgid="4992892207044156668">"কোনো অজানা কার্য সঞ্চালন করুন"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"সিস্টেম দেখুন"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"সিস্টেম লুকান"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> অনুমতিগুলি"</string>
- <string name="no_apps" msgid="1965493419005012569">"কোনো অ্যাপ্লিকেশান নেই"</string>
- <string name="location_settings" msgid="1774875730854491297">"অবস্থান সেটিংস"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> এই ডিভাইসের জন্য একটি লোকেশন পরিষেবাগুলি প্রদান করে। লোকেশন সেটিংস থেকে লোকেশনের অ্যাক্সেস পরিবর্তন করা যায়।"</string>
- <string name="system_warning" msgid="7103819124542305179">"আপনি যদি এই অনুমতিটি অস্বীকার করেন, তবে আপনার ডিভাইসের প্রাথমিক বৈশিষ্ট্যগুলিকে যে কাজের উদ্দেশ্যে তৈরি করা হয়েছিল সেগুলি নাও করতে পারে৷"</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"নীতি দ্বারা প্রয়োগ করা হয়েছে"</string>
- <string name="loading" msgid="7811651799620593731">"লোড হচ্ছে..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"সমস্ত অনুমতি"</string>
- <string name="other_permissions" msgid="2016192512386091933">"অন্যান্য অ্যাপ্লিকেশান ক্ষমতা"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"অনুমতির অনুরোধ"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"স্ক্রীন আচ্ছাদন সনাক্ত করা হয়েছে"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"এই অনুমতি সেটিংস পরিবর্তন করতে, আপনাকে প্রথমে সেটিংস > এ গিয়ে অ্যাপ্লিকেশানগুলি থেকে স্ক্রীন ওভারলে বন্ধ করতে হবে"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"সেটিংস খুলুন"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"ওয়েরে ইনস্টল/আনইনস্টল করার কাজগুলি সমর্থিত নয়।"</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> আপডেট করা হয়েছে৷ <xliff:g id="APP_NAME_1">%1$s</xliff:g>কে নিম্নলিখিত জিনিসগুলি অ্যাক্সেস করার অনুমতি দেবেন?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> কে কোন জিনিসগুলিতে অ্যাক্সেস দেবেন তা বেছে নিন"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> আপডেট করা হয়েছে৷ এই অ্যাপ্লিকেশানটিকে কোন জিনিসগুলিতে অ্যাক্সেস দেবেন তা চয়ন করুন৷"</string>
- <string name="review_button_cancel" msgid="957906817733578877">"বাতিল করুন"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"চালিয়ে যান"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"নতুন অনুমতিগুলি"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"বর্তমান অনুমতিগুলি"</string>
- <string name="message_staging" msgid="6151794817691100003">"অ্যাপ্লিকেশান স্টেজ করা হচ্ছে..."</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"অজানা"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"আপনার নিরাপত্তার জন্য আপনার ট্যাবলেট কে এই উৎস থেকে আসা অজানা অ্যাপ ইনস্টল করার অনুমতি দেওয়া হয় না।"</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"আপনার নিরাপত্তার জন্য আপনার TV কে এই উৎস থেকে আসা অজানা অ্যাপ ইনস্টল করার অনুমতি দেওয়া হয় না।"</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"আপনার নিরাপত্তার জন্য আপনার ফোন কে এই উৎস থেকে আসা অজানা অ্যাপ ইনস্টল করার অনুমতি দেওয়া হয় না।"</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"অজানা অ্যাপের দ্বারা আপনার ফোন এবং ব্যক্তিগত ডেটা আক্রান্ত হওয়ার সম্ভাবনা বেশি থাকে। এই অ্যাপটি ইনস্টল করার মাধ্যমে আপনি সম্মত হলেন যে এটি ব্যবহারের ফলে আপনার ফোনের বা ডেটার কোনও ক্ষতি হলে তার জন্য আপনিই দায়ী থাকবেন।"</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"অজানা অ্যাপের দ্বারা আপনার ট্যাবলেট এবং ব্যক্তিগত ডেটা আক্রান্ত হওয়ার সম্ভাবনা বেশি থাকে। এই অ্যাপটি ইনস্টল করার মাধ্যমে আপনি সম্মত হলেন যে এটি ব্যবহারের ফলে আপনার ট্যাবলেটের বা ডেটার কোনও ক্ষতি হলে তার জন্য আপনিই দায়ী থাকবেন।"</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"অজানা অ্যাপের দ্বারা আপনার টিভি এবং ব্যক্তিগত ডেটা আক্রান্ত হওয়ার সম্ভাবনা বেশি থাকে। এই অ্যাপটি ইনস্টল করার মাধ্যমে আপনি সম্মত হলেন যে এটি ব্যবহারের ফলে আপনার টিভি বা ডেটার কোনও ক্ষতি হলে তার জন্য আপনিই দায়ী থাকবেন।"</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"চালিয়ে যান"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"সেটিংস"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"ওয়্যার অ্যাপ ইনস্টল/আনইনস্টল করা হচ্ছে"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"এই অ্যাপটি Android-এর একটি পুরনো ভার্সনের জন্য ডিজাইন করা হয়েছিল৷ অনুমতি না দিলে এটি ঠিকভাবে কাজ নাও করতে পারে।"</string>
+ <string name="default_permission_description" msgid="692254823411049573">"কোনও অজানা অ্যাকশন নিন"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_1">%2$d</xliff:g>টি অ্যাপের মধ্যে <xliff:g id="COUNT_0">%1$d</xliff:g>টি অনুমোদিত"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"সাম্প্রতিক ব্যবহার"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"অনুমতির ড্যাশবোর্ড দেখুন"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"সিস্টেম অ্যাপ দেখুন"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"সিস্টেম অ্যাপ লুকান"</string>
+ <string name="no_apps" msgid="2377153782338039463">"কোনও অ্যাপ নেই"</string>
+ <string name="location_settings" msgid="547378321761364906">"লোকেশন সেটিংস"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> এই ডিভাইসের জন্য লোকেশন পরিষেবা প্রদান করে। লোকেশন সেটিংস থেকে লোকেশনের অ্যাক্সেস পরিবর্তন করা যায়।"</string>
+ <string name="system_warning" msgid="6868290533389195836">"আপনি যদি এই অনুমতিটি না দেন তাহলে আপনার ডিভাইসের প্রাথমিক ফিচারগুলি ঠিকভাবে কাজ নাও করতে পারে।"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"নীতি অনুযায়ী এটি প্রয়োজন"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"নীতি অনুযায়ী ব্যাকগ্রাউন্ড অ্যাক্সেস বন্ধ করা আছে"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"নীতি অনুযায়ী ব্যাকগ্রাউন্ড অ্যাক্সেস চালু করা আছে"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"নীতি অনুয়ায়ী ফোরগ্রাউন্ড অ্যাক্সেস চালু করা আছে"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"অ্যাডমিন নিয়ন্ত্রণ করছেন"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"অ্যাডমিন ব্যাকগ্রাউন্ড অ্যাক্সেস বন্ধ করেছেন"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"অ্যাডমিন ব্যাকগ্রাউন্ড অ্যাক্সেস চালু করেছেন"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"অ্যাডমিন ফোরগ্রাউন্ড অ্যাক্সেস চালু করেছেন"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"সিস্টেমের মাধ্যমে সেট করা অনুমতি"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"সব সময়"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"শুধু অ্যাপ ব্যবহার করার সময়"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"কখনও না"</string>
+ <string name="loading" msgid="323483393167148377">"লোড হচ্ছে…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"সব অনুমতি"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"অ্যাপের অন্যান্য কার্যক্ষমতা"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"অনুমতির অনুরোধ"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"স্ক্রিন ওভারলে শনাক্ত করা হয়েছে"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"অনুমতির এই সেটিংটি পরিবর্তন করতে আপনাকে প্রথমে সেটিংস > অ্যাপ বিকল্পে গিয়ে স্ক্রিন ওভারলে বন্ধ করতে হবে"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"সেটিংসে যান"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Wear-এ ইনস্টল/আনইনস্টল করা যাবে না।"</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> অ্যাপটিকে কিসে কিসে অ্যাক্সেস দেবেন তা বেছে নিন"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> আপডেট করা হয়েছে৷ অ্যাপটিকে কিসে কিসে অ্যাক্সেস দেবেন তা বেছে নিন।"</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"বাতিল করুন"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"চালিয়ে যান"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"নতুন অনুমতি"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"বর্তমান অনুমতি"</string>
+ <string name="message_staging" msgid="641286607664721291">"অ্যাপ স্টেজ করা হচ্ছে…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"অজানা"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"ড্যাশবোর্ড"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">শেষবার অ্যাক্সেস করা হয়েছে: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g>বার অ্যাক্সেস করা হয়েছে (ব্যাকগ্রাউন্ডে <xliff:g id="NUM_5">%3$s</xliff:g>বার)</item>
+ <item quantity="other">শেষবার অ্যাক্সেস করা হয়েছে: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g>বার অ্যাক্সেস করা হয়েছে (ব্যাকগ্রাউন্ডে <xliff:g id="NUM_5">%3$s</xliff:g>বার)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">শেষবার অ্যাক্সেস করা হয়েছে: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g>বার অ্যাক্সেস করা হয়েছে\nসময়সীমা: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">শেষবার অ্যাক্সেস করা হয়েছে: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g>বার অ্যাক্সেস করা হয়েছে\nসময়সীমা: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">শেষবার অ্যাক্সেস করা হয়েছে: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g>বার অ্যাক্সেস (ব্যাকগ্রাউন্ডে <xliff:g id="NUM_6">%3$s</xliff:g>বার)\nসময়সীমা: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">শেষবার অ্যাক্সেস করা হয়েছে: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g>বার অ্যাক্সেস (ব্যাকগ্রাউন্ডে <xliff:g id="NUM_6">%3$s</xliff:g>বার)\nসময়সীমা: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"যেকোন অনুমতি"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"যেকোনও সময়"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"গত ৭ দিন"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"গত ২৪ ঘন্টায়"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"শেষ ১ ঘণ্টা"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"গত ১৫ মিনিট"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"গত ১ মিনিটে"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"কোন অনুমতির ব্যবহার হয়নি"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"যেকোনও সময়ে অ্যাক্সেস করুন"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"গত ৭ দিনের ব্যবহারের তালিকা"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"গত ২৪ ঘণ্টা আগে অ্যাক্সেস করা হয়েছে"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"কয়েক ঘণ্টা আগে অ্যাক্সেস করা হয়েছে"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"১৫ মিনিট আগে অ্যাক্সেস করা হয়েছে"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"গত ১ মিনিটে অ্যাক্সেস করা হয়েছে"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"যেকোনও সময়ে সবচেয়ে বেশি অনুমতির ব্যবহার"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"গত ৭ দিনে সবচেয়ে বেশি অনুমতির ব্যবহার"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"২৪ ঘণ্টা আগে সবচেয়ে বেশি অনুমতির ব্যবহার"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"গত ১ ঘণ্টায় সবচেয়ে বেশি অনুমতির ব্যবহার"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"১৫ মিনিটে আগে সবচেয়ে বেশি অনুমতির ব্যবহার"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"গত ১ মিনিটে সবচেয়ে বেশি অনুমতির ব্যবহার"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"অ্যাপ"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"এই অনুযায়ী ফিল্টার করা হয়েছে: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"ফিল্টার সরান"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"এই অনুযায়ী ফিল্টার করুন"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"অনুমতির মাধ্যমে ফিল্টার করুন"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"বেশি ব্যবহার করা অনুমতি"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"সবচেয়ে বেশি অ্যাক্সেস করা"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"সাম্প্রতিক"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"রিফ্রেশ করুন"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"অ্যাপের অনুমতির ব্যবহার"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"অ্যাক্সেস: <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="4040424337831328212">"অ্যাক্সেস: <xliff:g id="NUM">%1$s</xliff:g> বার। <xliff:g id="TIME">%2$s</xliff:g> আগে শেষবার ব্যবহার করা হয়েছে।"</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"অনুমতি দিন"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"সব সময়ের অনুমতি দিন"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"অ্যাপ ব্যবহারের সময়ই শুধুমাত্র অনুমতি দিন"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"খারিজ করুন"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> অনুমতি"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="APP">%2$s</xliff:g>-এর জন্য <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"আপনার <xliff:g id="PERM">%2$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g> আগে <xliff:g id="APP">%1$s</xliff:g> অ্যাক্সেস করা হয়েছে।"</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> আপনার <xliff:g id="PERM">%2$s</xliff:g> অ্যাক্সেস করতে পারেনি।"</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"বিস্তারিত অনুমতির ব্যবহার দেখুন"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"শেষবার অ্যাক্সেস করা হয়েছে: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"কখনও অ্যাক্সেস করা হয়নি"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"অনুমোদিত"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"শুধুমাত্র ব্যবহার করার সময় অনুমোদিত"</string>
+ <string name="denied_header" msgid="2277998574238617699">"প্রত্যাখ্যান করা হয়েছে"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"বিশদে ব্যবহারের তথ্য দেখুন"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <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="seconds" formatted="false" msgid="1632909606956324957">
+ <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="role_request_message_add" msgid="1977772335648650272">"আপনার <xliff:g id="ROLE_NAME">%2$s</xliff:g> হিসেবে <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ব্যবহার করতে চান?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"আপনার <xliff:g id="ROLE_NAME">%2$s</xliff:g> হিসেবে; <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b>-এর পরিবর্তে <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> ব্যবহার করতে চান?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"অনুমতির রিমাইন্ডার"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> আপনার লোকেশনের ডেটা ব্যবহার করছে"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"এই অ্যাপটি যেকোনও সময় আপনার লোকেশনের ডেটা অ্যাক্সেস করতে পারে। পরিবর্তন করতে ট্যাপ করুন।"</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"শুধুমাত্র অ্যাপ ব্যবহারের সময়"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"কোনও অনুমতি নেই"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"কোনও অনুমতি প্রত্যাখান করা হয়নি"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"কোনও অ্যাপ অনুমোদিত নয়"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"কোনও অ্যাপ প্রত্যাখান করা হয়নি"</string>
+ <string name="launch_app" msgid="5641437562665039291">"খুলুন"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"আন-ইনস্টল করুন"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"জোর করে বন্ধ করুন"</string>
+ <!-- no translation found for settings (2884124136779508907) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_title_single (1613456964930225277) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_title_multiple (1262608280562255761) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_bottom_text_single (6932810943462703517) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_bottom_text_multiple (817809209968536329) -->
+ <skip />
+ <string name="default_apps" msgid="8554530939151957828">"ডিফল্ট অ্যাপ"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"কোনও ডিফল্ট অ্যাপ নেই"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"অফিসের জন্য ডিফল্ট"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"কোনওটিই নয়"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"কোনও অ্যাপ নেই"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"অ্যাপের বিশেষ অ্যাক্সেস"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"অ্যাপের বিশেষ অ্যাক্সেস নেই"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"কোনও অ্যাপ নেই"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"সহায়তা অ্যাপ"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"ব্রাউজার অ্যাপ"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"ফোন অ্যাপ"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"এসএমএস অ্যাপ"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"জরুরি অ্যাপ"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"হোম অ্যাপ"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"মিউজিক অ্যাপ"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"গ্যালারি অ্যাপ"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"গাড়ির মোডে ফোন অ্যাপ"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"কল রিডাইরেক্ট করার অ্যাপ"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"কল স্ক্রিনিং অ্যাপ"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"কল কম্প্যানিয়ন অ্যাপ"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"গাড়ির প্রোজেকশন অ্যাপ"</string>
+ <!-- no translation found for home_missing_work_profile_support (1439466272746259937) -->
+ <skip />
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"দ্রষ্টব্য: আপনি যদি নিজের ডিভাইস রিস্টার্ট করেন এবং স্ক্রিন লক সেট করা থাকে, তাহলে আপনার ডিভাইস আনলক না করা পর্যন্ত আপনি এই অ্যাপটি চালু করতে পারবেন না।"</string>
+ <!-- no translation found for assistant_confirmation_message (4529925223796676824) -->
+ <skip />
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"ডিবাগিং ডেটা শেয়ার করুন"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"ডিবাগিংয়ের বিস্তারিত ডেটা শেয়ার করতে চান?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> ডিবাগিংয়ের তথ্য আপলোড করতে চায়।"</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"ডিবাগিং ডেটা শেয়ার করুন"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"এই ডিভাইস থেকে <xliff:g id="DATE">%2$s</xliff:g> তারিখে <xliff:g id="TIME">%3$s</xliff:g>-এ নেওয়া একটি সমস্যার রিপোর্ট <xliff:g id="APP_NAME_0">%1$s</xliff:g> আপলোড করতে চাইছে। ইউজার নেম, লোকেশন ডেটা, ডিভাইসের শনাক্তকারী ও নেটওয়ার্কের তথ্যের মতো আপনার ডিভাইস ও লগ-ইন করা অ্যাপের ব্যাপারে ব্যক্তিগত তথ্য সমস্যার রিপোর্টে অন্তর্ভুক্ত থাকে। যেসব লোকজন বা অ্যাপকে আপনি এই তথ্য জানানোর ব্যাপারে বিশ্বাস করতে পারেন শুধুমাত্র তাদের সাথেই সমস্যার রিপোর্ট শেয়ার করুন। একটি সমস্যার রিপোর্ট আপলোড করতে <xliff:g id="APP_NAME_1">%4$s</xliff:g>কে অনুমতি দিতে চান?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"অনুমতি দিন"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"অনুমতি দেবেন না"</string>
</resources>
diff --git a/res/values-bs-television/strings.xml b/res/values-bs-television/strings.xml
index 8fba2cc..b83e73b 100644
--- a/res/values-bs-television/strings.xml
+++ b/res/values-bs-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Odbij i ne pitaj ponovo"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Ovo možete kasnije promijeniti u odjeljku Postavke > Aplikacije"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Prikaži sistemske aplikacije"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Odobrenja za aplikacije"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Odobrenja za aplikacije"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Odobrenja za aplikaciju: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Dodatna odobrenja"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Odobrenja za aplikaciju: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Odbij i ne pitaj ponovo"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Ovo možete kasnije promijeniti u odjeljku Postavke i Aplikacije"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Prikaži sistemske aplikacije"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Odobrenja za aplikaciju"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Odobrenja za aplikaciju"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Odobrenja za: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Dodatna odobrenja"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Odobrenja za: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-bs-watch/strings.xml b/res/values-bs-watch/strings.xml
index dcae097..9547f5d 100644
--- a/res/values-bs-watch/strings.xml
+++ b/res/values-bs-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Odbij i ne pitaj ponovo"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Prikaži sistemske aplikacije"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Ne mijenja se"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Da"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Otkaži"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Odbij i ne pitaj ponovo"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Prikaži sistemske aplikacije"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Ne mijenja se"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Da"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Otkaži"</string>
</resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 2145679..3d153b4 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,137 +16,217 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Alat za instaliranje paketa"</string>
- <string name="next" msgid="3057143178373252333">"Naprijed"</string>
- <string name="install" msgid="5896438203900042068">"Instaliraj"</string>
- <string name="done" msgid="3889387558374211719">"Gotovo"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Dozvolite ovoj aplikaciji da:"</string>
- <string name="cancel" msgid="8360346460165114585">"Otkaži"</string>
- <string name="unknown" msgid="4742479012767208045">"Nepoznato"</string>
- <string name="installing" msgid="8613631001631998372">"Instalacija u toku..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Instaliranje <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Aplikacija je instalirana."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Želite li instalirati ovu aplikaciju? Ona će dobiti pristup:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Želite li instalirati ovu aplikaciju? Ona ne zahtijeva poseban pristup."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Želite li ažurirati ovu postojeću aplikaciju? Vaši postojeći podaci neće biti izgubljeni. Ažurirana aplikacija će dobiti pristup:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Želite li ažurirati ovu ugrađenu aplikaciju? Vaši postojeći podaci neće biti izgubljeni. Ažurirana aplikacija će dobiti pristup:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Želite li ažurirati ovu postojeću aplikaciju? Vaši postojeći podaci neće biti izgubljeni. Za ovo nije potreban poseban pristup."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Želite li ažurirati ovu ugrađenu aplikaciju? Vaš postojeći podaci neće biti izgubljeni. Nije potreban poseban pristup."</string>
- <string name="install_failed" msgid="6579998651498970899">"Aplikacija nije instalirana."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Instaliranje ovog paketa je blokirano."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Aplikacija nije instalirana jer paket nije usaglašen s postojećim paketom."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Aplikacija nije instalirana jer nije kompatibilna s vašim tabletom."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Ova aplikacija nije kompatibilna s vašim TV-om."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Aplikacija nije instalirana jer nije kompatibilna s vašim telefonom."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Aplikacija nije instalirana jer izgleda da paket nije važeći."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g> ne možete instalirati na svoj tablet."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Nije moguće instalirati aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g> na vaš TV."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g> ne možete instalirati na svoj telefon."</string>
- <string name="launch" msgid="4826921505917605463">"Otvori"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Vaš administrator ne dozvoljava instaliranje aplikacija iz nepoznatih izvora."</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Ovaj korisnik ne može instalirati nepoznate aplikacije."</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Ovom korisniku nije dozvoljeno instaliranje aplikacija"</string>
- <string name="ok" msgid="3468756155452870475">"Uredu"</string>
- <string name="settings" msgid="6743583734099755409">"Postavke"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Upravljaj aplikacijama"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Zamijeniti aplikaciju?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Aplikacija koju instalirate zamijenit će drugu aplikaciju.\n\nSvi vaši prethodni korisnički podaci bit će sačuvani."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Ovo je sistemska aplikacija.\n\nSvi vaši prethodni korisnički podaci bit će sačuvani."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Nedostatak prostora"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Ne možete instalirati aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>. Oslobodite prostora u pohrani i pokušajte ponovo."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"Uredu"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Aplikacija nije pronađena"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Aplikacija nije pronađena na spisku instaliranih aplikacija."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Nije dozvoljeno"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Trenutnom korisniku nije dozvoljeno da izvrši ovu deinstalaciju."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Greška"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Nije bilo moguće deinstalirati aplikaciju."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Uklanjanje aplikacije"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Uklanjanje ažuriranja"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> je dio sljedeće aplikacije:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Želite li ukloniti ovu aplikaciju?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Želite li ukloniti ovu aplikaciju za "<b>" sve "</b>" korisnike? Aplikacija i njeni podaci će biti uklonjeni iz "<b>" svih "</b>" korisničkih računa na uređaju."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Želite li ukloniti ovu aplikaciju za korisnika <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Želite li ovu aplikaciju zamijeniti s fabričkom verzijom? Svi podaci će biti uklonjeni."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Želite li ovu aplikaciju zamijeniti s fabričkom verzijom? Svi podaci će biti uklonjeni. To će utjecati na sve korisnike uređaja, uključujući i one s radnim profilima."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Tekuća deinstaliranja"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Neuspjela deinstaliranja"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Uklanjanje u toku..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Deinstalacija paketa <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Uklanjanje završeno."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Deinstaliran je paket <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Uklanjanje nije uspjelo."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Paket <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> nije uspješno deinstaliran."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Nije moguće deinstalirati aktivnu aplikaciju administratora uređaja"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Nije moguće deinstalirati aktivnu aplikaciju administratora uređaja za korisnika <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Ova aplikacija je neophodna nekim korisnicima ili profilima, a kod ostalih je deinstalirana"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Ova aplikacija je potrebna za vaš profil i ne može se deinstalirati."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Ova aplikacija je potrebna administratoru vašeg uređaja i ne može se ukloniti."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Upravljajte aplikacijama administratora uređaja"</string>
- <string name="manage_users" msgid="3125018886835668847">"Upravljanje korisnicima"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> se ne može ukloniti."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Došlo je do problema prilikom raščlanjivanja paketa."</string>
- <string name="newPerms" msgid="6039428254474104210">"Novo"</string>
- <string name="allPerms" msgid="1024385515840703981">"Sve"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privatnost"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Pristup uređaju"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Za ovo ažuriranje nisu potrebne nova odobrenja."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Želite li dati sljedeća odobrenja? Odobrit ćete pristup:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Odbij"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Više informacija"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Odbij svakako"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Dozvoliti aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> da <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"omogućeno je <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"sve je onemogućeno"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"ništa nije onemogućeno"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Dozvoli"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Aplikacije"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Odobrenja za aplikacije"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Ne pitaj ponovo"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Nijedno odobrenje"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Dodatna odobrenja"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
- <item quantity="one">još <xliff:g id="COUNT_1">%1$d</xliff:g></item>
- <item quantity="few">još <xliff:g id="COUNT_1">%1$d</xliff:g></item>
- <item quantity="other">još <xliff:g id="COUNT_1">%1$d</xliff:g></item>
+ <string name="app_name" msgid="2792757108872430971">"Kontroler odobrenja"</string>
+ <string name="ok" msgid="4417794827535157922">"UREDU"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"odobrenja"</string>
+ <string name="cancel" msgid="7279939269964834974">"Otkaži"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Aplikacija nije pronađena"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Odbij"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Odbij i ne pitaj ponovo"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Više informacija"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Odbij svakako"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Želite li dozvoliti da aplikacija <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uradi sljedeće: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Uvijek dozvoliti da aplikacija <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uradi sljedeće: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Samo dok se koristi aplikacija"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Uvijek"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Odbij i ne pitaj ponovo"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"onemogućeno: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"sve je onemogućeno"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"ništa nije onemogućeno"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Dozvoli"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Dozvoli svaki put"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Dozvoli samo kada se aplikacija koristi"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Aplikacije"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Odobrenja za aplikaciju"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Upravitelj dopuštenja"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Ne pitaj ponovo"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Nema odobrenja"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Dodatna odobrenja"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Otvori informacije o aplikaciji"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
+ <item quantity="one">Još <xliff:g id="COUNT_1">%1$d</xliff:g></item>
+ <item quantity="few">Još <xliff:g id="COUNT_1">%1$d</xliff:g></item>
+ <item quantity="other">Još <xliff:g id="COUNT_1">%1$d</xliff:g></item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Ova aplikacija je kreirana za stariju verziju Androida. Odbijanje odobrenja može uzrokovati da ona više ne funkcionira onako kako je primarno zamišljeno."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"izvrši nepoznatu radnju"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"Aplikacije sa odobrenjem: <xliff:g id="COUNT_0">%1$d</xliff:g> od <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Prikaži sistemske aplikacije"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Sakrij sistemske"</string>
- <string name="permission_title" msgid="6495415273398916381">"Odobrenja za aplikaciju: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Nijedna aplikacija"</string>
- <string name="location_settings" msgid="1774875730854491297">"Postavke lokacije"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Ukoliko 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="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Nametnuto je pravilima"</string>
- <string name="loading" msgid="7811651799620593731">"Učitava se…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Sva odobrenja"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Ostale mogućnosti aplikacije"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Zahtjev za odobrenjem"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Otkriven je element koji prekriva sadržaj ekrana"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Da promijenite postavku ovog odobrenja, prvo morate isključiti element koji prekriva sadržaj ekrana u odjeljku Postavke > Aplikacije"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Otvori postavke"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Instaliranje/deinstaliranje nije podržano na Wearu."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"Aplikacija <xliff:g id="APP_NAME_0">%1$s</xliff:g> je ažurirana. Želite li aplikaciji <xliff:g id="APP_NAME_1">%1$s</xliff:g> dopustiti pristup sljedećem?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Odaberite čemu aplikacija <b><xliff:g id="APP_NAME">%1$s</xliff:g>&Lt;/b> može pristupiti"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"Aplikacija &Lt;b><xliff:g id="APP_NAME">%1$s</xliff:g>&Lt;/b> je ažurirana. Odaberite čemu ova aplikacija može pristupiti."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Otkaži"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Nastavi"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Nova odobrenja"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Postojeća odobrenja"</string>
- <string name="message_staging" msgid="6151794817691100003">"Aplikacija se postavlja…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Nepoznato"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Vašem tabletu iz sigurnosnih razloga nije dopušteno instaliranje nepoznatih aplikacija iz ovog izvora."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Vašem TV-u iz sigurnosnih razloga nije dopušteno instaliranje nepoznatih aplikacija iz ovog izvora."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Vašem telefonu iz sigurnosnih razloga nije dopušteno instaliranje nepoznatih aplikacija iz ovog izvora."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Vaši podaci na telefonu i vaši lični podaci izloženiji su napadima nepoznatih aplikacija. Instaliranjem ove aplikacije, saglasni ste da ste vi odgovorni za bilo kakvu štetu na telefonu ili gubitak podataka do kojih može doći korištenjem aplikacije."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Vaši podaci na tabletu i vaši lični podaci izloženiji su napadima nepoznatih aplikacija. Instaliranjem ove aplikacije, saglasni ste da ste vi odgovorni za bilo kakvu štetu na tabletu ili gubitak podataka do kojih može doći korištenjem aplikacije."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Vaši podaci na TV-u i vaši lični podaci izloženiji su napadima nepoznatih aplikacija. Instaliranjem ove aplikacije, saglasni ste da ste vi odgovorni za bilo kakvu štetu na TV-u ili gubitak podataka do kojih može doći korištenjem aplikacije."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Nastavi"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Postavke"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"(De)instaliranje wear aplikacija"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Ova aplikacija je kreirana za stariju verziju Androida. Odbijanjem odobrenja može se onemogućiti njeno funkcioniranje onako kako je predviđeno."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"izvrši nepoznatu radnju"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"Aplikacije s odobrenjem: <xliff:g id="COUNT_0">%1$d</xliff:g> od <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Nedavno korištenje"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Prikaži kontrolnu tablu za odobrenja"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Prikaži sistemske aplikacije"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Sakrij sistemske aplikacije"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Nijedna aplikacija"</string>
+ <string name="location_settings" msgid="547378321761364906">"Postavke lokacije"</string>
+ <string name="location_warning" msgid="4687406043150343369">"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="6868290533389195836">"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="permission_summary_enforced_by_policy" msgid="632945329450867948">"Nametnuto je pravilima"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Pristup iz pozadine je onemogućen u skladu s pravilima"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Pristup iz pozadine je omogućen u skladu s pravilima"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Pristup u prvom planu je omogućen u skladu s pravilima"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Kontrolira administrator"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Administrator je onemogućio pristup iz pozadine"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Administrator je omogućio pristup iz pozadine"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Administrator je omogućio pristup iz prvog plana"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Sistem je poslao odobrenje"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Uvijek"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Samo dok se koristi aplikacija"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Nikada"</string>
+ <string name="loading" msgid="323483393167148377">"Učitavanje…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Sva odobrenja"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Ostale mogućnosti aplikacije"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Zahtjev za odobrenje"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Otkriveno je preklapanje ekrana"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Da promijenite postavku ovog odobrenja, prvo morate isključiti element koji prekriva sadržaj ekrana u odjeljku Postavke i Aplikacije"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Otvori postavke"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Instaliranje/deinstaliranje nije podržano na Wearu."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Izaberite čemu aplikacija <b><xliff:g id="APP_NAME">%1$s</xliff:g>&Lt;/b> može pristupiti"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"Aplikacija &Lt;b><xliff:g id="APP_NAME">%1$s</xliff:g>&Lt;/b> je ažurirana. Izaberite čemu ova aplikacija može pristupiti."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Otkaži"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Nastavi"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Nova odobrenja"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Postojeća odobrenja"</string>
+ <string name="message_staging" msgid="641286607664721291">"Pripremanje aplikacije…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Nepoznato"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Kontrolna tabla"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ <item quantity="other">Posljednji pristup: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> pristupa</item>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">Posljednji pristup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> pristup (<xliff:g id="NUM_5">%3$s</xliff:g> u pozadini)</item>
+ <item quantity="few">Posljednji pristup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> pristupa (<xliff:g id="NUM_5">%3$s</xliff:g> u pozadini)</item>
+ <item quantity="other">Posljednji pristup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> pristupa (<xliff:g id="NUM_5">%3$s</xliff:g> u pozadini)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">Posljednji pristup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> pristup \nTrajanje: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="few">Posljednji pristup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> pristupa \nTrajanje: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">Posljednji pristup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> pristupa \nTrajanje: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">Posljednji pristup: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> pristup (<xliff:g id="NUM_6">%3$s</xliff:g> u pozadini)\nTrajanje: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="few">Posljednji pristup: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> pristupa (<xliff:g id="NUM_6">%3$s</xliff:g> u pozadini)\nTrajanje: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">Posljednji pristup: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> pristupa (<xliff:g id="NUM_6">%3$s</xliff:g> u pozadini)\nTrajanje: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Sva odobrenja"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Bilo kad"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Posljednjih 7 dana"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Posljednja 24 sata"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Posljednji sat"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Posljednjih 15 minuta"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Posljednja minuta"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Odobrenje nije upotrijebljeno"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Pristupite bilo kada"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Pristup u posljednjih 7 dana"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Pristup u posljednja 24 sata"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Pristup u posljednjem satu"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Pristup u posljednjih 15 minuta"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Pristup u posljednjoj minuti"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Najviše korištena odobrenja ikada"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Najviše korištena odobrenja u posljednjih 7 dana"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Najviše korištena odobrenja u posljednja 24 sata"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Najviše korištena odobrenja u posljednjem satu"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Najviše korištena odobrenja u posljednjih 15 min"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Najviše korištena odobrenja u posljednjoj minuti"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Aplikacije"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtrirano po: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Ukloni filter"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtriraj po"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtriraj prema odobrenjima"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Najviše odobrenja"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Najviše pristupa"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Nedavno"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Osvježi"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Korišt. dozvole za aplikacije"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Pristup: <xliff:g id="NUM">%1$s</xliff:g> puta. Zadnji put korištena prije <xliff:g id="TIME">%2$s</xliff:g>."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Dozvoli"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Dozvoli svaki put"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Dozvoli samo kada se aplikacija koristi"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Odbij"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Odobrenje <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Pristup odobrenju <xliff:g id="PERM">%1$s</xliff:g> za aplikaciju <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"Aplikacija <xliff:g id="APP">%1$s</xliff:g> je pristupila odobrenju <xliff:g id="PERM">%2$s</xliff:g> prije <xliff:g id="TIME">%3$s</xliff:g>."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"Aplikacija <xliff:g id="APP">%1$s</xliff:g> nije pristupila vašem odobrenju <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Vidi detaljno korištenje odobrenja"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Posljednji pristup: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Bez pristupa"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Dozvoljeno"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Dozvoljeno samo tokom upotrebe"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Odbijeno"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Pogledajte detalje o korištenju"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> minuta</item>
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> minute</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minuta</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> sekunda</item>
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> sekunde</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sekundi</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Koristiti aplikaciju <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> kao <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Koristiti aplikaciju <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> umjesto <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> kao <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Podsjetnici odobrenja"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"Aplikacija <xliff:g id="APP_NAME">%s</xliff:g> je koristila vašu lokaciju"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Ova aplikacija uvijek može pristupiti vašoj lokaciji. Dodirnite da promijenite."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Samo kada se aplikacija koristi"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Nijedno odobrenje nije dato"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Nijedno odobrenje nije odbijeno"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Nijedna aplikacija nema dozvolu"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Nijedna aplikacija nije odbijena"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Otvori"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Deinstaliraj"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Prisilno zaustavi"</string>
+ <string name="settings" msgid="2884124136779508907">"Postavke"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"Usluga <xliff:g id="SERVICE_NAME">%s</xliff:g> ima potpuni pristup vašem uređaju"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"Sljedeći broj usluga za pristupačnost ima potpuni pristup vašem uređaju: <xliff:g id="NUM_SERVICES">%s</xliff:g>"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"Usluga <xliff:g id="SERVICE_NAME">%s</xliff:g> može pregledati vaš ekran, radnje i unose, a može i izvršavati radnje i kontrolirati ekran."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Ove usluge mogu pregledati vaš ekran, radnje i unose, a mogu i izvršavati radnje i kontrolirati ekran."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Zadane aplikacije"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Nema zadanih aplikacija"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Uobičajeno za rad"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Nema"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Nema aplikacija"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Poseban pristup aplikacijama"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Nema pristupa posebnim apl."</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Nema aplikacija"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Aplikacija za pomoć"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Aplikacija preglednika"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Aplikacija Telefon"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Aplikacija za SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Aplikacija za hitne situacije"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Aplikacija na početnom ekranu"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Aplikacija za muziku"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Aplikacija galerije"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Apl. za način rada u automob."</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Aplikacija za preusmjeravanje poziva"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Aplik. za filtriranje poziva"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Prateća aplikacija za pozive"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Apl. za projekciju u automobilu"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Radni profil nije podržan"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Napomena: Ako ponovo pokrenete uređaj, a postavili ste zaključavanje ekrana, ova aplikacija se neće moći pokrenuti dok ne otključate uređaj."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Asistent će imati mogućnost čitanja informacija o aplikacijama koje se koriste na vašem sistemu, uključujući informacije vidljive na ekranu ili dostupne unutar aplikacija."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Dijeljenje podataka o otklanjanju grešaka"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Dijeliti detaljne podatke o otklanjanju grešaka?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> želi otpremiti informacije o otklanjanju grešaka."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Dijeljenje podataka o otklanjanju grešaka"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"Aplikacija <xliff:g id="APP_NAME_0">%1$s</xliff:g> traži otpremanje izvještaja o greškama s ovog uređaja koji je izvršen dana <xliff:g id="DATE">%2$s</xliff:g> u <xliff:g id="TIME">%3$s</xliff:g>. Izvještaji o greškama uključuju lične informacije o vašem uređaju ili akreditivima za prijave u aplikacije, naprimjer korisnička imena, podatke o lokaciji, identifikatore uređaja i informacije o mreži. Izvještaje o greškama dijelite samo s osobama i aplikacijama kojim vjerujete. Dozvoliti aplikaciji <xliff:g id="APP_NAME_1">%4$s</xliff:g> da otpremi izvještaj o greškama?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Dozvoli"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Odbij"</string>
</resources>
diff --git a/res/values-ca-television/strings.xml b/res/values-ca-television/strings.xml
index 7126c41..2ded73a 100644
--- a/res/values-ca-television/strings.xml
+++ b/res/values-ca-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Denega i no m\'ho tornis a preguntar"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Pots canviar-ho més endavant a Configuració > Aplicacions"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Mostra les aplicacions del sistema"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Permisos d\'aplicacions"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Permisos d\'aplicacions"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Permisos: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Permisos addicionals"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Permisos: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Denega i no m\'ho tornis a preguntar"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Pots canviar-ho més endavant a Configuració > Aplicacions"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Mostra les aplicacions del sistema"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Permisos d\'aplicacions"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Permisos d\'aplicacions"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Permisos: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Permisos addicionals"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Permisos: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-ca-watch/strings.xml b/res/values-ca-watch/strings.xml
index d289b56..43ea1a3 100644
--- a/res/values-ca-watch/strings.xml
+++ b/res/values-ca-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Denega i no m\'ho demanis més"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Mostra les aplicacions del sistema"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"No es pot canviar"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Sí"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Cancel·la"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Denega i no m\'ho demanis més"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Mostra les aplicacions del sistema"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"No es pot canviar"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Sí"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Cancel·la"</string>
</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 58c5812..684e3d3 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,286 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Instal·lador de paquets"</string>
- <string name="next" msgid="3057143178373252333">"Següent"</string>
- <string name="install" msgid="5896438203900042068">"Instal·la"</string>
- <string name="done" msgid="3889387558374211719">"Fet"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Permet a aquesta aplicació:"</string>
- <string name="cancel" msgid="8360346460165114585">"Cancel·la"</string>
- <string name="unknown" msgid="4742479012767208045">"Desconegut"</string>
- <string name="installing" msgid="8613631001631998372">"S\'està instal·lant..."</string>
- <string name="installing_app" msgid="4097935682329028894">"S\'està instal·lant <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Aplicació instal·lada."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Vols instal·lar aquesta aplicació? Tindrà els permisos següents:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Vols instal·lar aquesta aplicació? No requereix cap accés especial."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Vols instal·lar una actualització per a aquesta aplicació? No es perdran les teves dades existents. L\'aplicació actualitzada tindrà els permisos següents:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Vols instal·lar una actualització d\'aquesta aplicació integrada? No es perdran les teves dades. L\'aplicació actualitzada tindrà els permisos següents:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Vols instal·lar una actualització a aquesta aplicació existent? Les dades existents no es perdran. No cal cap tipus d\'accés especial."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Vols instal·lar una actualització a aquesta aplicació integrada? Les teves dades existents no es perdran. No cal cap tipus d\'accés especial."</string>
- <string name="install_failed" msgid="6579998651498970899">"L\'aplicació no s\'ha instal·lat."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"El paquet s\'ha bloquejat perquè no es pugui instal·lar."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"L\'aplicació no s\'ha instal·lat perquè el paquet entra en conflicte amb un d\'existent."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"L\'aplicació no s\'ha instal·lat perquè no és compatible amb la teva tauleta."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Aquesta aplicació no és compatible amb el teu televisor."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"L\'aplicació no s\'ha instal·lat perquè no és compatible amb el teu telèfon."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"L\'aplicació no s\'ha instal·lat perquè sembla que el paquet no és vàlid."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> no s\'ha pogut instal·lar a la tauleta."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> no s\'ha pogut instal·lar al televisor."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> no s\'ha pogut instal·lar al telèfon."</string>
- <string name="launch" msgid="4826921505917605463">"Obre"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"L\'administrador no permet instal·lar aplicacions de fonts desconegudes"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Aquest usuari no pot instal·lar aplicacions desconegudes"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Aquest usuari no té permís per instal·lar aplicacions"</string>
- <string name="ok" msgid="3468756155452870475">"D\'acord"</string>
- <string name="settings" msgid="6743583734099755409">"Configuració"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Gestiona les aplicacions"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Vols substituir l\'aplicació?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"L\'aplicació que estàs instal·lant en substituirà una altra.\n \nTotes les dades d\'usuari anteriors es desaran."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Aquesta és una aplicació del sistema.\n \nTotes les dades d\'usuari anteriors es desaran."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Espai esgotat"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"No s\'ha pogut instal·lar <xliff:g id="APP_NAME">%1$s</xliff:g>. Allibera espai i torna-ho a provar."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"D\'acord"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"No s\'ha trobat l\'aplicació"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"No s\'ha trobat l\'aplicació a la llista d\'aplicacions instal·lades."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Sense autorització"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"L\'usuari actual no té permís per dur a terme aquesta desinstal·lació."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Error"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"No s\'ha pogut desinstal·lar l\'aplicació."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Desinstal·la l\'aplicació"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Desinstal·la l\'actualització"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> forma part de l\'aplicació següent:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Vols desinstal·lar aquesta aplicació?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Vols desinstal·lar aquesta aplicació per a "<b>"tots"</b>" els usuaris? L\'aplicació i les seves dades se suprimiran per a "<b>"tots"</b>" els usuaris del dispositiu."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Vols desinstal·lar aquesta aplicació per a l\'usuari <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Si substitueixes aquesta aplicació per la versió de fàbrica, s\'esborraran totes les dades."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Si substitueixes aquesta aplicació per la versió de fàbrica, s\'esborraran totes les dades. Això afectarà tots els usuaris d\'aquest dispositiu, inclosos els que tinguin un perfil professional."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Desinstal·lacions en curs"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Desinstal·lacions fallides"</string>
- <string name="uninstalling" msgid="5556217435895938250">"S\'està desinstal·lant..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"S\'està desinstal·lant <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Desinstal·lació finalitzada."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"S\'ha desinstal·lat <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"S\'ha produït un error en la desinstal·lació."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"No s\'ha pogut desinstal·lar <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> correctament."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"No es pot desinstal·lar l\'aplicació activa de l\'administrador del dispositiu"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"No es pot desinstal·lar l\'aplicació activa de l\'administrador del dispositiu per a <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"L\'aplicació cal en alguns usuaris o perfils i s\'ha desinstal·lat per a d\'altres"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Aquesta aplicació es necessita per al teu perfil i no es pot desinstal·lar."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"L\'administrador del dispositiu necessita l\'aplicació i no la pots desinstal·lar."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Gestiona aplicacions d\'administració del dispositiu"</string>
- <string name="manage_users" msgid="3125018886835668847">"Gestiona els usuaris"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> no s\'ha pogut desinstal·lar."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"S\'ha produït un problema en analitzar el paquet."</string>
- <string name="newPerms" msgid="6039428254474104210">"Nous"</string>
- <string name="allPerms" msgid="1024385515840703981">"Tots"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privadesa"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Accés al dispositiu"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Aquesta actualització no requereix permisos nous."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Vols concedir els permisos següents? S\'obtindrà accés a:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Denega"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Més informació"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Denega de totes maneres"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Vols permetre a <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> permisos desactivats"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"tots els permisos desactivats"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"cap permís desactivat"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Permet"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Aplicacions"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Permisos d\'aplicacions"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"No m\'ho demanis més"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Sense permisos"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Més permisos"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> més</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> més</item>
+ <string name="app_name" msgid="2792757108872430971">"Controlador de permisos"</string>
+ <string name="ok" msgid="4417794827535157922">"D\'acord"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"permisos"</string>
+ <string name="cancel" msgid="7279939269964834974">"Cancel·la"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"No s\'ha trobat l\'aplicació"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Denega"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Denega i no m\'ho tornis a preguntar"</string>
+ <!-- no translation found for grant_dialog_button_deny_background (5378693207810841555) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_deny_background_and_dont_ask_again (1032019626928637454) -->
+ <skip />
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Més informació"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Denega igualment"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Vols permetre a <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Vols permetre a <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Només mentre s\'utilitzi l\'aplicació"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Sempre"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Denega i no m\'ho tornis a preguntar"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> permisos desactivats"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"tots els permisos desactivats"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"cap permís desactivat"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Permet"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Permet sempre"</string>
+ <!-- no translation found for grant_dialog_button_allow_foreground (8090382319222429427) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_allow_background (3190568549032350790) -->
+ <skip />
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Aplicacions"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Permisos d\'aplicacions"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Gestor de permisos"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"No m\'ho tornis a preguntar"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Sense permisos"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Permisos addicionals"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Obre la informació de l\'aplicació"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> més</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> més</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Aquesta aplicació es va dissenyar per a una versió anterior d\'Android. És possible que no funcioni com està previst si li denegues el permís."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"dur a terme una acció desconeguda"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_0">%1$d</xliff:g> de <xliff:g id="COUNT_1">%2$d</xliff:g> aplicacions permeses"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Mostra aplicacions del sistema"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Amaga aplicacions del sistema"</string>
- <string name="permission_title" msgid="6495415273398916381">"Permisos de: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Cap aplicació"</string>
- <string name="location_settings" msgid="1774875730854491297">"Configuració d\'ubicació"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Si rebutges aquest permís, és possible que funcions bàsiques del dispositiu deixin de funcionar correctament."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Aplicat en funció de la política"</string>
- <string name="loading" msgid="7811651799620593731">"S\'està carregant..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"Tots els permisos"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Altres competències de l\'aplicació"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Sol·licitud de permís"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"S\'ha detectat una superposició de pantalla"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Per canviar la configuració de permisos, cal que desactivis la superposició de pantalla des de Configuració > Aplicacions"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Obre Configuració"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Les accions d\'instal·lar o de desinstal·lar no s\'admeten a Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"S\'ha actualitzat <xliff:g id="APP_NAME_0">%1$s</xliff:g>. Vols permetre que <xliff:g id="APP_NAME_1">%1$s</xliff:g> tingui accés al següent?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Tria a què vols que tingui accés <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"S\'ha actualitzat <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>. Tria a què vols que tingui accés aquesta aplicació."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Cancel·la"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Continua"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Permisos nous"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Permisos actuals"</string>
- <string name="message_staging" msgid="6151794817691100003">"S\'està preparant la instal·lació de l\'aplicació…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Desconegut"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Per seguretat, la tauleta no pot instal·lar aplicacions desconegudes d\'aquesta font."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Per seguretat, el televisor no pot instal·lar aplicacions desconegudes d\'aquesta font."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Per seguretat, el telèfon no pot instal·lar aplicacions desconegudes d\'aquesta font."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"El telèfon i les dades personals són més vulnerables als atacs d\'aplicacions desconegudes. En instal·lar aquesta aplicació, acceptes que ets responsable de qualsevol dany que es produeixi al telèfon o de la pèrdua de dades que pugui resultar del seu ús."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"La tauleta i les dades personals són més vulnerables als atacs d\'aplicacions desconegudes. En instal·lar aquesta aplicació, acceptes que ets responsable de qualsevol dany que es produeixi a la tauleta o de la pèrdua de dades que pugui resultar del seu ús."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"El televisor i les dades personals són més vulnerables als atacs d\'aplicacions desconegudes. En instal·lar aquesta aplicació, acceptes que ets responsable de qualsevol dany que es produeixi al televisor o de la pèrdua de dades que pugui resultar del seu ús."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Continua"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Configuració"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Instal·lant o desinstal·lant aplicacions de Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Aquesta aplicació es va dissenyar per a una versió anterior d\'Android. És possible que no funcioni com està previst si li denegues el permís."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"dur a terme una acció desconeguda"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> de <xliff:g id="COUNT_1">%2$d</xliff:g> aplicacions permeses"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Mostra les aplicacions del sistema"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Amaga les aplicacions del sistema"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Cap aplicació"</string>
+ <string name="location_settings" msgid="547378321761364906">"Configuració d\'ubicació"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Si rebutges aquest permís, és possible que funcions bàsiques del dispositiu deixin de funcionar correctament."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Aplicat en funció de la política"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"S\'ha desactivat l\'accés en segon pla per la política"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"S\'ha activat l\'accés en segon pla per la política"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"S\'ha activat l\'accés en primer pla per la política"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Controlat per l\'administrador"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"L\'administrador ha desactivat l\'accés en segon pla"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"L\'administrador ha activat l\'accés en segon pla"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"L\'administrador ha activat l\'accés en primer pla"</string>
+ <!-- no translation found for permission_summary_enabled_system_fixed (5463084832974856683) -->
+ <skip />
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <!-- no translation found for permission_access_always (5419580764084361573) -->
+ <skip />
+ <!-- no translation found for permission_access_only_foreground (2857031150724321567) -->
+ <skip />
+ <!-- no translation found for permission_access_never (425385910378172045) -->
+ <skip />
+ <string name="loading" msgid="323483393167148377">"S\'està carregant…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Tots els permisos"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Altres competències de l\'aplicació"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Sol·licitud de permís"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"S\'ha detectat una superposició de pantalla"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Per canviar la configuració de permisos, cal que desactivis la superposició de pantalla des de Configuració > Aplicacions"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Obre la configuració"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Les accions d\'instal·lar o de desinstal·lar no s\'admeten a Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Tria a què vols que tingui accés <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"S\'ha actualitzat <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>. Tria a què vols que tingui accés aquesta aplicació."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Cancel·la"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Continua"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Permisos nous"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Permisos actuals"</string>
+ <string name="message_staging" msgid="641286607664721291">"S\'està preparant la instal·lació de l\'aplicació…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Desconegut"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Tauler"</string>
+ <!-- no translation found for permission_usage_summary_foreground (3203419920107457274) -->
+ <skip />
+ <!-- no translation found for permission_usage_summary_background (5719598203265078254) -->
+ <skip />
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Qualsevol permís"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"En qualsevol moment"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"7 últims dies"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Últimes 24 hores"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Última hora"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Últims 15 minuts"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Últim minut"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Cap ús de permisos"</string>
+ <!-- no translation found for permission_usage_list_title_any_time (5641676869304328239) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_7_days (2972289322203714509) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_day (6298662604046093174) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_hour (7224982939487774388) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_15_minutes (49045607172810502) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_minute (7716966405942817635) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_any_time (862654449303514044) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_7_days (5393381637937213483) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_day (7202567658282481259) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_hour (4672313408976666479) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_15_minutes (1776918144361651860) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_minute (236300476767668315) -->
+ <skip />
+ <!-- no translation found for app_permission_usage_bar_label (7261634017833698654) -->
+ <!-- no translation found for permission_usage_view_details (4728049344017619500) -->
+ <skip />
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtrats per: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Suprimeix el filtre"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtra per"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtra per permisos"</string>
+ <!-- no translation found for filter_by_time (1763143592970195407) -->
+ <skip />
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Amb més permisos"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Amb més accessos"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Recents"</string>
+ <!-- no translation found for sort_by_app (1912228966803416485) -->
+ <skip />
+ <!-- no translation found for sort_by_time (8280378662234104410) -->
+ <skip />
+ <!-- no translation found for item_separator (8266062815210378175) -->
+ <skip />
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Actualitza"</string>
+ <!-- no translation found for permission_usage_permission_filter_subtitle (5539392196389332769) -->
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Ús de permisos de l\'aplicació"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"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>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Permet"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Permet sempre"</string>
+ <!-- no translation found for app_permission_button_allow_foreground (2303741829613210541) -->
+ <skip />
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Denega"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Permís per accedir a <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <!-- no translation found for app_permission_header (228974007660007656) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_usage_summary (1034436308858219976) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_no_usages (4444374134047275841) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_app_permissions_link (8033278634020892918) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_permission_apps_link (8759141212929298774) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_generic (5479202003136667039) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_activity_recognition (2022880340017289990) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_calendar (2846128908236787586) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_call_log (2429916962093948340) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_camera (6699611334403400091) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_contacts (5169995707720233126) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_location (687820658574645201) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_aural (2102206495149326019) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_visual (3105938942794669520) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_microphone (2300290217308759293) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_phone (3773977614654088578) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sensors (6733606479604624853) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sms (8850213022386508528) -->
+ <skip />
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Últim accés: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"No hi ha accedit mai"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Acceptats"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Només es permeten mentre s\'utilitzen"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Denegats"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Mostra l\'ús detallat"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dies</item>
+ <item quantity="one">1 dia</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> hores</item>
+ <item quantity="one">1 hora</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minuts</item>
+ <item quantity="one">1 minut</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> segons</item>
+ <item quantity="one">1 segon</item>
+ </plurals>
+ <string name="permission_reminders" msgid="8040710767178843151">"Recordatoris de permisos"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> ha estat utilitzant la teva ubicació"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Aquesta aplicació pot accedir a la teva ubicació en qualsevol moment. Toca per canviar-ho."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Només mentre s\'utilitza l\'aplicació"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"No s\'ha concedit cap permís"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"No s\'ha denegat cap permís"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Cap aplicació té permís"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"A cap aplicació se li ha denegat el permís"</string>
+ <string name="settings" msgid="2884124136779508907">"Configuració"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> té accés complet al dispositiu"</string>
+ <!-- no translation found for accessibility_service_dialog_title_multiple (8129325613496173909) -->
+ <skip />
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> pot veure la pantalla, les accions i el text que s\'introdueix, dur a terme accions i controlar la pantalla."</string>
+ <!-- no translation found for accessibility_service_dialog_bottom_text_multiple (1387803460488775887) -->
+ <skip />
+ <!-- no translation found for request_role_title (3611734134669430568) -->
+ <skip />
+ <!-- no translation found for request_role_current_default (7512045433655289638) -->
+ <skip />
+ <!-- no translation found for request_role_set_as_default (5706081295230541240) -->
+ <skip />
+ <!-- no translation found for default_app_search_keyword (6938709626391437391) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_ok (3007005536659549573) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_open_settings (3368892579319881043) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_title (7173961211414061803) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_separator (9008030412869423988) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_last_separator (7455459775266515801) -->
+ <skip />
+ <string name="default_apps" msgid="8554530939151957828">"Aplicacions predeterminades"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Cap aplicació predeterminada"</string>
+ <!-- no translation found for default_apps_manage_domain_urls (3146379064445013719) -->
+ <skip />
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Predeterminada per a la feina"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Cap"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Cap aplicació"</string>
+ <!-- no translation found for special_app_access_search_keyword (462008045110320714) -->
+ <skip />
+ <string name="special_app_access" msgid="2561673957499408877">"Accés especial d\'aplicacions"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Sense accés especial d\'apps"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"No hi ha cap aplicació"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Aplicació d\'assistència"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Aplicació de navegador"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Aplicació Telèfon"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Aplicació d\'SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Aplicació d\'emergència"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Aplicació d\'inici"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Aplicació Música"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Aplicació Galeria"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Aplicació mode de cotxe"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"App per redirigir trucades"</string>
+ <!-- no translation found for role_label_call_screening (1089966334646538858) -->
+ <skip />
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Aplicació complementària de trucades"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"No admet perfils professionals"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Nota: si reinicies el dispositiu i has definit un bloqueig de pantalla, l\'aplicació no s\'iniciarà fins que no desbloquegis el dispositiu."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"L\'assistent podrà llegir informació sobre les aplicacions que s\'utilitzen al teu sistema; també podrà accedir a la informació que es veu en pantalla o a què accedeixes des de les aplicacions."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Comparteix les dades de depuració"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Vols compartir els detalls de la depuració?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> vol penjar informació de depuració."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Comparteix les dades de depuració"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> sol·licita penjar un informe d\'errors des d\'aquest dispositiu generat el dia <xliff:g id="DATE">%2$s</xliff:g> (<xliff:g id="TIME">%3$s</xliff:g>). Els informes d\'errors inclouen informació personal sobre el dispositiu o informació registrada per les aplicacions, com ara noms d\'usuaris, dades de la ubicació, identificadors del dispositiu i informació de la xarxa. Comparteix informes d\'errors només amb persones i aplicacions de confiança. Vols permetre que <xliff:g id="APP_NAME_1">%4$s</xliff:g> pengi un informe d\'errors?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Permet"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Denega"</string>
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_title (5699953608028268176) -->
+ <skip />
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_content (6960592986228883592) -->
+ <skip />
+ <!-- no translation found for dismiss_with_acknowledgment (2879819713128822468) -->
+ <skip />
</resources>
diff --git a/res/values-cs-television/strings.xml b/res/values-cs-television/strings.xml
index ed2d8dc..e93fa6f 100644
--- a/res/values-cs-television/strings.xml
+++ b/res/values-cs-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Odmítnout a již se neptat"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Svoji volbu můžete později změnit v nabídce Nastavení > Aplikace."</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Zobrazit systémové aplikace"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Oprávnění aplikací"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Oprávnění aplikací"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> – oprávnění"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Další oprávnění"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> – oprávnění"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Odmítnout a již se neptat"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Svoji volbu můžete později změnit v nabídce Nastavení > Aplikace."</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Zobrazení systémových aplikací"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Oprávnění aplikací"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Oprávnění aplikací"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> – oprávnění"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Další oprávnění"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> – oprávnění"</string>
</resources>
diff --git a/res/values-cs-watch/strings.xml b/res/values-cs-watch/strings.xml
index 160d7aa..f1dee7c 100644
--- a/res/values-cs-watch/strings.xml
+++ b/res/values-cs-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Odmítnout a již se neptat"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Zobrazit systémové aplikace"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Nelze změnit"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Ano"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Zrušit"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Odmítnout a již se neptat"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Zobrazení systémových aplikací"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Nelze změnit"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Ano"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Zrušit"</string>
</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 187871a..4d9b29c 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,138 +16,226 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Nástroj k instalaci balíčků"</string>
- <string name="next" msgid="3057143178373252333">"Další"</string>
- <string name="install" msgid="5896438203900042068">"Instalovat"</string>
- <string name="done" msgid="3889387558374211719">"Hotovo"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Povolit aplikaci:"</string>
- <string name="cancel" msgid="8360346460165114585">"Zrušit"</string>
- <string name="unknown" msgid="4742479012767208045">"Neznámé"</string>
- <string name="installing" msgid="8613631001631998372">"Probíhá instalace..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Instalace balíčku <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Aplikace je nainstalována."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Chcete tuto aplikaci nainstalovat? Aplikace získá přístup k těmto oprávněním:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Chcete tuto aplikaci nainstalovat? Aplikace nevyžaduje žádná zvláštní oprávnění."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Chcete nainstalovat aktualizaci této existující aplikace? Stávající data nebudou ztracena. Aktualizovaná aplikace získá přístup k následujícímu:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Chcete nainstalovat aktualizaci této integrované aplikace? Stávající data nebudou ztracena. Aktualizovaná aplikace získá přístup k následujícímu:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Chcete nainstalovat aktualizaci této existující aplikace? Vaše existující data nebudou ztracena. Není vyžadován žádný zvláštní přístup."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Chcete nainstalovat aktualizaci této integrované aplikace? Vaše existující data nebudou ztracena. Není vyžadován žádný zvláštní přístup."</string>
- <string name="install_failed" msgid="6579998651498970899">"Aplikaci nelze nainstalovat."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Instalace balíčku byla zablokována."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Aplikaci nelze nainstalovat, protože balíček je v konfliktu se stávajícím balíčkem."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Aplikaci nelze nainstalovat, protože s tabletem není kompatibilní."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Tato aplikace s vaší televizí není kompatibilní."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Aplikaci nelze nainstalovat, protože s telefonem není kompatibilní."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Aplikaci nelze nainstalovat, protože balíček zřejmě není platný."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Aplikaci <xliff:g id="APP_NAME">%1$s</xliff:g> do tohoto tabletu nelze nainstalovat."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Aplikaci <xliff:g id="APP_NAME">%1$s</xliff:g> se do televize nepodařilo nainstalovat."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Aplikaci <xliff:g id="APP_NAME">%1$s</xliff:g> do tohoto telefonu nelze nainstalovat."</string>
- <string name="launch" msgid="4826921505917605463">"Otevřít"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Váš administrátor nedovoluje instalaci aplikací z neznámých zdrojů"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Tento uživatel nemůže instalovat neznámé aplikace"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Tento uživatel nesmí instalovat aplikace"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Nastavení"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Spravovat aplikace"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Chcete aplikaci nahradit?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Aplikace, kterou instalujete, nahradí jinou aplikaci.\n\nVšechny předchozí uživatelské údaje budou uloženy."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Toto je systémová aplikace.\n\nVšechny předchozí uživatelské údaje budou uloženy."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Nedostatek místa"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Aplikaci <xliff:g id="APP_NAME">%1$s</xliff:g> nelze nainstalovat. Uvolněte místo v paměti a zkuste to znovu."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Aplikace nebyla nalezena"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Aplikaci se nepodařilo najít na seznamu nainstalovaných aplikací."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Není povoleno"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Aktuální uživatel nemá k odinstalaci oprávnění."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Chyba"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Aplikaci nelze odinstalovat."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Odinstalovat aplikaci"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Odinstalovat aktualizaci"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"Činnost <xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> je součástí následující aplikace:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Chcete tuto aplikaci odinstalovat?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Chcete tuto aplikaci odinstalovat "<b>"všem"</b>" uživatelům? Aplikace a její údaje budou odstraněny "<b>"všem"</b>" uživatelům tohoto zařízení."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Chcete tuto aplikaci pro uživatele <xliff:g id="USERNAME">%1$s</xliff:g> odinstalovat?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Chcete tuto aplikaci nahradit tovární verzí? Všechna data budou odstraněna."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Chcete tuto aplikaci nahradit tovární verzí? Všechna data budou odstraněna. Tato akce ovlivní všechny uživatele zařízení, včetně uživatelů s pracovním profilem."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Probíhající odinstalace"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Neúspěšné odinstalace"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Probíhá odinstalace..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Odinstalace balíčku <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Odinstalace byla dokončena."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Balíček <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> byl odinstalován"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Odinstalace se nezdařila."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Odinstalace balíčku <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> se nezdařila."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Aktivní aplikaci pro správu zařízení nelze odinstalovat"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Aktivní aplikaci pro správu zařízení uživatele <xliff:g id="USERNAME">%1$s</xliff:g> nelze odinstalovat"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Tato aplikace je u některých uživatelů nebo profilů požadována, u ostatních byla odinstalována."</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Tato aplikace je pro váš profil požadována a nelze ji odinstalovat."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Tato aplikace je administrátorem zařízení vyžadována a nelze ji odinstalovat."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Přejít do nastavení aplikací pro správu zařízení"</string>
- <string name="manage_users" msgid="3125018886835668847">"Správa uživatelů"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Aplikaci <xliff:g id="APP_NAME">%1$s</xliff:g> nelze odinstalovat."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Při analýze balíčku došlo k chybě."</string>
- <string name="newPerms" msgid="6039428254474104210">"Nově"</string>
- <string name="allPerms" msgid="1024385515840703981">"Vše"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Ochrana soukromí"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Přístup k zařízení"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Tato aktualizace nevyžaduje žádná nová oprávnění."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Chcete udělit následující oprávnění? Získáte přístup k:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Odmítnout"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Další informace"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Zamítnout"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Povolit aplikaci <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"zakázáno (<xliff:g id="COUNT">%1$d</xliff:g>)"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"vše zakázáno"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"nic nezakázáno"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Povolit"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Aplikace"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Oprávnění aplikací"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Příště se neptat"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Žádná oprávnění"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Další oprávnění"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Správce oprávnění"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"oprávnění"</string>
+ <string name="cancel" msgid="7279939269964834974">"Zrušit"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Aplikace nebyla nalezena"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Zakázat"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Odmítnout a už se neptat"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Další informace"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Zamítnout"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Povolit aplikaci <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Vždy povolit aplikaci <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Pouze při používání aplikace"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Vždy"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Odmítnout a už se neptat"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"zakázáno (<xliff:g id="COUNT">%1$d</xliff:g>)"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"vše zakázáno"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"nic nezakázáno"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Povolit"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Povolit vždy"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Povolit jen během používání aplikace"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Aplikace"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Oprávnění aplikací"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Správce oprávnění"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Již se neptat"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Žádná oprávnění"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Další oprávnění"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Otevřít informace o aplikaci"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="few">Ještě <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="many">Ještě <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="other">Ještě <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="one">Ještě <xliff:g id="COUNT_0">%1$d</xliff:g></item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Tato aplikace byla vytvořena pro starší verzi platformy Android. Pokud oprávnění neudělíte, může přestat fungovat podle původního záměru."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"provést neznámou akci"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"Povoleno u <xliff:g id="COUNT_0">%1$d</xliff:g> z <xliff:g id="COUNT_1">%2$d</xliff:g> aplikací"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Zobrazit systémové aplikace"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Skrýt systémové aplikace"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> – oprávnění"</string>
- <string name="no_apps" msgid="1965493419005012569">"Žádné aplikace"</string>
- <string name="location_settings" msgid="1774875730854491297">"Nastavení polohy"</string>
- <string name="location_warning" msgid="8778701356292735971">"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="7103819124542305179">"Pokud toto oprávnění zamítnete, základní funkce zařízení nemusejí fungovat správně."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Vynuceno zásadami"</string>
- <string name="loading" msgid="7811651799620593731">"Načítání…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Všechna oprávnění"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Ostatní oprávnění aplikace"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Žádost o oprávnění"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Byla zjištěna překryvná vrstva obrazovky"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Chcete-li změnit nastavení tohoto oprávnění, v Nastavení > Aplikace je třeba nejprve vypnout překryvnou vrstvu obrazovky"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Otevřít nastavení"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Akce instalace/odinstalace nejsou v zařízení Wear podporovány."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"Aplikace <xliff:g id="APP_NAME_0">%1$s</xliff:g> byla aktualizována. Chcete aplikaci <xliff:g id="APP_NAME_1">%1$s</xliff:g> povolit přístup k následujícím položkám?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Určete, k čemu aplikaci <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> povolíte přístup"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"Aplikace <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> byla aktualizována. Určete, k čemu jí povolíte přístup."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Zrušit"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Pokračovat"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Nová oprávnění"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Aktuální oprávnění"</string>
- <string name="message_staging" msgid="6151794817691100003">"Příprava instalace…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Neznámá aplikace"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Z bezpečnostních důvodů do tabletu není dovoleno instalovat neznámé aplikace z tohoto zdroje."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Z bezpečnostních důvodů do televize není dovoleno instalovat neznámé aplikace z tohoto zdroje."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Z bezpečnostních důvodů do telefonu není dovoleno instalovat neznámé aplikace z tohoto zdroje."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Telefon a osobní údaje jsou zranitelnější vůči útoku ze strany neznámých aplikací. Instalací této aplikace přijímáte odpovědnost za případné škody na telefonu nebo ztrátu dat, která může být používáním aplikace způsobena."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Tablet a osobní údaje jsou zranitelnější vůči útoku ze strany neznámých aplikací. Instalací této aplikace přijímáte odpovědnost za případné škody na tabletu nebo ztrátu dat, která může být používáním aplikace způsobena."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Televize a osobní údaje jsou zranitelnější vůči útoku ze strany neznámých aplikací. Instalací této aplikace přijímáte odpovědnost za případné škody na televizi nebo ztrátu dat, která může být používáním aplikace způsobena."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Pokračovat"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Nastavení"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Instalace/odinstalace aplikací pro Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Tato aplikace byla vytvořena pro starší verzi platformy Android. Pokud oprávnění neudělíte, může přestat fungovat podle původního záměru."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"provést neznámou akci"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"Povoleno u <xliff:g id="COUNT_0">%1$d</xliff:g> z <xliff:g id="COUNT_1">%2$d</xliff:g> aplikací"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Nedávné využití"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Zobrazit panel oprávnění"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Zobrazit systémové aplikace"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Skrýt systémové aplikace"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Žádné aplikace"</string>
+ <string name="location_settings" msgid="547378321761364906">"Nastavení polohy"</string>
+ <string name="location_warning" msgid="4687406043150343369">"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="6868290533389195836">"Pokud toto oprávnění zamítnete, základní funkce zařízení nemusejí fungovat správně."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Vynuceno zásadami"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Přístup na pozadí byl zakázán zásadami"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Přístup na pozadí byl povolen zásadami"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Přístup na popředí byl povolen zásadami"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Spravováno administrátorem"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Přístup na pozadí byl zakázán administrátorem"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Přístup na pozadí byl povolen administrátorem"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Přístup na popředí byl povolen administrátorem"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Oprávnění nastavená systémem"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Vždy"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Pouze při používání aplikace"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Nikdy"</string>
+ <string name="loading" msgid="323483393167148377">"Načítání…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Všechna oprávnění"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Ostatní oprávnění aplikace"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Žádost o oprávnění"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Byla zjištěna překryvná vrstva obrazovky"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Chcete-li změnit nastavení tohoto oprávnění, v Nastavení > Aplikace je třeba nejprve vypnout překryvnou vrstvu obrazovky"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Otevřít nastavení"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Akce instalace/odinstalace nejsou v zařízení Wear podporovány."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Určete, k čemu aplikaci <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> povolíte přístup"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"Aplikace <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> byla aktualizována. Určete, k čemu jí povolíte přístup."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Zrušit"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Pokračovat"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Nová oprávnění"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Aktuální oprávnění"</string>
+ <string name="message_staging" msgid="641286607664721291">"Příprava instalace…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Neznámé"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Panel"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ <item quantity="other">Poslední přístup: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> přístupů</item>
+ <item quantity="one">Poslední přístup: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> přístup</item>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="few">Poslední přístup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> přístupy (<xliff:g id="NUM_5">%3$s</xliff:g> na pozadí)</item>
+ <item quantity="many">Poslední přístup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> přístupu (<xliff:g id="NUM_5">%3$s</xliff:g> na pozadí)</item>
+ <item quantity="other">Poslední přístup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> přístupů (<xliff:g id="NUM_5">%3$s</xliff:g> na pozadí)</item>
+ <item quantity="one">Poslední přístup: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> přístup (<xliff:g id="NUM_2">%3$s</xliff:g> na pozadí)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="few">Poslední přístup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> přístupy\nTrvání: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="many">Poslední přístup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> přístupu\nTrvání: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">Poslední přístup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> přístupů\nTrvání: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="one">Poslední přístup: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> přístup\nTrvání: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="few">Poslední přístup: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> přístupy (<xliff:g id="NUM_6">%3$s</xliff:g> na pozadí)\nTrvání: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="many">Poslední přístup: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> přístupu (<xliff:g id="NUM_6">%3$s</xliff:g> na pozadí)\nTrvání: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">Poslední přístup: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> přístupů (<xliff:g id="NUM_6">%3$s</xliff:g> na pozadí)\nTrvání: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="one">Poslední přístup: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> přístup (<xliff:g id="NUM_2">%3$s</xliff:g> na pozadí)\nTrvání: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Všechna oprávnění"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Kdykoli"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Posledních 7 dnů"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Posledních 24 hodin"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Poslední hodina"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Posledních 15 minut"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Poslední minuta"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Žádné využití oprávnění"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Použití kdykoliv"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Použití za posledních 7 dní"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Použití za posledních 24 hodin"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Použití za poslední hodinu"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Použití za posledních 15 minut"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Přístup za poslední minutu"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Nejpoužívanější oprávnění (kdykoliv)"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Nejpoužívanější oprávnění za posledních 7 dní"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Nejpoužívanější oprávnění za posledních 24 hodin"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Nejpoužívanější oprávnění za poslední 1 hodinu"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Nejpoužívanější oprávnění za posledních 15 minut"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Nejpoužívanější oprávnění za poslední 1 minutu"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Aplikace"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtrováno podle: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Odstranit filtr"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtrovat podle"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtrovat podle oprávnění"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Nejvíce oprávnění"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Nejvíce použití"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Nedávné"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Obnovit"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Využití oprávnění aplikace"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Přístup: <xliff:g id="NUM">%1$s</xliff:g>×. Naposledy použito před <xliff:g id="TIME">%2$s</xliff:g>."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Povolit"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Povolit vždy"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Povolit jen během používání aplikace"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Zakázat"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Oprávnění <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Přístup k údajům <xliff:g id="PERM">%1$s</xliff:g> pro aplikaci <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"Aplikace <xliff:g id="APP">%1$s</xliff:g> získala před <xliff:g id="TIME">%3$s</xliff:g> přístup k těmto údajům: <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"Aplikace <xliff:g id="APP">%1$s</xliff:g> nezískala přístup k oprávnění <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Zobrazit podrobné využití oprávnění"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Poslední přístup: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Žádný přístup"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Povoleno"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Povoleno pouze během používání"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Zamítnuto"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Zobrazit podrobné údaje o využití"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> minuty</item>
+ <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> minuty</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minut</item>
+ <item quantity="one">1 minuta</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> sekundy</item>
+ <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> sekundy</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sekund</item>
+ <item quantity="one">1 sekunda</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Použít aplikaci <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> jako <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Použít aplikaci <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> namísto aplikace <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> jako <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Připomenutí o oprávněních"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"Aplikace <xliff:g id="APP_NAME">%s</xliff:g> využívá vaši polohu"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Tato aplikace má neomezený přístup k poloze. Klepnutím to změníte."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Jen během používání aplikace"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Nejsou povolena žádná oprávnění"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Nejsou zakázána žádná oprávnění"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Nejsou povoleny žádné aplikace"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Nejsou zakázány žádné aplikace"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Otevřít"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Odinstalovat"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Vynutit ukončení"</string>
+ <string name="settings" msgid="2884124136779508907">"Nastavení"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"Služba <xliff:g id="SERVICE_NAME">%s</xliff:g> má plný přístup k vašemu zařízení"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"Služby přístupnosti, které mají plný přístup k vašemu zařízení: <xliff:g id="NUM_SERVICES">%s</xliff:g>"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"Služba <xliff:g id="SERVICE_NAME">%s</xliff:g> může zobrazit vaši obrazovku, akce a vstup, provádět akce a ovládat obrazovku."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Tyto služby mohou zobrazit vaši obrazovku, akce a vstup, provádět akce a ovládat obrazovku."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Výchozí aplikace"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Žádné výchozí aplikace"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Výchozí pracovní"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Žádné"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Žádné aplikace"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Přístup ke spec. aplikacím"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Žádný přístup ke spec. aplik."</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Žádné aplikace"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Asistenční aplikace"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Prohlížeč"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Aplikace Telefon"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Aplikace pro SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Nouzová aplikace"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Domácí aplikace"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Aplikace Hudba"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Aplikace Galerie"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Telefonování v autě"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Aplikace k přesměrování hovorů"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Ohlašování jména volajícího"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Doprovod. aplikace na volání"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Aplikace na promítání do auta"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Nepodporuje pracovní profil"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Poznámka: Pokud restartujete zařízení a máte nastavený zámek obrazovky, tato aplikace se nespustí, dokud zařízení neodemknete."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Asistent bude moci číst informace o aplikacích používaných v systému, včetně údajů viditelných na obrazovce a přístupných v rámci aplikací."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Sdílet data ladění"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Sdílet podrobná data pro ladění?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> chce nahrát informace pro ladění."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Sdílet data ladění"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"Aplikace <xliff:g id="APP_NAME_0">%1$s</xliff:g> chce nahrát zprávu o chybě tohoto zařízení, která byla pořízena <xliff:g id="DATE">%2$s</xliff:g> v <xliff:g id="TIME">%3$s</xliff:g>. Zprávy o chybě zahrnují osobní údaje o zařízení a údaje z aplikací, např. uživatelská jména, údaje o poloze, identifikátory zařízení a informace o sítích. Zprávy o chybách sdílejte jen s lidmi a aplikacemi, kterým důvěřujete. Chcete aplikaci <xliff:g id="APP_NAME_1">%4$s</xliff:g> povolit nahrát zprávu o chybě?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Povolit"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Zamítnout"</string>
</resources>
diff --git a/res/values-da-television/strings.xml b/res/values-da-television/strings.xml
index f9c0da2..171bf3e 100644
--- a/res/values-da-television/strings.xml
+++ b/res/values-da-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Afvis, og spørg ikke igen"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Du kan altid ændre dette i Indstillinger > Apps"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Vis systemapps"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Apptilladelser"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Apptilladelser"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g>-tilladelser"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Flere tilladelser"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g>-tilladelser"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Afvis, og spørg ikke igen"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Du kan ændre dette på et senere tidspunkt i Indstillinger > Apps"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Vis systemapps"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Apptilladelser"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Apptilladelser"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Tilladelser for <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Yderligere tilladelser"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Tilladelser for <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-da-watch/strings.xml b/res/values-da-watch/strings.xml
index 616b1c2..65124cb 100644
--- a/res/values-da-watch/strings.xml
+++ b/res/values-da-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Afvis, og spørg ikke igen"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Vis systemapps"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Kan ikke ændres"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Ja"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Annuller"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Afvis, og spørg ikke igen"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Vis systemapps"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Kan ikke ændres"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Ja"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Annuller"</string>
</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index f4f3dd3..da333fe 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Pakkeinstallationsprogram"</string>
- <string name="next" msgid="3057143178373252333">"Næste"</string>
- <string name="install" msgid="5896438203900042068">"Installer"</string>
- <string name="done" msgid="3889387558374211719">"Afslut"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Giv denne app tilladelse til at:"</string>
- <string name="cancel" msgid="8360346460165114585">"Annuller"</string>
- <string name="unknown" msgid="4742479012767208045">"Ukendt"</string>
- <string name="installing" msgid="8613631001631998372">"Installerer..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Installerer <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Appen er installeret."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Vil du installere denne applikation? Den får adgang til følgende:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Vil du installere denne applikation? Den kræver ingen særlig adgang."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Vil du installere en opdatering til den eksisterende app? Du mister ikke dine eksisterende data. Den opdaterede app kan gøre følgende:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Vil du installere en opdatering til den indbyggede app? Du mister ikke dine eksisterende data. Den opdaterede app kan gøre følgende:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Vil du installere en opdatering til denne eksisterende applikation? Dine eksisterende data vil ikke gå tabt. Det kræver ikke nogen særlig adgang."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Vil du installere en opdatering til denne indbyggede applikation? Dine eksisterende data vil ikke gå tabt. Det kræver ikke nogen særlig adgang."</string>
- <string name="install_failed" msgid="6579998651498970899">"Appen blev ikke installeret."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Pakken blev blokeret i at blive installeret."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Appen blev ikke installeret, da pakken er i strid med en eksisterende pakke."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Appen blev ikke installeret, da den er ikke kompatibel med din tablet."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Denne app er ikke kompatibel med dit fjernsyn."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Appen blev ikke installeret, da den ikke er kompatibel med din telefon."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Appen blev ikke installeret, da pakken ser ud til at være ugyldig."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> kunne ikke installeres på din tablet."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> kunne ikke installeres på dit tv."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> kunne ikke installeres på din telefon."</string>
- <string name="launch" msgid="4826921505917605463">"Åbn"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Din administrator tillader ikke installation af apps, der hentes fra ukendte kilder"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Denne bruger kan ikke installere ukendte apps"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Denne bruger har ikke tilladelse til at installere apps"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Indstillinger"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Administrer apps"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Vil du udskifte appen?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Den app, du installerer, vil afløse en anden app.\n\nAlle dine tidligere brugerdata vil blive gemt."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Dette er en systemapp.\n\nAlle dine tidligere brugerdata vil blive gemt."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Der er ikke mere plads"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> kunne ikke installeres. Frigør noget plads, og prøv igen."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Appen blev ikke fundet"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Appen blev ikke fundet på listen over installerede apps."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Ikke tilladt"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Den nuværende bruger har ikke tilladelse til at udføre denne afinstallation."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Fejl"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Appen kunne ikke afinstalleres."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Afinstaller appen"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Afinstaller opdatering"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> er en del af følgende app:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Vil du afinstallere denne app?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Vil du afinstallere denne app for "<b>"alle"</b>" brugere? Applikationen og dens data vil blive fjernet fra "<b>"alle"</b>" brugere på denne enhed."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Vil du afinstallere denne app for brugeren <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Vil du erstatte denne app med fabriksversionen? Alle data fjernes."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Vil du erstatte denne app med fabriksversionen? Alle data fjernes. Dette påvirker alle brugere af denne enhed, herunder de brugere, der har arbejdsprofiler."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Igangværende afinstallationer"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Mislykkede afinstallationer"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Afinstallerer..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Afinstallerer <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Afinstallationen er afsluttet."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> blev afinstalleret"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Afinstallationen mislykkedes."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> kunne ikke afinstalleres."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Den aktive app til enhedsadministration kan ikke afinstalleres"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Den aktive app til enhedsadministration for <xliff:g id="USERNAME">%1$s</xliff:g> kan ikke afinstalleres"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Denne app kræves for nogle brugere eller profiler og afinstalleres for andre"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Denne app er nødvendig for din profil og kan ikke afinstalleres."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Denne app er påkrævet af din enhedsadministrator og kan ikke afinstalleres."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Administrer apps til enhedsadministration"</string>
- <string name="manage_users" msgid="3125018886835668847">"Administrer brugere"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> kunne ikke afinstalleres."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Der opstod et problem med parsing af pakken."</string>
- <string name="newPerms" msgid="6039428254474104210">"Ny"</string>
- <string name="allPerms" msgid="1024385515840703981">"Alle"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privatliv"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Adgang til enheden"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Denne opdatering kræver ingen nye tilladelser."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Vil du give følgende tilladelser? Det vil få adgang til:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Afvis"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Få flere oplysninger"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Afvis alligevel"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Vil du give <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> tilladelse til at <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> er deaktiveret"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"alle er deaktiveret"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"ingen er deaktiveret"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Tillad"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Apps"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Apptilladelser"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Spørg ikke igen"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Ingen tilladelser"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Flere tilladelser"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Tilladelsesstyring"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"tilladelser"</string>
+ <string name="cancel" msgid="7279939269964834974">"Annuller"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Appen blev ikke fundet"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Afvis"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Afvis, og spørg ikke igen"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Mere info"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Afvis alligevel"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Vil du give <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> tilladelse til at <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Skal <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> altid have tilladelse til at <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Kun mens appen bruges"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Altid"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Afvis, og spørg ikke igen"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> er deaktiveret"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"alle er deaktiveret"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"ingen er deaktiveret"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Tillad"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Tillad altid"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Tillad kun, mens appen er i brug"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Apps"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Apptilladelser"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Tilladelsesadministrator"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Spørg ikke igen"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Ingen tilladelser"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Yderligere tilladelser"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Åbn appinfo"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> mere</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> mere</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Denne app er udviklet til en ældre version af Android. Hvis du ikke giver den tilladelse, vil den muligvis ikke længere virke efter hensigten."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"udføre en ukendt handling"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_0">%1$d</xliff:g> ud af <xliff:g id="COUNT_1">%2$d</xliff:g> apps har tilladelse"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Vis systemapps"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Skjul systemapps"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g>-tilladelser"</string>
- <string name="no_apps" msgid="1965493419005012569">"Ingen apps"</string>
- <string name="location_settings" msgid="1774875730854491297">"Placeringsindstillinger"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> udbyder placeringstjenester for denne enhed. Adgangen til din placering kan ændres i Placeringsindstillinger."</string>
- <string name="system_warning" msgid="7103819124542305179">"Hvis du afviser denne tilladelse, vil grundlæggende funktioner på din enhed muligvis ikke længere fungere efter hensigten."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Håndhæves af politik"</string>
- <string name="loading" msgid="7811651799620593731">"Indlæser…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Alle tilladelser"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Andre app-egenskaber"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Anmodning om tilladelse"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Der er registreret skærmoverlejring"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Hvis du vil ændre denne indstilling for tilladelser, skal du først slå skærmoverlejringen fra i Indstillinger > Apps"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Åbn indstillingerne"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Det er ikke muligt at installere/afinstallere på Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> er blevet opdateret. Vil du give <xliff:g id="APP_NAME_1">%1$s</xliff:g> adgang til følgende?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Vælg, hvad <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> må få adgang til"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> er blevet opdateret. Vælg, hvad denne app må få adgang til."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Annuller"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Fortsæt"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Nye tilladelser"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Aktuelle tilladelser"</string>
- <string name="message_staging" msgid="6151794817691100003">"Forbereder appen…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Ukendt"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Din tablet har af sikkerhedshensyn ikke tilladelse til at installere ukendte apps fra denne kilde."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Dit fjernsyn har af sikkerhedshensyn ikke tilladelse til at installere ukendte apps fra denne kilde."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Din telefon har af sikkerhedshensyn ikke tilladelse til at installere ukendte apps fra denne kilde."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Din telefon og dine personlige data er mere sårbare over for angreb fra ukendte apps. Når du installerer denne app, accepterer du, at du er ansvarlig for skader på din telefon eller tab af data, der kan skyldes brug af appen."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Din tablet og dine personlige data er mere sårbare over for angreb fra ukendte apps. Når du installerer denne app, accepterer du, at du er ansvarlig for skader på din tablet eller tab af data, der kan skyldes brug af appen."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Dit fjernsyn og dine personlige data er mere sårbare over for angreb fra ukendte apps. Når du installerer denne app, accepterer du, at du er ansvarlig for skader på dit fjernsyn eller tab af data, der kan skyldes brug af appen."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Fortsæt"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Indstillinger"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Installerer/afinstallerer Wear-apps"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Denne app er udviklet til en ældre version af Android. Hvis du ikke giver den tilladelse, vil den muligvis ikke længere virke efter hensigten."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"udføre en ukendt handling"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> ud af <xliff:g id="COUNT_1">%2$d</xliff:g> apps har tilladelse"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Seneste brug"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Se tilladelsesbetjeningspanel"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Vis system"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Skjul system"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Ingen apps"</string>
+ <string name="location_settings" msgid="547378321761364906">"Placeringsindstillinger"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Hvis du afviser denne tilladelse, vil grundlæggende funktioner på din enhed muligvis ikke længere fungere efter hensigten."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Håndhæves af politik"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Adgang i baggrunden er deaktiveret af en politik"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Adgang i baggrunden er aktiveret af en politik"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Adgang i forgrunden er aktiveret af en politik"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Styres af administratoren"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Adgang i baggrunden er deaktiveret af en administrator"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Adgang i baggrunden er aktiveret af en administrator"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Adgang i forgrunden er aktiveret af en administrator"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Tilladelsen er indstillet af systemet"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Altid"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Kun mens appen bruges"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Aldrig"</string>
+ <string name="loading" msgid="323483393167148377">"Indlæser…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Alle tilladelser"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Andre app-egenskaber"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Anmodning om tilladelse"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Der er registreret skærmoverlejring"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Hvis du vil ændre denne indstilling for tilladelser, skal du først deaktivere skærmoverlejringen i Indstillinger > Apps"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Åbn indstillinger"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Det er ikke muligt at installere/afinstallere på Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Vælg, hvad <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> må få adgang til"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> er blevet opdateret. Vælg, hvad denne app må få adgang til."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Annuller"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Fortsæt"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Nye tilladelser"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Aktuelle tilladelser"</string>
+ <string name="message_staging" msgid="641286607664721291">"Forbereder appen…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Ukendt"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Betjeningspanel"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">Seneste adgang: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> adgange (<xliff:g id="NUM_5">%3$s</xliff:g> i baggrunden)</item>
+ <item quantity="other">Seneste adgang: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> adgange (<xliff:g id="NUM_5">%3$s</xliff:g> i baggrunden)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">Seneste adgang: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> adgang\nVarighed: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">Seneste adgang: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> adgange\nVarighed: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">Seneste adgang: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> adgang (<xliff:g id="NUM_6">%3$s</xliff:g> i baggrunden)\nVarighed: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">Seneste adgang: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> adgange (<xliff:g id="NUM_6">%3$s</xliff:g> i baggrunden)\nVarighed: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Enhver tilladelse"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Når som helst"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"De seneste 7 dage"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"De seneste 24 timer"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Den seneste time"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"De seneste 15 minutter"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Seneste minut"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Ingen brug af tilladelsen"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Adgang på et hvilket som helst tidspunkt"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Adgang i løbet af de seneste 7 dage"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Adgang i løbet af de seneste 24 timer"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Adgang i løbet af den seneste time"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Adgang i løbet af de seneste 15 minutter"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Adgang det seneste minut"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Mest anvendte tilladelser på ethvert tidspunkt"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Mest anvendte tilladelser i de seneste 7 dage"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Mest anvendte tilladelser i de seneste 24 timer"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Mest anvendte tilladelser i den seneste time"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Mest anvendte tilladelser i de seneste 15 minutter"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Mest anvendte tilladelser det seneste minut"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Apps"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtreret efter: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Fjern filter"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtrér efter"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtrér efter tilladelser"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Flest tilladelser"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Flest adgange"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Seneste"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Opdater"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Brug af apptilladelser"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Adgang: <xliff:g id="NUM">%1$s</xliff:g> gange. Senest brugt for <xliff:g id="TIME">%2$s</xliff:g> siden."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Tillad"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Tillad altid"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Tillad kun, mens appen bruges"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Afvis"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Tilladelse for <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Adgang til <xliff:g id="PERM">%1$s</xliff:g> for <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> anvendte din/dit <xliff:g id="PERM">%2$s</xliff:g> for <xliff:g id="TIME">%3$s</xliff:g> siden."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> har ikke adgang til din <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Se detaljeret brug af tilladelser"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Seneste adgang: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Ingen adgange"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Tilladt"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Tillades kun, mens de er i brug"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Afvist"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Se detaljerede oplysninger om brug"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> minut</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minutter</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> sekund</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sekunder</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Vil du bruge <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> som din <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Vil du bruge <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> i stedet for <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> som din <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Påmindelser om tilladelse"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> har anvendt din placering"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Denne app kan altid få adgang til din placering. Tryk for at ændre denne indstilling."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Kun mens appen er i brug"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Der ikke givet nogen tilladelser"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Ingen tilladelser er blevet afvist"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Der er ikke givet tilladelse til nogen apps"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Ingen apps er blevet afvist"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Åbn"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Afinstaller"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Tving til at standse"</string>
+ <string name="settings" msgid="2884124136779508907">"Indstillinger"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> har fuld adgang til din enhed"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> hjælpefunktioner har fuld adgang til din enhed"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> kan se din skærm, dine handlinger og dine input samt udføre handlinger og styre skærmen"</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Disse hjælpefunktioner kan se din skærm, dine handlinger og dine input samt udføre handlinger og styre skærmen."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Standardapps"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Ingen standardapps."</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Standard til arbejde"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Ingen"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Ingen apps"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Særlig appadgang"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Ingen særlig appadgang"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Ingen apps"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Assistanceapp"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Browserapp"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Appen Opkald"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Sms-app"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Nødapp"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Startapp"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Musikapp"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Galleriapp"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Telefonapp til biltilstand"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"App til opkaldsviderestilling"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"App til opkaldsvalg"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Medfølgende opkaldsapp"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Appen Bilprojicering"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Arbejdsprofilen understøttes ikke"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Bemærk! Hvis du genstarter din enhed og har indstillet en skærmlås, kan denne app ikke starte, før du låser enheden op."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Assistenten kan læse oplysninger om, hvilke apps der bruges i dit system, bl.a. oplysninger, der er synlige på din skærm eller tilgængelige i dine apps."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Del fejlretningsdata"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Vil du dele detaljerede fejlretningsdata?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> vil gerne uploade fejretningsoplysninger."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Del fejlretningsdata"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> anmoder om at uploade en fejlrapport fra denne enhed, som stammer fra <xliff:g id="DATE">%2$s</xliff:g> kl. <xliff:g id="TIME">%3$s</xliff:g>. Fejlrapporter indeholder personlige oplysninger om din enhed eller registreres af apps, f.eks. brugernavne, steddata, enheds-id\'er og netværksoplysninger. Oplysningerne i fejlrapporterne må kun deles med personer og apps, du har tillid til. Vil du give <xliff:g id="APP_NAME_1">%4$s</xliff:g> tilladelse til at uploade en fejlrapport?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Tillad"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Afvis"</string>
</resources>
diff --git a/res/values-de-television/strings.xml b/res/values-de-television/strings.xml
index dc218e4..ef5ecfa 100644
--- a/res/values-de-television/strings.xml
+++ b/res/values-de-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Ablehnen und nicht mehr fragen"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Du kannst dies später unter \"Einstellungen > Apps\" ändern."</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"System-Apps anzeigen"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"App-Berechtigungen"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"App-Berechtigungen"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Berechtigungen für <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Zusätzliche Berechtigungen"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Berechtigungen für <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Ablehnen und nicht mehr fragen"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Du kannst das später unter \"Einstellungen\" > \"Apps\" ändern"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"System-Apps einblenden"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"App-Berechtigungen"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"App-Berechtigungen"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Berechtigungen für <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Zusätzliche Berechtigungen"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Berechtigungen für <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-de-watch/strings.xml b/res/values-de-watch/strings.xml
index 3b12e0b..906aa7b 100644
--- a/res/values-de-watch/strings.xml
+++ b/res/values-de-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Ablehnen & nicht mehr fragen"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"System-Apps anzeigen"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Keine Änderung möglich"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Ja"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Abbrechen"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Ablehnen, nicht mehr fragen"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"System-Apps einblenden"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Änderung unmöglich"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Ja"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Abbrechen"</string>
</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 524a5eb..6088810 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,286 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Paket-Installer"</string>
- <string name="next" msgid="3057143178373252333">"Weiter"</string>
- <string name="install" msgid="5896438203900042068">"Installieren"</string>
- <string name="done" msgid="3889387558374211719">"Fertig"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Ermöglicht dieser App:"</string>
- <string name="cancel" msgid="8360346460165114585">"Abbrechen"</string>
- <string name="unknown" msgid="4742479012767208045">"Unbekannt"</string>
- <string name="installing" msgid="8613631001631998372">"Wird installiert..."</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> wird installiert…"</string>
- <string name="install_done" msgid="3682715442154357097">"App wurde installiert."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Möchtest du diese App installieren? Sie erhält dann folgende Berechtigungen:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Möchtest du diese App installieren? Sie benötigt keinen besonderen Zugriff."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Möchtest du ein Update für diese vorhandene App installieren? Deine vorhandenen Daten bleiben erhalten. Die aktualisierte App erhält Zugriff auf:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Möchtest du ein Update für diese integrierte App installieren? Deine vorhandenen Daten bleiben erhalten. Die aktualisierte App erhält Zugriff auf:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Möchtest du ein Update für diese bestehende App installieren? Deine vorhandenen Daten bleiben erhalten. Die App benötigt keine besonderen Zugriffsrechte."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Möchtest du ein Update für diese integrierte App installieren? Deine vorhandenen Daten bleiben erhalten. Die App benötigt keine besonderen Zugriffsrechte."</string>
- <string name="install_failed" msgid="6579998651498970899">"App wurde nicht installiert."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Die Installation des Pakets wurde blockiert."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Die App wurde nicht installiert, da das Paket in Konflikt mit einem bestehenden Paket steht."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Die App wurde nicht installiert, da sie nicht mit deinem Tablet kompatibel ist."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Diese App ist nicht mit deinem Fernseher kompatibel."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Die App wurde nicht installiert, da sie nicht mit deinem Smartphone kompatibel ist."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Die App wurde nicht installiert, da das Paket offenbar ungültig ist."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> konnte nicht auf deinem Tablet installiert werden."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> konnte nicht auf deinem Fernseher installiert werden."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> konnte nicht auf deinem Telefon installiert werden."</string>
- <string name="launch" msgid="4826921505917605463">"Öffnen"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Dein Administrator lässt keine Installationen von Apps aus unbekannten Quellen zu"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Dieser Nutzer darf keine unbekannten Apps installieren"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Dieser Nutzer darf keine Apps installieren"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Einstellungen"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Apps verwalten"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"App ersetzen?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Die App, die du momentan installierst, wird eine andere App ersetzen.\n\nAlle deine bisherigen Nutzerdaten werden gespeichert."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Dies ist eine Systemanwendung.\n\nAlle deine bisherigen Nutzerdaten werden gespeichert."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Kein freier Speicher vorhanden"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> konnte nicht installiert werden. Gib Speicherplatz frei und versuche es erneut."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"App nicht gefunden"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Die App wurde nicht in der Liste der installierten Apps gefunden."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Keine Berechtigung"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Der aktuelle Nutzer ist nicht dazu berechtigt, diese Deinstallation auszuführen."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Fehler"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"App konnte nicht deinstalliert werden."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"App deinstallieren"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Update deinstallieren"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> gehört zu folgender App:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Möchtest du diese App deinstallieren?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Möchtest du diese App für "<b>"alle"</b>" Nutzer entfernen? Die App und alle zugehörigen Daten werden für "<b>"alle"</b>" Nutzer des Geräts entfernt."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Möchtest du diese App für den Nutzer <xliff:g id="USERNAME">%1$s</xliff:g> deinstallieren?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Diese App durch die Werksversion ersetzen? Alle Daten werden entfernt."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Diese App durch die Werksversion ersetzen? Alle Daten werden entfernt. Dies betrifft alle Nutzer des Geräts, einschließlich Arbeitsprofilen."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Laufende Deinstallationen"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Fehlgeschlagene Deinstallationen"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Wird deinstalliert..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> wird deinstalliert…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Deinstallation abgeschlossen"</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> deinstalliert"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Deinstallation fehlgeschlagen"</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Deinstallation von <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> fehlgeschlagen."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Aktive Apps zur Geräteverwaltung können nicht deinstalliert werden"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Die aktive App zur Geräteverwaltung kann nicht für <xliff:g id="USERNAME">%1$s</xliff:g> deinstalliert werden"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Diese App wird für einige Nutzer oder Profile benötigt und wurde für andere deinstalliert"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Diese App wird für dein Profil benötigt und kann nicht deinstalliert werden."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Die App wurde als obligatorisch festgelegt und kann nicht deinstalliert werden."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Apps zur Geräteverwaltung"</string>
- <string name="manage_users" msgid="3125018886835668847">"Nutzer verwalten"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> konnte nicht deinstalliert werden."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Beim Parsen des Pakets ist ein Problem aufgetreten."</string>
- <string name="newPerms" msgid="6039428254474104210">"Neu"</string>
- <string name="allPerms" msgid="1024385515840703981">"Alle"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Datenschutz"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Gerätezugriff"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Für dieses Update sind keine neuen Berechtigungen erforderlich."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Möchtest du die folgenden Berechtigungen gewähren? Sie ermöglichen den Zugriff auf Folgendes:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Ablehnen"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Weitere Informationen"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Trotzdem ablehnen"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Zulassen, dass die App <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g> darf?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> deaktiviert"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"Alle deaktiviert"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"Keine deaktiviert"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Zulassen"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Apps"</string>
- <string name="app_permissions" msgid="3146758905824597178">"App-Berechtigungen"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Nicht mehr fragen"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Keine Berechtigungen"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Zusätzliche Berechtigungen"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Berechtigungssteuerung"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"Berechtigungen"</string>
+ <string name="cancel" msgid="7279939269964834974">"Abbrechen"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"App nicht gefunden"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Ablehnen"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Ablehnen & nicht mehr fragen"</string>
+ <!-- no translation found for grant_dialog_button_deny_background (5378693207810841555) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_deny_background_and_dont_ask_again (1032019626928637454) -->
+ <skip />
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Weitere Infos"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Trotzdem ablehnen"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Zulassen, dass die App <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> Folgendes darf: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> immer Folgendes erlauben: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Nur während der App-Nutzung"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Immer"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Ablehnen und nicht mehr fragen"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> deaktiviert"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"Alle deaktiviert"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"Keine deaktiviert"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Zulassen"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Immer zulassen"</string>
+ <!-- no translation found for grant_dialog_button_allow_foreground (8090382319222429427) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_allow_background (3190568549032350790) -->
+ <skip />
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Apps"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"App-Berechtigungen"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Berechtigungsmanager"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Nicht mehr fragen"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Keine Berechtigungen"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Zusätzliche Berechtigungen"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"App-Info öffnen"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other">Noch <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="one">Noch <xliff:g id="COUNT_0">%1$d</xliff:g></item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Diese App wurde für eine ältere Version von Android konzipiert. Wenn du keine Berechtigung erteilst, funktioniert die App möglicherweise nicht mehr ordnungsgemäß."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"Unbekannte Aktion durchführen"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_0">%1$d</xliff:g> von <xliff:g id="COUNT_1">%2$d</xliff:g> Apps sind berechtigt."</string>
- <string name="menu_show_system" msgid="6773743421743728921">"System-Apps anzeigen"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"System ausblenden"</string>
- <string name="permission_title" msgid="6495415273398916381">"Berechtigungen für <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Keine Apps"</string>
- <string name="location_settings" msgid="1774875730854491297">"Standorteinstellungen"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Wenn du diese Berechtigung deaktivierst, funktionieren grundlegende Funktionen deines Geräts möglicherweise nicht mehr ordnungsgemäß."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Von Richtlinien durchgesetzt"</string>
- <string name="loading" msgid="7811651799620593731">"Wird geladen…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Alle Berechtigungen"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Andere App-Funktionen"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Berechtigungsanfrage"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Display-Overlay erkannt"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Um diese Berechtigungseinstellung zu ändern, musst du zunächst das Display-Overlay über \"Einstellungen\" > \"Apps\" deaktivieren."</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Einstellungen öffnen"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Von Android Wear nicht unterstützte Aktionen installieren/deinstallieren."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> wurde aktualisiert. Darf <xliff:g id="APP_NAME_1">%1$s</xliff:g> auf folgende Berechtigungen zugreifen?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Worauf darf die App <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> zugreifen?"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"Die App <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> wurde aktualisiert. Worauf darf diese App zugreifen?"</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Abbrechen"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Weiter"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Neue Berechtigungen"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Aktuelle Berechtigungen"</string>
- <string name="message_staging" msgid="6151794817691100003">"App wird vorbereitet…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Unbekannt"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Aus Sicherheitsgründen kannst du auf dem Tablet keine unbekannten Apps aus dieser Quelle installieren."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Aus Sicherheitsgründen kannst du auf dem Fernseher keine unbekannten Apps aus dieser Quelle installieren."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Aus Sicherheitsgründen kannst du auf dem Smartphone keine unbekannten Apps aus dieser Quelle installieren."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Unbekannte Apps können gefährlich für dein Smartphone und deine personenbezogenen Daten sein. Indem du diese App installierst, erklärst du dich damit einverstanden, dass du die Verantwortung für alle Schäden an deinem Smartphone und jegliche Datenverluste trägst, die aus der Verwendung dieser App entstehen können."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Unbekannte Apps können gefährlich für dein Tablet und deine personenbezogenen Daten sein. Indem du diese App installierst, erklärst du dich damit einverstanden, dass du die Verantwortung für alle Schäden an deinem Tablet und jegliche Datenverluste trägst, die aus der Verwendung dieser App entstehen können."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Unbekannte Apps können gefährlich für deinen Fernseher und deine personenbezogenen Daten sein. Indem du diese App installierst, erklärst du dich damit einverstanden, dass du die Verantwortung für alle Schäden an deinem Fernseher und jegliche Datenverluste trägst, die aus der Verwendung dieser App entstehen können."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Weiter"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Einstellungen"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Wear-Apps installieren/deinstallieren"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Diese App wurde für eine ältere Android-Version entwickelt. Wenn du keine Berechtigung gewährst, funktioniert sie möglicherweise nicht mehr ordnungsgemäß."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"Unbekannte Aktion durchführen"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> von <xliff:g id="COUNT_1">%2$d</xliff:g> Apps mit Berechtigung"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"System-Apps einblenden"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"System-Apps ausblenden"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Keine Apps"</string>
+ <string name="location_settings" msgid="547378321761364906">"Standorteinstellungen"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Wenn du diese Berechtigung verweigerst, funktionieren grundlegende Funktionen deines Geräts möglicherweise nicht mehr ordnungsgemäß."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Von Richtlinien durchgesetzt"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Hintergrundzugriff aufgrund der Richtlinie deaktiviert"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Hintergrundzugriff aufgrund der Richtlinie aktiviert"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Vordergrundzugriff aufgrund der Richtlinie aktiviert"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Durch den Administrator verwaltet"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Hintergrundzugriff vom Administrator deaktiviert"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Hintergrundzugriff vom Administrator aktiviert"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Vordergrundzugriff vom Administrator aktiviert"</string>
+ <!-- no translation found for permission_summary_enabled_system_fixed (5463084832974856683) -->
+ <skip />
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <!-- no translation found for permission_access_always (5419580764084361573) -->
+ <skip />
+ <!-- no translation found for permission_access_only_foreground (2857031150724321567) -->
+ <skip />
+ <!-- no translation found for permission_access_never (425385910378172045) -->
+ <skip />
+ <string name="loading" msgid="323483393167148377">"Wird geladen…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Alle Berechtigungen"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Andere App-Funktionen"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Berechtigungsanfrage"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Display-Overlay erkannt"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Wenn du diese Berechtigungseinstellung ändern möchtest, musst du zuerst das Display-Overlay in \"Einstellungen\" > \"Apps\" deaktivieren"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Einstellungen öffnen"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Installations-/Deinstallationsaktion auf Android Wear nicht unterstützt."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Worauf darf die App <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> zugreifen?"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"Die App <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> wurde aktualisiert. Worauf darf diese App zugreifen?"</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Abbrechen"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Weiter"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Neue Berechtigungen"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Aktuelle Berechtigungen"</string>
+ <string name="message_staging" msgid="641286607664721291">"App wird vorbereitet…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Unbekannt"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Dashboard"</string>
+ <!-- no translation found for permission_usage_summary_foreground (3203419920107457274) -->
+ <skip />
+ <!-- no translation found for permission_usage_summary_background (5719598203265078254) -->
+ <skip />
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Beliebige Berechtigung"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Beliebiger Zeitraum"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Letzte 7 Tage"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Letzte 24 Stunden"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Letzte Stunde"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Letzte 15 Minuten"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"In der letzten Minute"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Keine Berechtigungen verwendet"</string>
+ <!-- no translation found for permission_usage_list_title_any_time (5641676869304328239) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_7_days (2972289322203714509) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_day (6298662604046093174) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_hour (7224982939487774388) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_15_minutes (49045607172810502) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_minute (7716966405942817635) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_any_time (862654449303514044) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_7_days (5393381637937213483) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_day (7202567658282481259) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_hour (4672313408976666479) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_15_minutes (1776918144361651860) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_minute (236300476767668315) -->
+ <skip />
+ <!-- no translation found for app_permission_usage_bar_label (7261634017833698654) -->
+ <!-- no translation found for permission_usage_view_details (4728049344017619500) -->
+ <skip />
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Gefiltert nach: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Filter entfernen"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtern nach"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Nach Berechtigungen filtern"</string>
+ <!-- no translation found for filter_by_time (1763143592970195407) -->
+ <skip />
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Meiste Berechtigungen"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Meiste Zugriffe"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Letzte"</string>
+ <!-- no translation found for sort_by_app (1912228966803416485) -->
+ <skip />
+ <!-- no translation found for sort_by_time (8280378662234104410) -->
+ <skip />
+ <!-- no translation found for item_separator (8266062815210378175) -->
+ <skip />
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Aktualisieren"</string>
+ <!-- no translation found for permission_usage_permission_filter_subtitle (5539392196389332769) -->
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Nutzung von App-Berechtigungen"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Zugriff: <xliff:g id="NUM">%1$s</xliff:g> Mal. Zuletzt verwendet vor <xliff:g id="TIME">%2$s</xliff:g>"</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Zulassen"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Immer zulassen"</string>
+ <!-- no translation found for app_permission_button_allow_foreground (2303741829613210541) -->
+ <skip />
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Nicht zulassen"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Berechtigung \"<xliff:g id="PERM">%1$s</xliff:g>\""</string>
+ <!-- no translation found for app_permission_header (228974007660007656) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_usage_summary (1034436308858219976) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_no_usages (4444374134047275841) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_app_permissions_link (8033278634020892918) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_permission_apps_link (8759141212929298774) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_generic (5479202003136667039) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_activity_recognition (2022880340017289990) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_calendar (2846128908236787586) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_call_log (2429916962093948340) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_camera (6699611334403400091) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_contacts (5169995707720233126) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_location (687820658574645201) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_aural (2102206495149326019) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_visual (3105938942794669520) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_microphone (2300290217308759293) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_phone (3773977614654088578) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sensors (6733606479604624853) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sms (8850213022386508528) -->
+ <skip />
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Letzter Zugriff: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Nie auf Berechtigung zugegriffen"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Zulässig"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Nur während der Verwendung erlaubt"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Abgelehnt"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Detaillierte Nutzungen ansehen"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> Tage</item>
+ <item quantity="one">1 Tag</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> Stunden</item>
+ <item quantity="one">1 Stunde</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> Minuten</item>
+ <item quantity="one">1 Minute</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> Sekunden</item>
+ <item quantity="one">1 Sekunde</item>
+ </plurals>
+ <string name="permission_reminders" msgid="8040710767178843151">"Berechtigungserinnerungen"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> hat deinen Standort verwendet"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Diese App kann immer auf deinen Standort zugreifen. Zum Ändern hier tippen."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Nur während die App verwendet wird"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Keine Berechtigungen zugelassen"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Alle Berechtigungen zugelassen"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Keine Apps zugelassen"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Alle Apps zugelassen"</string>
+ <string name="settings" msgid="2884124136779508907">"Einstellungen"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> hat uneingeschränkten Zugriff auf dein Gerät"</string>
+ <!-- no translation found for accessibility_service_dialog_title_multiple (8129325613496173909) -->
+ <skip />
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> kann deinen Bildschirm, deine Aktionen und deine Eingaben sehen, Aktionen ausführen und den Bildschirm steuern."</string>
+ <!-- no translation found for accessibility_service_dialog_bottom_text_multiple (1387803460488775887) -->
+ <skip />
+ <!-- no translation found for request_role_title (3611734134669430568) -->
+ <skip />
+ <!-- no translation found for request_role_current_default (7512045433655289638) -->
+ <skip />
+ <!-- no translation found for request_role_set_as_default (5706081295230541240) -->
+ <skip />
+ <!-- no translation found for default_app_search_keyword (6938709626391437391) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_ok (3007005536659549573) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_open_settings (3368892579319881043) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_title (7173961211414061803) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_separator (9008030412869423988) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_last_separator (7455459775266515801) -->
+ <skip />
+ <string name="default_apps" msgid="8554530939151957828">"Standard-Apps"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Keine Standard-Apps"</string>
+ <!-- no translation found for default_apps_manage_domain_urls (3146379064445013719) -->
+ <skip />
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Standardeinstellung für Arbeit"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Keine"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Keine Apps"</string>
+ <!-- no translation found for special_app_access_search_keyword (462008045110320714) -->
+ <skip />
+ <string name="special_app_access" msgid="2561673957499408877">"Spezieller App-Zugriff"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Kein spezieller App-Zugriff"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Keine Apps"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Assistent-App"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Browser-App"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Telefon-App"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS-App"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"App für Notfallbenachrichtigungen"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Start-App"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Musik App"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Galerie App"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Automodus-Telefon-App"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"App zur Anrufweiterleitung"</string>
+ <!-- no translation found for role_label_call_screening (1089966334646538858) -->
+ <skip />
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Companion App für Anrufe"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Unterstützt das Arbeitsprofil nicht"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Hinweis: Hinweis: Wenn du dein Gerät neu startest und eine Displaysperre aktiviert ist, wird diese App erst gestartet, wenn du dein Gerät entsperrst."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Der Assistent kann Informationen zu Apps abrufen, die du auf deinem System verwendest, einschließlich Informationen, die auf deinem Bildschirm angezeigt werden oder die in Apps zugänglich sind."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Daten zur Fehlerbehebung teilen"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Detaillierte Daten zur Fehlerbehebung teilen?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> möchte Informationen zur Fehlerbehebung hochladen."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Daten zur Fehlerbehebung teilen"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> möchte einen Fehlerbericht von diesem Gerät hochladen, der am <xliff:g id="DATE">%2$s</xliff:g> um <xliff:g id="TIME">%3$s</xliff:g> erstellt wurde. Fehlerberichte enthalten Informationen zu deinem Gerät, die du persönlich eingegeben hast oder die von Apps aufgezeichnet werden, z. B. Nutzernamen, Standortdaten, Geräte-IDs und Netzwerkinformationen. Teile Fehlerberichte nur mit Personen und Apps, denen du vertraust. Darf <xliff:g id="APP_NAME_1">%4$s</xliff:g> einen Fehlerbericht hochladen?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Zulassen"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Ablehnen"</string>
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_title (5699953608028268176) -->
+ <skip />
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_content (6960592986228883592) -->
+ <skip />
+ <!-- no translation found for dismiss_with_acknowledgment (2879819713128822468) -->
+ <skip />
</resources>
diff --git a/res/values-el-television/strings.xml b/res/values-el-television/strings.xml
index 44f77a9..6db803a 100644
--- a/res/values-el-television/strings.xml
+++ b/res/values-el-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Απόρριψη και να μην ερωτηθώ ξανά"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Μπορείτε να το αλλάξετε αυτό αργότερα από το μενού Ρυθμίσεις > Εφαρμογές"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Εμφάνιση εφαρμογών συστήματος"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Άδειες εφαρμογών"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Άδειες εφαρμογών"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Άδειες - <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Πρόσθετες άδειες"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Άδειες - <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Απόρριψη και να μην ερωτηθώ ξανά"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Μπορείτε να αλλάξετε αργότερα αυτήν τη ρύθμιση στις Ρυθμίσεις > Εφαρμογές"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Εμφάνιση εφαρμογών συστήματος"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Άδειες εφαρμογών"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Άδειες εφαρμογών"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Άδειες για <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Πρόσθετες άδειες"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Άδειες για <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-el-watch/strings.xml b/res/values-el-watch/strings.xml
index 3d923dc..828e046 100644
--- a/res/values-el-watch/strings.xml
+++ b/res/values-el-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Απόρριψη και να μην ερωτηθώ ξανά"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Εμφάνιση εφαρμογών συστήματος"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Δεν είναι δυνατή η αλλαγή"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Ναι"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Ακύρωση"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Απόρριψη, να μην ερωτηθώ ξανά"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Εμφάνιση εφαρμογών συστήματος"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Αδυναμία αλλαγής"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Ναι"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Ακύρωση"</string>
</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 6cb18f0..93404c0 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Πρόγραμμα εγκατάστασης πακέτου"</string>
- <string name="next" msgid="3057143178373252333">"Επόμενο"</string>
- <string name="install" msgid="5896438203900042068">"Εγκατάσταση"</string>
- <string name="done" msgid="3889387558374211719">"Τέλος"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Να επιτρέπεται σε αυτήν την εφαρμογή να:"</string>
- <string name="cancel" msgid="8360346460165114585">"Ακύρωση"</string>
- <string name="unknown" msgid="4742479012767208045">"Άγνωστο"</string>
- <string name="installing" msgid="8613631001631998372">"Εγκατάσταση..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Εγκατάσταση <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Εγκατάσταση εφαρμογής."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Θέλετε να εγκαταστήσετε αυτήν την εφαρμογή; Θα έχει πρόσβαση σε:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Θέλετε να εγκαταστήσετε αυτήν την εφαρμογή; Δεν απαιτείται οποιαδήποτε ειδική πρόσβαση."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Θέλετε να εγκαταστήσετε μια ενημέρωση σε αυτήν την υπάρχουσα εφαρμογή; Τα υπάρχοντα δεδομένα σας δεν θα χαθούν. Η ενημερωμένη εφαρμογή θα έχει πρόσβαση σε:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Θέλετε να εγκαταστήσετε μια ενημέρωση σε αυτήν την ενσωματωμένη εφαρμογή; Τα υπάρχοντα δεδομένα σας δεν θα χαθούν. Η ενημερωμένη εφαρμογή θα έχει πρόσβαση σε:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Θέλετε να εγκαταστήσετε μια ενημέρωση για αυτήν την υπάρχουσα εφαρμογή; Τα υπάρχοντα δεδομένα σας δεν θα χαθούν. Δεν απαιτείται ειδική πρόσβαση."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Θέλετε να εγκαταστήσετε μια ενημέρωση για αυτήν την ενσωματωμένη εφαρμογή; Τα υπάρχοντα δεδομένα σας δεν θα χαθούν. Δεν απαιτείται ειδική πρόσβαση."</string>
- <string name="install_failed" msgid="6579998651498970899">"Η εφαρμογή δεν έχει εγκατασταθεί."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Η εγκατάσταση του πακέτου αποκλείστηκε."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Η εφαρμογή δεν έχει εγκατασταθεί, επειδή το πακέτο έρχεται σε διένεξη με κάποιο υπάρχον πακέτο."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Η εφαρμογή δεν έχει εγκατασταθεί, επειδή δεν είναι συμβατή με το tablet που χρησιμοποιείτε."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Αυτή η εφαρμογή δεν είναι συμβατή με την τηλεόρασή σας."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Η εφαρμογή δεν έχει εγκατασταθεί, επειδή δεν είναι συμβατή με το τηλέφωνό σας."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Η εφαρμογή δεν έχει εγκατασταθεί, επειδή φαίνεται ότι το πακέτο δεν είναι έγκυρο."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Δεν ήταν δυνατή η εγκατάσταση της εφαρμογής <xliff:g id="APP_NAME">%1$s</xliff:g> στο tablet σας."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> δεν ήταν δυνατό να εγκατασταθεί στην τηλεόρασή σας."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Δεν ήταν δυνατή η εγκατάσταση της εφαρμογής <xliff:g id="APP_NAME">%1$s</xliff:g> στο τηλέφωνό σας."</string>
- <string name="launch" msgid="4826921505917605463">"Άνοιγμα"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Ο διαχειριστής σας δεν επιτρέπει την εγκατάσταση εφαρμογών που προέρχονται από άγνωστες πηγές"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Δεν είναι δυνατή η εγκατάσταση άγνωστων εφαρμογών από αυτόν τον χρήστη"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Αυτός ο χρήστης δεν έχει δυνατότητα εγκατάστασης εφαρμογών."</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Ρυθμίσεις"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Διαχείριση εφαρμογών"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Αντικατάσταση εφαρμογής;"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Η εφαρμογή που θέλετε να εγκαταστήσετε θα αντικαταστήσει μια άλλη εφαρμογή.\n\nΌλα τα προηγούμενα δεδομένα χρήστη σας θα αποθηκευτούν."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Αυτή είναι μια εφαρμογή συστήματος.\n\nΌλα τα προηγούμενα δεδομένα χρήστη σας θα αποθηκευτούν."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Δεν υπάρχει χώρος"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Δεν ήταν δυνατή η εγκατάσταση της εφαρμογής <xliff:g id="APP_NAME">%1$s</xliff:g>. Απελευθερώστε λίγο χώρο και προσπαθήστε ξανά."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Δεν βρέθηκε εφαρμογή"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Η εφαρμογή δεν βρέθηκε στη λίστα με τις εγκατεστημένες εφαρμογές."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Δεν επιτρέπεται"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Δεν επιτρέπεται στον τρέχοντα χρήση να εκτελέσει την απεγκατάσταση."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Σφάλμα"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Δεν ήταν δυνατή η απεγκατάσταση της εφαρμογής."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Απεγκατάσταση εφαρμογής"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Απεγκατάσταση ενημέρωσης"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"Η δραστηριότητα <xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> αποτελεί τμήμα της ακόλουθης εφαρμογής:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Θέλετε να καταργήσετε την εγκατάσταση αυτής της εφαρμογής;"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Θέλετε να καταργήσετε την εγκατάσταση αυτής της εφαρμογής για "<b>"όλους"</b>" τους χρήστες; Η εφαρμογή και τα δεδομένα της θα καταργηθούν από "<b>"όλους"</b>" τους χρήστες στη συσκευή."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Θέλετε να καταργήσετε την εγκατάσταση αυτής της εφαρμογής για το χρήστη <xliff:g id="USERNAME">%1$s</xliff:g>;"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Αντικατάσταση αυτής της εφαρμογής με την εργοστασιακή έκδοση; Όλα τα δεδομένα θα καταργηθούν."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Αντικατάσταση αυτής της εφαρμογής με την εργοστασιακή έκδοση; Όλα τα δεδομένα θα καταργηθούν. Αυτό επηρεάζει όλους τους χρήστες της συσκευής, συμπεριλαμβανομένων και αυτών με προφίλ εργασίας."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Απεγκαταστάσεις σε εξέλιξη"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Αποτυχημένες απεγκαταστάσεις"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Απεγκατάσταση..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Απεγκατάσταση <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Η κατάργηση εγκατάστασης ολοκληρώθηκε."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Απεγκαταστάθηκε <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Μη επιτυχής κατάργηση εγκατάστασης."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Επιτυχής απεγκατάσταση <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Η κατάργ. εγκατάστ. της ενεργούς εφαρμογής διαχείρισης συσκευής δεν είναι δυνατή"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Η κατάργ. εγκατάστασης της ενεργούς εφαρμογής διαχείρισης συσκευής για τον χρήστη <xliff:g id="USERNAME">%1$s</xliff:g> δεν είναι δυνατή"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Η εφαρμογή απαιτείται για κάποιους χρήστες/προφίλ και απεγκαταστήθηκε για άλλους"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Αυτή η εφαρμογή απαιτείται για το προφίλ σας και δεν είναι δυνατή η απεγκατάστασή της."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Η εφαρμογή απαιτείται από το διαχειριστή και δεν είναι δυνατή η απεγκατάσταση."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Διαχείριση εφαρμογών διαχείρισης συσκευής"</string>
- <string name="manage_users" msgid="3125018886835668847">"Διαχείριση χρηστών"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Δεν ήταν δυνατή η κατάργηση της εγκατάστασης της εφαρμογής <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Παρουσιάστηκε ένα πρόβλημα κατά την ανάλυση του πακέτου."</string>
- <string name="newPerms" msgid="6039428254474104210">"Νέο"</string>
- <string name="allPerms" msgid="1024385515840703981">"Όλα"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Απόρρητο"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Πρόσβαση συσκευής"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Αυτή η ενημέρωση δεν απαιτεί νέες άδειες."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Θέλετε να εκχωρήσετε τα ακόλουθα δικαιώματα; Συνεπάγεται πρόσβαση σε:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Απόρριψη"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Περισσότερες πληροφορίες"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Απόρριψη"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Να επιτρέπεται στην εφαρμογή <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> να <xliff:g id="ACTION">%2$s</xliff:g>;"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"έχουν απενεργοποιηθεί <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"έχουν απενεργοποιηθεί όλες"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"δεν έχει απενεργοποιηθεί καμία"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Να επιτρέπεται"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Εφαρμογές"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Δικαιώματα εφ/γών"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Να μην ερωτηθώ ξανά"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Χωρίς δικαιώματα"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Πρόσθετα δικαιώματα"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
- <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>
+ <string name="app_name" msgid="2792757108872430971">"Εργαλείο ελέγχου αδειών"</string>
+ <string name="ok" msgid="4417794827535157922">"ΟΚ"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"άδειες"</string>
+ <string name="cancel" msgid="7279939269964834974">"Ακύρωση"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Η εφαρμογή δεν βρέθηκε"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Απόρριψη"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Απόρριψη και να μην ερωτηθώ ξανά"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Περισσότερα"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Απόρριψη"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Να επιτρέπεται στην εφαρμογή <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> να <xliff:g id="ACTION">%2$s</xliff:g>;"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Να επιτρέπεται πάντα στην εφαρμογή <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> να <xliff:g id="ACTION">%2$s</xliff:g>;"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Μόνο κατά τη χρήση της εφαρμογής"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Πάντα"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Απόρριψη και να μην ερωτηθώ ξανά"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"έχουν απενεργοποιηθεί <xliff:g id="COUNT">%1$d</xliff:g>"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"έχουν απενεργοποιηθεί όλες"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"δεν έχει απενεργοποιηθεί καμία"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Αποδοχή"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Να επιτρέπεται πάντα"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Να επιτρέπεται μόνο όταν χρησιμοποιείται η εφαρμογή"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Εφαρμογές"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Άδειες εφαρμογών"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Διαχείριση αδειών"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Να μην ερωτηθώ ξανά"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Δεν υπάρχουν άδειες"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Πρόσθετες άδειες"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Άνοιγμα πληροφοριών εφαρμογής"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
+ <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="old_sdk_deny_warning" msgid="3872277112584842615">"Αυτή η εφαρμογή σχεδιάστηκε για παλαιότερη έκδοση του Android. Η άρνηση άδειας μπορεί να έχει ως αποτέλεσμα να διακοπεί η κανονική λειτουργία της."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"εκτέλεση άγνωστης ενέργειας"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"Επιτρέπονται <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="6773743421743728921">"Εμφάνιση συστήματος"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Απόκρυψη συστήματος"</string>
- <string name="permission_title" msgid="6495415273398916381">"Δικαιώματα για <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Δεν υπάρχουν εφαρμογές"</string>
- <string name="location_settings" msgid="1774875730854491297">"Ρυθμίσεις τοποθεσίας"</string>
- <string name="location_warning" msgid="8778701356292735971">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> είναι ο πάροχος των υπηρεσιών τοποθεσίας για τη συγκεκριμένη συσκευή. Μπορείτε να τροποποιήσετε την πρόσβαση τοποθεσίας από τις ρυθμίσεις τοποθεσίας."</string>
- <string name="system_warning" msgid="7103819124542305179">"Εάν αρνηθείτε να παραχωρήσετε αυτήν την άδεια, η λειτουργία ορισμένων βασικών δυνατοτήτων ενδέχεται να μην είναι η αναμενόμενη."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Επιβάλλεται από την πολιτική"</string>
- <string name="loading" msgid="7811651799620593731">"Γίνεται φόρτωση…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Όλα τα δικαιώματα"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Άλλες δυνατότητες εφαρμογής"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Αίτημα άδειας"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Εντοπίστηκε επικάλυψη οθόνης"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Για να αλλάξετε αυτή τη ρύθμιση άδειας, θα πρέπει πρώτα να απενεργοποιήσετε την επικάλυψη οθόνης από τις Ρυθμίσεις > Εφαρμογές"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Άνοιγμα ρυθμίσεων"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Οι ενέργειες εγκατάστασης/απεγκατάστασης δεν υποστηρίζονται στο Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"Η εφαρμογή <xliff:g id="APP_NAME_0">%1$s</xliff:g> έχει ενημερωθεί. Να επιτρέπεται στην εφαρμογή <xliff:g id="APP_NAME_1">%1$s</xliff:g> να έχει πρόσβαση στα παρακάτω;"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Επιλέξτε σε τι θα έχει πρόσβαση η εφαρμογή <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"Η εφαρμογή <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ενημερώθηκε. Επιλέξτε σε τι θα έχει πρόσβαση αυτή η εφαρμογή."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Ακύρωση"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Συνέχεια"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Νέες άδειες"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Τρέχουσες άδειες"</string>
- <string name="message_staging" msgid="6151794817691100003">"Σταδιακή διάθεση εφαρμογής…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Άγνωστη"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Για λόγους ασφάλειας, δεν επιτρέπεται η εγκατάσταση άγνωστων εφαρμογών από αυτήν την πηγή στο tablet σας."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Για λόγους ασφάλειας, δεν επιτρέπεται η εγκατάσταση άγνωστων εφαρμογών από αυτήν την πηγή στην τηλεόρασή σας."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Για λόγους ασφάλειας, δεν επιτρέπεται η εγκατάσταση άγνωστων εφαρμογών από αυτήν την πηγή στο τηλέφωνό σας."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Το τηλέφωνό σας και τα προσωπικά δεδομένα σας είναι πιο ευάλωτα σε επιθέσεις από άγνωστες εφαρμογές. Με την εγκατάσταση αυτής της εφαρμογής, συμφωνείτε ότι είστε υπεύθυνοι για οποιαδήποτε ζημιά στο τηλέφωνο ή απώλεια δεδομένων που μπορεί να προκύψει από τη χρήση τους."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Το tablet σας και τα προσωπικά δεδομένα σας είναι πιο ευάλωτα σε επιθέσεις από άγνωστες εφαρμογές. Με την εγκατάσταση αυτής της εφαρμογής, συμφωνείτε ότι είστε υπεύθυνοι για οποιαδήποτε ζημιά στο tablet ή απώλεια δεδομένων που μπορεί να προκύψει από τη χρήση τους."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Η τηλεόρασή σας και τα προσωπικά δεδομένα σας είναι πιο ευάλωτα σε επιθέσεις από άγνωστες εφαρμογές. Με την εγκατάσταση αυτής της εφαρμογής, συμφωνείτε ότι είστε υπεύθυνοι για οποιαδήποτε ζημιά στην τηλεόρασή ή απώλεια δεδομένων που μπορεί να προκύψει από τη χρήση τους."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Συνέχεια"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Ρυθμίσεις"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Εγκατάσταση/απεγκατάσταση εφαρμογών Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Αυτή η εφαρμογή σχεδιάστηκε για παλαιότερη έκδοση του Android. Η άρνηση παραχώρησης άδειας μπορεί να έχει ως αποτέλεσμα να διακοπεί η κανονική λειτουργία της."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"εκτέλεση άγνωστης ενέργειας"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"Επιτρέπονται <xliff:g id="COUNT_0">%1$d</xliff:g> από <xliff:g id="COUNT_1">%2$d</xliff:g> εφαρμογές"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Πρόσφατη χρήση"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Προβολή πίνακα ελέγχου αδειών"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Εμφάνιση συστήματος"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Απόκρυψη συστήματος"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Δεν υπάρχουν εφαρμογές"</string>
+ <string name="location_settings" msgid="547378321761364906">"Ρυθμίσεις τοποθεσίας"</string>
+ <string name="location_warning" msgid="4687406043150343369">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> είναι ο πάροχος των υπηρεσιών τοποθεσίας για τη συγκεκριμένη συσκευή. Μπορείτε να τροποποιήσετε την πρόσβαση τοποθεσίας από τις ρυθμίσεις τοποθεσίας."</string>
+ <string name="system_warning" msgid="6868290533389195836">"Εάν αρνηθείτε να παραχωρήσετε αυτήν την άδεια, ορισμένες βασικές λειτουργίες της συσκευής σας μπορεί να μην εκτελούνται πλέον με τον αναμενόμενο τρόπο."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Επιβάλλεται βάσει πολιτικής"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Η πρόσβαση στο παρασκήνιο απενεργοποιήθηκε βάσει πολιτικής"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Η πρόσβαση στο παρασκήνιο ενεργοποιήθηκε βάσει πολιτικής"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Η πρόσβαση στο προσκήνιο ενεργοποιήθηκε βάσει πολιτικής"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Ελέγχεται από τον διαχειριστή"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Η πρόσβαση στο παρασκήνιο απενεργοποιήθ. από τον διαχειριστή"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Η πρόσβαση στο παρασκήνιο ενεργοποιήθηκε από τον διαχειριστή"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Η πρόσβαση στο προσκήνιο ενεργοποιήθηκε από τον διαχειριστή"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Η άδεια ορίστηκε από το σύστημα"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Πάντα"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Μόνο κατά τη χρήση της εφαρμ."</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Ποτέ"</string>
+ <string name="loading" msgid="323483393167148377">"Φόρτωση…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Όλες οι άδειες"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Άλλες δυνατότητες εφαρμογής"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Αίτημα άδειας"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Εντοπίστηκε επικάλυψη οθόνης"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Για να αλλάξετε αυτήν τη ρύθμιση άδειας, θα πρέπει πρώτα να απενεργοποιήσετε την επικάλυψη οθόνης από τις Ρυθμίσεις > Εφαρμογές"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Άνοιγμα ρυθμίσεων"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Οι ενέργειες εγκατάστασης/απεγκατάστασης δεν υποστηρίζονται στο Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Επιλέξτε σε τι θα έχει πρόσβαση η εφαρμογή <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"Η εφαρμογή <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ενημερώθηκε. Επιλέξτε σε τι θα έχει πρόσβαση αυτή η εφαρμογή."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Ακύρωση"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Συνέχεια"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Νέες άδειες"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Τρέχουσες άδειες"</string>
+ <string name="message_staging" msgid="641286607664721291">"Σταδιακή διάθεση εφαρμογής…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Άγνωστο"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Πίνακας ελέγχου"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Τελευταία πρόσβαση: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> προσβάσεις (<xliff:g id="NUM_5">%3$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> πρόσβαση (<xliff:g id="NUM_2">%3$s</xliff:g> στο παρασκήνιο)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Τελευταία πρόσβαση: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> προσβάσεις\nΔιάρκεια: <xliff:g id="TIME_5">%3$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> πρόσβαση\nΔιάρκεια: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Τελευταία πρόσβαση: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> προσβάσεις (<xliff:g id="NUM_6">%3$s</xliff:g> στο παρασκήνιο)\nΔιάρκεια: <xliff:g id="TIME_7">%3$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> πρόσβαση (<xliff:g id="NUM_2">%3$s</xliff:g> στο παρασκήνιο)\nΔιάρκεια: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Οποιαδήποτε άδεια"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Οποιαδήποτε στιγμή"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Τελευταίες 7 ημέρες"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Τελευταίες 24 ώρες"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Τελευταία 1 ώρα"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Τελευταία 15 λεπτά"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Τελευταίο 1 λεπτό"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Καμία χρήση δικαιωμάτων"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Πρόσβαση οποιαδήποτε στιγμή"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Πρόσβαση τις τελευταίες 7 ημέρες"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Πρόσβαση τις τελευταίες 24 ώρες"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Πρόσβαση την τελευταία ώρα"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Πρόσβαση τα τελευταία 15 λεπτά"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Πρόσβαση το τελευταίο λεπτό"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Κορυφαία χρήση άδειας οποιαδήποτε στιγμή"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Κορυφαία χρήση άδειας τις τελευταίες 7 ημέρες"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Κορυφαία χρήση άδειας τις τελευταίες 24 ώρες"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Κορυφαία χρήση άδειας την τελευταία 1 ώρα"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Κορυφαία χρήση δικαιώματος τα τελευταία 15 λεπτά"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Κορυφαία χρήση αδειών το τελευταίο 1 λεπτό"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Εφαρμογές"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Φιλτράρισμα κατά: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Κατάργηση φίλτρου"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Φιλτράρισμα ανά"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Φιλτράρισμα κατά άδεια"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Περισσότερες άδειες"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Περισσότερες προσβάσεις"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Πρόσφατες"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Ανανέωση"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Χρήση αδειών εφαρμογής"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"Πρόσβαση: <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="4040424337831328212">"Πρόσβαση: <xliff:g id="NUM">%1$s</xliff:g> φορές. Τελευταία χρήση πριν από <xliff:g id="TIME">%2$s</xliff:g>."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Να επιτρέπεται"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Να επιτρέπεται πάντα"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Να επιτρέπεται μόνο όταν χρησιμοποιείται η εφαρμογή"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Να μην επιτρέπεται"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Άδεια <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Πρόσβαση σε <xliff:g id="PERM">%1$s</xliff:g> για την εφαρμογή <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"Η εφαρμογή <xliff:g id="APP">%1$s</xliff:g> είχε πρόσβαση σε <xliff:g id="PERM">%2$s</xliff:g> πριν από <xliff:g id="TIME">%3$s</xliff:g>."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"Η εφαρμογή <xliff:g id="APP">%1$s</xliff:g> δεν απέκτησε πρόσβαση σε <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Προβολή λεπτομερούς χρήσης αδειών"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Τελευταία πρόσβαση: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Δεν έγινε ποτέ πρόσβαση"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Επιτρέπονται"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Επιτρέπεται μόνο κατά τη χρήση"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Απορρίφθηκαν"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Εμφάνιση λεπτομερούς χρήσης"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ημέρες</item>
+ <item quantity="one">1 ημέρα</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ώρες</item>
+ <item quantity="one">1 ώρα</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> λεπτά</item>
+ <item quantity="one">1 λεπτό</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> δευτερόλεπτα</item>
+ <item quantity="one">1 δευτερόλεπτο</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Χρήση εφαρμογής <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ως <xliff:g id="ROLE_NAME">%2$s</xliff:g>;"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Χρήση εφαρμογής <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> αντί για <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> ως <xliff:g id="ROLE_NAME">%2$s</xliff:g>;"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Υπενθυμίσεις άδειας"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"Η εφαρμογή <xliff:g id="APP_NAME">%s</xliff:g> χρησιμοποιεί την τοποθεσία σας"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Αυτή η εφαρμογή μπορεί να έχει πάντα πρόσβαση στην τοποθεσία σας. Πατήστε για να αλλάξετε τη ρύθμιση."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Μόνο κατά τη χρήση της εφαρμογής"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Δεν επιτρέπονται άδειες"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Δεν απαγορεύονται άδειες"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Δεν επιτρέπονται εφαρμογές"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Δεν απαγορεύονται εφαρμογές"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Άνοιγμα"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Απεγκατάσταση"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Αναγκαστική διακοπή"</string>
+ <string name="settings" msgid="2884124136779508907">"Ρυθμίσεις"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"Η υπηρεσία <xliff:g id="SERVICE_NAME">%s</xliff:g> έχει πλήρη πρόσβαση στη συσκευή σας"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> υπηρεσίες προσβασιμότητας έχουν πλήρη πρόσβαση στη συσκευή σας"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"Η υπηρεσία <xliff:g id="SERVICE_NAME">%s</xliff:g> μπορεί να δει την οθόνη σας, τις ενέργειες και τις καταχωρίσεις, να εκτελέσει ενέργειες και να ελέγξει την οθόνη."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Αυτές οι υπηρεσίες μπορούν να δουν την οθόνη σας, τις ενέργειες και τις καταχωρίσεις, να εκτελέσουν ενέργειες και να ελέγξουν την οθόνη."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Προεπιλεγμένες εφαρμογές"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Καμία προεπιλεγμένη εφαρμογή"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Προεπιλογή για εργασία"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Καμία"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Δεν υπάρχουν εφαρμογές"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Ειδική άδεια εφαρμογής"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Χωρίς ειδική άδεια εφαρμογής"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Καμία εφαρμογή"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Εφαρμογή υποβοήθειας"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Εφαρμ. προγράμματος περιήγησης"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Εφαρμογή \"Τηλέφωνο\""</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Εφαρμογή SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Εφαρμογή έκτακτης ανάγκης"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Εφαρμογή αρχικής σελίδας"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Εφαρμογή μουσικής"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Εφαρμογή Gallery"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Εφαρ. \"τηλέφωνο\" σε λειτ. αυτ."</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Εφαρμογή ανακατεύθ. κλήσεων"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Εφαρμογή διαλογής κλήσεων"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Συνοδευτική εφαρμογή κλήσης"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Εφαρμ. προβολής στο αυτοκίνητο"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Δεν υποστηρίζει προφίλ εργασίας"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Σημείωση: Εάν έχετε ορίσει ένα κλείδωμα οθόνης και επανεκκινήσετε τη συσκευή, η εκκίνηση αυτής της εφαρμογής δεν θα είναι δυνατή έως ότου ξεκλειδώσετε τη συσκευή σας."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Ο Βοηθός θα μπορεί να διαβάσει πληροφορίες σχετικά με τις εφαρμογές που χρησιμοποιούνται στο σύστημά σας, συμπεριλαμβανομένων πληροφοριών που είναι ορατές στην οθόνη σας ή προσβάσιμες εντός των εφαρμογών."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Κοινοποίηση δεδομένων εντοπισμού σφαλμάτων"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Κοινοποίηση λεπτομερ. δεδομ. εντοπισμού σφαλμάτων;"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> θέλει να ανεβάσει πληροφορίες εντοπισμού σφαλμάτων."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Κοινοποίηση δεδομένων εντοπισμού σφαλμάτων"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"Η εφαρμογή <xliff:g id="APP_NAME_0">%1$s</xliff:g> ζητάει να ανεβάσει μια αναφορά σφαλμάτων από αυτήν τη συσκευή η οποία λήφθηκε στις <xliff:g id="DATE">%2$s</xliff:g>, <xliff:g id="TIME">%3$s</xliff:g>. Οι αναφορές σφαλμάτων περιλαμβάνουν προσωπικά στοιχεία σχετικά με τη συσκευή σας ή στοιχεία που έχουν καταγράψει οι εφαρμογές σας, για παράδειγμα, ονόματα χρηστών, δεδομένα τοποθεσίας, αναγνωριστικά συσκευών και πληροφορίες δικτύου. Να κοινοποιείτε αναφορές σφαλμάτων μόνο σε άτομα και εφαρμογές που θεωρείτε ότι μπορείτε να εμπιστευτείτε αυτές τις πληροφορίες. Επιτρέπετε στην εφαρμογή <xliff:g id="APP_NAME_1">%4$s</xliff:g> να ανεβάσει μια αναφορά σφαλμάτων;"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Να επιτρέπεται"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Να μην επιτρέπεται"</string>
</resources>
diff --git a/res/values-en-rAU-television/strings.xml b/res/values-en-rAU-television/strings.xml
index 663e1d4..d20ba1a 100644
--- a/res/values-en-rAU-television/strings.xml
+++ b/res/values-en-rAU-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Deny and don\'t ask again"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"You can change this later in Settings > Apps"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Show system apps"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"App permissions"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"App permissions"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Additional permissions"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Deny and don\'t ask again"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"You can change this later in Settings > Apps"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Show system apps"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"App permissions"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"App permissions"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Additional permissions"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
</resources>
diff --git a/res/values-en-rAU-watch/strings.xml b/res/values-en-rAU-watch/strings.xml
index e0d0edb..646a556 100644
--- a/res/values-en-rAU-watch/strings.xml
+++ b/res/values-en-rAU-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Deny, don\'t ask again"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Show system apps"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Can\'t be changed"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Yes"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Cancel"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Deny. Don\'t ask again"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Show system apps"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Can\'t be changed"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Yes"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Cancel"</string>
</resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index b855ab6..1eb4454 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Package installer"</string>
- <string name="next" msgid="3057143178373252333">"Next"</string>
- <string name="install" msgid="5896438203900042068">"Install"</string>
- <string name="done" msgid="3889387558374211719">"Done"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Allow this app to:"</string>
- <string name="cancel" msgid="8360346460165114585">"Cancel"</string>
- <string name="unknown" msgid="4742479012767208045">"Unknown"</string>
- <string name="installing" msgid="8613631001631998372">"Installing…"</string>
- <string name="installing_app" msgid="4097935682329028894">"Installing <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"App installed."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Do you want to install this application? It will get access to:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Do you want to install this application? It does not require any special access."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Do you want to install an update to this existing application? Your existing data will not be lost. The updated application will get access to:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Do you want to install an update to this built-in application? Your existing data will not be lost. The updated application will get access to:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Do you want to install an update to this existing application? Your existing data will not be lost. It does not require any special access."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Do you want to install an update to this built-in application? Your existing data will not be lost. It does not require any special access."</string>
- <string name="install_failed" msgid="6579998651498970899">"App not installed."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"The package was blocked from being installed."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"App not installed as package conflicts with an existing package."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"App not installed as app isn\'t compatible with your tablet."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"This app isn\'t compatible with your TV."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"App not installed as app isn\'t compatible with your phone."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"App not installed as package appears to be invalid."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be installed on your tablet."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be installed on your TV."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be installed on your phone."</string>
- <string name="launch" msgid="4826921505917605463">"Open"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Your admin doesn\'t allow installation of apps obtained from unknown sources"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Unknown apps can\'t be installed by this user"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"This user is not allowed to install apps"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Settings"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Manage apps"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Replace app?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"The app that you\'re installing will replace another app.\n\nAll your previous user data will be saved."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"This is a system app.\n\nAll your previous user data will be saved."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Out of space"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be installed. Free up some space and try again."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"App not found"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"The app wasn\'t found in the list of installed apps."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Not allowed"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"The current user is not allowed to perform this uninstallation."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Error"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"App could not be uninstalled."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Uninstall app"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Uninstall update"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> is part of the following app:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Do you want to uninstall this app?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Do you want to uninstall this app for "<b>"all"</b>" users? The application and its data will be removed from "<b>"all"</b>" users on the device."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Do you want to uninstall this app for the user <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Replace this app with the factory version? All data will be removed."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Replace this app with the factory version? All data will be removed. This affects all users of this device, including those with work profiles."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Running uninstalls"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Failed uninstalls"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Uninstalling…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Uninstalling <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Uninstall finished"</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Uninstalled <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Uninstall unsuccessful."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Uninstalling <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> unsuccessful."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Can\'t uninstall active device admin app"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Can\'t uninstall active device admin app for <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"This app is required for some users or profiles and was uninstalled for others"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"This app is needed for your profile and can\'t be uninstalled."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"This app is required by your device administrator and can\'t be uninstalled."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Manage device admin apps"</string>
- <string name="manage_users" msgid="3125018886835668847">"Manage users"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be uninstalled."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"There was a problem while parsing the package."</string>
- <string name="newPerms" msgid="6039428254474104210">"New"</string>
- <string name="allPerms" msgid="1024385515840703981">"All"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privacy"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Device Access"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"This update requires no new permissions."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Do you want to grant the following permissions? It will get access to:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Deny"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"More info"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Deny anyway"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> disabled"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"all disabled"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"none disabled"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Allow"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Apps"</string>
- <string name="app_permissions" msgid="3146758905824597178">"App permissions"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Don\'t ask again"</string>
- <string name="no_permissions" msgid="3210542466245591574">"No permissions"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Additional permissions"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Permission controller"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"permissions"</string>
+ <string name="cancel" msgid="7279939269964834974">"Cancel"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"App not found"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Deny"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Deny & don’t ask again"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"More info"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Deny anyway"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Always allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Only while using app"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Always"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Deny and don’t ask again"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> disabled"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"all disabled"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"none disabled"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Allow"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Allow all the time"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Allow only while the app is in use"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Apps"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"App permissions"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Permission manager"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Don\'t ask again"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"No permissions"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Additional permissions"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Open app info"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> more</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> more</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"This app was designed for an older version of Android. Denying permission may cause it to no longer function as intended."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"perform an unknown action"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_0">%1$d</xliff:g> of <xliff:g id="COUNT_1">%2$d</xliff:g> apps allowed"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Show system"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Hide system"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
- <string name="no_apps" msgid="1965493419005012569">"No apps"</string>
- <string name="location_settings" msgid="1774875730854491297">"Location Settings"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"If you deny this permission, basic features of your device may no longer function as intended."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Enforced by policy"</string>
- <string name="loading" msgid="7811651799620593731">"Loading…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"All permissions"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Other app capabilities"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Permission request"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Screen overlay detected"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"To change this permission setting, you first have to turn off the screen overlay from Settings > Apps"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Open settings"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Install/Uninstall actions not supported on Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> has been updated. Allow <xliff:g id="APP_NAME_1">%1$s</xliff:g> to access the following?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Choose what to allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> has been updated. Choose what to allow this app to access."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Cancel"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Continue"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"New permissions"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Current permissions"</string>
- <string name="message_staging" msgid="6151794817691100003">"Staging app…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Unknown"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"For your security, your tablet is not allowed to install unknown apps from this source."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"For your security, your TV is not allowed to install unknown apps from this source."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"For your security, your phone is not allowed to install unknown apps from this source."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Your phone and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your phone or loss of data that may result from its use."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Your tablet and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your tablet or loss of data that may result from its use."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Your TV and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your TV or loss of data that may result from its use."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Continue"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Settings"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Installing/uninstalling Wear apps"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"This app was designed for an older version of Android. Denying permission may cause it to no longer function as intended."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"perform an unknown action"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> of <xliff:g id="COUNT_1">%2$d</xliff:g> apps allowed"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Recent usage"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"View permissions dashboard"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Show system"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Hide system"</string>
+ <string name="no_apps" msgid="2377153782338039463">"No apps"</string>
+ <string name="location_settings" msgid="547378321761364906">"Location Settings"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"If you deny this permission, basic features of your device may no longer function as intended."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Enforced by policy"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Background access disabled by policy"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Background access enabled by policy"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Foreground access enabled by policy"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Controlled by admin"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Background access disabled by admin"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Background access enabled by admin"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Foreground access enabled by admin"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Permission set by system"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Always"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Only while using app"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Never"</string>
+ <string name="loading" msgid="323483393167148377">"Loading…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"All permissions"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Other app capabilities"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Permission request"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Screen overlay detected"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"To change this permission setting, you have to turn off the screen overlay first from Settings > Apps"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Open settings"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Install/Uninstall actions not supported on Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Choose what to allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> has been updated. Choose what access to allow this app."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Cancel"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Continue"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"New permissions"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Current permissions"</string>
+ <string name="message_staging" msgid="641286607664721291">"Staging app…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Unknown"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Dashboard"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Last access: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> accesses (<xliff:g id="NUM_5">%3$s</xliff:g> in background)</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 (<xliff:g id="NUM_2">%3$s</xliff:g> in background)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Last access: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> accesses\nDuration: <xliff:g id="TIME_5">%3$s</xliff:g></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\nDuration: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Last access: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> accesses (<xliff:g id="NUM_6">%3$s</xliff:g> in background)\nDuration: <xliff:g id="TIME_7">%3$s</xliff:g></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 (<xliff:g id="NUM_2">%3$s</xliff:g> in background)\nDuration: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Any permission"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Any time"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Last 7 days"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Last 24 hours"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Last 1 hour"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Last 15 minutes"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Last 1 minute"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"No permission usages"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Access at any time"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Access in last 7 days"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Access in last 24 hours"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Access in the last hour"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Access in last 15 minutes"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Access in last 1 minute"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Top permission usage at any time"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Top permission usage in last 7 days"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Top permission usage in last 24 hours"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Top permission usage in last 1 hour"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Top permission usage in last 15 minutes"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Top permission usage in last 1 minute"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Apps"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtered by: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Remove filter"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filter by"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filter by permissions"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Most permissions"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Most accesses"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Recent"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Refresh"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"App permissions usage"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Access: <xliff:g id="NUM">%1$s</xliff:g> times. Last used <xliff:g id="TIME">%2$s</xliff:g> ago."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Allow"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Allow all the time"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Allow only while the app is in use"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Deny"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> permission"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="PERM">%1$s</xliff:g> access for <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> accessed your <xliff:g id="PERM">%2$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g> ago."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> has not accessed your <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"View detailed permissions usage"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Last access: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Never accessed"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Allowed"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Allowed only while in use"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Denied"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"See detailed usage"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> days</item>
+ <item quantity="one">1 day</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> hours</item>
+ <item quantity="one">1 hour</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minutes</item>
+ <item quantity="one">1 minute</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> seconds</item>
+ <item quantity="one">1 second</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Use <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> as your <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Use <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> instead of <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> as your <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Permission reminders"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> has been using your location"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"This app can always access your location. Tap to change."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Only while app is in use"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"No permissions allowed"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"No permissions denied"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"No apps allowed"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"No apps denied"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Open"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Uninstall"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Force stop"</string>
+ <string name="settings" msgid="2884124136779508907">"Settings"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> has full access to your device"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> accessibility services have full access to your device"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> can view your screen, actions and inputs, perform actions and control the display."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"These services can view your screen, actions and inputs, perform actions and control the display."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Default apps"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"No default apps"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Default for work"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"None"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"No apps"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Special app access"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"No special app access"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"No apps"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Assist app"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Browser app"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Phone app"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS app"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Emergency app"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Home app"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Music app"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Gallery app"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Car mode phone app"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Call redirecting app"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Call screening app"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Call companion app"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Car Projection app"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Doesn’t support work profile"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Note: If you restart your device and have a screen lock set, this app can’t start until you unlock your device."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"The Assistant will be able to read information about apps that are in use on your system, including information visible on your screen or accessible within the apps."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Share Debugging Data"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Share detailed debugging data?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> would like to upload debugging information."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Share Debugging Data"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> is requesting to upload a bug report from this device taken on <xliff:g id="DATE">%2$s</xliff:g> at <xliff:g id="TIME">%3$s</xliff:g>. Bug reports include personal information about your device or logged by apps, for example, user names, location data, device identifiers and network information. Only share bug reports with people and apps that you trust with this information. Allow <xliff:g id="APP_NAME_1">%4$s</xliff:g> to upload a bug report?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Allow"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Deny"</string>
</resources>
diff --git a/res/values-en-rCA-television/strings.xml b/res/values-en-rCA-television/strings.xml
index 663e1d4..d20ba1a 100644
--- a/res/values-en-rCA-television/strings.xml
+++ b/res/values-en-rCA-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Deny and don\'t ask again"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"You can change this later in Settings > Apps"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Show system apps"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"App permissions"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"App permissions"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Additional permissions"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Deny and don\'t ask again"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"You can change this later in Settings > Apps"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Show system apps"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"App permissions"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"App permissions"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Additional permissions"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
</resources>
diff --git a/res/values-en-rCA-watch/strings.xml b/res/values-en-rCA-watch/strings.xml
index e0d0edb..646a556 100644
--- a/res/values-en-rCA-watch/strings.xml
+++ b/res/values-en-rCA-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Deny, don\'t ask again"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Show system apps"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Can\'t be changed"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Yes"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Cancel"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Deny. Don\'t ask again"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Show system apps"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Can\'t be changed"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Yes"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Cancel"</string>
</resources>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index b855ab6..1eb4454 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Package installer"</string>
- <string name="next" msgid="3057143178373252333">"Next"</string>
- <string name="install" msgid="5896438203900042068">"Install"</string>
- <string name="done" msgid="3889387558374211719">"Done"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Allow this app to:"</string>
- <string name="cancel" msgid="8360346460165114585">"Cancel"</string>
- <string name="unknown" msgid="4742479012767208045">"Unknown"</string>
- <string name="installing" msgid="8613631001631998372">"Installing…"</string>
- <string name="installing_app" msgid="4097935682329028894">"Installing <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"App installed."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Do you want to install this application? It will get access to:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Do you want to install this application? It does not require any special access."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Do you want to install an update to this existing application? Your existing data will not be lost. The updated application will get access to:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Do you want to install an update to this built-in application? Your existing data will not be lost. The updated application will get access to:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Do you want to install an update to this existing application? Your existing data will not be lost. It does not require any special access."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Do you want to install an update to this built-in application? Your existing data will not be lost. It does not require any special access."</string>
- <string name="install_failed" msgid="6579998651498970899">"App not installed."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"The package was blocked from being installed."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"App not installed as package conflicts with an existing package."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"App not installed as app isn\'t compatible with your tablet."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"This app isn\'t compatible with your TV."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"App not installed as app isn\'t compatible with your phone."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"App not installed as package appears to be invalid."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be installed on your tablet."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be installed on your TV."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be installed on your phone."</string>
- <string name="launch" msgid="4826921505917605463">"Open"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Your admin doesn\'t allow installation of apps obtained from unknown sources"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Unknown apps can\'t be installed by this user"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"This user is not allowed to install apps"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Settings"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Manage apps"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Replace app?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"The app that you\'re installing will replace another app.\n\nAll your previous user data will be saved."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"This is a system app.\n\nAll your previous user data will be saved."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Out of space"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be installed. Free up some space and try again."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"App not found"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"The app wasn\'t found in the list of installed apps."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Not allowed"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"The current user is not allowed to perform this uninstallation."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Error"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"App could not be uninstalled."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Uninstall app"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Uninstall update"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> is part of the following app:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Do you want to uninstall this app?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Do you want to uninstall this app for "<b>"all"</b>" users? The application and its data will be removed from "<b>"all"</b>" users on the device."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Do you want to uninstall this app for the user <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Replace this app with the factory version? All data will be removed."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Replace this app with the factory version? All data will be removed. This affects all users of this device, including those with work profiles."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Running uninstalls"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Failed uninstalls"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Uninstalling…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Uninstalling <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Uninstall finished"</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Uninstalled <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Uninstall unsuccessful."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Uninstalling <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> unsuccessful."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Can\'t uninstall active device admin app"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Can\'t uninstall active device admin app for <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"This app is required for some users or profiles and was uninstalled for others"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"This app is needed for your profile and can\'t be uninstalled."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"This app is required by your device administrator and can\'t be uninstalled."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Manage device admin apps"</string>
- <string name="manage_users" msgid="3125018886835668847">"Manage users"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be uninstalled."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"There was a problem while parsing the package."</string>
- <string name="newPerms" msgid="6039428254474104210">"New"</string>
- <string name="allPerms" msgid="1024385515840703981">"All"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privacy"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Device Access"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"This update requires no new permissions."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Do you want to grant the following permissions? It will get access to:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Deny"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"More info"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Deny anyway"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> disabled"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"all disabled"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"none disabled"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Allow"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Apps"</string>
- <string name="app_permissions" msgid="3146758905824597178">"App permissions"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Don\'t ask again"</string>
- <string name="no_permissions" msgid="3210542466245591574">"No permissions"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Additional permissions"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Permission controller"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"permissions"</string>
+ <string name="cancel" msgid="7279939269964834974">"Cancel"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"App not found"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Deny"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Deny & don’t ask again"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"More info"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Deny anyway"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Always allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Only while using app"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Always"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Deny and don’t ask again"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> disabled"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"all disabled"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"none disabled"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Allow"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Allow all the time"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Allow only while the app is in use"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Apps"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"App permissions"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Permission manager"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Don\'t ask again"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"No permissions"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Additional permissions"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Open app info"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> more</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> more</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"This app was designed for an older version of Android. Denying permission may cause it to no longer function as intended."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"perform an unknown action"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_0">%1$d</xliff:g> of <xliff:g id="COUNT_1">%2$d</xliff:g> apps allowed"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Show system"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Hide system"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
- <string name="no_apps" msgid="1965493419005012569">"No apps"</string>
- <string name="location_settings" msgid="1774875730854491297">"Location Settings"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"If you deny this permission, basic features of your device may no longer function as intended."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Enforced by policy"</string>
- <string name="loading" msgid="7811651799620593731">"Loading…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"All permissions"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Other app capabilities"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Permission request"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Screen overlay detected"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"To change this permission setting, you first have to turn off the screen overlay from Settings > Apps"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Open settings"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Install/Uninstall actions not supported on Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> has been updated. Allow <xliff:g id="APP_NAME_1">%1$s</xliff:g> to access the following?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Choose what to allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> has been updated. Choose what to allow this app to access."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Cancel"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Continue"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"New permissions"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Current permissions"</string>
- <string name="message_staging" msgid="6151794817691100003">"Staging app…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Unknown"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"For your security, your tablet is not allowed to install unknown apps from this source."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"For your security, your TV is not allowed to install unknown apps from this source."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"For your security, your phone is not allowed to install unknown apps from this source."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Your phone and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your phone or loss of data that may result from its use."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Your tablet and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your tablet or loss of data that may result from its use."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Your TV and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your TV or loss of data that may result from its use."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Continue"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Settings"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Installing/uninstalling Wear apps"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"This app was designed for an older version of Android. Denying permission may cause it to no longer function as intended."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"perform an unknown action"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> of <xliff:g id="COUNT_1">%2$d</xliff:g> apps allowed"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Recent usage"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"View permissions dashboard"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Show system"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Hide system"</string>
+ <string name="no_apps" msgid="2377153782338039463">"No apps"</string>
+ <string name="location_settings" msgid="547378321761364906">"Location Settings"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"If you deny this permission, basic features of your device may no longer function as intended."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Enforced by policy"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Background access disabled by policy"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Background access enabled by policy"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Foreground access enabled by policy"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Controlled by admin"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Background access disabled by admin"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Background access enabled by admin"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Foreground access enabled by admin"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Permission set by system"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Always"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Only while using app"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Never"</string>
+ <string name="loading" msgid="323483393167148377">"Loading…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"All permissions"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Other app capabilities"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Permission request"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Screen overlay detected"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"To change this permission setting, you have to turn off the screen overlay first from Settings > Apps"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Open settings"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Install/Uninstall actions not supported on Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Choose what to allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> has been updated. Choose what access to allow this app."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Cancel"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Continue"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"New permissions"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Current permissions"</string>
+ <string name="message_staging" msgid="641286607664721291">"Staging app…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Unknown"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Dashboard"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Last access: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> accesses (<xliff:g id="NUM_5">%3$s</xliff:g> in background)</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 (<xliff:g id="NUM_2">%3$s</xliff:g> in background)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Last access: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> accesses\nDuration: <xliff:g id="TIME_5">%3$s</xliff:g></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\nDuration: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Last access: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> accesses (<xliff:g id="NUM_6">%3$s</xliff:g> in background)\nDuration: <xliff:g id="TIME_7">%3$s</xliff:g></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 (<xliff:g id="NUM_2">%3$s</xliff:g> in background)\nDuration: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Any permission"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Any time"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Last 7 days"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Last 24 hours"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Last 1 hour"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Last 15 minutes"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Last 1 minute"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"No permission usages"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Access at any time"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Access in last 7 days"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Access in last 24 hours"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Access in the last hour"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Access in last 15 minutes"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Access in last 1 minute"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Top permission usage at any time"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Top permission usage in last 7 days"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Top permission usage in last 24 hours"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Top permission usage in last 1 hour"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Top permission usage in last 15 minutes"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Top permission usage in last 1 minute"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Apps"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtered by: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Remove filter"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filter by"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filter by permissions"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Most permissions"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Most accesses"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Recent"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Refresh"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"App permissions usage"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Access: <xliff:g id="NUM">%1$s</xliff:g> times. Last used <xliff:g id="TIME">%2$s</xliff:g> ago."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Allow"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Allow all the time"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Allow only while the app is in use"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Deny"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> permission"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="PERM">%1$s</xliff:g> access for <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> accessed your <xliff:g id="PERM">%2$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g> ago."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> has not accessed your <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"View detailed permissions usage"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Last access: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Never accessed"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Allowed"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Allowed only while in use"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Denied"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"See detailed usage"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> days</item>
+ <item quantity="one">1 day</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> hours</item>
+ <item quantity="one">1 hour</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minutes</item>
+ <item quantity="one">1 minute</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> seconds</item>
+ <item quantity="one">1 second</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Use <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> as your <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Use <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> instead of <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> as your <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Permission reminders"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> has been using your location"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"This app can always access your location. Tap to change."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Only while app is in use"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"No permissions allowed"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"No permissions denied"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"No apps allowed"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"No apps denied"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Open"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Uninstall"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Force stop"</string>
+ <string name="settings" msgid="2884124136779508907">"Settings"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> has full access to your device"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> accessibility services have full access to your device"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> can view your screen, actions and inputs, perform actions and control the display."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"These services can view your screen, actions and inputs, perform actions and control the display."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Default apps"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"No default apps"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Default for work"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"None"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"No apps"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Special app access"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"No special app access"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"No apps"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Assist app"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Browser app"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Phone app"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS app"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Emergency app"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Home app"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Music app"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Gallery app"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Car mode phone app"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Call redirecting app"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Call screening app"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Call companion app"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Car Projection app"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Doesn’t support work profile"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Note: If you restart your device and have a screen lock set, this app can’t start until you unlock your device."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"The Assistant will be able to read information about apps that are in use on your system, including information visible on your screen or accessible within the apps."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Share Debugging Data"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Share detailed debugging data?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> would like to upload debugging information."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Share Debugging Data"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> is requesting to upload a bug report from this device taken on <xliff:g id="DATE">%2$s</xliff:g> at <xliff:g id="TIME">%3$s</xliff:g>. Bug reports include personal information about your device or logged by apps, for example, user names, location data, device identifiers and network information. Only share bug reports with people and apps that you trust with this information. Allow <xliff:g id="APP_NAME_1">%4$s</xliff:g> to upload a bug report?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Allow"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Deny"</string>
</resources>
diff --git a/res/values-en-rGB-television/strings.xml b/res/values-en-rGB-television/strings.xml
index 663e1d4..d20ba1a 100644
--- a/res/values-en-rGB-television/strings.xml
+++ b/res/values-en-rGB-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Deny and don\'t ask again"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"You can change this later in Settings > Apps"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Show system apps"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"App permissions"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"App permissions"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Additional permissions"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Deny and don\'t ask again"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"You can change this later in Settings > Apps"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Show system apps"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"App permissions"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"App permissions"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Additional permissions"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
</resources>
diff --git a/res/values-en-rGB-watch/strings.xml b/res/values-en-rGB-watch/strings.xml
index e0d0edb..646a556 100644
--- a/res/values-en-rGB-watch/strings.xml
+++ b/res/values-en-rGB-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Deny, don\'t ask again"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Show system apps"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Can\'t be changed"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Yes"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Cancel"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Deny. Don\'t ask again"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Show system apps"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Can\'t be changed"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Yes"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Cancel"</string>
</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index b855ab6..1eb4454 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Package installer"</string>
- <string name="next" msgid="3057143178373252333">"Next"</string>
- <string name="install" msgid="5896438203900042068">"Install"</string>
- <string name="done" msgid="3889387558374211719">"Done"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Allow this app to:"</string>
- <string name="cancel" msgid="8360346460165114585">"Cancel"</string>
- <string name="unknown" msgid="4742479012767208045">"Unknown"</string>
- <string name="installing" msgid="8613631001631998372">"Installing…"</string>
- <string name="installing_app" msgid="4097935682329028894">"Installing <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"App installed."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Do you want to install this application? It will get access to:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Do you want to install this application? It does not require any special access."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Do you want to install an update to this existing application? Your existing data will not be lost. The updated application will get access to:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Do you want to install an update to this built-in application? Your existing data will not be lost. The updated application will get access to:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Do you want to install an update to this existing application? Your existing data will not be lost. It does not require any special access."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Do you want to install an update to this built-in application? Your existing data will not be lost. It does not require any special access."</string>
- <string name="install_failed" msgid="6579998651498970899">"App not installed."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"The package was blocked from being installed."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"App not installed as package conflicts with an existing package."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"App not installed as app isn\'t compatible with your tablet."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"This app isn\'t compatible with your TV."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"App not installed as app isn\'t compatible with your phone."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"App not installed as package appears to be invalid."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be installed on your tablet."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be installed on your TV."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be installed on your phone."</string>
- <string name="launch" msgid="4826921505917605463">"Open"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Your admin doesn\'t allow installation of apps obtained from unknown sources"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Unknown apps can\'t be installed by this user"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"This user is not allowed to install apps"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Settings"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Manage apps"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Replace app?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"The app that you\'re installing will replace another app.\n\nAll your previous user data will be saved."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"This is a system app.\n\nAll your previous user data will be saved."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Out of space"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be installed. Free up some space and try again."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"App not found"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"The app wasn\'t found in the list of installed apps."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Not allowed"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"The current user is not allowed to perform this uninstallation."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Error"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"App could not be uninstalled."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Uninstall app"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Uninstall update"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> is part of the following app:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Do you want to uninstall this app?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Do you want to uninstall this app for "<b>"all"</b>" users? The application and its data will be removed from "<b>"all"</b>" users on the device."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Do you want to uninstall this app for the user <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Replace this app with the factory version? All data will be removed."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Replace this app with the factory version? All data will be removed. This affects all users of this device, including those with work profiles."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Running uninstalls"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Failed uninstalls"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Uninstalling…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Uninstalling <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Uninstall finished"</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Uninstalled <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Uninstall unsuccessful."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Uninstalling <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> unsuccessful."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Can\'t uninstall active device admin app"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Can\'t uninstall active device admin app for <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"This app is required for some users or profiles and was uninstalled for others"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"This app is needed for your profile and can\'t be uninstalled."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"This app is required by your device administrator and can\'t be uninstalled."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Manage device admin apps"</string>
- <string name="manage_users" msgid="3125018886835668847">"Manage users"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be uninstalled."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"There was a problem while parsing the package."</string>
- <string name="newPerms" msgid="6039428254474104210">"New"</string>
- <string name="allPerms" msgid="1024385515840703981">"All"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privacy"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Device Access"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"This update requires no new permissions."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Do you want to grant the following permissions? It will get access to:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Deny"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"More info"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Deny anyway"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> disabled"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"all disabled"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"none disabled"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Allow"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Apps"</string>
- <string name="app_permissions" msgid="3146758905824597178">"App permissions"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Don\'t ask again"</string>
- <string name="no_permissions" msgid="3210542466245591574">"No permissions"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Additional permissions"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Permission controller"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"permissions"</string>
+ <string name="cancel" msgid="7279939269964834974">"Cancel"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"App not found"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Deny"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Deny & don’t ask again"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"More info"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Deny anyway"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Always allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Only while using app"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Always"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Deny and don’t ask again"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> disabled"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"all disabled"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"none disabled"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Allow"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Allow all the time"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Allow only while the app is in use"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Apps"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"App permissions"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Permission manager"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Don\'t ask again"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"No permissions"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Additional permissions"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Open app info"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> more</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> more</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"This app was designed for an older version of Android. Denying permission may cause it to no longer function as intended."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"perform an unknown action"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_0">%1$d</xliff:g> of <xliff:g id="COUNT_1">%2$d</xliff:g> apps allowed"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Show system"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Hide system"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
- <string name="no_apps" msgid="1965493419005012569">"No apps"</string>
- <string name="location_settings" msgid="1774875730854491297">"Location Settings"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"If you deny this permission, basic features of your device may no longer function as intended."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Enforced by policy"</string>
- <string name="loading" msgid="7811651799620593731">"Loading…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"All permissions"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Other app capabilities"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Permission request"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Screen overlay detected"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"To change this permission setting, you first have to turn off the screen overlay from Settings > Apps"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Open settings"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Install/Uninstall actions not supported on Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> has been updated. Allow <xliff:g id="APP_NAME_1">%1$s</xliff:g> to access the following?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Choose what to allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> has been updated. Choose what to allow this app to access."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Cancel"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Continue"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"New permissions"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Current permissions"</string>
- <string name="message_staging" msgid="6151794817691100003">"Staging app…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Unknown"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"For your security, your tablet is not allowed to install unknown apps from this source."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"For your security, your TV is not allowed to install unknown apps from this source."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"For your security, your phone is not allowed to install unknown apps from this source."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Your phone and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your phone or loss of data that may result from its use."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Your tablet and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your tablet or loss of data that may result from its use."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Your TV and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your TV or loss of data that may result from its use."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Continue"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Settings"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Installing/uninstalling Wear apps"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"This app was designed for an older version of Android. Denying permission may cause it to no longer function as intended."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"perform an unknown action"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> of <xliff:g id="COUNT_1">%2$d</xliff:g> apps allowed"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Recent usage"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"View permissions dashboard"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Show system"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Hide system"</string>
+ <string name="no_apps" msgid="2377153782338039463">"No apps"</string>
+ <string name="location_settings" msgid="547378321761364906">"Location Settings"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"If you deny this permission, basic features of your device may no longer function as intended."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Enforced by policy"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Background access disabled by policy"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Background access enabled by policy"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Foreground access enabled by policy"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Controlled by admin"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Background access disabled by admin"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Background access enabled by admin"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Foreground access enabled by admin"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Permission set by system"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Always"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Only while using app"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Never"</string>
+ <string name="loading" msgid="323483393167148377">"Loading…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"All permissions"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Other app capabilities"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Permission request"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Screen overlay detected"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"To change this permission setting, you have to turn off the screen overlay first from Settings > Apps"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Open settings"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Install/Uninstall actions not supported on Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Choose what to allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> has been updated. Choose what access to allow this app."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Cancel"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Continue"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"New permissions"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Current permissions"</string>
+ <string name="message_staging" msgid="641286607664721291">"Staging app…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Unknown"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Dashboard"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Last access: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> accesses (<xliff:g id="NUM_5">%3$s</xliff:g> in background)</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 (<xliff:g id="NUM_2">%3$s</xliff:g> in background)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Last access: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> accesses\nDuration: <xliff:g id="TIME_5">%3$s</xliff:g></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\nDuration: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Last access: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> accesses (<xliff:g id="NUM_6">%3$s</xliff:g> in background)\nDuration: <xliff:g id="TIME_7">%3$s</xliff:g></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 (<xliff:g id="NUM_2">%3$s</xliff:g> in background)\nDuration: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Any permission"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Any time"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Last 7 days"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Last 24 hours"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Last 1 hour"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Last 15 minutes"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Last 1 minute"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"No permission usages"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Access at any time"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Access in last 7 days"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Access in last 24 hours"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Access in the last hour"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Access in last 15 minutes"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Access in last 1 minute"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Top permission usage at any time"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Top permission usage in last 7 days"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Top permission usage in last 24 hours"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Top permission usage in last 1 hour"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Top permission usage in last 15 minutes"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Top permission usage in last 1 minute"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Apps"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtered by: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Remove filter"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filter by"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filter by permissions"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Most permissions"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Most accesses"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Recent"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Refresh"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"App permissions usage"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Access: <xliff:g id="NUM">%1$s</xliff:g> times. Last used <xliff:g id="TIME">%2$s</xliff:g> ago."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Allow"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Allow all the time"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Allow only while the app is in use"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Deny"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> permission"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="PERM">%1$s</xliff:g> access for <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> accessed your <xliff:g id="PERM">%2$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g> ago."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> has not accessed your <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"View detailed permissions usage"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Last access: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Never accessed"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Allowed"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Allowed only while in use"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Denied"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"See detailed usage"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> days</item>
+ <item quantity="one">1 day</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> hours</item>
+ <item quantity="one">1 hour</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minutes</item>
+ <item quantity="one">1 minute</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> seconds</item>
+ <item quantity="one">1 second</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Use <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> as your <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Use <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> instead of <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> as your <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Permission reminders"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> has been using your location"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"This app can always access your location. Tap to change."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Only while app is in use"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"No permissions allowed"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"No permissions denied"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"No apps allowed"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"No apps denied"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Open"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Uninstall"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Force stop"</string>
+ <string name="settings" msgid="2884124136779508907">"Settings"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> has full access to your device"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> accessibility services have full access to your device"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> can view your screen, actions and inputs, perform actions and control the display."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"These services can view your screen, actions and inputs, perform actions and control the display."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Default apps"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"No default apps"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Default for work"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"None"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"No apps"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Special app access"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"No special app access"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"No apps"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Assist app"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Browser app"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Phone app"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS app"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Emergency app"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Home app"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Music app"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Gallery app"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Car mode phone app"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Call redirecting app"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Call screening app"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Call companion app"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Car Projection app"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Doesn’t support work profile"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Note: If you restart your device and have a screen lock set, this app can’t start until you unlock your device."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"The Assistant will be able to read information about apps that are in use on your system, including information visible on your screen or accessible within the apps."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Share Debugging Data"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Share detailed debugging data?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> would like to upload debugging information."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Share Debugging Data"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> is requesting to upload a bug report from this device taken on <xliff:g id="DATE">%2$s</xliff:g> at <xliff:g id="TIME">%3$s</xliff:g>. Bug reports include personal information about your device or logged by apps, for example, user names, location data, device identifiers and network information. Only share bug reports with people and apps that you trust with this information. Allow <xliff:g id="APP_NAME_1">%4$s</xliff:g> to upload a bug report?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Allow"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Deny"</string>
</resources>
diff --git a/res/values-en-rIN-television/strings.xml b/res/values-en-rIN-television/strings.xml
index 663e1d4..d20ba1a 100644
--- a/res/values-en-rIN-television/strings.xml
+++ b/res/values-en-rIN-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Deny and don\'t ask again"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"You can change this later in Settings > Apps"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Show system apps"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"App permissions"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"App permissions"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Additional permissions"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Deny and don\'t ask again"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"You can change this later in Settings > Apps"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Show system apps"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"App permissions"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"App permissions"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Additional permissions"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
</resources>
diff --git a/res/values-en-rIN-watch/strings.xml b/res/values-en-rIN-watch/strings.xml
index e0d0edb..646a556 100644
--- a/res/values-en-rIN-watch/strings.xml
+++ b/res/values-en-rIN-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Deny, don\'t ask again"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Show system apps"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Can\'t be changed"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Yes"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Cancel"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Deny. Don\'t ask again"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Show system apps"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Can\'t be changed"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Yes"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Cancel"</string>
</resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index b855ab6..1eb4454 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Package installer"</string>
- <string name="next" msgid="3057143178373252333">"Next"</string>
- <string name="install" msgid="5896438203900042068">"Install"</string>
- <string name="done" msgid="3889387558374211719">"Done"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Allow this app to:"</string>
- <string name="cancel" msgid="8360346460165114585">"Cancel"</string>
- <string name="unknown" msgid="4742479012767208045">"Unknown"</string>
- <string name="installing" msgid="8613631001631998372">"Installing…"</string>
- <string name="installing_app" msgid="4097935682329028894">"Installing <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"App installed."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Do you want to install this application? It will get access to:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Do you want to install this application? It does not require any special access."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Do you want to install an update to this existing application? Your existing data will not be lost. The updated application will get access to:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Do you want to install an update to this built-in application? Your existing data will not be lost. The updated application will get access to:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Do you want to install an update to this existing application? Your existing data will not be lost. It does not require any special access."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Do you want to install an update to this built-in application? Your existing data will not be lost. It does not require any special access."</string>
- <string name="install_failed" msgid="6579998651498970899">"App not installed."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"The package was blocked from being installed."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"App not installed as package conflicts with an existing package."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"App not installed as app isn\'t compatible with your tablet."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"This app isn\'t compatible with your TV."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"App not installed as app isn\'t compatible with your phone."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"App not installed as package appears to be invalid."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be installed on your tablet."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be installed on your TV."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be installed on your phone."</string>
- <string name="launch" msgid="4826921505917605463">"Open"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Your admin doesn\'t allow installation of apps obtained from unknown sources"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Unknown apps can\'t be installed by this user"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"This user is not allowed to install apps"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Settings"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Manage apps"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Replace app?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"The app that you\'re installing will replace another app.\n\nAll your previous user data will be saved."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"This is a system app.\n\nAll your previous user data will be saved."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Out of space"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be installed. Free up some space and try again."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"App not found"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"The app wasn\'t found in the list of installed apps."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Not allowed"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"The current user is not allowed to perform this uninstallation."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Error"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"App could not be uninstalled."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Uninstall app"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Uninstall update"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> is part of the following app:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Do you want to uninstall this app?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Do you want to uninstall this app for "<b>"all"</b>" users? The application and its data will be removed from "<b>"all"</b>" users on the device."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Do you want to uninstall this app for the user <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Replace this app with the factory version? All data will be removed."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Replace this app with the factory version? All data will be removed. This affects all users of this device, including those with work profiles."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Running uninstalls"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Failed uninstalls"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Uninstalling…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Uninstalling <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Uninstall finished"</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Uninstalled <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Uninstall unsuccessful."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Uninstalling <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> unsuccessful."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Can\'t uninstall active device admin app"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Can\'t uninstall active device admin app for <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"This app is required for some users or profiles and was uninstalled for others"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"This app is needed for your profile and can\'t be uninstalled."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"This app is required by your device administrator and can\'t be uninstalled."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Manage device admin apps"</string>
- <string name="manage_users" msgid="3125018886835668847">"Manage users"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be uninstalled."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"There was a problem while parsing the package."</string>
- <string name="newPerms" msgid="6039428254474104210">"New"</string>
- <string name="allPerms" msgid="1024385515840703981">"All"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privacy"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Device Access"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"This update requires no new permissions."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Do you want to grant the following permissions? It will get access to:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Deny"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"More info"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Deny anyway"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> disabled"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"all disabled"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"none disabled"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Allow"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Apps"</string>
- <string name="app_permissions" msgid="3146758905824597178">"App permissions"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Don\'t ask again"</string>
- <string name="no_permissions" msgid="3210542466245591574">"No permissions"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Additional permissions"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Permission controller"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"permissions"</string>
+ <string name="cancel" msgid="7279939269964834974">"Cancel"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"App not found"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Deny"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Deny & don’t ask again"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"More info"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Deny anyway"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Always allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Only while using app"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Always"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Deny and don’t ask again"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> disabled"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"all disabled"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"none disabled"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Allow"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Allow all the time"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Allow only while the app is in use"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Apps"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"App permissions"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Permission manager"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Don\'t ask again"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"No permissions"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Additional permissions"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Open app info"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> more</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> more</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"This app was designed for an older version of Android. Denying permission may cause it to no longer function as intended."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"perform an unknown action"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_0">%1$d</xliff:g> of <xliff:g id="COUNT_1">%2$d</xliff:g> apps allowed"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Show system"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Hide system"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
- <string name="no_apps" msgid="1965493419005012569">"No apps"</string>
- <string name="location_settings" msgid="1774875730854491297">"Location Settings"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"If you deny this permission, basic features of your device may no longer function as intended."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Enforced by policy"</string>
- <string name="loading" msgid="7811651799620593731">"Loading…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"All permissions"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Other app capabilities"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Permission request"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Screen overlay detected"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"To change this permission setting, you first have to turn off the screen overlay from Settings > Apps"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Open settings"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Install/Uninstall actions not supported on Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> has been updated. Allow <xliff:g id="APP_NAME_1">%1$s</xliff:g> to access the following?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Choose what to allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> has been updated. Choose what to allow this app to access."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Cancel"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Continue"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"New permissions"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Current permissions"</string>
- <string name="message_staging" msgid="6151794817691100003">"Staging app…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Unknown"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"For your security, your tablet is not allowed to install unknown apps from this source."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"For your security, your TV is not allowed to install unknown apps from this source."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"For your security, your phone is not allowed to install unknown apps from this source."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Your phone and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your phone or loss of data that may result from its use."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Your tablet and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your tablet or loss of data that may result from its use."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Your TV and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your TV or loss of data that may result from its use."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Continue"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Settings"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Installing/uninstalling Wear apps"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"This app was designed for an older version of Android. Denying permission may cause it to no longer function as intended."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"perform an unknown action"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> of <xliff:g id="COUNT_1">%2$d</xliff:g> apps allowed"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Recent usage"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"View permissions dashboard"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Show system"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Hide system"</string>
+ <string name="no_apps" msgid="2377153782338039463">"No apps"</string>
+ <string name="location_settings" msgid="547378321761364906">"Location Settings"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"If you deny this permission, basic features of your device may no longer function as intended."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Enforced by policy"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Background access disabled by policy"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Background access enabled by policy"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Foreground access enabled by policy"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Controlled by admin"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Background access disabled by admin"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Background access enabled by admin"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Foreground access enabled by admin"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Permission set by system"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Always"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Only while using app"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Never"</string>
+ <string name="loading" msgid="323483393167148377">"Loading…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"All permissions"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Other app capabilities"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Permission request"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Screen overlay detected"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"To change this permission setting, you have to turn off the screen overlay first from Settings > Apps"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Open settings"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Install/Uninstall actions not supported on Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Choose what to allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> has been updated. Choose what access to allow this app."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Cancel"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Continue"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"New permissions"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Current permissions"</string>
+ <string name="message_staging" msgid="641286607664721291">"Staging app…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Unknown"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Dashboard"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Last access: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> accesses (<xliff:g id="NUM_5">%3$s</xliff:g> in background)</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 (<xliff:g id="NUM_2">%3$s</xliff:g> in background)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Last access: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> accesses\nDuration: <xliff:g id="TIME_5">%3$s</xliff:g></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\nDuration: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Last access: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> accesses (<xliff:g id="NUM_6">%3$s</xliff:g> in background)\nDuration: <xliff:g id="TIME_7">%3$s</xliff:g></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 (<xliff:g id="NUM_2">%3$s</xliff:g> in background)\nDuration: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Any permission"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Any time"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Last 7 days"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Last 24 hours"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Last 1 hour"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Last 15 minutes"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Last 1 minute"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"No permission usages"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Access at any time"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Access in last 7 days"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Access in last 24 hours"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Access in the last hour"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Access in last 15 minutes"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Access in last 1 minute"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Top permission usage at any time"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Top permission usage in last 7 days"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Top permission usage in last 24 hours"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Top permission usage in last 1 hour"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Top permission usage in last 15 minutes"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Top permission usage in last 1 minute"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Apps"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtered by: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Remove filter"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filter by"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filter by permissions"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Most permissions"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Most accesses"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Recent"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Refresh"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"App permissions usage"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Access: <xliff:g id="NUM">%1$s</xliff:g> times. Last used <xliff:g id="TIME">%2$s</xliff:g> ago."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Allow"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Allow all the time"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Allow only while the app is in use"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Deny"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> permission"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="PERM">%1$s</xliff:g> access for <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> accessed your <xliff:g id="PERM">%2$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g> ago."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> has not accessed your <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"View detailed permissions usage"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Last access: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Never accessed"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Allowed"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Allowed only while in use"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Denied"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"See detailed usage"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> days</item>
+ <item quantity="one">1 day</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> hours</item>
+ <item quantity="one">1 hour</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minutes</item>
+ <item quantity="one">1 minute</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> seconds</item>
+ <item quantity="one">1 second</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Use <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> as your <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Use <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> instead of <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> as your <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Permission reminders"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> has been using your location"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"This app can always access your location. Tap to change."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Only while app is in use"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"No permissions allowed"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"No permissions denied"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"No apps allowed"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"No apps denied"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Open"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Uninstall"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Force stop"</string>
+ <string name="settings" msgid="2884124136779508907">"Settings"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> has full access to your device"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> accessibility services have full access to your device"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> can view your screen, actions and inputs, perform actions and control the display."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"These services can view your screen, actions and inputs, perform actions and control the display."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Default apps"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"No default apps"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Default for work"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"None"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"No apps"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Special app access"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"No special app access"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"No apps"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Assist app"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Browser app"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Phone app"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS app"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Emergency app"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Home app"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Music app"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Gallery app"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Car mode phone app"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Call redirecting app"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Call screening app"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Call companion app"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Car Projection app"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Doesn’t support work profile"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Note: If you restart your device and have a screen lock set, this app can’t start until you unlock your device."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"The Assistant will be able to read information about apps that are in use on your system, including information visible on your screen or accessible within the apps."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Share Debugging Data"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Share detailed debugging data?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> would like to upload debugging information."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Share Debugging Data"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> is requesting to upload a bug report from this device taken on <xliff:g id="DATE">%2$s</xliff:g> at <xliff:g id="TIME">%3$s</xliff:g>. Bug reports include personal information about your device or logged by apps, for example, user names, location data, device identifiers and network information. Only share bug reports with people and apps that you trust with this information. Allow <xliff:g id="APP_NAME_1">%4$s</xliff:g> to upload a bug report?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Allow"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Deny"</string>
</resources>
diff --git a/res/values-en-rXC-television/strings.xml b/res/values-en-rXC-television/strings.xml
index 0f9eeb1..a2ced46 100644
--- a/res/values-en-rXC-television/strings.xml
+++ b/res/values-en-rXC-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Deny and don\'t ask again"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"You can change this later in Settings > Apps"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Show system apps"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"App permissions"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"App permissions"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Additional permissions"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Deny and don\'t ask again"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"You can change this later in Settings > Apps"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Show system apps"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"App permissions"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"App permissions"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Additional permissions"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
</resources>
diff --git a/res/values-en-rXC-watch/strings.xml b/res/values-en-rXC-watch/strings.xml
index 89b2ea2..6449362 100644
--- a/res/values-en-rXC-watch/strings.xml
+++ b/res/values-en-rXC-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Deny, don\'t ask again"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Show system apps"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Can\'t be changed"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Yes"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Cancel"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Deny, don\'t ask again"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Show system apps"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Can\'t be changed"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Yes"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Cancel"</string>
</resources>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index f8c8ae2..ee66992 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Package installer"</string>
- <string name="next" msgid="3057143178373252333">"Next"</string>
- <string name="install" msgid="5896438203900042068">"Install"</string>
- <string name="done" msgid="3889387558374211719">"Done"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Allow this app to:"</string>
- <string name="cancel" msgid="8360346460165114585">"Cancel"</string>
- <string name="unknown" msgid="4742479012767208045">"Unknown"</string>
- <string name="installing" msgid="8613631001631998372">"Installing…"</string>
- <string name="installing_app" msgid="4097935682329028894">"Installing <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"App installed."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Do you want to install this application? It will get access to:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Do you want to install this application? It does not require any special access."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Do you want to install an update to this existing application? Your existing data will not be lost. The updated application will get access to:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Do you want to install an update to this built-in application? Your existing data will not be lost. The updated application will get access to:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Do you want to install an update to this existing application? Your existing data will not be lost. It does not require any special access."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Do you want to install an update to this built-in application? Your existing data will not be lost. It does not require any special access."</string>
- <string name="install_failed" msgid="6579998651498970899">"App not installed."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"The package was blocked from being installed."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"App not installed as package conflicts with an existing package."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"App not installed as app isn\'t compatible with your tablet."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"This app isn\'t compatible with your TV."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"App not installed as app isn\'t compatible with your phone."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"App not installed as package appears to be invalid."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be installed on your tablet."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be installed on your TV."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be installed on your phone."</string>
- <string name="launch" msgid="4826921505917605463">"Open"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Your admin doesn\'t allow installation of apps obtained from unknown sources"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Unknown apps can\'t be installed by this user"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"This user is not allowed to install apps"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Settings"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Manage apps"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Replace app?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"The app you\'re installing will replace another app.\n\nAll your previous user data will be saved."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"This is a system app.\n\nAll your previous user data will be saved."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Out of space"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be installed. Free up some space and try again."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"App not found"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"The app wasn\'t found in the list of installed apps."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Not allowed"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"The current user is not allowed to perform this uninstallation."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Error"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"App could not be uninstalled."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Uninstall app"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Uninstall update"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> is part of the following app:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Do you want to uninstall this app?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Do you want to uninstall this app for "<b>"all"</b>" users? The application and its data will be removed from "<b>"all"</b>" users on the device."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Do you want to uninstall this app for the user <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Replace this app with the factory version? All data will be removed."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Replace this app with the factory version? All data will be removed. This affects all users of this device, including those with work profiles."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Running uninstalls"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Failed uninstalls"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Uninstalling…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Uninstalling <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Uninstall finished."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Uninstalled <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Uninstall unsuccessful."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Uninstalling <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> unsuccessful."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Can\'t uninstall active device admin app"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Can\'t uninstall active device admin app for <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"This app is required for some users or profiles and was uninstalled for others"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"This app is needed for your profile and can\'t be uninstalled."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"This app is required by your device administrator and can\'t be uninstalled."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Manage device admin apps"</string>
- <string name="manage_users" msgid="3125018886835668847">"Manage users"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be uninstalled."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"There was a problem parsing the package."</string>
- <string name="newPerms" msgid="6039428254474104210">"New"</string>
- <string name="allPerms" msgid="1024385515840703981">"All"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privacy"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Device Access"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"This update requires no new permissions."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Do you want to grant the following permissions? It will get access to:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Deny"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"More info"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Deny anyway"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> disabled"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"all disabled"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"none disabled"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Allow"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Apps"</string>
- <string name="app_permissions" msgid="3146758905824597178">"App permissions"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Don\'t ask again"</string>
- <string name="no_permissions" msgid="3210542466245591574">"No permissions"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Additional permissions"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> more</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> more</item>
+ <string name="app_name" msgid="2792757108872430971">"Permission controller"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"permissions"</string>
+ <string name="cancel" msgid="7279939269964834974">"Cancel"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"App not found"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Deny"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Deny & don’t ask again"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"More info"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Deny anyway"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Always allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Only while using app"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Always"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Deny and don’t ask again"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> disabled"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"all disabled"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"none disabled"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Allow"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Allow all the time"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Allow only while the app is in use"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Apps"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"App permissions"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Permission manager"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Don\'t ask again"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"No permissions"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Additional permissions"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Open app info"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> more</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> more</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"This app was designed for an older version of Android. Denying permission may cause it to no longer function as intended."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"perform an unknown action"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_0">%1$d</xliff:g> of <xliff:g id="COUNT_1">%2$d</xliff:g> apps allowed"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Show system"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Hide system"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> permissions"</string>
- <string name="no_apps" msgid="1965493419005012569">"No apps"</string>
- <string name="location_settings" msgid="1774875730854491297">"Location Settings"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"If you deny this permission, basic features of your device may no longer function as intended."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Enforced by policy"</string>
- <string name="loading" msgid="7811651799620593731">"Loading…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"All permissions"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Other app capabilities"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Permission request"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Screen overlay detected"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"To change this permission setting, you first have to turn off the screen overlay from Settings > Apps"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Open settings"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Install/Uninstall actions not supported on Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> has been updated. Allow <xliff:g id="APP_NAME_1">%1$s</xliff:g> to access the following?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Choose what to allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> has been updated. Choose what to allow this app to access."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Cancel"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Continue"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"New permissions"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Current permissions"</string>
- <string name="message_staging" msgid="6151794817691100003">"Staging app…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Unknown"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"For your security, your tablet is not allowed to install unknown apps from this source."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"For your security, your TV is not allowed to install unknown apps from this source."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"For your security, your phone is not allowed to install unknown apps from this source."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Your phone and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your phone or loss of data that may result from its use."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Your tablet and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your tablet or loss of data that may result from its use."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Your TV and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your TV or loss of data that may result from its use."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Continue"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Settings"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Installing/uninstalling wear apps"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"This app was designed for an older version of Android. Denying permission may cause it to no longer function as intended."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"perform an unknown action"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> of <xliff:g id="COUNT_1">%2$d</xliff:g> apps allowed"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Recent usage"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"View Permissions Dashboard"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Show system"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Hide system"</string>
+ <string name="no_apps" msgid="2377153782338039463">"No apps"</string>
+ <string name="location_settings" msgid="547378321761364906">"Location Settings"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"If you deny this permission, basic features of your device may no longer function as intended."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Enforced by policy"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Background access disabled by policy"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Background access enabled by policy"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Foreground access enabled by policy"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Controlled by admin"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Background access disabled by admin"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Background access enabled by admin"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Foreground access enabled by admin"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Permission set by system"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Always"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Only while using app"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Never"</string>
+ <string name="loading" msgid="323483393167148377">"Loading…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"All permissions"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Other app capabilities"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Permission request"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Screen overlay detected"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"To change this permission setting, you first have to turn off the screen overlay from Settings > Apps"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Open settings"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Install/Uninstall actions not supported on Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Choose what to allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> has been updated. Choose what to allow this app to access."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Cancel"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Continue"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"New permissions"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Current permissions"</string>
+ <string name="message_staging" msgid="641286607664721291">"Staging app…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Unknown"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Dashboard"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Last access: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> accesses (<xliff:g id="NUM_5">%3$s</xliff:g> in background)</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 (<xliff:g id="NUM_2">%3$s</xliff:g> in background)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Last access: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> accesses\nDuration: <xliff:g id="TIME_5">%3$s</xliff:g></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\nDuration: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Last access: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> accesses (<xliff:g id="NUM_6">%3$s</xliff:g> in background)\nDuration: <xliff:g id="TIME_7">%3$s</xliff:g></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 (<xliff:g id="NUM_2">%3$s</xliff:g> in background)\nDuration: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Any permission"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Any time"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Last 7 days"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Last 24 hours"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Last 1 hour"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Last 15 minutes"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Last 1 minute"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"No permission usages"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Access at any time"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Access in last 7 days"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Access in last 24 hours"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Access in the last hour"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Access in last 15 minutes"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Access in last 1 minute"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Top permission usage at any time"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Top permission usage in last 7 days"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Top permission usage in last 24 hours"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Top permission usage in last 1 hour"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Top permission usage in last 15 minutes"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Top permission usage in last 1 minute"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Apps"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtered by: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Remove filter"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filter by"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filter by permissions"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Most permissions"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Most accesses"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Recent"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Refresh"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"App permissions usage"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Access: <xliff:g id="NUM">%1$s</xliff:g> times. Last used <xliff:g id="TIME">%2$s</xliff:g> ago."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Allow"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Allow all the time"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Allow only while the app is in use"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Deny"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> permission"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="PERM">%1$s</xliff:g> access for <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> accessed your <xliff:g id="PERM">%2$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g> ago."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> has not accessed your <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"View detailed permissions usage"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Last access: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Never accessed"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Allowed"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Allowed only while in use"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Denied"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"See detailed usage"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> days</item>
+ <item quantity="one">1 day</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> hours</item>
+ <item quantity="one">1 hour</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minutes</item>
+ <item quantity="one">1 minute</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> seconds</item>
+ <item quantity="one">1 second</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Use <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> as your <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Use <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> instead of <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> as your <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Permission reminders"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> has been using your location"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"This app can always access your location. Tap to change."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Only while app is in use"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"No permissions allowed"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"No permissions denied"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"No apps allowed"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"No apps denied"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Open"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Uninstall"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Force stop"</string>
+ <string name="settings" msgid="2884124136779508907">"Settings"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> has full access to your device"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> accessibility services have full access to your device"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> can view your screen, actions, and inputs, perform actions, and control the display."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"These services can view your screen, actions, and inputs, perform actions, and control the display."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Default apps"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"No default apps"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Default for work"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"None"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"No apps"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Special app access"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"No special app access"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"No apps"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Assist app"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Browser app"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Phone app"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS app"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Emergency app"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Home app"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Music app"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Gallery app"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Car mode phone app"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Call redirecting app"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Call screening app"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Call companion app"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Car Projection app"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Doesn’t support work profile"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Note: If you restart your device and have a screen lock set, this app can’t start until you unlock your device."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"The assistant will be able to read information about apps in use on your system, including information visible on your screen or accessible within the apps."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Share Debugging Data"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Share detailed debugging data?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> would like to upload debugging information."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Share Debugging Data"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> is requesting to upload a bug report from this device taken on <xliff:g id="DATE">%2$s</xliff:g> at <xliff:g id="TIME">%3$s</xliff:g>. Bug reports include personal information about your device or logged by apps, for example, user names, location data, device identifiers, and network information. Only share bug reports with people and apps you trust with this information. Allow <xliff:g id="APP_NAME_1">%4$s</xliff:g> to upload a bug report?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Allow"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Deny"</string>
</resources>
diff --git a/res/values-es-rUS-television/strings.xml b/res/values-es-rUS-television/strings.xml
index f65681c..8132634 100644
--- a/res/values-es-rUS-television/strings.xml
+++ b/res/values-es-rUS-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Denegar el permiso y no volver a preguntar"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Puedes cambiar esta opción más tarde en Configuración > Aplicaciones"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Mostrar aplicaciones del sistema"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Permisos de apps"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Permisos de apps"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Permisos de <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Permisos adicionales"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Permisos de <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Denegar el permiso y no volver a preguntar"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Puedes cambiar esta opción más tarde en Configuración > Apps"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Mostrar apps del sistema"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Permisos de apps"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Permisos de apps"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Permisos de <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Permisos adicionales"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Permisos de <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-es-rUS-watch/strings.xml b/res/values-es-rUS-watch/strings.xml
index 145b736..1183955 100644
--- a/res/values-es-rUS-watch/strings.xml
+++ b/res/values-es-rUS-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Denegar y no preguntar más"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Mostrar aplicaciones del sistema"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Inalterable"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Sí"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Cancelar"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Denegar y no preguntar"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Mostrar apps del sistema"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"No puedes cambiar"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Sí"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Cancelar"</string>
</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 611bed5..b4a273a 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Programa de instalación del paquete"</string>
- <string name="next" msgid="3057143178373252333">"Siguiente"</string>
- <string name="install" msgid="5896438203900042068">"Instalar"</string>
- <string name="done" msgid="3889387558374211719">"Finalizado"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Permitir que esta aplicación:"</string>
- <string name="cancel" msgid="8360346460165114585">"Cancelar"</string>
- <string name="unknown" msgid="4742479012767208045">"Desconocido"</string>
- <string name="installing" msgid="8613631001631998372">"Instalando…"</string>
- <string name="installing_app" msgid="4097935682329028894">"Instalando <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Se instaló la aplicación."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"¿Deseas instalar la aplicación? Esta tendrá acceso a lo siguiente:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"¿Deseas instalar esta aplicación? No requiere accesos especiales."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"¿Deseas instalar una actualización para esta aplicación? Tus datos no se perderán. La aplicación actualizada tendrá acceso a lo siguiente:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"¿Deseas instalar una actualización para esta aplicación integrada? Tus datos no se perderán. La aplicación actualizada tendrá acceso a lo siguiente:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"¿Quieres instalar una actualización de esta aplicación existente? Los datos existentes no se perderán. No se requiere ningún acceso especial."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"¿Quieres instalar una actualización de esta aplicación integrada? Los datos existentes no se perderán. No se requiere ningún acceso especial."</string>
- <string name="install_failed" msgid="6579998651498970899">"No se instaló la aplicación."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Se bloqueó el paquete para impedir la instalación."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"No se instaló la app ya que está en conflicto con un paquete existente."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"No se instaló la app porque no es compatible con tu tablet."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Esta app no es compatible con la TV."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"No se instaló la app porque no es compatible con tu teléfono."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"No se instaló la app porque parece que el paquete no es válido."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"No se pudo instalar <xliff:g id="APP_NAME">%1$s</xliff:g> en tu tablet."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"No se pudo instalar <xliff:g id="APP_NAME">%1$s</xliff:g> en la TV."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"No se pudo instalar <xliff:g id="APP_NAME">%1$s</xliff:g> en tu dispositivo."</string>
- <string name="launch" msgid="4826921505917605463">"Abrir"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Tu administrador no permite la instalación de apps que se obtuvieron de fuentes desconocidas"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Este usuario no puede instalar apps desconocidas"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Este usuario no puede instalar apps"</string>
- <string name="ok" msgid="3468756155452870475">"Aceptar"</string>
- <string name="settings" msgid="6743583734099755409">"Configuración"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Administrar aplicaciones"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"¿Deseas reemplazar la aplicación?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"La aplicación que estás instalando reemplazará a otra aplicación.\n\nSe guardarán todos tus datos de usuario anteriores."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Esta es una aplicación del sistema.\n\nSe guardarán todos tus datos de usuario anteriores."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Sin espacio"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"No se pudo instalar <xliff:g id="APP_NAME">%1$s</xliff:g>. Libera espacio y vuelve a intentarlo."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"Aceptar"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"No se encontró la aplicación."</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"La aplicación no se encontró en la lista de aplicaciones instaladas."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"No tiene permiso"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"El usuario actual no tiene permiso para llevar a cabo esta desinstalación."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Error"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"No se pudo desinstalar la app."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Desinstalar la aplicación"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Desinstalar la actualización"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> es parte de la siguiente aplicación:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"¿Deseas desinstalar esta aplicación?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"¿Quieres desinstalar esta aplicación para "<b>"todos"</b>" los usuarios? La aplicación y sus datos se eliminarán de "<b>"todos"</b>" los usuarios del dispositivo."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"¿Deseas desinstalar esta aplicación para el usuario <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"¿Deseas reemplazar esta app con la versión de fábrica? Se quitarán todos los datos."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"¿Deseas reemplazar esta app con la versión de fábrica? Se quitarán todos los datos. Esta acción afectará a todos los usuarios de este dispositivo, incluidos los que poseen perfiles de trabajo."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Desinstalaciones activas"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Desinstalaciones con errores"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Desinstalando…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Desinstalando <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"La desinstalación finalizó."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Se desinstaló <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Desinstalación incorrecta"</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"No se pudo desinstalar <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"No se puede desinstalar la app de administración activa del dispositivo"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"No se puede desinstalar la app de administración activa del dispositivo para <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"App necesaria en algunos usuarios o perfiles, y desinstalada en otros"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Esta app es necesaria en tu perfil y no la puedes desinstalar."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"El admin. del dispositivo necesita esta aplicación y no se puede desinstalar."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Administrar apps del dispositivo del administrador"</string>
- <string name="manage_users" msgid="3125018886835668847">"Administrar usuarios"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"No se pudo desinstalar <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Se produjo un error durante el análisis del paquete."</string>
- <string name="newPerms" msgid="6039428254474104210">"Nuevo"</string>
- <string name="allPerms" msgid="1024385515840703981">"Todo"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privacidad"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Acceso al dispositivo"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Esta actualización no requiere permisos nuevos."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"¿Quieres conceder los permisos indicados a continuación? Esto dará acceso a:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Rechazar"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Más información"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Denegar de todos modos"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"¿Quieres que la app de <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> realice la siguiente acción: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> inhabilitados"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"todos inhabilitados"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"ninguno inhabilitado"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Permitir"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Aplicaciones"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Permisos de apps"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"No volver a preguntar"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Sin permisos"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Permisos adicionales"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Controlador de permisos"</string>
+ <string name="ok" msgid="4417794827535157922">"Aceptar"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"permisos"</string>
+ <string name="cancel" msgid="7279939269964834974">"Cancelar"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"No se encontró la app"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Denegar"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Denegar y no volver a preguntar"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Más información"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Denegar igual"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"¿Permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> realice la siguiente acción: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"¿Permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> pueda <xliff:g id="ACTION">%2$s</xliff:g> siempre?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Solo cuando se usa la app"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Siempre"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Denegar el permiso y no volver a preguntar"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> inhabilitados"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"todos inhabilitados"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"ninguno inhabilitado"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Otorgar"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Permitir todo el tiempo"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Permitir solo cuando la app está en uso"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Apps"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Permisos de la app"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Administrador de permisos"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"No volver a preguntar"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Sin permisos"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Permisos adicionales"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Abrir información de la app"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> más</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> más</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Esta aplicación se diseñó para una versión de Android anterior. Si deniegas el permiso, es posible que deje de funcionar de la forma prevista."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"realizar una acción desconocida"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"Se otorgó el permiso a <xliff:g id="COUNT_0">%1$d</xliff:g> de <xliff:g id="COUNT_1">%2$d</xliff:g> aplicaciones."</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Mostrar sistema"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Ocultar sistema"</string>
- <string name="permission_title" msgid="6495415273398916381">"Permisos de <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Ninguna aplicación"</string>
- <string name="location_settings" msgid="1774875730854491297">"Configuración de la ubicación"</string>
- <string name="location_warning" msgid="8778701356292735971">"La aplicación <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="7103819124542305179">"Si no concedes este permiso, es posible que algunas funciones básicas del dispositivo dejen de funcionar correctamente."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Se aplica en función de la política"</string>
- <string name="loading" msgid="7811651799620593731">"Cargando…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Todos los permisos"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Otras funciones de la aplicación"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Solicitud de permiso"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Se detectó una superposición de pantalla"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Para cambiar esta configuración de permisos, primero debes desactivar la superposición de pantalla en Configuración > Aplicaciones"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Abrir configuración"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Wear no admite las acciones de instalación y desinstalación"</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"Se actualizó <xliff:g id="APP_NAME_0">%1$s</xliff:g>. ¿Deseas otorgar los siguientes permisos de acceso a <xliff:g id="APP_NAME_1">%1$s</xliff:g>?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Selecciona los permisos de acceso para <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"Se actualizó <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>. Selecciona los permisos de acceso para esta app."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Cancelar"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Continuar"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Permisos nuevos"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Permisos actuales"</string>
- <string name="message_staging" msgid="6151794817691100003">"Preparando app…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Desconocido"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Por tu seguridad, tu tablet no tiene permitido instalar apps desconocidas de esta fuente."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Por tu seguridad, tu TV no tiene permitido instalar apps desconocidas de esta fuente."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Por tu seguridad, tu teléfono no tiene permitido instalar apps desconocidas de esta fuente."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Tu teléfono y tus datos personales son más vulnerables a los ataques de apps desconocidas. Si instalas esta app, serás responsable de los daños que sufra tu teléfono y la pérdida de datos que pueda ocasionar su uso."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Tu tablet y tus datos personales son más vulnerables a los ataques de apps desconocidas. Si instalas esta app, serás responsable de los daños que sufra tu tablet y la pérdida de datos que pueda ocasionar su uso."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Tu TV y tus datos personales son más vulnerables a los ataques de apps desconocidas. Si instalas esta app, serás responsable de los daños que sufra tu TV y la pérdida de datos que pueda ocasionar su uso."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Continuar"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Configuración"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Instalando/desinstalando apps para Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Esta app se diseñó para una versión de Android anterior. Si deniegas el permiso, es posible que deje de funcionar correctamente."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"realizar una acción desconocida"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"Se otorgó el permiso a <xliff:g id="COUNT_0">%1$d</xliff:g> de <xliff:g id="COUNT_1">%2$d</xliff:g> apps"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Uso reciente"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Ver panel de permisos"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Mostrar sistema"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Ocultar sistema"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Ninguna app"</string>
+ <string name="location_settings" msgid="547378321761364906">"Configuración de la ubicación"</string>
+ <string name="location_warning" msgid="4687406043150343369">"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="6868290533389195836">"Si no otorgas este permiso, es posible que algunas funciones básicas del dispositivo dejen de funcionar correctamente."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Se aplica en función de la política"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Acceso en segundo plano inhabilitado por la política"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Acceso en segundo plano habilitado por la política"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Acceso en primer plano habilitado por la política"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Controlado por el administrador"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"El administrador inhabilitó el acceso en segundo plano"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"El administrador habilitó el acceso en segundo plano"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"El administrador habilitó el acceso en primer plano"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Permiso establecido por el sistema"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Siempre"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Solo cuando se usa la app"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Nunca"</string>
+ <string name="loading" msgid="323483393167148377">"Cargando…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Todos los permisos"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Otras funciones de la app"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Solicitud de permiso"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Se detectó una pantalla superpuesta"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Para cambiar esta configuración de permisos, primero debes desactivar la pantalla superpuesta en Configuración > Apps"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Abrir configuración"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Wear no admite las acciones de instalación y desinstalación"</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Selecciona los permisos de acceso para <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"Se actualizó <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>. Selecciona los permisos de acceso para esta app."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Cancelar"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Continuar"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Permisos nuevos"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Permisos actuales"</string>
+ <string name="message_staging" msgid="641286607664721291">"Preparando app…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Desconocida"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Panel"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Último acceso: <xliff:g id="TIME_3">%1$s</xliff:g>\n <xliff:g id="NUM_4">%2$s</xliff:g> accesos (<xliff:g id="NUM_5">%3$s</xliff:g> en segundo plano)</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 (<xliff:g id="NUM_2">%3$s</xliff:g> en segundo plano)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Último acceso: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> accesos\nDuración: <xliff:g id="TIME_5">%3$s</xliff:g></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\nDuración: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Último acceso: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> accesos (<xliff:g id="NUM_6">%3$s</xliff:g> en segundo plano)\nDuración: <xliff:g id="TIME_7">%3$s</xliff:g></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 (<xliff:g id="NUM_2">%3$s</xliff:g> en segundo plano)\nDuración: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Cualquier permiso"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Cualquier momento"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Últimos 7 días"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Últimas 24 horas"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Última hora"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Últimos 15 minutos"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Último minuto"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Ningún uso de permisos"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Acceso en cualquier momento"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Acceso en los últimos 7 días"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Acceso en las últimas 24 horas"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Acceso en la última hora"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Acceso en los últimos 15 minutos"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Acceso en el último minuto"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Permisos más usados a cualquier hora"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Permisos más usados en los últimos 7 días"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Permisos más usados en las últimas 24 horas"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Permisos más usados en la última hora"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Permisos más usados en los últimos 15 minutos"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Permisos más usados en el último minuto"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Apps"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtrado por: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Quitar filtro"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtrar por"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtrar por permisos"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Mayor cantidad de permisos"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Mayor cantidad de accesos"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Recientes"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Actualizar"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Uso de permisos de la app"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Acceso: <xliff:g id="NUM">%1$s</xliff:g> veces Último uso: hace <xliff:g id="TIME">%2$s</xliff:g>"</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Permitir"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Permitir todo el tiempo"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Permitir solo cuando la app está en uso"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Rechazar"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Permiso de <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Acceso de <xliff:g id="PERM">%1$s</xliff:g> a <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> accedió a tu <xliff:g id="PERM">%2$s</xliff:g> hace <xliff:g id="TIME">%3$s</xliff:g>."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> no accedió a <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Ver uso de permisos detallado"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Último acceso: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"No accedió nunca"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Permitidos"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Permitidos solo durante el uso"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Rechazados"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Ver uso detallado"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> días</item>
+ <item quantity="one">1 día</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> horas</item>
+ <item quantity="one">1 hora</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minutos</item>
+ <item quantity="one">1 minuto</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> segundos</item>
+ <item quantity="one">1 segundo</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"¿Quieres usar <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> como <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"¿Quieres usar <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> en lugar de <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> como <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Recordatorios de permisos"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> ha estado usando tu ubicación"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Esta app puede acceder a tu ubicación en todo momento. Presiona para cambiar el permiso."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Solo cuando la app está en uso"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"No se otorgó ningún permiso"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"No se rechazó ningún permiso"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"No se le otorgó permiso a ninguna app"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"A ninguna app se le rechazó el permiso"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Abrir"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Desinstalar"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Forzar detención"</string>
+ <string name="settings" msgid="2884124136779508907">"Configuración"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> tiene acceso completo a tu dispositivo"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> servicios de accesibilidad tienen acceso completo a tu dispositivo"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> puede ver tu pantalla, lo que haces y lo que introduces, así como realizar acciones y controlar la pantalla."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Estos servicios pueden ver tu pantalla, lo que haces y lo que introduces, así como realizar acciones y controlar la pantalla."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Apps predeterminadas"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Sin apps predeterminadas"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Predeterminadas de trabajo"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Ninguna"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Sin apps"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Acceso especial a apps"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"No hay acceso especial a apps"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"No hay apps"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Aplicación de asistencia"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"App de navegador"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"App de teléfono"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"app de SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"App de emergencia"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"App de inicio"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"App de Música"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"App de Galería"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"App de teléfono en modo auto"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"App para desviar llamadas"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"App de filtro de llamadas"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"App de llamadas complementaria"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"App de proyección del auto"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"No admite el perfil de trabajo"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Nota: Si reinicias el dispositivo y tienes configurado un bloqueo de pantalla, no podrá iniciarse la app hasta que lo desbloquees."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"El Asistente podrá leer información sobre las apps del sistema en uso, incluidos los datos visibles en la pantalla o a los que se puede acceder mediante apps."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Compartir datos de depuración"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"¿Compartir datos detallados de depuración?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> quiere subir información de depuración."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Compartir datos de depuración"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> solicita subir un informe de errores de este dispositivo generado el <xliff:g id="DATE">%2$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g>. Los informes de errores pueden incluir información personal sobre tu dispositivo o registrada por apps, como nombres de usuario, datos de ubicación, identificadores del dispositivo y datos de red. Solo debes compartir los informes de errores con personas y apps de confianza. ¿Permitir que <xliff:g id="APP_NAME_1">%4$s</xliff:g> suba un informe de errores?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Permitir"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Denegar"</string>
</resources>
diff --git a/res/values-es-television/strings.xml b/res/values-es-television/strings.xml
index 6a12063..8d89927 100644
--- a/res/values-es-television/strings.xml
+++ b/res/values-es-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Denegar y no volver a preguntar"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Puedes cambiar esta opción más tarde en Ajustes > Aplicaciones."</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Mostrar aplicaciones del sistema"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Permisos de aplicaciones"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Permisos de aplicaciones"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Permisos: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Permisos adicionales"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Permisos: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Denegar y no volver a preguntar"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Puedes cambiar esta opción más tarde en Ajustes > Aplicaciones"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Mostrar aplicaciones del sistema"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Permisos de aplicaciones"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Permisos de aplicaciones"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Permisos: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Permisos adicionales"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Permisos: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-es-watch/strings.xml b/res/values-es-watch/strings.xml
index b3c4ff1..24701cd 100644
--- a/res/values-es-watch/strings.xml
+++ b/res/values-es-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Denegar y no preguntar más"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Mostrar aplicaciones del sistema"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"No se puede cambiar"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Sí"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Cancelar"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Denegar y no preguntar más"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Mostrar aplicaciones del sistema"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"No cambiar"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Sí"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Cancelar"</string>
</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 5f87673..e8d9a63 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,286 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Instalador de paquetes"</string>
- <string name="next" msgid="3057143178373252333">"Siguiente"</string>
- <string name="install" msgid="5896438203900042068">"Instalar"</string>
- <string name="done" msgid="3889387558374211719">"Listo"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Permitir que esta aplicación:"</string>
- <string name="cancel" msgid="8360346460165114585">"Cancelar"</string>
- <string name="unknown" msgid="4742479012767208045">"Desconocida"</string>
- <string name="installing" msgid="8613631001631998372">"Instalando…"</string>
- <string name="installing_app" msgid="4097935682329028894">"Instalando <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Aplicación instalada"</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"¿Quieres instalar esta aplicación? Tendrá los siguientes permisos:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"¿Quieres instalar esta aplicación? No requiere accesos especiales."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"¿Quieres instalar una actualización de la aplicación? Tus datos no se perderán. La aplicación actualizada podrá acceder a:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"¿Quieres instalar una actualización de esta aplicación integrada? Tus datos no se perderán. La aplicación actualizada podrá acceder a:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"¿Quieres instalar una actualización de esta aplicación? Tus datos no se perderán. No requiere ningún acceso especial."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"¿Quieres instalar una actualización de esta aplicación integrada? Tus datos no se perderán. No requiere ningún acceso especial."</string>
- <string name="install_failed" msgid="6579998651498970899">"Aplicación no instalada"</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Se ha bloqueado la instalación del paquete."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"La aplicación no se ha instalado debido a un conflicto con un paquete actual."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"La aplicación no se ha instalado porque no es compatible con tu tablet."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Esta aplicación no es compatible con tu TV."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"La aplicación no se ha instalado porque no es compatible con tu teléfono."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"La aplicación no se ha instalado porque parece que el paquete no es válido."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"No se ha podido instalar <xliff:g id="APP_NAME">%1$s</xliff:g> en el tablet."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> no se ha podido instalar en tu TV."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"No se ha podido instalar <xliff:g id="APP_NAME">%1$s</xliff:g> en el teléfono."</string>
- <string name="launch" msgid="4826921505917605463">"Abrir"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"El administrador no permite instalar aplicaciones de fuentes desconocidas"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Este usuario no puede instalar aplicaciones desconocidas"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Este usuario no tiene permiso para instalar aplicaciones"</string>
- <string name="ok" msgid="3468756155452870475">"Aceptar"</string>
- <string name="settings" msgid="6743583734099755409">"Ajustes"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Administrar aplicaciones"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"¿Sustituir aplicación?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"La aplicación que estás instalando sustituirá a otra aplicación.\n\nSe guardarán todos los datos de usuario anteriores."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Es una aplicación del sistema.\n\nSe guardarán todos los datos de usuario anteriores."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Sin espacio"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"No se ha podido instalar la aplicación <xliff:g id="APP_NAME">%1$s</xliff:g>. Libera espacio y vuelve a intentarlo."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"Aceptar"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Aplicación no encontrada"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"No se ha encontrado la aplicación en la lista de aplicaciones instaladas."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"No permitido"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"El usuario actual no puede iniciar el proceso de desinstalación."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Error"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"No se ha podido desinstalar la aplicación."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Desinstalar aplicación"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Desinstalar actualización"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> forma parte de esta aplicación:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"¿Quieres desinstalar esta aplicación?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"¿Quieres desinstalar esta aplicación para "<b>"todos"</b>" los usuarios? La aplicación y sus datos se eliminarán de "<b>"todos"</b>" los usuarios del dispositivo."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"¿Quieres desinstalar esta aplicación para el usuario <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"¿Quieres sustituir esta aplicación con la versión de fábrica? Ten en cuenta que se eliminarán todos los datos."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"¿Quieres sustituir esta aplicación con la versión de fábrica? Ten en cuenta que se eliminarán todos los datos. Esto afecta a todos los usuarios del dispositivo, incluidos los que tienen perfiles de trabajo."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Desinstalaciones en curso"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Desinstalaciones fallidas"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Desinstalando..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Desinstalando <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Desinstalación completada"</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Se ha desinstalado <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Desinstalación correcta"</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"No se ha podido desinstalar <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"No se puede desinstalar la aplicación de administración de dispositivos activa"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"No se ha podido desinstalar la aplicación de administración de dispositivos activa de <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Aplicación necesaria para algunos usuarios o perfiles y desinstalada en otros casos"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Esta aplicación es necesaria para tu perfil y no se puede desinstalar."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Esta aplicación es necesaria para el administrador de tu dispositivo y no se puede desinstalar."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Gestionar aplicaciones de admón. de dispositivos"</string>
- <string name="manage_users" msgid="3125018886835668847">"Administrar usuarios"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"No se ha podido desinstalar <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Se ha producido un error al analizar el paquete."</string>
- <string name="newPerms" msgid="6039428254474104210">"Nuevo"</string>
- <string name="allPerms" msgid="1024385515840703981">"Todos"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privacidad"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Acceso al dispositivo"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Esta actualización no requiere permisos nuevos."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"¿Quieres conceder los siguientes permisos? Podrá acceder a:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Denegar"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Más información"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Denegar de todos modos"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"¿Permitir a <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"Inhabilitados: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"todos inhabilitados"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"ninguno inhabilitado"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Permitir"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Aplicaciones"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Permisos de aplicaciones"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"No volver a preguntar"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Sin permisos"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Permisos adicionales"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Controlador de permisos"</string>
+ <string name="ok" msgid="4417794827535157922">"Aceptar"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"permisos"</string>
+ <string name="cancel" msgid="7279939269964834974">"Cancelar"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Aplicación no encontrada"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Denegar"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Denegar y no volver a preguntar"</string>
+ <!-- no translation found for grant_dialog_button_deny_background (5378693207810841555) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_deny_background_and_dont_ask_again (1032019626928637454) -->
+ <skip />
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Más información"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Denegar"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"¿Permitir a <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"¿Quieres permitir siempre a <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Solo mientras se usa la aplicación"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Siempre"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Denegar y no volver a preguntar"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"Inhabilitados: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"todos inhabilitados"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"ninguno inhabilitado"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Permitir"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Permitir siempre"</string>
+ <!-- no translation found for grant_dialog_button_allow_foreground (8090382319222429427) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_allow_background (3190568549032350790) -->
+ <skip />
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Aplicaciones"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Permisos de aplicaciones"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Gestor de permisos"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"No volver a preguntar"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Sin permisos"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Permisos adicionales"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Abrir la información de la aplicación"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> más</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> más</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Esta aplicación está diseñada para una versión anterior de Android. Si se le deniega el permiso, puede dejar de funcionar de la forma prevista."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"realizar una acción desconocida"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"Mostrar aplicaciones del sistema"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Ocultar aplicaciones del sistema"</string>
- <string name="permission_title" msgid="6495415273398916381">"Permisos: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"No hay aplicaciones"</string>
- <string name="location_settings" msgid="1774875730854491297">"Ajustes de ubicación"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Si rechazas este permiso, es posible que funciones básicas de tu dispositivo dejen de funcionar correctamente."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Aplicado por política"</string>
- <string name="loading" msgid="7811651799620593731">"Cargando..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"Todos los permisos"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Otras funciones de la aplicación"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Solicitud de permiso"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Superposición de pantalla detectada"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Para cambiar la configuración de este permiso, desactiva la superposición de pantalla en Ajustes > Aplicaciones"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Abrir ajustes"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Las acciones de instalar y desinstalar no pueden realizarse en Wear"</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> se ha actualizado. ¿Quieres conceder a <xliff:g id="APP_NAME_1">%1$s</xliff:g> los siguientes permisos de acceso?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Elige los permisos de acceso que quieres conceder a <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> se ha actualizado. Elige los permisos de acceso que quieres conceder a esta aplicación."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Cancelar"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Continuar"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Permisos nuevos"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Permisos actuales"</string>
- <string name="message_staging" msgid="6151794817691100003">"Preparando aplicación…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Desconocido"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Por motivos de seguridad, tu tablet no puede instalar aplicaciones desconocidas de esta fuente."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Por motivos de seguridad, tu TV no puede instalar aplicaciones desconocidas de esta fuente."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Por motivos de seguridad, tu teléfono no puede instalar aplicaciones desconocidas de esta fuente."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Tu teléfono y tus datos personales son más vulnerables a los ataques de aplicaciones desconocidas. Al instalar esta aplicación, aceptas ser responsable de cualquier daño que sufra tu teléfono o la pérdida de datos que se pueda derivar de su uso."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Tu tablet y tus datos personales son más vulnerables a los ataques de aplicaciones desconocidas. Al instalar esta aplicación, aceptas ser responsable de cualquier daño que sufra tu tablet o la pérdida de datos que se pueda derivar de su uso."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Tu TV y tus datos personales son más vulnerables a los ataques de aplicaciones desconocidas. Al instalar esta aplicación, aceptas ser responsable de cualquier daño que sufra tu TV o la pérdida de datos que se pueda derivar de su uso."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Continuar"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Ajustes"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Instalando/desinstalando apps para Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Esta aplicación está diseñada para una versión anterior de Android. Si se le deniega el permiso, puede dejar de funcionar de la forma prevista."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"realizar una acción desconocida"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<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="7623002570829860709">"Mostrar aplicaciones del sistema"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Ocultar aplicaciones del sistema"</string>
+ <string name="no_apps" msgid="2377153782338039463">"No hay aplicaciones"</string>
+ <string name="location_settings" msgid="547378321761364906">"Ajustes de ubicación"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Si rechazas este permiso, es posible que funciones básicas de tu dispositivo dejen de funcionar correctamente."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Aplicado por política"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Acceso en segundo plano inhabilitado por política"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Acceso en segundo plano habilitado por política"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Acceso en primer plano habilitado por política"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Controlado por el administrador"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"El administrador ha inhabilitado el acceso en segundo plano"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"El administrador ha habilitado el acceso en segundo plano"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"El administrador ha habilitado el acceso en primer plano"</string>
+ <!-- no translation found for permission_summary_enabled_system_fixed (5463084832974856683) -->
+ <skip />
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <!-- no translation found for permission_access_always (5419580764084361573) -->
+ <skip />
+ <!-- no translation found for permission_access_only_foreground (2857031150724321567) -->
+ <skip />
+ <!-- no translation found for permission_access_never (425385910378172045) -->
+ <skip />
+ <string name="loading" msgid="323483393167148377">"Cargando…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Todos los permisos"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Otras funciones de la aplicación"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Solicitud de permiso"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Superposición de pantalla detectada"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Para cambiar la configuración de este permiso, desactiva la superposición de pantalla en Ajustes > Aplicaciones"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Abrir ajustes"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Las acciones de instalar y desinstalar no pueden realizarse en Wear"</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Elige los permisos de acceso que quieres conceder a <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> se ha actualizado. Elige los permisos de acceso que quieres conceder a esta aplicación."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Cancelar"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Continuar"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Permisos nuevos"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Permisos actuales"</string>
+ <string name="message_staging" msgid="641286607664721291">"Preparando aplicación…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Desconocida"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Panel"</string>
+ <!-- no translation found for permission_usage_summary_foreground (3203419920107457274) -->
+ <skip />
+ <!-- no translation found for permission_usage_summary_background (5719598203265078254) -->
+ <skip />
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Cualquier permiso"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Cualquier fecha"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Últimos 7 días"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Últimas 24 horas"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Última hora"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Últimos 15 minutos"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Último minuto"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"No se han usado los permisos"</string>
+ <!-- no translation found for permission_usage_list_title_any_time (5641676869304328239) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_7_days (2972289322203714509) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_day (6298662604046093174) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_hour (7224982939487774388) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_15_minutes (49045607172810502) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_minute (7716966405942817635) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_any_time (862654449303514044) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_7_days (5393381637937213483) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_day (7202567658282481259) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_hour (4672313408976666479) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_15_minutes (1776918144361651860) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_minute (236300476767668315) -->
+ <skip />
+ <!-- no translation found for app_permission_usage_bar_label (7261634017833698654) -->
+ <!-- no translation found for permission_usage_view_details (4728049344017619500) -->
+ <skip />
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtrados por: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Quitar filtro"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtrar por"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtrar por permisos"</string>
+ <!-- no translation found for filter_by_time (1763143592970195407) -->
+ <skip />
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Mayor número de permisos"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Mayor número de accesos"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Recientes"</string>
+ <!-- no translation found for sort_by_app (1912228966803416485) -->
+ <skip />
+ <!-- no translation found for sort_by_time (8280378662234104410) -->
+ <skip />
+ <!-- no translation found for item_separator (8266062815210378175) -->
+ <skip />
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Actualizar"</string>
+ <!-- no translation found for permission_usage_permission_filter_subtitle (5539392196389332769) -->
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Uso permisos de la aplicación"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Acceso: <xliff:g id="NUM">%1$s</xliff:g> veces. Último uso: hace <xliff:g id="TIME">%2$s</xliff:g>."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Permitir"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Permitir siempre"</string>
+ <!-- no translation found for app_permission_button_allow_foreground (2303741829613210541) -->
+ <skip />
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Denegar"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Permiso de <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <!-- no translation found for app_permission_header (228974007660007656) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_usage_summary (1034436308858219976) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_no_usages (4444374134047275841) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_app_permissions_link (8033278634020892918) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_permission_apps_link (8759141212929298774) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_generic (5479202003136667039) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_activity_recognition (2022880340017289990) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_calendar (2846128908236787586) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_call_log (2429916962093948340) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_camera (6699611334403400091) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_contacts (5169995707720233126) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_location (687820658574645201) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_aural (2102206495149326019) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_visual (3105938942794669520) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_microphone (2300290217308759293) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_phone (3773977614654088578) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sensors (6733606479604624853) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sms (8850213022386508528) -->
+ <skip />
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Último acceso: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"No se ha accedido nunca"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Permitidos"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Solo se permite mientras se usa"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Denegados"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Ver uso detallado"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> días</item>
+ <item quantity="one">1 día</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> horas</item>
+ <item quantity="one">1 hora</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minutos</item>
+ <item quantity="one">1 minuto</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> segundos</item>
+ <item quantity="one">1 segundo</item>
+ </plurals>
+ <string name="permission_reminders" msgid="8040710767178843151">"Recordatorios de permisos"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> ha estado usando tu ubicación"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Esta aplicación puede acceder siempre a tu ubicación. Toca para cambiarlo."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Solo mientras la aplicación está en uso"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"No se ha concedido ningún permiso"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"No se ha denegado ningún permiso"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Ninguna aplicación tiene permiso"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"A ninguna aplicación se le ha denegado el permiso"</string>
+ <string name="settings" msgid="2884124136779508907">"Ajustes"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> tiene acceso completo a tu dispositivo"</string>
+ <!-- no translation found for accessibility_service_dialog_title_multiple (8129325613496173909) -->
+ <skip />
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> puede ver tu pantalla, lo que haces y lo que introduces; realizar acciones; y controlar la pantalla."</string>
+ <!-- no translation found for accessibility_service_dialog_bottom_text_multiple (1387803460488775887) -->
+ <skip />
+ <!-- no translation found for request_role_title (3611734134669430568) -->
+ <skip />
+ <!-- no translation found for request_role_current_default (7512045433655289638) -->
+ <skip />
+ <!-- no translation found for request_role_set_as_default (5706081295230541240) -->
+ <skip />
+ <!-- no translation found for default_app_search_keyword (6938709626391437391) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_ok (3007005536659549573) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_open_settings (3368892579319881043) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_title (7173961211414061803) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_separator (9008030412869423988) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_last_separator (7455459775266515801) -->
+ <skip />
+ <string name="default_apps" msgid="8554530939151957828">"Aplicaciones predeterminadas"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Ninguna app predeterminada"</string>
+ <!-- no translation found for default_apps_manage_domain_urls (3146379064445013719) -->
+ <skip />
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Predeterminadas para trabajo"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Ninguna"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"No hay aplicaciones"</string>
+ <!-- no translation found for special_app_access_search_keyword (462008045110320714) -->
+ <skip />
+ <string name="special_app_access" msgid="2561673957499408877">"Acceso especial de apps"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Sin acceso especial de apps"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"No hay aplicaciones"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Aplicación de asistencia"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Aplicación de navegador"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Aplicación de teléfono"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Aplicación de SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Aplicación de emergencia"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Aplicación de inicio"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Aplicación de música"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Aplicación de galería"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"App de llamadas en modo coche"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"App de redirección de llamadas"</string>
+ <!-- no translation found for role_label_call_screening (1089966334646538858) -->
+ <skip />
+ <string name="role_label_call_companion" msgid="7369723859682076467">"App complementaria de llamadas"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"No admite perfiles de trabajo"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Nota: Si reinicias el dispositivo y y has definido un bloqueo de pantalla, esta aplicación no se podrá iniciar hasta que desbloquees el dispositivo."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"El asistente podrá consultar información sobre las aplicaciones en uso del sistema, como la que aparezca en pantalla o a la que se pueda acceder a través de las aplicaciones."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Compartir datos de depuración"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"¿Quieres compartir datos de depuración detallados?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> quiere subir información de depuración."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Compartir datos de depuración"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> quiere subir el informe de errores de este dispositivo, generado el <xliff:g id="DATE">%2$s</xliff:g> a las <xliff:g id="TIME">%3$s</xliff:g>. Los informes de errores incluyen información personal sobre el dispositivo o datos registrados por las aplicaciones, como nombres de usuario, datos de ubicación, identificadores del dispositivo e información de red. Comparte estos informes únicamente con personas y aplicaciones de confianza. ¿Quieres permitir que <xliff:g id="APP_NAME_1">%4$s</xliff:g> suba un informe de errores?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Permitir"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Denegar"</string>
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_title (5699953608028268176) -->
+ <skip />
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_content (6960592986228883592) -->
+ <skip />
+ <!-- no translation found for dismiss_with_acknowledgment (2879819713128822468) -->
+ <skip />
</resources>
diff --git a/res/values-et-television/strings.xml b/res/values-et-television/strings.xml
index 2ee4317..c338e9b 100644
--- a/res/values-et-television/strings.xml
+++ b/res/values-et-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Keela ja ära enam küsi"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Saate seda hiljem muuta jaotises Seaded > Rakendused"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Kuva süsteemirakendused"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Rakenduste load"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Rakenduste load"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Teenuse <xliff:g id="PERMISSION">%1$s</xliff:g> load"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Lisaload"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Teenuse <xliff:g id="PERMISSION">%1$s</xliff:g> load"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Keela ja ära enam küsi"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Seda saab hiljem muuta jaotises Seaded > Rakendused"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Kuva süsteemirakendused"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Rakenduse load"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Rakenduse load"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> – load"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Lisaload"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> – load"</string>
</resources>
diff --git a/res/values-et-watch/strings.xml b/res/values-et-watch/strings.xml
index 328e215..44330fd 100644
--- a/res/values-et-watch/strings.xml
+++ b/res/values-et-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Keela, ära enam küsi"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Kuva süsteemirakendused"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Ei saa muuta"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Jah"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Tühista"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Keela, ära enam küsi"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Kuva süsteemirakendused"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Ei saa muuta"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Jah"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Tühista"</string>
</resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 21e07db..401d9a5 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Paketiinstaller"</string>
- <string name="next" msgid="3057143178373252333">"Järgmine"</string>
- <string name="install" msgid="5896438203900042068">"Installi"</string>
- <string name="done" msgid="3889387558374211719">"Valmis"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Lubage sel rakendusel teha järgmist."</string>
- <string name="cancel" msgid="8360346460165114585">"Tühista"</string>
- <string name="unknown" msgid="4742479012767208045">"Tundmatu"</string>
- <string name="installing" msgid="8613631001631998372">"Installimine ..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Paketi <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> installimine …"</string>
- <string name="install_done" msgid="3682715442154357097">"Rakendus on installitud."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Kas soovite rakenduse installida? See pääseb järgmiste üksuste juurde:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Kas soovite rakenduse installida? See ei nõua spetsiaalseid juurdepääsuõigusi."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Kas soovite olemasoleva rakenduse värskenduse installida? Teie olemasolevad andmed jäävad alles. Värskendatud rakendus pääseb järgmiste funktsioonide juurde:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Kas soovite sisseehitatud rakenduse värskenduse installida? Teie olemasolevad andmed jäävad alles. Värskendatud rakendus pääseb järgmiste funktsioonide juurde:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Kas soovite installida olemasoleva rakenduse värskenduse? Olemasolevad andmed ei lähe kaduma. See ei nõua erijuurdepääsu."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Kas soovite installida sisseehitatud rakenduse värskenduse? Olemasolevad andmed ei lähe kaduma. See ei nõua erijuurdepääsu."</string>
- <string name="install_failed" msgid="6579998651498970899">"Rakendus pole installitud."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Paketi installimine blokeeriti."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Rakendust ei installitud, kuna pakett on olemasoleva paketiga vastuolus."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Rakendust ei installitud, kuna rakendus ei ühildu teie tahvelarvutiga."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Rakendus ei ühildu teie teleriga."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Rakendust ei installitud, kuna rakendus ei ühildu teie telefoniga."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Rakendust ei installitud, kuna pakett näib olevat sobimatu."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Rakendust <xliff:g id="APP_NAME">%1$s</xliff:g> ei saa teie tahvelarvutisse installida."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Rakendust <xliff:g id="APP_NAME">%1$s</xliff:g> ei saa teie telerisse installida."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Rakendust <xliff:g id="APP_NAME">%1$s</xliff:g> ei saa teie telefoni installida."</string>
- <string name="launch" msgid="4826921505917605463">"Ava"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Administraator ei luba installida tundmatutest allikatest pärinevaid rakendusi"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"See kasutaja ei saa installida tundmatuid rakendusi"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Kasutajal ei ole lubatud rakendusi installida"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Seaded"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Rakenduste haldamine"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Kas asendada rakendus?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Installitav rakendus asendab teise rakenduse.\n\nKõik teie varasemad kasutajaandmed salvestatakse."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"See on süsteemirakendus.\n\nKõik teie varasemad kasutajaandmed salvestatakse."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Pole ruumi"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Rakendust <xliff:g id="APP_NAME">%1$s</xliff:g> ei saa installida. Vabastage mälu ja proovige uuesti."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Rakendust ei leitud"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Rakendust ei leitud installitud rakenduste loendist."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Ei ole lubatud"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Praegusel kasutajal ei ole lubatud seda desinstallimist teha."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Viga"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Rakendust ei saanud desinstallida."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Rakenduse desinstallimine"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Värskenduse desinstallimine"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> on osa järgmisest rakendusest:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Kas soovite selle rakenduse desinstallida?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Kas soovite desinstallida selle rakenduse "<b>"kõikidelt"</b>" kasutajatelt? Rakendus ja selle andmed eemaldatakse "<b>"kõikidelt"</b>" seadme kasutajatelt."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Kas soovite kasutaja <xliff:g id="USERNAME">%1$s</xliff:g> puhul rakenduse desinstallida?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Kas asendada see rakendus tehaseversiooniga? Kõik andmed eemaldatakse."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Kas asendada see rakendus tehaseversiooniga? Kõik andmed eemaldatakse. See mõjutab kõiki seadme kasutajaid, sh neid, kellel on tööprofiilid."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Käimasolevad desinstallimised"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Ebaõnnestunud desinstallimised"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Desinstallimine ..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Üksuse <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> desinstallimine …"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Desinstallimine on lõpetatud."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Üksus <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> on desinstallitud"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Desinstallimine ebaõnnestus."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Üksuse <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> desinstallimine ebaõnnestus."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Aktiivset seadme administraatori rakendust ei saa desinstallida"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Kasutaja <xliff:g id="USERNAME">%1$s</xliff:g> puhul ei saa aktiivset seadme administraatori rakendust desinstallida"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Rakendus on mõne kasutaja ja profiili puhul vajalik, teiste puhul see desinstalliti"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"See rakendus on vajalik teie profiili jaoks ja seda ei saa desinstallida."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Seadme administraator vajab seda rakendust ja seda ei saa desinstallida."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Halda seadme administraatori rakendusi"</string>
- <string name="manage_users" msgid="3125018886835668847">"Halda kasutajaid"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Rakendust <xliff:g id="APP_NAME">%1$s</xliff:g> ei saanud desinstallida."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Probleem paketi sõelumisel."</string>
- <string name="newPerms" msgid="6039428254474104210">"Uus"</string>
- <string name="allPerms" msgid="1024385515840703981">"Kõik"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privaatsus"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Seadme juurdepääs"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"See värskendus ei nõua uusi lube."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Kas soovite anda järgmise loa? See annab juurdepääsu järgmisele:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Keela"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Lisateave"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Keela ikkagi"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>-st"</string>
- <string name="permission_warning_template" msgid="7332275268559121742">"Kas lubada rakendusel <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> on keelatud"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"kõik on keelatud"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"mitte ükski pole keelatud"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Luba"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Rakendused"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Rakenduste load"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Ära enam küsi"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Lube ei ole"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Täiendavad load"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Lubade kontroller"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"load"</string>
+ <string name="cancel" msgid="7279939269964834974">"Tühista"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Rakendust ei leitud"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Keela"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Keela ja ära enam küsi"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Lisateave"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Keela ikkagi"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Kas lubada rakenduse <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> puhul toiming <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Kas lubada rakenduse <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> puhul alati toiming <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Ainult rakenduse kasutamisel"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Alati"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Keela ja ära enam küsi"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> on keelatud"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"kõik on keelatud"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"mitte ükski pole keelatud"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Luba"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Luba alati"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Luba ainult rakenduse kasutamise ajal"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Rakendused"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Rakenduse load"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Lubade haldur"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Ära enam küsi"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Lube pole"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Lisaload"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Ava rakenduse teave"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other">Veel <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="one">Veel <xliff:g id="COUNT_0">%1$d</xliff:g></item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Rakendus on mõeldud Androidi vanemale versioonile. Kui keeldute loa andmisest, ei pruugi see ootuspäraselt töötada."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"tundmatu toiming"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"Kuva süsteem"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Peida süsteem"</string>
- <string name="permission_title" msgid="6495415273398916381">"Teenuse <xliff:g id="PERMISSION">%1$s</xliff:g> load"</string>
- <string name="no_apps" msgid="1965493419005012569">"Rakendusi pole"</string>
- <string name="location_settings" msgid="1774875730854491297">"Asukohaseaded"</string>
- <string name="location_warning" msgid="8778701356292735971">"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="7103819124542305179">"Kui keelate loa, ei pruugi seadme põhifunktsioonid enam ootuspäraselt töötada."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Eeskirjadega jõustatud"</string>
- <string name="loading" msgid="7811651799620593731">"Laadimine ..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"Kõik load"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Rakenduse muud funktsioonid"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Loa taotlus"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Tuvastati ekraani ülekate"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Selle loa seade muutmiseks peate esmalt välja lülitama ekraani ülekatte menüüs Seaded > Rakendused"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Ava seaded"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Wear ei toeta installimist/desinstallimist."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"Rakendust <xliff:g id="APP_NAME_0">%1$s</xliff:g> värskendati. Kas anda rakendusele <xliff:g id="APP_NAME_1">%1$s</xliff:g> juurdepääs järgmisele?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Valige, millele lubate rakendusel <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> juurde pääseda"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"Rakendust <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> värskendati. Valige, millele lubate sellel rakendusel juurde pääseda."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Tühista"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Jätka"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Uued load"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Praegused load"</string>
- <string name="message_staging" msgid="6151794817691100003">"Rakenduse ettevalmistamine …"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Tundmatu"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Teie turvalisuse huvides ei ole tahvelarvutil lubatud installida sellest allikast tundmatuid rakendusi."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Teie turvalisuse huvides ei ole TV-l lubatud installida sellest allikast tundmatuid rakendusi."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Teie turvalisuse huvides ei ole telefonil lubatud installida sellest allikast tundmatuid rakendusi."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Teie telefon ja isiklikud andmed on tundmatute rakenduste rünnakute suhtes haavatavamad. Selle rakenduse installimisel nõustute, et vastutate telefoni kahjude ja andmekao eest, mis võivad tuleneda selliste rakenduste kasutamisest."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Teie tahvelarvuti ja isiklikud andmed on tundmatute rakenduste rünnakute suhtes haavatavamad. Selle rakenduse installimisel nõustute, et vastutate tahvelarvuti kahjude ja andmekao eest, mis võivad tuleneda selliste rakenduste kasutamisest."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Teie teler ja isiklikud andmed on tundmatute rakenduste rünnakute suhtes haavatavamad. Selle rakenduse installimisel nõustute, et vastutate teleri kahjude ja andmekao eest, mis võivad tuleneda selliste rakenduste kasutamisest."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Jätka"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Seaded"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Weari rak. installimine/desinstallimine"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Rakendus on mõeldud Androidi vanemale versioonile. Kui keeldute loa andmisest, ei pruugi see ootuspäraselt töötada."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"teeb tundmatu toimingu"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<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="permission_usage_header" msgid="8802963718365732792">"Hiljutine kasutus"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Kuva lubade juhtpaneel"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Kuva süsteem"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Peida süsteem"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Rakendusi pole"</string>
+ <string name="location_settings" msgid="547378321761364906">"Asukohaseaded"</string>
+ <string name="location_warning" msgid="4687406043150343369">"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="6868290533389195836">"Kui keelate selle loa, ei pruugi seadme põhifunktsioonid enam ootuspäraselt töötada."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Reegliga jõustatud"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Taustale juurdepääs on reegli alusel keelatud"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Taustale juurdepääs on reegli alusel lubatud"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Esiplaanile juurdepääs on reegli alusel lubatud"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Juhib administraator"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Administraator keelas juurdepääsu taustale"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Administraator lubas juurdepääsu taustale"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Administraator lubas juurdepääsu esiplaanile"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Süsteemi määratud luba"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Alati"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Ainult rakenduse kasutamisel"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Mitte kunagi"</string>
+ <string name="loading" msgid="323483393167148377">"Laadimine …"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Kõik load"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Rakenduse muud funktsioonid"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Loa taotlus"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Tuvastati ekraani ülekate"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Selle loaseade muutmiseks peate esmalt välja lülitama ekraani ülekatte menüüs Seaded > Rakendused"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Ava seaded"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Wear ei toeta installimist/desinstallimist."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Valige, millele lubate rakendusel <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> juurde pääseda"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"Rakendust <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> värskendati. Valige, millele lubate sellel rakendusel juurde pääseda."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Tühista"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Jätka"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Uued load"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Praegused load"</string>
+ <string name="message_staging" msgid="641286607664721291">"Rakenduse koondamine …"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Tundmatu"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Juhtpaneel"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Viimane juurdepääs: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> juurdepääsu (<xliff:g id="NUM_5">%3$s</xliff:g> taustal)</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 (<xliff:g id="NUM_2">%3$s</xliff:g> taustal)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Viimane juurdepääs: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> juurdepääsu\nKestus: <xliff:g id="TIME_5">%3$s</xliff:g></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\nKestus: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Viimane juurdepääs: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> juurdepääsu (<xliff:g id="NUM_6">%3$s</xliff:g> taustal)\nKestus: <xliff:g id="TIME_7">%3$s</xliff:g></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 (<xliff:g id="NUM_2">%3$s</xliff:g> taustal)\nKestus: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Mis tahes luba"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Mis tahes ajal"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Viimased seitse päeva"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Viimased 24 tundi"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Viimane tund"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Viimased 15 minutit"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Viimane 1 minut"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Lube pole kasutatud"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Juurdepääs mis tahes ajal"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Juurdepääs viimase seitsme päeva jooksul"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Juurdepääs viimase 24 tunni jooksul"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Juurdepääs viimase tunni jooksul"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Juurdepääs viimase 15 minuti jooksul"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Juurdepääs viimase 1 minuti jooksul"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Populaarseima loa kasutus mis tahes ajal"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Populaarseima loa kasutus viimase 7 päeva jooksul"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Populaarseima loa kasutus viimase 24 tunni jooksul"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Populaarseima loa kasutus viimase tunni jooksul"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Populaarseima loa kasutus viimase 15 min jooksul"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Populaarseima loa kasutus viimase 1 minuti jooksul"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Rakendused"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtreerimisalus: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Eemalda filter"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filter:"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtreeri lubade järgi"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Enim lube"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Kõige rohkem juurdepääsemisi"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Hiljutised"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Värskenda"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Rakenduse lubade kasutus"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Juurdepääs: <xliff:g id="NUM">%1$s</xliff:g> korda. Viimati kasutati <xliff:g id="TIME">%2$s</xliff:g> tagasi."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Luba"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Luba alati"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Luba ainult rakenduse kasutamise ajal"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Keela"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Luba <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Rakenduse <xliff:g id="APP">%2$s</xliff:g> juurdepääs loale <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"Rakendus <xliff:g id="APP">%1$s</xliff:g> pääses loale <xliff:g id="PERM">%2$s</xliff:g> juurde <xliff:g id="TIME">%3$s</xliff:g> tagasi."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> pole teie loale <xliff:g id="PERM">%2$s</xliff:g> juurde pääsenud."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Kuva lubade kasutamise üksikasjad"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Viimane juurdepääs: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Pole kunagi juurde pääsetud"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Lubatud"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Lubatud ainult kasutuses olles"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Keeldutud"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Kuva üksikasjalik kasutus"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> päeva</item>
+ <item quantity="one">1 päev</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> tundi</item>
+ <item quantity="one">1 tund</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minutit</item>
+ <item quantity="one">1 minut</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sekundit</item>
+ <item quantity="one">1 sekund</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Kas kasutada rakendust <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> järgmisena: <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Kas kasutada rakendust <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> rakenduse <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> asemel järgmisena: <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Loa meeldetuletused"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> on kasutanud teie asukohta"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"See rakendus pääseb teie asukohale alati juurde. Puudutage muutmiseks."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Ainult rakenduse kasutamise ajal"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Ühtegi luba pole antud"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Ükski luba pole keelatud"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Ükski rakendus pole lubatud"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Ükski rakendus pole keelatud"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Ava"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Desinstalli"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Sundpeata"</string>
+ <string name="settings" msgid="2884124136779508907">"Seaded"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"Teenusel <xliff:g id="SERVICE_NAME">%s</xliff:g> on täielik juurdepääs teie seadmele"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> juurdepääsetavusteenusel on täielik juurdepääs teie seadmele"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> saab vaadata teie ekraanikuva, toiminguid ja sisendeid, teha toiminguid ning juhtida ekraani."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Need teenused saavad vaadata teie ekraanikuva, toiminguid ja sisendeid, teha toiminguid ning juhtida ekraani."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Vaikerakendused"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Vaikerakendusi pole"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Vaikerakendused töö jaoks"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Puudub"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Rakendusi pole"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Rakenduste erijuurdepääs"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Rakenduse erijuurdepääs puudub"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Rakendusi pole"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Abirakendus"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Brauserirakendus"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Telefonirakendus"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS-i rakendus"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Hädaabirakendus"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Avaekraani rakendus"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Muusikarakendus"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Galeriirakendus"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Autorežiimi telefonirakendus"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Kõnede ümbersuunamise rakendus"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Kõnede filtreerimise rakendus"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Helistamise kaasrakendus"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Auto projektsiooni rakendus"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Ei toeta tööprofiili"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Märkus Kui taaskäivitate seadme ja olete määranud ekraaniluku, ei saa see rakendus käivituda enne, kui oma seadme avate."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Assistent saab teie süsteemis kasutatavate rakenduste kohta teavet (sh teie ekraanil kuvatud või rakendustes juurdepääsetavat teavet) lugeda."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Silumisandmete jagamine"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Kas jagada üksikasjalikke silumisandmeid?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> soovib üles laadida silumisteavet."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Silumisandmete jagamine"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> palub luba sellest seadmest veaaruande üleslaadimiseks (jäädvustati <xliff:g id="DATE">%2$s</xliff:g> kell <xliff:g id="TIME">%3$s</xliff:g>). Veaaruanded hõlmavad teie seadmega seotud isiklikke andmeid või rakenduste logitud isiklikke andmeid (nt kasutajanimesid, asukohaandmeid, seadme ID-sid ja võrguteavet). Jagage veaaruandeid ainult inimeste ja rakendustega, keda/mida usaldate. Kas lubada rakendusel <xliff:g id="APP_NAME_1">%4$s</xliff:g> veaaruanne üles laadida?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Luba"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Keela"</string>
</resources>
diff --git a/res/values-eu-television/strings.xml b/res/values-eu-television/strings.xml
index 907cf7d..38895b7 100644
--- a/res/values-eu-television/strings.xml
+++ b/res/values-eu-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Ukatu eta ez galdetu berriro"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Hori geroago alda dezakezu Ezarpenak > Aplikazioak atalean"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Erakutsi sistema-aplikazioak"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Aplikazio-baimenak"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Aplikazio-baimenak"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> erabiltzeko baimenak"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Baimen gehigarriak"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> erabiltzeko baimenak"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Baztertu eta ez galdetu berriro"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Hori geroago alda dezakezu Ezarpenak > Aplikazioak atalean"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Erakutsi sistemaren aplikazioak"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Aplikazio-baimenak"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Aplikazio-baimenak"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Baimenak: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Baimen gehigarriak"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Baimenak: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-eu-watch/strings.xml b/res/values-eu-watch/strings.xml
index 89eb296..d2b8d57 100644
--- a/res/values-eu-watch/strings.xml
+++ b/res/values-eu-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Ukatu; ez galdetu berriro"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Erakutsi sistema-aplikazioak"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Ezin da aldatu"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Bai"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Utzi"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Ukatu; ez galdetu berriro"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Erakutsi sistemaren aplikazioak"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Ezin da aldatu"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Bai"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Utzi"</string>
</resources>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index afb55ab..e2bdaef 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,286 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Pakete-instalatzailea"</string>
- <string name="next" msgid="3057143178373252333">"Hurrengoa"</string>
- <string name="install" msgid="5896438203900042068">"Instalatu"</string>
- <string name="done" msgid="3889387558374211719">"Eginda"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Eman baimen hauek aplikazioari:"</string>
- <string name="cancel" msgid="8360346460165114585">"Utzi"</string>
- <string name="unknown" msgid="4742479012767208045">"Ezezaguna"</string>
- <string name="installing" msgid="8613631001631998372">"Instalatzen…"</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> instalatzen…"</string>
- <string name="install_done" msgid="3682715442154357097">"Aplikazioa instalatu da."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Aplikazioa instalatu nahi duzu? Elementu hauetarako sarbidea izango du:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Aplikazioa instalatu nahi duzu? Ez du sarbide berezirik behar."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Aplikazioaren eguneratzea instalatu nahi duzu? Lehendik dauden datuak ez dira galduko. Eguneratutako aplikazioak elementu hauetarako sarbidea izango du:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Aplikazio integratu honen eguneratzea instalatu nahi duzu? Lehendik dauden datuak ez dira galduko. Eguneratutako aplikazioak elementu hauetarako sarbidea izango du:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Aplikazioaren eguneratzea instalatu nahi duzu? Lehendik dauden datuak ez dira galduko. Ez du sarbide berezirik behar."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Aplikazio integratu honen eguneratzea instalatu nahi duzu? Lehendik dauden datuak ez dira galduko. Ez du sarbide berezirik behar."</string>
- <string name="install_failed" msgid="6579998651498970899">"Ez da aplikazioa instalatu."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Blokeatu egin da paketea instalatzeko aukera."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Ez da instalatu aplikazioa, gatazka bat sortu delako lehendik dagoen pakete batekin."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Ez da instalatu aplikazioa, ez delako tabletarekin bateragarria."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Aplikazioa ez da telebistarekin bateragarria."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Ez da instalatu aplikazioa, ez delako telefonoarekin bateragarria."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Ez da instalatu aplikazioa, paketeak ez duelako balio."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Ezin izan da <xliff:g id="APP_NAME">%1$s</xliff:g> tabletan instalatu."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Ezin izan da instalatu <xliff:g id="APP_NAME">%1$s</xliff:g> telebistan."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Ezin izan da <xliff:g id="APP_NAME">%1$s</xliff:g> telefonoan instalatu."</string>
- <string name="launch" msgid="4826921505917605463">"Ireki"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Administratzaileak ez du onartzen iturburu ezezagunetako aplikazioak instalatzea"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Erabiltzaile honek ezin ditu instalatu aplikazio ezezagunak"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Erabiltzaile honek ez du baimenik aplikazioak instalatzeko"</string>
- <string name="ok" msgid="3468756155452870475">"Ados"</string>
- <string name="settings" msgid="6743583734099755409">"Ezarpenak"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Kudeatu aplikazioak"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Aplikazioa ordeztu nahi duzu?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Instalatzen ari zaren aplikazioak beste aplikazio bat ordezkatuko du.\n\nLehendik dituzun erabiltzaile-datu guztiak gordeko dira."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Sistemaren aplikazio bat da hau.\n\nLehendik dituzun erabiltzaile-datu guztiak gordeko dira."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Ez dago behar adina toki"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Ezin izan da <xliff:g id="APP_NAME">%1$s</xliff:g> instalatu. Egin toki pixka bat eta saiatu berriro."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"Ados"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Ez da aplikazioa aurkitu"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Aplikazioa ez da aurkitu instalatutako aplikazioen zerrendan."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Ez dauka baimenik"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Erabiltzaile honek ez dauka desinstalatzeko baimenik."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Errorea"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Ezin izan da desinstalatu aplikazioa."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Desinstalatu aplikazioa"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Desinstalatu eguneratzea"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> aplikazio honen zati da:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Aplikazioa desinstalatu nahi duzu?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Aplikazioa erabiltzaile "<b>"guztientzat"</b>" desinstalatu nahi duzu? Aplikazioa eta bere datu guztiak gailuko erabiltzaile "<b>"guztiei"</b>" ezabatuko zaizkie."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"<xliff:g id="USERNAME">%1$s</xliff:g> erabiltzailearen aplikazioa desinstalatu nahi duzu?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Aplikazio hau jatorrizko bertsioarekin ordeztu nahi duzu? Datu guztiak ezabatuko dira."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Aplikazio hau jatorrizko bertsioarekin ordeztu nahi duzu? Datu guztiak ezabatuko dira. Gailuaren erabiltzaile guztiengan izango du eragina, laneko profilak dituztenengan barne."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Abian diren desinstalatze-eragiketak"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Huts egin duten desinstalatze-eragiketak"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Desinstalatzen…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> desinstalatzen…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Desinstalatu da."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Desinstalatu da <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Ezin izan da desinstalatu."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Ezin izan da desinstalatu <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Ezin da desinstalatu gailua administratzeko aplikazio aktiboa"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Ezin da desinstalatu <xliff:g id="USERNAME">%1$s</xliff:g> erabiltzailearen gailua administratzeko aplikazio aktiboa"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Erabiltzaile edo profil batzuek behar dute aplikazio hau, baina desinstalatu egin da beste guztientzat."</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Zure profilak behar du aplikazio hau eta ezin da desinstalatu."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Gailuaren administratzaileak aplikazio hori behar du eta ezin da desinstalatu."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Kudeatu gailua administratzeko aplikazioak"</string>
- <string name="manage_users" msgid="3125018886835668847">"Kudeatu erabiltzaileak"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Ezin izan da <xliff:g id="APP_NAME">%1$s</xliff:g> desinstalatu."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Arazo bat izan da paketea analizatzean."</string>
- <string name="newPerms" msgid="6039428254474104210">"Berriak"</string>
- <string name="allPerms" msgid="1024385515840703981">"Guztiak"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Pribatutasuna"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Gailurako sarbidea"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Eguneratze honek ez du baimen berririk behar."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Baimen hauek eman nahi dituzu? Hauetarako sarbidea lortzeko balioko dute:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Ukatu"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Informazio gehiago"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Ukatu hala ere"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> aplikazioari \"<xliff:g id="ACTION">%2$s</xliff:g>\" izeneko baimena eman nahi diozu?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> desgaituta"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"guztiak desgaituta"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"guztiak gaituta"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Baimendu"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Aplikazioak"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Aplikazio-baimenak"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Ez galdetu berriro"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Ez dago baimenik"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Baimen gehigarriak"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Baimenen kontrolatzailea"</string>
+ <string name="ok" msgid="4417794827535157922">"Ados"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"baimenak"</string>
+ <string name="cancel" msgid="7279939269964834974">"Utzi"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Ez da aurkitu aplikazioa"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Ukatu"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Ukatu eta ez galdetu berriro"</string>
+ <!-- no translation found for grant_dialog_button_deny_background (5378693207810841555) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_deny_background_and_dont_ask_again (1032019626928637454) -->
+ <skip />
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Datu gehiago"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Ukatu hala ere"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> aplikazioak <xliff:g id="ACTION">%2$s</xliff:g> ahal izatea baimendu nahi duzu?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Beti eman nahi diozu \"<xliff:g id="ACTION">%2$s</xliff:g>\" baimena <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> aplikazioari?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Aplikazioa erabiltzean soilik"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Beti"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Baztertu eta ez galdetu berriro"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> desgaituta"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"guztiak desgaituta"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"guztiak gaituta"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Baimendu"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Baimendu beti"</string>
+ <!-- no translation found for grant_dialog_button_allow_foreground (8090382319222429427) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_allow_background (3190568549032350790) -->
+ <skip />
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Aplikazioak"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Aplikazio-baimenak"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Baimenen kudeatzailea"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Ez galdetu berriro"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Ez dago baimenik"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Baimen gehigarriak"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Ireki aplikazioaren informazioa"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> gehiago</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> gehiago</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Aplikazio hau Android-en bertsio zaharrago baterako diseinatuta dago. Baimena ukatzen baduzu, agian aurrerantzean ez du behar bezain ondo funtzionatuko."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"Gauzatu ekintza ezezagunak"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> aplikaziok dute baimena"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Erakutsi sistema"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Ezkutatu sistema"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> erabiltzeko baimenak"</string>
- <string name="no_apps" msgid="1965493419005012569">"Ez dago aplikaziorik"</string>
- <string name="location_settings" msgid="1774875730854491297">"Kokapen-ezarpenak"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> gailu honen kokapen-zerbitzuen hornitzailea da. Kokapenerako sarbidea kokapen-ezarpenetatik alda daiteke."</string>
- <string name="system_warning" msgid="7103819124542305179">"Baimena ematen ez baduzu, baliteke gailuaren oinarrizko eginbide batzuek behar bezala ez funtzionatzea."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Gidalerroen bidez aplikatzen da"</string>
- <string name="loading" msgid="7811651799620593731">"Kargatzen…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Baimen guztiak"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Aplikazioaren beste gaitasun batzuk"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Baimen-eskaera"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Pantailaren gainjartzea detektatu da"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Baimen-ezarpen hau aldatzeko, pantailaren gainjartzea desaktibatu behar duzu Ezarpenak > Aplikazioak atalean"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Ireki ezarpenak"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Instalatzeko eta desinstalatzeko ekintzak ezin dira gauzatu Wear gailuetan."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"Eguneratu egin da <xliff:g id="APP_NAME_0">%1$s</xliff:g>. <xliff:g id="APP_NAME_1">%1$s</xliff:g> hauek atzitzeko gai izatea nahi duzu?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Aukeratu zer atzi dezakeen <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> aplikazioak"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"Eguneratu egin da <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>. Aukeratu aplikazioak zer atzi dezakeen."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Utzi"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Jarraitu"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Baimen berriak"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Uneko baimenak"</string>
- <string name="message_staging" msgid="6151794817691100003">"Aplikazioa prestatzen…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Ezezaguna"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Segurtasuna bermatzeko, tableta honetan ezin dira instalatu iturburu honetako aplikazio ezezagunak."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Segurtasuna bermatzeko, telebista honetan ezin dira instalatu iturburu honetako aplikazio ezezagunak."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Segurtasuna bermatzeko, telefono honetan ezin dira instalatu iturburu honetako aplikazio ezezagunak."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Telefonoak eta datu pertsonalek aplikazio ezezagunen erasoak jaso ditzakete. Aplikazio hau instalatzen baduzu, onartzen duzu hura erabiltzeagatik telefonoak jasan ditzakeen kalteen edo datu-galeren erantzulea zeu zarela."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Tabletak eta datu pertsonalek aplikazio ezezagunen erasoak jaso ditzakete. Aplikazio hau instalatzen baduzu, onartzen duzu hura erabiltzeagatik tabletak jasan ditzakeen kalteen edo datu-galeren erantzulea zeu zarela."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Telebistak eta datu pertsonalek aplikazio ezezagunen erasoak jaso ditzakete. Iturburu honetako aplikazioak instalatzen badituzu, onartzen duzu haiek erabiltzeagatik telebistak jasan ditzakeen kalteen edo datu-galeren erantzulea zeu zarela."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Egin aurrera"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Ezarpenak"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Wear aplikazioak instalatzea/desinstalatzea"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Android-en bertsio zaharrago baterako diseinatuta dago aplikazio hau. Baimena ukatzen baduzu, agian aurrerantzean ez du behar bezala funtzionatuko."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"Gauzatu ekintza ezezagunak"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> aplikaziok dute baimena"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Erakutsi sistema"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Ezkutatu sistema"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Ez dago aplikaziorik"</string>
+ <string name="location_settings" msgid="547378321761364906">"Kokapen-ezarpenak"</string>
+ <string name="location_warning" msgid="4687406043150343369">"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="6868290533389195836">"Baimena ematen ez baduzu, baliteke gailuaren oinarrizko eginbide batzuek behar bezala ez funtzionatzea."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Gidalerroen bidez aplikatzen da"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Gidalerro batek atzeko planoa atzitzeko aukera desgaitu du"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Gidalerro batek atzeko planoa atzitzeko aukera gaitu du"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Gidalerro batek aurreko planoa atzitzeko aukera gaitu du"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Administratzaileak kontrolatzen du"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Administratzaileak atz. planoa atzitzeko aukera desgaitu du"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Administratzaileak atzeko planoa atzitzeko aukera gaitu du"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Administratzaileak aurreko planoa atzitzeko aukera gaitu du"</string>
+ <!-- no translation found for permission_summary_enabled_system_fixed (5463084832974856683) -->
+ <skip />
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <!-- no translation found for permission_access_always (5419580764084361573) -->
+ <skip />
+ <!-- no translation found for permission_access_only_foreground (2857031150724321567) -->
+ <skip />
+ <!-- no translation found for permission_access_never (425385910378172045) -->
+ <skip />
+ <string name="loading" msgid="323483393167148377">"Kargatzen…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Baimen guztiak"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Aplikazioaren beste gaitasun batzuk"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Baimen-eskaera"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Pantaila-gainjartzea hauteman da"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Baimen-ezarpen hau aldatzeko, pantailaren gainjartzea desaktibatu behar duzu Ezarpenak > Aplikazioak atalean"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Ireki ezarpenak"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Instalatzeko eta desinstalatzeko ekintzak ezin dira gauzatu Wear gailuetan."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Aukeratu zer atzi dezakeen <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> aplikazioak"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"Eguneratu egin da <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>. Aukeratu aplikazioak zer atzi dezakeen."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Utzi"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Egin aurrera"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Baimen berriak"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Uneko baimenak"</string>
+ <string name="message_staging" msgid="641286607664721291">"Aplikazioa prestatzen…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Ezezaguna"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Panela"</string>
+ <!-- no translation found for permission_usage_summary_foreground (3203419920107457274) -->
+ <skip />
+ <!-- no translation found for permission_usage_summary_background (5719598203265078254) -->
+ <skip />
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Edozein baimen"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Edonoiz"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Azken 7 egunetan"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Azken 24 orduetan"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Azken orduan"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Azken 15 minutuetan"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Azken minutua"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Ez da eskatu baimenik"</string>
+ <!-- no translation found for permission_usage_list_title_any_time (5641676869304328239) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_7_days (2972289322203714509) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_day (6298662604046093174) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_hour (7224982939487774388) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_15_minutes (49045607172810502) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_minute (7716966405942817635) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_any_time (862654449303514044) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_7_days (5393381637937213483) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_day (7202567658282481259) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_hour (4672313408976666479) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_15_minutes (1776918144361651860) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_minute (236300476767668315) -->
+ <skip />
+ <!-- no translation found for app_permission_usage_bar_label (7261634017833698654) -->
+ <!-- no translation found for permission_usage_view_details (4728049344017619500) -->
+ <skip />
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Iragazteko irizpidea: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Kendu iragazkia"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Iragazi honen arabera"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Iragazi baimenen arabera"</string>
+ <!-- no translation found for filter_by_time (1763143592970195407) -->
+ <skip />
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Baimen gehien erabili dituztenak"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Erabilienak"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Azkenak"</string>
+ <!-- no translation found for sort_by_app (1912228966803416485) -->
+ <skip />
+ <!-- no translation found for sort_by_time (8280378662234104410) -->
+ <skip />
+ <!-- no translation found for item_separator (8266062815210378175) -->
+ <skip />
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Freskatu"</string>
+ <!-- no translation found for permission_usage_permission_filter_subtitle (5539392196389332769) -->
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Aplikazio-baimenen erabilera"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Sarbidea: <xliff:g id="NUM">%1$s</xliff:g> aldiz. Duela <xliff:g id="TIME">%2$s</xliff:g> erabili zen azken aldiz."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Baimendu"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Baimendu beti"</string>
+ <!-- no translation found for app_permission_button_allow_foreground (2303741829613210541) -->
+ <skip />
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Ukatu"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> atzitzeko baimena"</string>
+ <!-- no translation found for app_permission_header (228974007660007656) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_usage_summary (1034436308858219976) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_no_usages (4444374134047275841) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_app_permissions_link (8033278634020892918) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_permission_apps_link (8759141212929298774) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_generic (5479202003136667039) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_activity_recognition (2022880340017289990) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_calendar (2846128908236787586) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_call_log (2429916962093948340) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_camera (6699611334403400091) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_contacts (5169995707720233126) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_location (687820658574645201) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_aural (2102206495149326019) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_visual (3105938942794669520) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_microphone (2300290217308759293) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_phone (3773977614654088578) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sensors (6733606479604624853) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sms (8850213022386508528) -->
+ <skip />
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Azken sarbidea: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Ez da erabili inoiz"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Baimenduta"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Erabili bitartean soilik baimenduta"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Ukatuta"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Ikusi erabilera xehea"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> egun</item>
+ <item quantity="one">1 egun</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ordu</item>
+ <item quantity="one">1 ordu</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minutu</item>
+ <item quantity="one">1 minutu</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> segundo</item>
+ <item quantity="one">1 segundo</item>
+ </plurals>
+ <string name="permission_reminders" msgid="8040710767178843151">"Baimenen abisuak"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> zure kokapena erabiltzen aritu da"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Aplikazio honek beti atzi dezake kokapena. Sakatu aldatzeko."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Aplikazioa erabiltzen ari zarenean soilik"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Ez zaio eman baimenik"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Ez zaio ukatu baimenik"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Ez zaio eman baimena ezein aplikaziori"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Ez zaio ukatu baimena ezein aplikaziori"</string>
+ <string name="settings" msgid="2884124136779508907">"Ezarpenak"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> zerbitzuak gailurako sarbide osoa du"</string>
+ <!-- no translation found for accessibility_service_dialog_title_multiple (8129325613496173909) -->
+ <skip />
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> zerbitzuak pantaila, egiten dituzun ekintzak eta idazten dituzun gauzak ikusi ahalko ditu, bai eta ekintzak gauzatu eta pantaila kontrolatu ere."</string>
+ <!-- no translation found for accessibility_service_dialog_bottom_text_multiple (1387803460488775887) -->
+ <skip />
+ <!-- no translation found for request_role_title (3611734134669430568) -->
+ <skip />
+ <!-- no translation found for request_role_current_default (7512045433655289638) -->
+ <skip />
+ <!-- no translation found for request_role_set_as_default (5706081295230541240) -->
+ <skip />
+ <!-- no translation found for default_app_search_keyword (6938709626391437391) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_ok (3007005536659549573) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_open_settings (3368892579319881043) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_title (7173961211414061803) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_separator (9008030412869423988) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_last_separator (7455459775266515801) -->
+ <skip />
+ <string name="default_apps" msgid="8554530939151957828">"Aplikazio lehenetsiak"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Ez dago aplikazio lehenetsirik"</string>
+ <!-- no translation found for default_apps_manage_domain_urls (3146379064445013719) -->
+ <skip />
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Lanerako aplikazio lehenetsiak"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Bat ere ez"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Ez dago aplikaziorik"</string>
+ <!-- no translation found for special_app_access_search_keyword (462008045110320714) -->
+ <skip />
+ <string name="special_app_access" msgid="2561673957499408877">"Aplikazio-baimen bereziak"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Ez dago aplikazio-baimen berezirik"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Ez dago aplikaziorik"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Laguntza-aplikazioa"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Arakatzailea"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Telefonoa"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Larrialdietarako aplikazioa"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Etxeko aplikazioa"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Musika aplikazioa"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Galeria aplikazioa"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Gidatze modua ezartzeko aplikazioa"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Deiak birbideratzeko aplikazioa"</string>
+ <!-- no translation found for role_label_call_screening (1089966334646538858) -->
+ <skip />
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Deien aplikazio osagarria"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Ez ditu onartzen laneko profilak"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Oharra: gailua berrabiarazten baduzu eta pantailaren blokeoa badaukazu ezarrita, ezingo da abiarazi aplikazioa gailua desblokeatzen duzun arte."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Zure sistemak darabiltzan aplikazioei buruzko informazioa irakurri ahal izango du laguntzaileak; besteak beste, pantailan ikusgai duzun edo aplikazioetatik atzi daitekeen informazioa."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Partekatu arazketa-datuak"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Arazketa-datu xehatuak partekatu nahi dituzu?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioak arazketa-informazioa kargatu nahi du."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Partekatu arazketa-datuak"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="DATE">%2$s</xliff:g> datan (<xliff:g id="TIME">%3$s</xliff:g>) sortutako akatsen txostena kargatzeko baimena eskatzen ari da <xliff:g id="APP_NAME_0">%1$s</xliff:g>. Akatsen txostenek zure gailuari buruzkoa den edo aplikazioek erregistratu duten informazio pertsonala dute; adibidez, erabiltzaile-izenak, kokapenari buruzko datuak, gailuaren identifikatzaileak eta sareari buruzko informazioa. Informazio hori izateko fidagarriak iruditzen zaizkizun pertsona eta aplikazioekin soilik partekatu beharko zenituzke akatsen txostenak. <xliff:g id="APP_NAME_1">%4$s</xliff:g> aplikazioari akatsen txostena kargatzea baimendu nahi diozu?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Baimendu"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Ukatu"</string>
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_title (5699953608028268176) -->
+ <skip />
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_content (6960592986228883592) -->
+ <skip />
+ <!-- no translation found for dismiss_with_acknowledgment (2879819713128822468) -->
+ <skip />
</resources>
diff --git a/res/values-fa-television/strings.xml b/res/values-fa-television/strings.xml
index 95f2a54..655bf1c 100644
--- a/res/values-fa-television/strings.xml
+++ b/res/values-fa-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"اجازه ندارد و دیگر سؤال نشود"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"میتوانید بعداً آن را در تنظیمات > برنامهها تغییر دهید"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"نمایش برنامههای سیستم"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"مجوزهای برنامه"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"مجوزهای برنامه"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"مجوزهای <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"مجوزهای بیشتر"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"مجوزهای <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"رد شود و دیگر سؤال نشود"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"میتوانید بعداً آن را در تنظیمات > برنامهها تغییر دهید"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"نمایش برنامههای سیستم"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"مجوزهای برنامه"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"مجوزهای برنامه"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"مجوزهای <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"مجوزهای بیشتر"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"مجوزهای <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-fa-watch/strings.xml b/res/values-fa-watch/strings.xml
index 8d14954..c4399a0 100644
--- a/res/values-fa-watch/strings.xml
+++ b/res/values-fa-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"رد شود، دیگر سؤال نشود"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"نمایش برنامههای سیستم"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"نمیتواند تغییر کند"</string>
- <string name="generic_yes" msgid="3394094077553763689">"بله"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"لغو"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"رد شود، دیگر سؤال نشود"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"نمایش برنامههای سیستم"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"امکان تغییر نیست"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"بله"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"لغو"</string>
</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 1fff419..9c61f0f 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"نصبکننده بسته"</string>
- <string name="next" msgid="3057143178373252333">"بعدی"</string>
- <string name="install" msgid="5896438203900042068">"نصب"</string>
- <string name="done" msgid="3889387558374211719">"تمام"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"این برنامه مجاز است که:"</string>
- <string name="cancel" msgid="8360346460165114585">"لغو"</string>
- <string name="unknown" msgid="4742479012767208045">"ناشناس"</string>
- <string name="installing" msgid="8613631001631998372">"در حال نصب…"</string>
- <string name="installing_app" msgid="4097935682329028894">"درحال نصب <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"برنامه نصب شد."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"آیا میخواهید این برنامه را نصب کنید؟ این برنامه به این موارد دسترسی خواهد یافت:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"آیا میخواهید این برنامه را نصب کنید؟ این برنامه به دسترسی خاصی نیاز ندارد."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"آیا میٰخواهید بهٰروزرسانی این برنامه کنونی را نصب کنید؟ داده کنونی شما از بین نمیرود. برنامه بهروزرسانی شده دسترسی خواهد داشت به:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"آیا میخواهید بهروزرسانی این برنامه جاسازی شده را نصب کنید؟ دادههای کنونی شما از بین نمیرود. برنامه بهروزرسانی شده دسترسی خواهد داشت به:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"آیا میخواهید یک بهروزرسانی برای این برنامه کاربردی موجود نصب کنید؟ دادههای موجود شما از دست نخواهد رفت. به دسترسی ویژهای نیاز ندارد."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"آیا میخواهید یک بهروزرسانی برای این برنامه کاربردی داخلی نصب کنید؟ دادههای موجود شما از دست نخواهد رفت. به دسترسی ویژهای نیاز ندارد."</string>
- <string name="install_failed" msgid="6579998651498970899">"برنامه نصب نشد."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"از نصب شدن بسته جلوگیری شد."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"برنامه نصب نشد چون بسته با بسته موجود تداخل دارد."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"برنامه نصب نشد چون با رایانه لوحیتان سازگار نیست."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"این برنامه با تلویزیون شما سازگار نیست."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"برنامه نصب نشد چون با تلفنتان سازگار نیست."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"برنامه نصب نشد چون به نظر میرسد بسته معتبر نیست."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> در رایانهٔ لوحی شما نصب نشد."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> را نمیتوان روی تلویزیون شما نصب کرد."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> در تلفن شما نصب نشد."</string>
- <string name="launch" msgid="4826921505917605463">"باز کردن"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"سرپرست سیستم شما اجازه نمیدهد برنامههای دریافتشده از منابع ناشناس را نصب کنید"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"این کاربر نمیتواند برنامههای ناشناس نصب کند"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"این کاربر مجاز به نصب برنامه نیست"</string>
- <string name="ok" msgid="3468756155452870475">"تأیید"</string>
- <string name="settings" msgid="6743583734099755409">"تنظیمات"</string>
- <string name="manage_applications" msgid="4033876279091996596">"مدیریت برنامهها"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"برنامه جایگزین شود؟"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"برنامهای که دارید نصب میکنید جایگزین یک برنامهٔ دیگر خواهد شد.\n\nتمام دادههای کاربری قبلی شما ذخیره خواهد شد."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"این یک برنامه سیستمی است.\n\nتمام دادههای کاربری قبلی شما ذخیره خواهد شد."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"فضا کافی نیست"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> نصب نمیشود. مقداری از فضا را آزاد کرده و دوباره امتحان کنید."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"تأیید"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"برنامه یافت نشد"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"برنامه در فهرست برنامههای نصب شده یافت نشد."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"مجاز نیست"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"کاربر کنونی مجاز به انجام این حذف نصب نیست."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"خطا"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"برنامه را نمیتوان حذف نصب کرد."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"حذف نصب برنامه"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"حذف نصب بهروزرسانی"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> قسمتی از برنامه زیر است:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"میخواهید این برنامه را حذف نصب کنید؟"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"آیا میخواهید این برنامه را برای "<b>"همه"</b>" کاربران حذف کنید؟ این برنامه کاربردی و دادههای آن برای "<b>"همه"</b>" کاربران این دستگاه حذف خواهد شد."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"آیا میخواهید این برنامه را برای این کاربر <xliff:g id="USERNAME">%1$s</xliff:g> حذف نصب کنید؟"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"این برنامه با نسخه کارخانه جایگزین شود؟ همه دادهها پاک میشوند."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"این برنامه با نسخه کارخانه جایگزین شود؟ همه دادهها پاک میشوند. این کار همه کاربران این دستگاه (از جمله کاربرانی که نمایه کاری دارند) را تحت تأثیر قرار خواهد داد."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"حذفنصبهای درحال انجام"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"حذفنصبهای ناموفق"</string>
- <string name="uninstalling" msgid="5556217435895938250">"در حال حذف نصب..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"درحال حذف نصب <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"حذف نصب پایان یافت."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> را حذف نصب کرد"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"حذف نصب انجام نشد."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> باموفقیت حذف نصب شد."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"نمیتوان برنامه فعال سرپرست دستگاه را حذف نصب کرد"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"نمیتوان برنامه فعال سرپرست دستگاه را برای <xliff:g id="USERNAME">%1$s</xliff:g> حذف نصب کرد"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"این برنامه برای برخی کاربران یا نمایهها ضروری است و برای بقیه حذف نصب شد"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"این برنامه برای نمایه شما لازم است و نمیتوان آن را حذف نصب کرد."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"سرپرست دستگاه شما این برنامه را لازم کرده است و نمیتواند حذف نصب شود."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"مدیریت برنامههای سرپرست دستگاه"</string>
- <string name="manage_users" msgid="3125018886835668847">"مدیریت کاربران"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> حذف نصب نشد."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"مشکلی در تجزیه این بسته وجود داشت."</string>
- <string name="newPerms" msgid="6039428254474104210">"جدید"</string>
- <string name="allPerms" msgid="1024385515840703981">"همه موارد"</string>
- <string name="privacyPerms" msgid="1850527049572617">"حریم خصوصی"</string>
- <string name="devicePerms" msgid="6733560207731294504">"دسترسی به دستگاه"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"این بهروزرسانی به مجوز جدیدی نیاز ندارد."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"آیا میخواهید مجوزهای زیر را اعطا کنید؟ این مجوزها دسترسی به این موارد را بوجود میآورند:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"اجازه ندارد"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"اطلاعات بیشتر"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"در هر صورت نادیده گرفته شود"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"به<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> اجازه <xliff:g id="ACTION">%2$s</xliff:g> را میدهید؟"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> مجوز غیرفعال هستند"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"همه مجوزها غیرفعال هستند"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"هیچ موردی غیرفعال نیست"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"مجاز است"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"برنامهها"</string>
- <string name="app_permissions" msgid="3146758905824597178">"مجوزهای برنامه"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"دوباره سؤال نشود"</string>
- <string name="no_permissions" msgid="3210542466245591574">"مجوزی موجود نیست"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"مجوزهای بیشتر"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
- <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>
+ <string name="app_name" msgid="2792757108872430971">"کنترلکننده مجوز"</string>
+ <string name="ok" msgid="4417794827535157922">"تأیید"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"مجوزها"</string>
+ <string name="cancel" msgid="7279939269964834974">"لغو"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"برنامه یافت نشد"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"رد کردن"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"رد شود و دیگر سؤال نشود"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"اطلاعات بیشتر"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"درهرصورت نادیده گرفتن"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"به <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> اجازه <xliff:g id="ACTION">%2$s</xliff:g> را میدهید؟"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"همیشه به <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> برای <xliff:g id="ACTION">%2$s</xliff:g> اجازه داده شود؟"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"فقط هنگام استفاده از برنامه"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"همیشه"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"رد شود و دیگر سؤال نشود"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> مجوز غیرفعال است"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"همه مجوزها غیرفعال است"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"هیچ موردی غیرفعال نیست"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"مجاز"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"همیشه مجاز بودن"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"مجاز بودن تنها هنگام استفاده از برنامه"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"برنامه"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"مجوزهای برنامه"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"مدیر مجوز"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"دوباره سؤال نشود"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"مجوزی موجود نیست"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"مجوزهای بیشتر"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"باز کردن اطلاعات برنامه"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
+ <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="old_sdk_deny_warning" msgid="3872277112584842615">"این برنامه برای یک نسخه قدیمیتر از Android طراحی شده بود. نپذیرفتن اجازه ممکن است باعث شود که برنامه دیگر به صورتی که مورد نظر است کار نکند."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"انجام یک اقدام ناشناس"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"نمایش سیستم"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"پنهان کردن سیستم"</string>
- <string name="permission_title" msgid="6495415273398916381">"مجوزهای <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"برنامهای موجود نیست"</string>
- <string name="location_settings" msgid="1774875730854491297">"تنظیمات مکان"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> یکی از ارائهدهندگان سرویسهای مکان برای این دستگاه است. با رفتن به تنظیمات مکان میتوانید دسترسی به موقعیت مکانی را تغییر دهید."</string>
- <string name="system_warning" msgid="7103819124542305179">"اگر این اجازه را رد کنید، ممکن است قابلیتهای اصلی دستگاهتان دیگر عملکرد موردانتظار را نداشته باشند."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"اجرا توسط خطمشی"</string>
- <string name="loading" msgid="7811651799620593731">"درحال بارگیری…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"همه مجوزها"</string>
- <string name="other_permissions" msgid="2016192512386091933">"سایر قابلیتهای برنامه"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"درخواست مجوز"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"همپوشانی صفحه شناسایی شد"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"برای تغییر این تنظیم مجوز، ابتدا باید همپوشانی صفحه را از «تنظیمات > برنامهها» خاموش کنید"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"باز کردن تنظیمات"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"کنشهای نصب/حذف نصب در Wear پشتیبانی نمیشود."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> بهروزرسانی شد. به <xliff:g id="APP_NAME_1">%1$s</xliff:g> برای دسترسی به موارد زیر اجازه میدهید؟"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"انتخاب کنید <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> اجازه دارد به چه چیزی دسترسی پیدا کند"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بهروزرسانی شده است. انتخاب کنید این برنامه اجازه دارد به چه چیزی دسترسی پیدا کند."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"لغو"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"ادامه"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"مجوزهای جدید"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"مجوزهای کنونی"</string>
- <string name="message_staging" msgid="6151794817691100003">"مرحلهبندی برنامه…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"نامشخص"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"برای امنیت شما، رایانه لوحیتان اجازه نمیدهد از این منبع برنامههای ناشناس نصب شوند."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"برای امنیت شما، تلویزیونتان اجازه نمیدهد از این منبع برنامههای ناشناس نصب شوند."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"برای امنیت شما، تلفنتان اجازه نمیدهد از این منبع برنامههای ناشناس نصب شوند."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"تلفن و دادههای شخصیتان در برابر حمله برنامههای ناشناس آسیبپذیرتر هستند. با نصب این برنامه، موافقت میکنید که مسئول هرگونه آسیب به تلفن یا از دست رفتن دادهای هستید که ممکن است در نتیجه استفاده از آن به وجود آید."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"رایانه لوحی و دادههای شخصیتان در برابر حمله برنامههای ناشناس آسیبپذیرتر هستند. با نصب این برنامه، موافقت میکنید که مسئول هرگونه آسیب به رایانه لوحی یا از دست رفتن دادهای هستید که ممکن است در نتیجه استفاده از آن به وجود آید."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"تلویزیون و دادههای شخصیتان در برابر حمله برنامههای ناشناس آسیبپذیرتر هستند. با نصب این برنامه، موافقت میکنید که مسئول هرگونه آسیب به تلویزیون یا از دست رفتن دادهای هستید که ممکن است در نتیجه استفاده از آن به وجود آید."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"ادامه"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"تنظیمات"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"نصب/حذف نصب برنامههای پوشیدنی"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"این برنامه برای نسخه قدیمیتری از Android طراحی شده بود. رد کردن مجوز ممکن است باعث شود که برنامه دیگر عملکرد موردانتظار را نداشته باشند."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"انجام یک اقدام ناشناس"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> برنامه از <xliff:g id="COUNT_1">%2$d</xliff:g> برنامه مجاز شد"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"مصرف اخیر"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"مشاهده داشبورد مجوزها"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"نمایش سیستم"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"پنهان کردن سیستم"</string>
+ <string name="no_apps" msgid="2377153782338039463">"برنامهای موجود نیست"</string>
+ <string name="location_settings" msgid="547378321761364906">"تنظیمات مکان"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> یکی از ارائهدهندگان سرویسهای مکان برای این دستگاه است. با رفتن به تنظیمات مکان میتوانید دسترسی به موقعیت مکانی را تغییر دهید."</string>
+ <string name="system_warning" msgid="6868290533389195836">"اگر این اجازه را رد کنید، ممکن است ویژگیهای اصلی دستگاهتان دیگر عملکرد موردانتظار را نداشته باشد."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"اجرا توسط خطمشی"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"دسترسی به پسزمینه بهموجب خطمشی غیرفعال شد"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"دسترسی به پسزمینه بهموجب خطمشی فعال شد"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"دسترسی به پیشزمینه بهموجب خطمشی فعال شد"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"توسط سرپرست سیستم کنترل میشود"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"دسترسی به پسزمینه توسط سرپرست غیرفعال شد"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"دسترسی به پسزمینه توسط سرپرست فعال شد"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"دسترسی به پیشزمینه توسط سرپرست فعال شد"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"مجوز تنظیمشده توسط سیستم"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"همیشه"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"فقط هنگام استفاده از برنامه"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"هرگز"</string>
+ <string name="loading" msgid="323483393167148377">"درحال بارگیری…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"همه مجوزها"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"سایر قابلیتهای برنامه"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"درخواست مجوز"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"همپوشانی صفحه شناسایی شد"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"برای تغییر این تنظیم مجوز، ابتدا باید همپوشانی صفحه را از «تنظیمات > برنامهها» خاموش کنید"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"باز کردن تنظیمات"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"کنشهای نصب/حذف نصب در Wear پشتیبانی نمیشود."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"انتخاب کنید <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> اجازه دارد به چه چیزی دسترسی پیدا کند"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بهروزرسانی شده است. انتخاب کنید این برنامه اجازه دارد به چه چیزی دسترسی پیدا کند."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"لغو"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"ادامه"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"مجوزهای جدید"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"مجوزهای کنونی"</string>
+ <string name="message_staging" msgid="641286607664721291">"مرحلهبندی برنامه…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"نامشخص"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"داشبورد"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">آخرین دسترسی: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> دسترسی (<xliff:g id="NUM_5">%3$s</xliff:g> دسترسی در پسزمینه)</item>
+ <item quantity="other">آخرین دسترسی: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> دسترسی (<xliff:g id="NUM_5">%3$s</xliff:g> دسترسی در پسزمینه)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">آخرین دسترسی: <xliff:g id="TIME_3">%1$s</xliff:g>\n مدت\n<xliff:g id="NUM_4">%2$s</xliff:g> دسترسی: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">آخرین دسترسی: <xliff:g id="TIME_3">%1$s</xliff:g>\n مدت\n<xliff:g id="NUM_4">%2$s</xliff:g> دسترسی: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">آخرین دسترسی: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> دسترسی (<xliff:g id="NUM_6">%3$s</xliff:g> دسترسی در پسزمینه)\nمدت: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">آخرین دسترسی: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> دسترسی (<xliff:g id="NUM_6">%3$s</xliff:g> دسترسی در پسزمینه)\nمدت: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"همه مجوزها"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"هر زمانی"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"۷ روز اخیر"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"۲۴ ساعت اخیر"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"۱ ساعت اخیر"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"۱۵ دقیقه اخیر"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"۱ دقیقه آخر"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"هیچ مجوزی استفاده نشده است"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"دسترسی در هرزمانی"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"دسترسی در ۷ روز گذشته"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"دسترسی در ۲۴ ساعت گذشته"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"دسترسی در ساعت گذشته"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"دسترسی در ۱۵ دقیقه گذشته"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"دسترسی در ۱ دقیقه آخر"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"پراستفادهترین مجوزها در هرزمانی"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"پراستفادهترین مجوزها در ۷ روز گذشته"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"پراستفادهترین مجوزها در ۲۴ ساعت گذشته"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"پراستفادهترین مجوزها در ۱ ساعت گذشته"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"پراستفادهترین مجوزها در ۱۵ دقیقه گذشته"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"پراستفادهترین مجوزها در ۱ دقیقه گذشته"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"برنامهها"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"فیلترشده براساس: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"حذف فیلتر"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"فیلتر کردن براساس"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"فیلتر کردن براساس مجوزها"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"بیشترین مجوزها"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"بیشترین تعداد دسترسی"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"اخیر"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"بازخوانی"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"استفاده از مجوزهای برنامه"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"دسترسی: <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="4040424337831328212">"دسترسی: <xliff:g id="NUM">%1$s</xliff:g> بار. آخرین استفاده: <xliff:g id="TIME">%2$s</xliff:g> قبل."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"مجاز"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"همیشه مجاز بودن"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"مجاز بودن تنها هنگام استفاده از برنامه"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"اجازه ندادن"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"مجوز <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"دسترسی <xliff:g id="PERM">%1$s</xliff:g> برای <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g> پیش به <xliff:g id="PERM">%2$s</xliff:g> دسترسی یافت."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> به <xliff:g id="PERM">%2$s</xliff:g> شما دسترسی پیدا نکرده است."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"مشاهده استفاده از مجوزها با جزئیات"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"آخرین دسترسی: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"هرگز دسترسی نداشته است"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"مجاز"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"مجاز فقط هنگام استفاده از برنامه"</string>
+ <string name="denied_header" msgid="2277998574238617699">"رد شد"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"مشاهده اطلاعات مصرف مفصلتر"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <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="seconds" formatted="false" msgid="1632909606956324957">
+ <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="role_request_message_add" msgid="1977772335648650272">"از <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بهعنوان <xliff:g id="ROLE_NAME">%2$s</xliff:g> شما استفاده شود؟"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"از <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> بهجای <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> بهعنوان <xliff:g id="ROLE_NAME">%2$s</xliff:g> شما استفاده شود؟"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"یادآوریهای مجوز"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> از مکانتان استفاده میکند"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"این برنامه همیشه میتواند به مکانتان دسترسی داشته باشد. برای تغییر دادن، ضربه بزنید."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"تنها هنگام استفاده از برنامه"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"هیچ مجوزی اعطا نشده است"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"هیچ مجوزی رد نشد"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"هیچ برنامهای مجاز نیست"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"هیچ برنامهای رد نشد"</string>
+ <string name="launch_app" msgid="5641437562665039291">"باز"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"حذف نصب"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"توقف اجباری"</string>
+ <string name="settings" msgid="2884124136779508907">"تنظیمات"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> سرویس به دستگاه شما دسترسی کامل دارند"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> سرویس دسترسپذیری به دستگاه شما دسترسی کامل دارند"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> میتواند صفحه، کنشها و ورودیهای شما را ببیند، کنشهایی را انجام دهد و نمایشگر را کنترل کند."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"این سرویسها میتوانند صفحه، کنشها و ورودیهای شما را ببینند، کنشهایی را انجام دهند و نمایشگر را کنترل کنند."</string>
+ <string name="default_apps" msgid="8554530939151957828">"برنامههای پیشفرض"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"هیچ برنامه پیشفرضی وجود ندارد."</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"پیشفرض برای کار"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"هیچکدام"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"برنامهای موجود نیست"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"دسترسی ویژه به برنامه"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"عدم دسترسی ویژه به برنامه"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"برنامهای موجود نیست"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"برنامه همیار"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"برنامه مرورگر"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"برنامه تلفن"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"برنامه پیامک"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"برنامه اضطراری"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"برنامه صفحه اصلی"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"برنامه موسیقی"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"برنامه گالری"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"برنامه تلفن حالت خودرو"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"فراخوانی برنامه هدایت"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"برنامه غربالگری تماس"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"برنامه همراه تماس"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"برنامه طرح سهبعدی خودرو"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"از نمایه کاری پشتیبانی نمیکند"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"توجه: اگر دستگاهتان را بازراهاندازی کنید و قفل صفحه تنظیم کرده باشید، تا قفل تلفن را باز نکنید، این برنامه نمیتواند شروع به کار کند."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"«دستیار» میتواند اطلاعات مربوط به برنامههای درحال استفاده در سیستم شما را بخواند، ازجمله اطلاعاتی که در صفحهنمایش شما قابلمشاهده است یا در برنامهها قابلدسترسی است."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"همرسانی دادههای اشکالزدایی"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"جزئیات دادههای اشکالزدایی همرسانی شود؟"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> میخواهد اطلاعات اشکالزدایی را بارگذاری کند."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"همرسانی دادههای اشکالزدایی"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> درخواست بارگذاری گزارش اشکالی را دارد که در <xliff:g id="DATE">%2$s</xliff:g> ساعت <xliff:g id="TIME">%3$s</xliff:g> در این دستگاه پیش آمده است. گزارشهای اشکال شامل اطلاعات شخصی درباره دستگاه شما است یا اطلاعاتی که توسط برنامهها گزارش شده است، برای مثال نامهای کاربر، دادههای مکان، شناسههای دستگاه و اطلاعات شبکه. گزارشهای اشکال را تنها با افراد و برنامههایی همرسانی کنید که به آنها در اینباره اعتماد دارید. به <xliff:g id="APP_NAME_1">%4$s</xliff:g> اجازه بارگذاری گزارش اشکال داده شود؟"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"مجاز"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"رد کردن"</string>
</resources>
diff --git a/res/values-fi-television/strings.xml b/res/values-fi-television/strings.xml
index fbcbe4f..accefde 100644
--- a/res/values-fi-television/strings.xml
+++ b/res/values-fi-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Hylkää äläkä kysy uudelleen"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Voit muuttaa tätä myöhemmin valitsemalla Asetukset > Sovellukset."</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Näytä järjestelmäsovellukset"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Sovellusten käyttöoikeudet"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Sovellusten käyttöoikeudet"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Käyttöoikeudet – <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Lisäkäyttöoikeudet"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Käyttöoikeudet – <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Hylkää äläkä kysy uudelleen"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Voit muuttaa tätä myöhemmin valitsemalla Asetukset > Sovellukset."</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Näytä järjestelmäsovellukset"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Sovelluksen käyttöoikeudet"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Sovelluksen käyttöoikeudet"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Käyttöoikeudet – <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Lisäkäyttöoikeudet"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Käyttöoikeudet – <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-fi-watch/strings.xml b/res/values-fi-watch/strings.xml
index 292c417..d81e74d 100644
--- a/res/values-fi-watch/strings.xml
+++ b/res/values-fi-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Hylkää, äläkä kysy uudelleen"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Näytä järjestelmäsovellukset"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Ei muutettavissa"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Kyllä"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Peruuta"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Hylkää, äläkä kysy uudelleen"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Näytä järjestelmäsovellukset"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Ei muutettavissa"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Kyllä"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Peruuta"</string>
</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 7f756f4..565848b 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Paketin asentaja"</string>
- <string name="next" msgid="3057143178373252333">"Seuraava"</string>
- <string name="install" msgid="5896438203900042068">"Asenna"</string>
- <string name="done" msgid="3889387558374211719">"Valmis"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Salli tämän sovelluksen:"</string>
- <string name="cancel" msgid="8360346460165114585">"Peruuta"</string>
- <string name="unknown" msgid="4742479012767208045">"Tuntematon"</string>
- <string name="installing" msgid="8613631001631998372">"Asennetaan…"</string>
- <string name="installing_app" msgid="4097935682329028894">"Asennetaan kohdetta <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Sovellus on asennettu."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Haluatko asentaa tämän sovelluksen? Se saa käyttöönsä seuraavat ominaisuudet:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Haluatko asentaa tämän sovelluksen? Se ei vaadi erityisiä käyttöoikeuksia."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Haluatko asentaa päivityksen tähän olemassa olevaan sovellukseen? Olemassa olevat tiedot eivät katoa. Päivitetty sovellus saa käyttöönsä seuraavat ominaisuudet:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Haluatko asentaa päivityksen tähän sisäiseen sovellukseen? Olemassa olevat tiedot eivät katoa. Päivitetty sovellus saa käyttöönsä seuraavat ominaisuudet:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Haluatko asentaa päivityksen tähän sovellukseen? Et menetä nykyisiä tietojasi. Päivitys ei edellytä erityisiä käyttöoikeuksia."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Haluatko asentaa päivityksen tähän laitteen mukana tulleeseen sovellukseen? Et menetä nykyisiä tietojasi. Päivitys ei edellytä erityisiä käyttöoikeuksia."</string>
- <string name="install_failed" msgid="6579998651498970899">"Sovellusta ei asennettu."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Paketin asennus estettiin."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Sovellusta ei asennettu, koska paketti on ristiriidassa nykyisen paketin kanssa."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Sovellusta ei asennettu, koska se ei ole yhteensopiva tabletin kanssa."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Tämä sovellus ei ole yhteensopiva televisiosi kanssa."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Sovellusta ei asennettu, koska se ei ole yhteensopiva puhelimen kanssa."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Sovellusta ei asennettu, koska paketti vaikuttaa virheelliseltä."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Sovelluksen <xliff:g id="APP_NAME">%1$s</xliff:g> asentaminen tähän tablet-laitteeseen epäonnistui."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> ei asennu televisioosi."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Sovelluksen <xliff:g id="APP_NAME">%1$s</xliff:g> asentaminen puhelimeesi ei onnistunut."</string>
- <string name="launch" msgid="4826921505917605463">"Avaa"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Järjestelmänvalvoja ei salli sovellusten asentamista tuntemattomista lähteistä."</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Tämä käyttäjä ei voi asentaa tuntemattomia sovelluksia."</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Tämä käyttäjä ei voi asentaa sovelluksia."</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Asetukset"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Hallinnoi sovelluksia"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Korvataanko sovellus?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Sovellus, jota olet asentamassa, korvaa toisen sovelluksen.\n\nKaikki aikaisemmat käyttäjätiedot tallennetaan."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Tämä on järjestelmäsovellus.\n\nKaikki aikaisemmat käyttäjätiedot tallennetaan."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Tallennustila loppu"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Sovelluksen <xliff:g id="APP_NAME">%1$s</xliff:g> asentaminen epäonnistui. Vapauta tallennustilaa ja yritä uudelleen."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Sovellusta ei löydy"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Sovellusta ei löydy asennettujen sovelluksien luettelosta."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Ei sallittu"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Nykyisellä käyttäjällä ei ole oikeutta suorittaa tätä poistoa."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Virhe"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Sovelluksen poistaminen epäonnistui."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Poista sovellus"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Poista päivitys"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> on osa seuraavaa sovellusta:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Haluatko poistaa tämän sovelluksen?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Haluatko poistaa tämän sovelluksen "<b>"kaikilta"</b>" käyttäjiltä? Sovellus ja sen tiedot poistetaan "<b>"kaikilta"</b>" laitteen käyttäjiltä."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Haluatko poistaa tämän sovelluksen käyttäjältä <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Haluatko korvata tämän sovelluksen tehdasversiolla? Kaikki tiedot poistetaan."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Haluatko korvata tämän sovelluksen tehdasversiolla? Kaikki tiedot poistetaan. Tämä vaikuttaa kaikkiin laitteen käyttäjiin, myös työprofiileihin."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Käynnissä olevat poistot"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Epäonnistuneet poistot"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Poistetaan..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Poistetaan pakettia <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Poisto valmis."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> poistettu"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Poisto epäonnistui."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> on poistettu."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Aktiivista laitteenhallintasovellusta ei voi poistaa käytöstä."</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Käyttäjän <xliff:g id="USERNAME">%1$s</xliff:g> aktiivista laitteenhallintasovellusta ei voi poistaa käytöstä."</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Jotkin käyttäjät/profiilit tarvitsevat tätä sovellusta ja se poistettiin muista."</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Profiilisi käyttö edellyttää tätä sovellusta. Sovellusta ei voi poistaa."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Laitteen järjestelmänvalvoja tarvitsee tätä sovellusta eikä sitä voi poistaa."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Hallinnoi laitteenhallintasovelluksia"</string>
- <string name="manage_users" msgid="3125018886835668847">"Hallinnoi käyttäjiä"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Sovelluksen <xliff:g id="APP_NAME">%1$s</xliff:g> poistaminen epäonnistui"</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Paketin jäsentämisessä esiintyi ongelma."</string>
- <string name="newPerms" msgid="6039428254474104210">"Uusi"</string>
- <string name="allPerms" msgid="1024385515840703981">"Kaikki"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Tietosuoja"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Laitteen käyttö"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Tämä päivitys ei vaadi uusia käyttöoikeuksia."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Haluatko antaa seuraavat käyttöoikeudet? Sovellus saa käyttöönsä nämä kohteet:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Estä"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Lisätietoja"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Kiellä silti"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Saako <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> pois käytöstä"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"kaikki pois käytöstä"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"kaikki käytössä"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Salli"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Sovellukset"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Sovellusten käyttöoikeudet"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Älä kysy uudestaan"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Ei käyttöoikeuksia"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Lisäkäyttöoikeudet"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Oikeuksien ylläpitäjä"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"käyttöoikeudet"</string>
+ <string name="cancel" msgid="7279939269964834974">"Peruuta"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Sovellusta ei löydy"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Estä"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Hylkää äläkä kysy uudelleen"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Lisätietoja"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Kiellä silti"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Sallitaanko toiminto <xliff:g id="ACTION">%2$s</xliff:g> sovellukselle <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Saako <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> aina <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Vain sovelluksen käytön aikana"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Aina"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Hylkää äläkä kysy uudelleen"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> pois käytöstä"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"kaikki pois käytöstä"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"kaikki käytössä"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Salli"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Salli aina"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Salli vain, kun sovellusta käytetään"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Sovell."</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Sovelluksen käyttöoikeudet"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Käyttöoikeuksien ylläpitäjä"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Älä kysy enää"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Ei käyttöoikeuksia"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Lisäkäyttöoikeudet"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Avaa sovelluksen tiedot"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> lisää</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> lisää</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Tämä sovellus on suunniteltu vanhemmalle Android-versiolle. Se ei välttämättä toimi oikein, jos käyttöoikeuksia ei sallita."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"suorita tuntematon toiminto"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"Sallitut sovellukset: <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="6773743421743728921">"Näytä järjestelmä"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Piilota järjestelmä"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g>: käyttöluvat"</string>
- <string name="no_apps" msgid="1965493419005012569">"Ei sovelluksia"</string>
- <string name="location_settings" msgid="1774875730854491297">"Sijaintiasetukset"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Jos peruutat tämän käyttöoikeuden, laitteesi perustoiminnot eivät välttämättä enää toimi oikein."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Käytännön vahvistama"</string>
- <string name="loading" msgid="7811651799620593731">"Ladataan…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Kaikki käyttöoikeudet"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Muut sovellusluvat"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Lupapyyntö"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Näytön peittokuva havaittiin"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Ennen kuin voit muokata tätä käyttöoikeusasetusta, sinun täytyy poistaa näytön peittokuva käytöstä Asetukset-valikon Sovellukset-kohdasta."</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Avaa Asetukset"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Wear ei tue asennus- ja poistotoimintoja."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> on päivitetty. Myönnetäänkö sovellukselle <xliff:g id="APP_NAME_1">%1$s</xliff:g> seuraavat käyttöoikeudet?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Valitse, mitä käyttöoikeuksia sovellukselle <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> myönnetään."</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> on päivitetty. Valitse, mitä käyttöoikeuksia tälle sovellukselle myönnetään."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Peruuta"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Jatka"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Uudet käyttöoikeudet"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Nykyiset käyttöoikeudet"</string>
- <string name="message_staging" msgid="6151794817691100003">"Valmistellaan sovellusta…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Tuntematon"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Turvallisuussyistä tabletti ei voi asentaa tuntemattomia sovelluksia tästä lähteestä."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Turvallisuussyistä televisiosi ei voi asentaa tuntemattomia sovelluksia tästä lähteestä."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Turvallisuussyistä puhelin ei voi asentaa tuntemattomia sovelluksia tästä lähteestä."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Tuntemattomat sovellukset voivat helpommin kaapata puhelimesi ja henkilötietosi. Lataamalla sovelluksia tästä lähteestä hyväksyt, että olet itse vastuussa puhelimellesi aiheutuvista vahingoista tai tietojen menetyksestä, jotka voivat johtua sovellusten käytöstä."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Tuntemattomat sovellukset voivat helpommin kaapata tablettisi ja henkilötietosi. Lataamalla sovelluksia tästä lähteestä hyväksyt, että olet itse vastuussa tabletillesi aiheutuvista vahingoista tai tietojen menetyksestä, jotka voivat johtua sovellusten käytöstä."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Tuntemattomat sovellukset voivat helpommin kaapata televisiosi ja henkilötietosi. Lataamalla sovelluksen hyväksyt, että olet itse vastuussa mahdollisista televisiolle aiheutuvista vahingoista tai tietojen menetyksestä, jotka voivat johtua sovellusten käytöstä."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Jatka"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Asetukset"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Wear-sovellusten asennus/poistaminen"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Tämä sovellus on suunniteltu vanhemmalle Android-versiolle. Se ei välttämättä toimi oikein, jos käyttöoikeuksia ei sallita."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"suorita tuntematon toiminto"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> sovelluksella käyttöoikeus"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Viimeaikainen käyttö"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Näytä käyttöoikeuksien hallintapaneeli"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Näytä järjestelmä"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Piilota järjestelmä"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Ei sovelluksia"</string>
+ <string name="location_settings" msgid="547378321761364906">"Sijaintiasetukset"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Jos peruutat tämän käyttöoikeuden, laitteesi perustoiminnot eivät välttämättä enää toimi oikein."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Käytännön vahvistama"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Käytäntö estää taustakäytön"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Käytäntö sallii taustakäytön"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Käytäntö sallii käytön etualalla"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Järjestelmänvalvoja hallinnoi tätä"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Järjestelmänvalvoja estää taustakäytön"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Järjestelmänvalvoja sallii taustakäytön"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Järjestelmänvalvoja sallii käytön etualalla"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Käyttöoikeudet määritetty järjestelmän mukaan"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Aina"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Vain sovelluksen käytön aikana"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Ei koskaan"</string>
+ <string name="loading" msgid="323483393167148377">"Ladataan…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Kaikki käyttöoikeudet"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Muut sovellusluvat"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Lupapyyntö"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Näytön peittokuva havaittiin"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Ennen kuin voit muokata tätä käyttöoikeusasetusta, sinun täytyy poistaa näytön peittokuva käytöstä Asetukset-valikon Sovellukset-kohdasta."</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Avaa asetukset"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Wear ei tue asennus- ja poistotoimintoja."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Valitse, mitä käyttöoikeuksia sovellukselle <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> myönnetään."</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> on päivitetty. Valitse, mitä käyttöoikeuksia tälle sovellukselle myönnetään."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Peruuta"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Jatka"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Uudet käyttöoikeudet"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Nykyiset käyttöoikeudet"</string>
+ <string name="message_staging" msgid="641286607664721291">"Valmistellaan sovellusta…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Tuntematon"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Hallintapaneeli"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Viimeinen käyttökerta: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> käyttökertaa (<xliff:g id="NUM_5">%3$s</xliff:g> taustalla)</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 (<xliff:g id="NUM_2">%3$s</xliff:g> taustalla)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Viimeinen käyttökerta: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> käyttökertaa\nKesto: <xliff:g id="TIME_5">%3$s</xliff:g></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\nKesto: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Viimeinen käyttökerta: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> käyttökertaa (<xliff:g id="NUM_6">%3$s</xliff:g> taustalla)\nKesto: <xliff:g id="TIME_7">%3$s</xliff:g></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 (<xliff:g id="NUM_2">%3$s</xliff:g> taustalla)\nKesto: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Kaikki käyttöoikeudet"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Milloin tahansa"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Viimeiset 7 päivää"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Viimeiset 24 tuntia"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Viimeisin tunti"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Viimeiset 15 minuuttia"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Viimeinen minuutti"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Käyttöoikeuksia ei käytetty"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Käyttöoikeudet milloin tahansa"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Käyttöoikeudet viimeisten 7 pv:n ajalta"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Käyttöoikeudet viimeisten 24 h:n ajalta"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Käyttöoikeudet viimeisen tunnin ajalta"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Käyttöoikeudet viimeisten 15 min ajalta"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Käyttöoikeudet viimeisen minuutin ajalta"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Yleisimmät käyttöoikeudet milloin tahansa"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Yleisimmät käyttöoikeudet viimeisten 7 pv:n ajalta"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Yleisimmät käyttöoikeudet viimeisten 24 h:n ajalta"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Yleisimmät käyttöoikeudet viimeisen tunnin ajalta"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Yleisimmät käyttöoikeudet viimeisten 15 min ajalta"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Yleisimmät käyttöoikeudet viimeisen minuutin ajalta"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Sovell."</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Suodatusperuste: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Poista suodatin"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Suodatusperuste"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Suodata käyttöoikeuksien perusteella"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Eniten käyttöoikeuksia"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Eniten käyttöoikeuksia"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Viimeisimmät"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Päivitä"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Sovelluksen käyttöoikeudet"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Käyttö: <xliff:g id="NUM">%1$s</xliff:g> kertaa. Käytetty viimeksi <xliff:g id="TIME">%2$s</xliff:g> sitten."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Salli"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Salli aina"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Salli vain, kun sovellusta käytetään"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Estä"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Käyttöoikeus: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="APP">%2$s</xliff:g> pyytää käyttöoikeutta: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="PERM">%2$s</xliff:g> oli sovelluksen (<xliff:g id="APP">%1$s</xliff:g>) käytössä <xliff:g id="TIME">%3$s</xliff:g> sitten"</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> ei ole käyttänyt kohdetta <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Näytä tarkat käyttöoikeustiedot"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Viimeinen käyttökerta: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Ei ole koskaan käytetty"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Sallittu"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Sallittu vain käytön aikana"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Kielletty"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Katso tarkat käyttötiedot"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> päivää</item>
+ <item quantity="one">1 päivä</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> tuntia</item>
+ <item quantity="one">1 tunti</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minuuttia</item>
+ <item quantity="one">1 minuutti</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sekuntia</item>
+ <item quantity="one">1 sekunti</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Haluatko, että <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> on jatkossa <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Haluatko, että <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> (tällä hetkellä <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b>) on jatkossa <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Käyttölupamuistutukset"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> on käyttänyt sijaintiasi"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Tämä sovellus voi aina käyttää sijaintiasi. Muuta napauttamalla."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Vain, kun sovellusta käytetään"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Käyttöoikeuksia ei ole myönnetty"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Ei estettyjä käyttöoikeuksia"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Sovelluksilla ei ole käyttöoikeuksia"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Ei estettyjä sovelluksia"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Avaa"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Poista"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Pakota sulkeutumaan"</string>
+ <string name="settings" msgid="2884124136779508907">"Asetukset"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> on saanut laitteen täydet käyttöoikeudet"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> esteettömyyspalvelulla on laitteen täydet käyttöoikeudet"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> voi nähdä näyttösi, toimintasi ja syöttämäsi tiedot, suorittaa toimintoja ja muuttaa näytön asetuksia."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Nämä palvelut voivat nähdä näyttösi, toimintasi ja syöttämäsi tiedot, suorittaa toimintoja ja muuttaa näytön asetuksia."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Oletussovellukset"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Ei oletussovelluksia"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Työkäytön oletus"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Ei mitään"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Ei sovelluksia"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Sovellusten erikoiskäyttö"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Ei sovellusten erikoiskäyttöä"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Ei sovelluksia"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Avustajasovellus"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Selainsovellus"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Puhelin-sovellus"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Tekstiviestisovellus"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Hätäsovellus"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Aloitusnäyttösovellus"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Musiikkisovellus"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Galleriasovellus"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Autotilan puhelinsovellus"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Soitonsiirtosovellus"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Puhelujen suodatussovellus"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Puhelujen kumppanisovellus"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Auton heijastussovellus"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Ei tue työprofiilia"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Huomaa: Jos käynnistät laitteen uudelleen ja näytön lukitus on käytössä, sovellus voi käynnistyä vasta avattuasi lukituksen."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Avustaja voi lukea tietoja järjestelmäsi käyttämistä sovelluksista, mukaan lukien tietoja, jotka näkyvät näytöllä tai jotka ovat käytettävissä sovelluksissa."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Jaa virheenkorjaustietoja"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Jaetaanko yksityiskohtaisia virheenkorjaustietoja?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> haluaa ladata virheenkorjaustietoja palvelimelle."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Jaa virheenkorjaustietoja"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> pyytää saada ladata laitteelta virheraportin, joka luotiin <xliff:g id="DATE">%2$s</xliff:g> kello <xliff:g id="TIME">%3$s</xliff:g>. Virheraportit sisältävät yksityisiä laitetietoja ja sovellusten kirjaamia tietoja, esimerkiksi käyttäjänimiä, sijaintitietoja, laitteen tunnistetietoja ja verkkotietoja. Jaa virheraportteja vain ihmisille ja sovelluksille, joiden tietojen käsittelyyn luotat. Saako <xliff:g id="APP_NAME_1">%4$s</xliff:g> lähettää virheraportin?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Salli"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Estä"</string>
</resources>
diff --git a/res/values-fr-rCA-television/strings.xml b/res/values-fr-rCA-television/strings.xml
index f9b360e..4bbfb19 100644
--- a/res/values-fr-rCA-television/strings.xml
+++ b/res/values-fr-rCA-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Refuser et ne plus demander"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Vous pourrez modifier ce choix plus tard dans le menu Paramètres > Applications"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Afficher les applications système"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Autorisations de l\'application"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Autorisations de l\'application"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Autorisations pour <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Autorisations supplémentaires"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Autorisations pour <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Refuser et ne plus demander"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Vous pourrez modifier ce choix plus tard dans le menu Paramètres > Applications"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Afficher les applications système"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Autorisations des applications"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Autorisations des applications"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Autorisations pour <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Autorisations supplémentaires"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Autorisations pour <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-fr-rCA-watch/strings.xml b/res/values-fr-rCA-watch/strings.xml
index ad86d01..2b4d93b 100644
--- a/res/values-fr-rCA-watch/strings.xml
+++ b/res/values-fr-rCA-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Refuser et ne plus demander"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Afficher les applications système"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Inchangeable"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Oui"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Annuler"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Refuser et ne plus demander"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Afficher les applications système"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Inchangeable"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Oui"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Annuler"</string>
</resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index b72da45..a61c3c8 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,286 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Programme installation trousse"</string>
- <string name="next" msgid="3057143178373252333">"Suivante"</string>
- <string name="install" msgid="5896438203900042068">"Installer"</string>
- <string name="done" msgid="3889387558374211719">"Terminé"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Autoriser cette application à :"</string>
- <string name="cancel" msgid="8360346460165114585">"Annuler"</string>
- <string name="unknown" msgid="4742479012767208045">"Inconnu"</string>
- <string name="installing" msgid="8613631001631998372">"Installation..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Installation de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> en cours…"</string>
- <string name="install_done" msgid="3682715442154357097">"Application installée."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Voulez-vous installer cette application? Elle pourra :"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Voulez-vous installer cette application? Elle n\'exige aucun accès particulier."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Voulez-vous installer une mise à jour pour cette application? Vos données existantes seront conservées. L\'application mise à jour aura accès à :"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Voulez-vous installer une mise à jour pour cette application intégrée? Vos données existantes seront conservées. L\'application mise à jour aura accès à :"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Voulez-vous installer une mise à jour pour cette application? Vos données ne seront pas perdues. Aucun droit d\'accès spécial n\'est requis."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Voulez-vous installer une mise à jour pour cette application intégrée? Vos données existantes ne seront pas perdues. Aucun droit d\'accès spécial n\'est requis."</string>
- <string name="install_failed" msgid="6579998651498970899">"Application non installée."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"L\'installation du paquet a été bloquée."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"L\'application n\'a pas été installée, car le paquet entre en conflit avec un paquet existant."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"L\'application n\'a pas été installée, car elle n\'est pas compatible avec votre tablette."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Cette application n\'est pas compatible avec votre téléviseur."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"L\'application n\'a pas été installée, car elle n\'est pas compatible avec votre téléphone."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"L\'application n\'a pas été installée, car elle ne semble pas être valide."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Impossible d\'installer <xliff:g id="APP_NAME">%1$s</xliff:g> sur cette tablette."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> n\'a pas pu être installée sur votre téléviseur."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Impossible d\'installer <xliff:g id="APP_NAME">%1$s</xliff:g> sur ce téléphone."</string>
- <string name="launch" msgid="4826921505917605463">"Ouvrir"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Votre administrateur n\'autorise pas l\'installation d\'applications obtenues à partir de sources inconnues"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Cet utilisateur ne peut pas installer les applications inconnues"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Cet utilisateur n\'est pas autorisé à installer des applications"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Paramètres"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Gérer les applications"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Remplacer l\'application?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"L\'application que vous installez va en remplacer une autre.\n\nToutes vos données d\'utilisateur précédentes vont être enregistrées."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Il s\'agit d\'une application système.\n\nToutes vos données d\'utilisateur précédentes vont être enregistrées."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Espace insuffisant"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Impossible d\'installer <xliff:g id="APP_NAME">%1$s</xliff:g>. Veuillez libérer de l\'espace, puis réessayer."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Application non trouvée"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"L\'application ne figure pas dans la liste des applications installées."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Non autorisé"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"L\'utilisateur actuel n\'est pas autorisé à effectuer cette désinstallation."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Erreur"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"L\'application n\'a pas pu être désinstallée."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Désinstaller l\'application"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Désinstaller mise à jour"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> fait partie de l\'application suivante :"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Voulez-vous désinstaller cette application?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Voulez-vous désinstaller cette application pour "<b>"tous"</b>" les utilisateurs? L\'application et ses données seront supprimées pour "<b>"tous"</b>" les utilisateurs de l\'appareil."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Voulez-vous désinstaller cette application pour l\'utilisateur <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Remplacer cette application par la version d\'usine? Toutes les données seront supprimées."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Remplacer cette application par la version d\'usine? Toutes les données seront supprimées. Cela touchera tous les utilisateurs de cet appareil, y compris ceux qui utilisent un profil professionnel."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Désinstallations en cours"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Désinstallations échouées"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Désinstallation..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Désinstallation de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> en cours…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Désinstallation terminée."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"L\'application <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> a bien été désinstallée"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Échec de la désinstallation."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"La désinstallation de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> n\'a pas réussi."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Impossible de désinstaller une application d\'administration de l\'appareil active"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Impossible de désinstaller une application d\'administration de l\'appareil active pour <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Cette application est nécessaire pour certains utilisateurs ou profils, et elle a été désinstallée pour d\'autres."</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Cette application est nécessaire pour votre profil et ne peut pas être désinstallée."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Impossible de désinstaller l\'application : requise par administrateur appareil."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Gérer les applications d\'administration d\'appareils"</string>
- <string name="manage_users" msgid="3125018886835668847">"Gérer les utilisateurs"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Impossible de désinstaller <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Un problème est survenu lors de l\'analyse du paquet."</string>
- <string name="newPerms" msgid="6039428254474104210">"Nouvelles"</string>
- <string name="allPerms" msgid="1024385515840703981">"Toutes"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Confidentialité"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Accès à l\'appareil"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Cette mise à jour n\'exige pas de nouvelles autorisations."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Voulez-vous accorder les autorisations suivantes? Cette application aura accès aux éléments suivants :"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Refuser"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"En savoir plus"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Refuser quand même"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Autoriser <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> autorisation(s) désactivée(s)"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"toutes les autorisations sont désactivées"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"aucune autorisation n\'est désactivée"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Autoriser"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Applications"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Autorisations de l\'application"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Ne plus demander"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Aucune autorisation"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Autorisations supplémentaires"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> autre</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> autres</item>
+ <string name="app_name" msgid="2792757108872430971">"Contrôleur d\'autorisation"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"autorisations"</string>
+ <string name="cancel" msgid="7279939269964834974">"Annuler"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Application non trouvée"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Refuser"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Refuser et ne plus demander"</string>
+ <!-- no translation found for grant_dialog_button_deny_background (5378693207810841555) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_deny_background_and_dont_ask_again (1032019626928637454) -->
+ <skip />
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"En savoir plus"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Refuser qd même"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Autoriser <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"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="7444689446874060511">"Seulement durant l\'utilisation de l\'application"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Toujours"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Refuser et ne plus demander"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> autorisation(s) désactivée(s)"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"toutes autorisations désactivées"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"aucune autorisation désactivée"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Autoriser"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Autoriser tout le temps"</string>
+ <!-- no translation found for grant_dialog_button_allow_foreground (8090382319222429427) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_allow_background (3190568549032350790) -->
+ <skip />
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Applications"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Autorisations des applications"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Gestionnaire des autorisations"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Ne plus demander"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Aucune autorisation"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Autorisations supplémentaires"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Ouvrir l\'information sur l\'application"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> autre</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> autres</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Cette application a été conçue pour une version antérieure d\'Android. Si vous n\'accordez pas l\'autorisation, il se peut qu\'elle ne fonctionne plus correctement."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"effectuer une action inconnue"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"Afficher le système"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Masquer le système"</string>
- <string name="permission_title" msgid="6495415273398916381">"Autorisations pour <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Aucune application"</string>
- <string name="location_settings" msgid="1774875730854491297">"Paramètres de localisation"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Si vous refusez cette autorisation, il est possible que cela touche certaines fonctionnalités de base de votre appareil."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Activé conformément à la politique"</string>
- <string name="loading" msgid="7811651799620593731">"Chargement en cours…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Toutes les autorisations"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Autres autorisations de l\'application"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Demande d\'autorisation"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"La superposition d\'écran a été détectée"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Pour modifier ce paramètre d\'autorisation, vous devez tout d\'abord désactiver la superposition d\'écran en accédant à Paramètres > Applications."</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Ouvrir les paramètres"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Les actions d\'installation et de désinstallation ne sont pas prises en charge par Android Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> a été mis à jour. Autorisez-vous <xliff:g id="APP_NAME_1">%1$s</xliff:g> à accéder aux éléments suivants?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Définissez les autorisations d\'accès de l\'application « <xliff:g id="APP_NAME">%1$s</xliff:g> »"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"L\'application « <xliff:g id="APP_NAME">%1$s</xliff:g> » a été mise à jour. Définissez ses autorisations d\'accès."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Annuler"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Continuer"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Nouvelles autorisations"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Autorisations actuelles"</string>
- <string name="message_staging" msgid="6151794817691100003">"Pré-production de l\'application en cours…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Inconnue"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"À des fins de sécurité, l\'installation d\'applications inconnues provenant de cette source n\'est pas autorisée sur cette tablette."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"À des fins de sécurité, l\'installation d\'applications inconnues provenant de cette source n\'est pas autorisée sur ce téléviseur."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"À des fins de sécurité, l\'installation d\'applications inconnues provenant de cette source n\'est pas autorisée sur ce téléphone."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Votre téléphone et vos données personnelles sont plus vulnérables aux attaques provenant d\'applications inconnues. En installant cette application vous acceptez d\'être le seul responsable de tout dommage causé à votre téléphone ou de toute perte de données pouvant découler de l\'utilisation de telles applications."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Votre tablette et vos données personnelles sont plus vulnérables aux attaques provenant d\'applications inconnues. En installant cette application, vous acceptez d\'être le seul responsable de tout dommage causé à votre tablette ou de toute perte de données pouvant découler de l\'utilisation de telles applications."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Votre téléviseur et vos données personnelles sont plus vulnérables face aux attaques d\'applications inconnues. En installant cette application, vous acceptez d\'être le seul responsable de tout dommage causé à votre téléviseur ou de toute perte de données pouvant découler de son utilisation."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Continuer"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Paramètres"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Installer/désinstaller applis Google Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Cette application a été conçue pour une version antérieure d\'Android. Si vous n\'accordez pas l\'autorisation, il se peut qu\'elle ne fonctionne plus correctement."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"effectuer une action inconnue"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> applications autorisées sur <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Afficher le système"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Masquer le système"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Aucune application"</string>
+ <string name="location_settings" msgid="547378321761364906">"Paramètres de localisation"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Si vous refusez cette autorisation, il est possible que cela touche certaines fonctionnalités de base de votre appareil."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Activé conformément à la politique"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"L\'accès en arrière-plan est désactivé par la politique"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"L\'accès en arrière-plan est activé par la politique"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"L\'accès en avant-plan est activé par la politique"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Contrôlé par l\'administrateur"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"L\'accès en arrière-plan est désactivé par l\'administrateur"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"L\'accès en arrière-plan est activé par l\'administrateur"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"L\'accès en avant-plan est activé par l\'administrateur"</string>
+ <!-- no translation found for permission_summary_enabled_system_fixed (5463084832974856683) -->
+ <skip />
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <!-- no translation found for permission_access_always (5419580764084361573) -->
+ <skip />
+ <!-- no translation found for permission_access_only_foreground (2857031150724321567) -->
+ <skip />
+ <!-- no translation found for permission_access_never (425385910378172045) -->
+ <skip />
+ <string name="loading" msgid="323483393167148377">"Chargement en cours…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Toutes les autorisations"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Autres autorisations de l\'application"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Demande d\'autorisation"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"La superposition d\'écran a été détectée"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Pour modifier ce paramètre d\'autorisation, vous devez tout d\'abord désactiver la superposition d\'écran en accédant à Paramètres > Applications."</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Ouvrir les paramètres"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Les actions d\'installation et de désinstallation ne sont pas prises en charge par Android Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Définissez les autorisations d\'accès de l\'application « <xliff:g id="APP_NAME">%1$s</xliff:g> »"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"L\'application « <xliff:g id="APP_NAME">%1$s</xliff:g> » a été mise à jour. Définissez ses autorisations d\'accès."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Annuler"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Continuer"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Nouvelles autorisations"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Autorisations actuelles"</string>
+ <string name="message_staging" msgid="641286607664721291">"Pré-production de l\'application en cours…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Inconnu"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Tableau de bord"</string>
+ <!-- no translation found for permission_usage_summary_foreground (3203419920107457274) -->
+ <skip />
+ <!-- no translation found for permission_usage_summary_background (5719598203265078254) -->
+ <skip />
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Toute autorisation"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"À tout moment"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Les 7 derniers jours"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Les 24 dernières heures"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"La dernière heure"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Les 15 dernières minutes"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Au cours de la dernière minute"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Aucune autoris. d\'utilisation"</string>
+ <!-- no translation found for permission_usage_list_title_any_time (5641676869304328239) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_7_days (2972289322203714509) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_day (6298662604046093174) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_hour (7224982939487774388) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_15_minutes (49045607172810502) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_minute (7716966405942817635) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_any_time (862654449303514044) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_7_days (5393381637937213483) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_day (7202567658282481259) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_hour (4672313408976666479) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_15_minutes (1776918144361651860) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_minute (236300476767668315) -->
+ <skip />
+ <!-- no translation found for app_permission_usage_bar_label (7261634017833698654) -->
+ <!-- no translation found for permission_usage_view_details (4728049344017619500) -->
+ <skip />
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtré par : <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Supprimer le filtre"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtrer par"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtrer par autorisation"</string>
+ <!-- no translation found for filter_by_time (1763143592970195407) -->
+ <skip />
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Le plus d\'autorisations"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Le plus d\'accès"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Récents"</string>
+ <!-- no translation found for sort_by_app (1912228966803416485) -->
+ <skip />
+ <!-- no translation found for sort_by_time (8280378662234104410) -->
+ <skip />
+ <!-- no translation found for item_separator (8266062815210378175) -->
+ <skip />
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Actualiser"</string>
+ <!-- no translation found for permission_usage_permission_filter_subtitle (5539392196389332769) -->
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Util. des autoris. de l\'appli"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"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>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Autoriser"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Autoriser tout le temps"</string>
+ <!-- no translation found for app_permission_button_allow_foreground (2303741829613210541) -->
+ <skip />
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Refuser"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Autorisation <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <!-- no translation found for app_permission_header (228974007660007656) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_usage_summary (1034436308858219976) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_no_usages (4444374134047275841) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_app_permissions_link (8033278634020892918) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_permission_apps_link (8759141212929298774) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_generic (5479202003136667039) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_activity_recognition (2022880340017289990) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_calendar (2846128908236787586) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_call_log (2429916962093948340) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_camera (6699611334403400091) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_contacts (5169995707720233126) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_location (687820658574645201) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_aural (2102206495149326019) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_visual (3105938942794669520) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_microphone (2300290217308759293) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_phone (3773977614654088578) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sensors (6733606479604624853) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sms (8850213022386508528) -->
+ <skip />
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Dernier accès : <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Aucun accès"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Autorisée"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Autorisée seulement durant l\'utilisation"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Refusé"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Afficher les détails d\'utilisation"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> minute</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minutes</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> seconde</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> secondes</item>
+ </plurals>
+ <string name="permission_reminders" msgid="8040710767178843151">"Rappels d\'autorisation"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> utilise l\'accès à votre position"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Cette application peut toujours accéder à votre position. Touchez l\'écran pour modifier cela."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Uniquement lorsque l\'application est en cours d\'utilisation"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Aucune autorisation accordée"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Aucune autorisation refusée"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Aucune application autorisée"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Aucune application refusée"</string>
+ <string name="settings" msgid="2884124136779508907">"Paramètres"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> a un accès complet à votre appareil"</string>
+ <!-- no translation found for accessibility_service_dialog_title_multiple (8129325613496173909) -->
+ <skip />
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> peut voir votre écran, vos actions et ce que vous entrez; il peut également effectuer des actions et contrôler l\'écran."</string>
+ <!-- no translation found for accessibility_service_dialog_bottom_text_multiple (1387803460488775887) -->
+ <skip />
+ <!-- no translation found for request_role_title (3611734134669430568) -->
+ <skip />
+ <!-- no translation found for request_role_current_default (7512045433655289638) -->
+ <skip />
+ <!-- no translation found for request_role_set_as_default (5706081295230541240) -->
+ <skip />
+ <!-- no translation found for default_app_search_keyword (6938709626391437391) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_ok (3007005536659549573) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_open_settings (3368892579319881043) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_title (7173961211414061803) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_separator (9008030412869423988) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_last_separator (7455459775266515801) -->
+ <skip />
+ <string name="default_apps" msgid="8554530939151957828">"Applications par défaut"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Aucune application par défaut"</string>
+ <!-- no translation found for default_apps_manage_domain_urls (3146379064445013719) -->
+ <skip />
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Par défaut pour util. profess."</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Aucun"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Aucune application"</string>
+ <!-- no translation found for special_app_access_search_keyword (462008045110320714) -->
+ <skip />
+ <string name="special_app_access" msgid="2561673957499408877">"Accès spécial pour applis"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Aucun accès spécial pour applis"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Aucune application"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Application d\'assistance"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Application de navigateur"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Application Téléphone"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Application de messagerie texte"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Application d\'urgence"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Application d\'accueil"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Application de musique"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Application de galerie"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Appli tél. pour mode Voiture"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Appeler l\'application de redirection"</string>
+ <!-- no translation found for role_label_call_screening (1089966334646538858) -->
+ <skip />
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Application compagnon d\'appel"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Non compatible avec les profils professionnels"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Remarque : Si vous redémarrez votre appareil et que vous avez défini un verrouillage de l\'écran, cette application ne pourra pas démarrer tant que vous n\'avez pas déverrouillé votre appareil"</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"L\'Assistant Google pourra accéder aux données des applications en cours d\'utilisation sur votre système, y compris les données visibles à l\'écran ou accessibles au sein des applications."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Partager les données de débogage"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Partager des données de débogage détaillées?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> souhaite téléverser des données de débogage."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Partager les données de débogage"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"L\'application <xliff:g id="APP_NAME_0">%1$s</xliff:g> souhaite téléverser un rapport de bogue créé le <xliff:g id="DATE">%2$s</xliff:g> à <xliff:g id="TIME">%3$s</xliff:g> sur cet appareil. Les rapports de bogue contiennent des données personnelles relatives à votre appareil ou enregistrées par des applications, comme des noms d\'utilisateur, des données de localisation, des identifiants d\'appareils et des renseignements relatifs au réseau. Ne partagez les rapports de bogue qu\'avec des personnes et des applications que vous jugez fiables. Autoriser l\'application <xliff:g id="APP_NAME_1">%4$s</xliff:g> à téléverser un rapport de bogue?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Autoriser"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Refuser"</string>
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_title (5699953608028268176) -->
+ <skip />
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_content (6960592986228883592) -->
+ <skip />
+ <!-- no translation found for dismiss_with_acknowledgment (2879819713128822468) -->
+ <skip />
</resources>
diff --git a/res/values-fr-television/strings.xml b/res/values-fr-television/strings.xml
index fa16b94..dbd7abc 100644
--- a/res/values-fr-television/strings.xml
+++ b/res/values-fr-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Refuser et ne plus demander"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Vous pourrez modifier ce paramètre plus tard sous Paramètres > Applications."</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Afficher les applications système"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Autorisations de l\'application"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Autorisations de l\'application"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Autorisations pour <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Autorisations supplémentaires"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Autorisations pour <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Refuser et ne plus demander"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Vous pourrez modifier ce paramètre plus tard sous Paramètres > Applications"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Afficher les applications système"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Autorisations des applications"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Autorisations des applications"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Autorisations pour <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Autorisations supplémentaires"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Autorisations pour <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-fr-watch/strings.xml b/res/values-fr-watch/strings.xml
index a172e1c..2482b19 100644
--- a/res/values-fr-watch/strings.xml
+++ b/res/values-fr-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Refuser et ne plus demander"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Afficher les applications système"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Non modifiable"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Oui"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Annuler"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Refuser et ne plus demander"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Afficher les applications système"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Non modifiable"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Oui"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Annuler"</string>
</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 9ed4cb1..49851ba 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,286 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Programme d\'installation du kit"</string>
- <string name="next" msgid="3057143178373252333">"Suivant"</string>
- <string name="install" msgid="5896438203900042068">"Installer"</string>
- <string name="done" msgid="3889387558374211719">"OK"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Autoriser cette application à :"</string>
- <string name="cancel" msgid="8360346460165114585">"Annuler"</string>
- <string name="unknown" msgid="4742479012767208045">"Inconnu"</string>
- <string name="installing" msgid="8613631001631998372">"Installation..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Installation de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Application installée."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Voulez-vous installer cette application ? Elle permet les actions suivantes :"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Voulez-vous installer cette application ? Elle n\'exige aucun accès particulier."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Voulez-vous installer une mise à jour pour cette application ? Vos données existantes seront conservées. L\'application mise à jour pourra :"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Voulez-vous installer une mise à jour pour cette application intégrée ? Vos données existantes seront conservées. L\'application mise à jour pourra :"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Voulez-vous installer une mise à jour pour cette application ? Vos données ne seront pas perdues. Aucun droit d\'accès spécial n\'est requis."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Voulez-vous installer une mise à jour pour cette application intégrée ? Vos données existantes ne seront pas perdues. Aucun droit d\'accès spécial n\'est requis."</string>
- <string name="install_failed" msgid="6579998651498970899">"Application non installée."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"L\'installation du package a été bloquée."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"L\'application n\'a pas été installée, car le package entre en conflit avec un package existant."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"L\'application n\'a pas été installée, car elle n\'est pas compatible avec votre tablette."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Cette application n\'est pas compatible avec votre téléviseur."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"L\'application n\'a pas été installée, car elle n\'est pas compatible avec votre téléphone."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"L\'application n\'a pas été installée, car le package semble ne pas être valide."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Impossible d\'installer <xliff:g id="APP_NAME">%1$s</xliff:g> sur cette tablette."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Impossible d\'installer <xliff:g id="APP_NAME">%1$s</xliff:g> sur votre téléviseur."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Impossible d\'installer <xliff:g id="APP_NAME">%1$s</xliff:g> sur ce téléphone."</string>
- <string name="launch" msgid="4826921505917605463">"Ouvrir"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Votre administrateur n\'autorise pas l\'installation d\'applications obtenues à partir de sources inconnues"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Cet utilisateur ne peut pas installer d\'applications inconnues"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Cet utilisateur n\'est pas autorisé à installer des applications"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Paramètres"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Gérer les applications"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Remplacer l\'application ?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"L\'application que vous installez va en remplacer une autre.\n\nToutes vos données d\'utilisateur précédentes vont être enregistrées."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Il s\'agit d\'une application système.\n\nToutes vos données d\'utilisateur précédentes vont être enregistrées."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Mémoire insuffisante"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Impossible d\'installer <xliff:g id="APP_NAME">%1$s</xliff:g>. Veuillez libérer de l\'espace, puis réessayer."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Application non trouvée"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"L\'application ne figure pas dans la liste des applications installées."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Non autorisé"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"L\'utilisateur actuel n\'est pas autorisé à effectuer cette désinstallation."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Erreur"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Impossible de désinstaller l\'application."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Désinstaller l\'application"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Désinstaller la mise à jour"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> fait partie de l\'application suivante :"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Voulez-vous désinstaller cette application ?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Voulez-vous désinstaller cette application pour "<b>"tous"</b>" les utilisateurs ? L\'application et ses données seront supprimées pour "<b>"tous"</b>" les utilisateurs de l\'appareil."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Voulez-vous désinstaller cette application pour l\'utilisateur <xliff:g id="USERNAME">%1$s</xliff:g> ?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Remplacer cette application par la version d\'usine ? Toutes les données seront supprimées."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Remplacer cette application par la version d\'usine ? Toutes les données seront supprimées. Tous les utilisateurs de cet appareil seront affectés, y compris ceux qui ont un profil professionnel."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Désinstallations en cours"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Désinstallations non abouties"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Désinstallation..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Désinstallation de l\'application <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Désinstallation terminée."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"L\'application <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> a été désinstallée"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Échec de la désinstallation."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Échec de la désinstallation de l\'application <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Impossible de désinstaller une application d\'administration de l\'appareil active"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Impossible de désinstaller une application d\'administration de l\'appareil active pour <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Cette application nécessaire pour certains utilisateurs ou profils a été désinstallée pour d\'autres."</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Impossible de désinstaller l\'application, car elle est nécessaire pour votre profil."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Impossible désinstaller appli, car elle est requise par administrateur appareil."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Gérer les applis d\'administration de l\'appareil"</string>
- <string name="manage_users" msgid="3125018886835668847">"Gérer les utilisateurs"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Impossible de désinstaller <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Un problème est survenu lors de l\'analyse du package."</string>
- <string name="newPerms" msgid="6039428254474104210">"Nouveautés"</string>
- <string name="allPerms" msgid="1024385515840703981">"Toutes"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Confidentialité"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Accès à l\'appareil"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Cette mise à jour n\'exige pas de nouvelles autorisations."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Voulez-vous accorder les autorisations suivantes ? L\'utilisateur aura accès aux éléments suivants :"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Refuser"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Plus d\'infos"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Refuser quand même"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Autoriser l\'application <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à <xliff:g id="ACTION">%2$s</xliff:g> ?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> désactivées"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"toutes désactivées"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"aucune désactivée"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Autoriser"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Applications"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Autorisations applis"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Ne plus demander"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Aucune autorisation"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Autorisations supplémentaires"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Contrôleur autorisations"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"autorisations"</string>
+ <string name="cancel" msgid="7279939269964834974">"Annuler"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Application non trouvée"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Refuser"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Refuser et ne plus demander"</string>
+ <!-- no translation found for grant_dialog_button_deny_background (5378693207810841555) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_deny_background_and_dont_ask_again (1032019626928637454) -->
+ <skip />
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Plus d\'infos"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Confirmer refus"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Autoriser l\'application <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à <xliff:g id="ACTION">%2$s</xliff:g> ?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Toujours autoriser <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à <xliff:g id="ACTION">%2$s</xliff:g> ?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Seulement lors de l\'utilisation de l\'application"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Toujours"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Refuser et ne plus demander"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> désactivées"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"toutes désactivées"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"aucune désactivée"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Autoriser"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Toujours autoriser"</string>
+ <!-- no translation found for grant_dialog_button_allow_foreground (8090382319222429427) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_allow_background (3190568549032350790) -->
+ <skip />
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Applications"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Autorisations des applications"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Gestionnaire d\'autorisations"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Ne plus demander"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Aucune autorisation"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Autorisations supplémentaires"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Ouvrir les informations sur l\'application"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> autre</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> autres</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Cette application a été conçue pour une ancienne version d\'Android. Si vous désactivez les autorisations, l\'application risque de ne plus fonctionner comme prévu."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"effectuer une action inconnue"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"Afficher les processus système"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Masquer les processus système"</string>
- <string name="permission_title" msgid="6495415273398916381">"Autorisations pour \"<xliff:g id="PERMISSION">%1$s</xliff:g>\""</string>
- <string name="no_apps" msgid="1965493419005012569">"Aucune application"</string>
- <string name="location_settings" msgid="1774875730854491297">"Paramètres de géolocalisation"</string>
- <string name="location_warning" msgid="8778701356292735971">"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="7103819124542305179">"Si vous refusez cette autorisation, il est possible que cela affecte certaines fonctionnalités de base de votre appareil."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Activé conformément aux règles"</string>
- <string name="loading" msgid="7811651799620593731">"Chargement en cours…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Toutes les autorisations"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Autres autorisations de l\'application"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Demande d\'autorisation"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Superposition d\'écran détectée"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Pour modifier ce paramètre d\'autorisation, vous devez tout d\'abord désactiver la superposition d\'écran en accédant à Paramètres > Applications."</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Ouvrir les paramètres"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Opérations d\'installation et de désinstallation impossibles sur Android Wear"</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> a été mise à jour. Autoriser <xliff:g id="APP_NAME_1">%1$s</xliff:g> à accéder aux éléments suivants ?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Sélectionner les éléments auxquels <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> peut accéder"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"L\'application <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> a été mise à jour. Sélectionnez les éléments auxquels elle peut accéder."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Annuler"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Continuer"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Nouvelles autorisations"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Autorisations actuelles"</string>
- <string name="message_staging" msgid="6151794817691100003">"Pré-production de l\'application…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Inconnu"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"À des fins de sécurité, l\'installation d\'applications inconnues provenant de cette source n\'est pas autorisée sur cette tablette."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"À des fins de sécurité, l\'installation d\'applications inconnues provenant de cette source n\'est pas autorisée sur ce téléviseur."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"À des fins de sécurité, l\'installation d\'applications inconnues provenant de cette source n\'est pas autorisée sur ce téléphone."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Votre téléphone et vos données personnelles sont plus vulnérables face aux attaques d\'applications inconnues. En installant cette application, vous acceptez d\'être le seul responsable de tout dommage causé à votre téléphone ou de toute perte de données pouvant découler de son utilisation."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Votre tablette et vos données personnelles sont plus vulnérables face aux attaques d\'applications inconnues. En installant cette application, vous acceptez d\'être le seul responsable de tout dommage causé à votre tablette ou de toute perte de données pouvant découler de son utilisation."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Votre téléviseur et vos données personnelles sont plus vulnérables face aux attaques d\'applications inconnues. En installant cette application, vous acceptez d\'être le seul responsable de tout dommage causé à votre téléviseur ou de toute perte de données pouvant découler de son utilisation."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Continuer"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Paramètres"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Installer/Désinstaller les applis Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Cette application a été conçue pour une ancienne version d\'Android. Si vous refusez les autorisations, l\'application risque de ne plus fonctionner comme prévu."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"effectuer une action inconnue"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<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="7623002570829860709">"Afficher les applications système"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Masquer les applications système"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Aucune application"</string>
+ <string name="location_settings" msgid="547378321761364906">"Paramètres de localisation"</string>
+ <string name="location_warning" msgid="4687406043150343369">"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="6868290533389195836">"Si vous refusez cette autorisation, il est possible que cela affecte certaines fonctionnalités de base de votre appareil."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Activé conformément aux règles"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Accès en arrière-plan désactivé conformément au règlement"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Accès en arrière-plan activé conformément au règlement"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Accès au premier plan activé conformément au règlement"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Contrôlé par l\'administrateur"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Accès en arrière-plan désactivé par l\'administrateur"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Accès en arrière-plan activé par l\'administrateur"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Accès au premier plan activé par l\'administrateur"</string>
+ <!-- no translation found for permission_summary_enabled_system_fixed (5463084832974856683) -->
+ <skip />
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <!-- no translation found for permission_access_always (5419580764084361573) -->
+ <skip />
+ <!-- no translation found for permission_access_only_foreground (2857031150724321567) -->
+ <skip />
+ <!-- no translation found for permission_access_never (425385910378172045) -->
+ <skip />
+ <string name="loading" msgid="323483393167148377">"Chargement…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Toutes les autorisations"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Autres fonctionnalités de l\'application"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Demande d\'autorisation"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Superposition d\'écran détectée"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Pour modifier ce paramètre d\'autorisation, vous devez d\'abord désactiver la superposition d\'écran sous Paramètres > Applications"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Ouvrir les paramètres"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Opérations d\'installation et de désinstallation impossibles sur Android Wear"</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Sélectionner les éléments auxquels <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> peut accéder"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"L\'application <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> a été mise à jour. Sélectionnez les éléments auxquels elle peut accéder."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Annuler"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Continuer"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Nouvelles autorisations"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Autorisations actuelles"</string>
+ <string name="message_staging" msgid="641286607664721291">"Pré-production de l\'application…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Inconnu"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Tableau de bord"</string>
+ <!-- no translation found for permission_usage_summary_foreground (3203419920107457274) -->
+ <skip />
+ <!-- no translation found for permission_usage_summary_background (5719598203265078254) -->
+ <skip />
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Toute autorisation"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Date indifférente"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"7 derniers jours"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Dernières 24 heures"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Dernière heure"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"15 dernières minutes"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Dernière minute"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Aucune autorisation utilisée"</string>
+ <!-- no translation found for permission_usage_list_title_any_time (5641676869304328239) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_7_days (2972289322203714509) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_day (6298662604046093174) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_hour (7224982939487774388) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_15_minutes (49045607172810502) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_minute (7716966405942817635) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_any_time (862654449303514044) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_7_days (5393381637937213483) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_day (7202567658282481259) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_hour (4672313408976666479) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_15_minutes (1776918144361651860) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_minute (236300476767668315) -->
+ <skip />
+ <!-- no translation found for app_permission_usage_bar_label (7261634017833698654) -->
+ <!-- no translation found for permission_usage_view_details (4728049344017619500) -->
+ <skip />
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Données filtrées par : <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Supprimer le filtre"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtrer par"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtrer par autorisation"</string>
+ <!-- no translation found for filter_by_time (1763143592970195407) -->
+ <skip />
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Le plus d\'autorisations"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Le plus d\'accès"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Du plus récent au plus ancien"</string>
+ <!-- no translation found for sort_by_app (1912228966803416485) -->
+ <skip />
+ <!-- no translation found for sort_by_time (8280378662234104410) -->
+ <skip />
+ <!-- no translation found for item_separator (8266062815210378175) -->
+ <skip />
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Actualiser"</string>
+ <!-- no translation found for permission_usage_permission_filter_subtitle (5539392196389332769) -->
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Utilisation des autorisations"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"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>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Autoriser"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Toujours autoriser"</string>
+ <!-- no translation found for app_permission_button_allow_foreground (2303741829613210541) -->
+ <skip />
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Refuser"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Autorisation : <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <!-- no translation found for app_permission_header (228974007660007656) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_usage_summary (1034436308858219976) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_no_usages (4444374134047275841) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_app_permissions_link (8033278634020892918) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_permission_apps_link (8759141212929298774) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_generic (5479202003136667039) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_activity_recognition (2022880340017289990) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_calendar (2846128908236787586) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_call_log (2429916962093948340) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_camera (6699611334403400091) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_contacts (5169995707720233126) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_location (687820658574645201) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_aural (2102206495149326019) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_visual (3105938942794669520) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_microphone (2300290217308759293) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_phone (3773977614654088578) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sensors (6733606479604624853) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sms (8850213022386508528) -->
+ <skip />
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Dernier accès : <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Aucun accès enregistré"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Autorisées"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Autorisées seulement pendant l\'utilisation"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Refusées"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Afficher l\'utilisation détaillée"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> minute</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minutes</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> seconde</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> secondes</item>
+ </plurals>
+ <string name="permission_reminders" msgid="8040710767178843151">"Rappels relatifs aux autorisations"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"L\'application <xliff:g id="APP_NAME">%s</xliff:g> utilise votre position"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Cette application peut accéder en permanence à votre position. Appuyez dessus pour modifier cette autorisation."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Seulement quand l\'application est en cours d\'utilisation"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Aucune autorisation accordée"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Aucune autorisation refusée"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Cette autorisation n\'a été accordée à aucune application"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Cette autorisation n\'a été refusée à aucune application"</string>
+ <string name="settings" msgid="2884124136779508907">"Paramètres"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> bénéficie d\'un accès complet à votre appareil"</string>
+ <!-- no translation found for accessibility_service_dialog_title_multiple (8129325613496173909) -->
+ <skip />
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> peut voir votre écran, vos actions et ce que vous saisissez, réaliser des actions et contrôler l\'affichage."</string>
+ <!-- no translation found for accessibility_service_dialog_bottom_text_multiple (1387803460488775887) -->
+ <skip />
+ <!-- no translation found for request_role_title (3611734134669430568) -->
+ <skip />
+ <!-- no translation found for request_role_current_default (7512045433655289638) -->
+ <skip />
+ <!-- no translation found for request_role_set_as_default (5706081295230541240) -->
+ <skip />
+ <!-- no translation found for default_app_search_keyword (6938709626391437391) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_ok (3007005536659549573) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_open_settings (3368892579319881043) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_title (7173961211414061803) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_separator (9008030412869423988) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_last_separator (7455459775266515801) -->
+ <skip />
+ <string name="default_apps" msgid="8554530939151957828">"Applications par défaut"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Aucune application par défaut"</string>
+ <!-- no translation found for default_apps_manage_domain_urls (3146379064445013719) -->
+ <skip />
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Par défaut pour utilisation pro"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Aucune"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Aucune application"</string>
+ <!-- no translation found for special_app_access_search_keyword (462008045110320714) -->
+ <skip />
+ <string name="special_app_access" msgid="2561673957499408877">"Accès spécifique des applis"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Aucun accès spécif. des applis"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Aucune application"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Application d\'assistance"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Application de navigateur"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Application Téléphone"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Application de SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Application pour les urgences"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Application Google Home"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Application Musique"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Application Galerie"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Appli téléphone mode Voiture"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Appli de redirection d\'appels"</string>
+ <!-- no translation found for role_label_call_screening (1089966334646538858) -->
+ <skip />
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Application d\'appels associée"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Non compatible avec le profil professionnel"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Remarque : Si vous redémarrez votre appareil et que le verrouillage de l\'écran est activé, vous ne pouvez pas lancer cette application tant que vous n\'avez pas déverrouillé votre appareil."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"L\'Assistant pourra accéder aux informations relatives aux applications en cours d\'utilisation sur votre système, y compris aux informations visibles à l\'écran ou accessibles dans les applications."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Partager les données de débogage"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Partager les données de débogage détaillées ?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"L\'application <xliff:g id="APP_NAME">%1$s</xliff:g> souhaite transférer des informations de débogage."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Partager les données de débogage"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"L\'application <xliff:g id="APP_NAME_0">%1$s</xliff:g> souhaite transférer un rapport de bug créé le <xliff:g id="DATE">%2$s</xliff:g> à <xliff:g id="TIME">%3$s</xliff:g> depuis cet appareil. Les rapports de bug contiennent des informations personnelles relatives à votre appareil ou enregistrées par des applications, telles que des noms d\'utilisateur, des données de localisation, des identifiants d\'appareils et des informations relatives au réseau. Ne partagez les rapports de bug qu\'avec des personnes et des applications que vous estimez fiables. Autoriser l\'application <xliff:g id="APP_NAME_1">%4$s</xliff:g> à transférer un rapport de bug ?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Autoriser"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Refuser"</string>
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_title (5699953608028268176) -->
+ <skip />
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_content (6960592986228883592) -->
+ <skip />
+ <!-- no translation found for dismiss_with_acknowledgment (2879819713128822468) -->
+ <skip />
</resources>
diff --git a/res/values-gl-television/strings.xml b/res/values-gl-television/strings.xml
index 01e8498..7d7a442 100644
--- a/res/values-gl-television/strings.xml
+++ b/res/values-gl-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Denegar e non volver preguntar"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Podes cambiar esta opción máis tarde en Configuración e aplicacións"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Mostrar aplicacións do sistema"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Permisos de aplicacións"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Permisos de aplicacións"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Permisos de <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Permisos adicionais"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Permisos de <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Denegar e non volver preguntar"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Podes cambiar esta opción máis tarde en Configuración e aplicacións"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Mostrar aplicacións do sistema"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Permisos de aplicacións"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Permisos de aplicacións"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Permisos da aplicación <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Permisos adicionais"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Permisos da aplicación <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-gl-watch/strings.xml b/res/values-gl-watch/strings.xml
index 5cbb970..398c9df 100644
--- a/res/values-gl-watch/strings.xml
+++ b/res/values-gl-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Denegar, non volver preguntar"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Mostrar aplicacións do sistema"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Cambio imposible"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Si"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Cancelar"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Denegar, non volver preguntar"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Mostrar aplicacións do sistema"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Cambio imposible"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Si"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Cancelar"</string>
</resources>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 2fe3691..1237c62 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Instalador de paquetes"</string>
- <string name="next" msgid="3057143178373252333">"Seguinte"</string>
- <string name="install" msgid="5896438203900042068">"Instalar"</string>
- <string name="done" msgid="3889387558374211719">"Feito"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Permitir a esta aplicación:"</string>
- <string name="cancel" msgid="8360346460165114585">"Cancelar"</string>
- <string name="unknown" msgid="4742479012767208045">"Descoñecido"</string>
- <string name="installing" msgid="8613631001631998372">"Instalando…"</string>
- <string name="installing_app" msgid="4097935682329028894">"Instalando <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Aplicación instalada"</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Queres instalar esta aplicación? Poderá acceder a:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Queres instalar esta aplicación? Non require ningún acceso especial."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Queres instalar unha actualización para esta aplicación? Non se perderán os teus datos existentes. A aplicación actualizada disporá de acceso a:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Queres instalar unha actualización para esta aplicación integrada? Non se perderán os teus datos existentes. A aplicación actualizada disporá de acceso a:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Queres instalar unha actualización para esta aplicación? Non se perderán os teus datos existentes. Non require ningún acceso especial."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Queres instalar unha actualización para esta aplicación integrada? Non se perderán os teus datos existentes. Non require ningún acceso especial."</string>
- <string name="install_failed" msgid="6579998651498970899">"Aplicación non instalada"</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Bloqueouse a instalación do paquete."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"A aplicación non se instalou porque o paquete presenta un conflito cun paquete existente."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"A aplicación non se instalou porque a aplicación non é compatible coa tableta."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Esta aplicación non é compatible coa túa televisión."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"A aplicación non se instalou porque a aplicación non é compatible co teléfono."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"A aplicación non se instalou porque parece que o paquete non é válido."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Non se puido instalar <xliff:g id="APP_NAME">%1$s</xliff:g> na túa tableta."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> non se puido instalar na túa televisión."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Non se puido instalar <xliff:g id="APP_NAME">%1$s</xliff:g> no teu teléfono."</string>
- <string name="launch" msgid="4826921505917605463">"Abrir"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"O teu administrador non permite a instalación de aplicacións obtidas a partir de fontes descoñecidas"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Este usuario non pode instalar aplicacións descoñecidas"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Este usuario non ten permiso para instalar aplicacións"</string>
- <string name="ok" msgid="3468756155452870475">"Aceptar"</string>
- <string name="settings" msgid="6743583734099755409">"Configuración"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Xestionar aplicacións"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Substituír aplicación?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"A aplicación que estás instalando substituirá a outra aplicación.\n\nGardaranse todos os teus datos de usuario anteriores."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Esta é unha aplicación do sistema.\n\nGardaranse todos os teus datos de usuario anteriores."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Espazo esgotado"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Non se puido instalar <xliff:g id="APP_NAME">%1$s</xliff:g>. Libera espazo e téntao de novo."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"Aceptar"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Non se encontrou a aplicación"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Non se atopou a aplicación na lista de aplicacións instaladas."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Non permitido"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"O usuario actual non pode realizar esta desinstalación."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Erro"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Non se puido desinstalar a aplicación."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Desinstalar aplicación"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Desinstalar actualización"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> forma parte da seguinte aplicación:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Queres desinstalar esta aplicación?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Queres desinstalar esta aplicación para "<b>"todos"</b>" os usuarios? A aplicación e os seus datos eliminaranse de "<b>"todos"</b>" os usuarios do dispositivo."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Queres desinstalar esta aplicación para o usuario <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Queres substituír esta aplicación pola versión que viña de fábrica? Eliminaranse todos os datos."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Queres substituír esta aplicación pola versión que viña de fábrica? Eliminaranse todos os datos. Isto afectará a todos os usuarios do dispositivo, incluídos os que teñan perfís de traballo."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Desintalacións en curso"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Erros nas desinstalacións"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Desinstalando…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Desinstalando <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Desinstalación finalizada"</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Desinstalouse <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Desinstalación incorrecta"</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"A desinstalación de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> non se realizou correctamente."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Non se puido desinstalar a aplicación de administración de dispositivos activa"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Non se puido desinstalar a aplicación de administración de dispositivos activa para <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"A aplicación é necesaria para algúns usuarios ou perfís e estaba desinstalada para outros"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"O teu perfil necesita esta aplicación e non se pode desinstalar."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"O administrador do teu dispositivo necesita esta aplicación e non se pode desinstalar."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Xestionar apps de administración de dispositivos"</string>
- <string name="manage_users" msgid="3125018886835668847">"Administrar usuarios"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Non se puido desinstalar <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Produciuse un problema ao analizar o paquete."</string>
- <string name="newPerms" msgid="6039428254474104210">"Novo"</string>
- <string name="allPerms" msgid="1024385515840703981">"Todos"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privacidade"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Acceso dispositivo"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Esta actualización non require novos permisos."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Queres conceder os seguintes permisos? Obterá acceso a:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Denegar"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Máis información"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Denegar igualmente"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Queres permitir á aplicación <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> desactivados"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"todos desactivados"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"ningún desactivado"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Permitir"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Aplicacións"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Permisos de aplicacións"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Non preguntar de novo"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Sen permisos"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Permisos adicionais"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Controlador de permisos"</string>
+ <string name="ok" msgid="4417794827535157922">"Aceptar"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"permisos"</string>
+ <string name="cancel" msgid="7279939269964834974">"Cancelar"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Non se encontrou a aplicación"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Denegar"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Denegar e non volver preguntar"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Máis info."</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Denegar igualm."</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Queres permitir á aplicación <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Permitir sempre á aplicación <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Só ao usar a aplicación"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Sempre"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Denegar e non volver preguntar"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> desactivados"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"todos desactivados"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"ningún desactivado"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Permitir"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Permitir sempre"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Permitir só cando se estea utilizando a aplicación"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Aplicacións"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Permisos de aplicacións"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Xestor de permisos"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Non preguntar de novo"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Sen permisos"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Permisos adicionais"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Abrir información da aplicación"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> permisos máis</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> permiso máis</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Esta aplicación deseñouse para unha versión anterior de Android. Denegar o permiso pode provocar que non funcione como está previsto."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"realiza unha acción descoñecida"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_0">%1$d</xliff:g> de <xliff:g id="COUNT_1">%2$d</xliff:g> aplicacións con permiso"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Mostrar sistema"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Ocultar sistema"</string>
- <string name="permission_title" msgid="6495415273398916381">"Permisos de <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Ningunha aplicación"</string>
- <string name="location_settings" msgid="1774875730854491297">"Configuración da localización"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Se denegas este permiso, é posible que as funcións básicas do teu dispositivo deixen de funcionar segundo o previsto."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Aplicado pola política"</string>
- <string name="loading" msgid="7811651799620593731">"Cargando…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Todos os permisos"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Outras funcionalidades da aplicación"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Solicitude de permiso"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Detectouse a superposición da pantalla"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Para cambiar a configuración deste permiso, primeiro tes que desactivar a superposición da pantalla en Configuración > Aplicacións"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Abrir configuración"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"As accións de instalar e desinstalar non son compatibles con Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"Actualizouse <xliff:g id="APP_NAME_0">%1$s</xliff:g>. Queres permitir que <xliff:g id="APP_NAME_1">%1$s</xliff:g> acceda ao seguinte?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Seleccionar os permisos de acceso que queres dar a <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"Actualizouse a aplicación <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>. Selecciona os permisos de acceso que lle queres dar."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Cancelar"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Continuar"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Novos permisos"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Permisos actuais"</string>
- <string name="message_staging" msgid="6151794817691100003">"Probando aplicación…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Descoñecida"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Por cuestións de seguranza, na tableta non se poden instalar aplicacións descoñecidas procedentes desta fonte."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Por cuestións de seguranza, na televisión non se poden instalar aplicacións descoñecidas procedentes desta fonte."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Por cuestións de seguranza, no teléfono non se poden instalar aplicacións descoñecidas procedentes desta fonte."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"O teléfono e os datos persoais son máis vulnerables aos ataques de aplicacións descoñecidas. Ao instalar esta aplicación, aceptas que es responsable dos danos ocasionados no teléfono ou da perda dos datos que se poidan derivar do seu uso."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"A tableta e os datos persoais son máis vulnerables aos ataques de aplicacións descoñecidas. Ao instalar esta aplicación, aceptas que es responsable dos danos ocasionados na tableta ou da perda dos datos que se poidan derivar do seu uso."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"A televisión e os datos persoais son máis vulnerables aos ataques de aplicacións descoñecidas. Ao instalar esta aplicación, aceptas que es responsable dos danos ocasionados na televisión ou da perda dos datos que se poidan derivar do seu uso."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Continuar"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Configuración"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Instalando/desinstalando apps Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Esta aplicación deseñouse para unha versión anterior de Android. Denegar o permiso pode provocar que non funcione como está previsto."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"realiza unha acción descoñecida"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> de <xliff:g id="COUNT_1">%2$d</xliff:g> aplicacións con permiso"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Uso recente"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Ver panel de control de permisos"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Mostrar sistema"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Ocultar sistema"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Sen aplicacións"</string>
+ <string name="location_settings" msgid="547378321761364906">"Configuración de localización"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Se denegas este permiso, as funcións básicas do teu dispositivo poden deixar de funcionar segundo o previsto."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Permiso aplicado pola política"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"O acceso en segundo plano está desactivado pola política"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"O acceso en segundo plano está activado pola política"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"O acceso en primeiro plano está activado pola política"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Opción controlada polo administrador"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"O administrador desactivou o acceso en segundo plano"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"O administrador activou o acceso en segundo plano"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"O administrador activou o acceso en primeiro plano"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Permiso establecido polo sistema"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Sempre"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Só ao usar a aplicación"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Nunca"</string>
+ <string name="loading" msgid="323483393167148377">"Cargando…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Todos os permisos"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Outras funcionalidades da aplicación"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Solicitude de permiso"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Detectouse unha superposición na pantalla"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Para cambiar a configuración deste permiso, primeiro tes que desactivar a superposición na pantalla en Configuración > Aplicacións"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Abrir configuración"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"As accións de instalar e desinstalar non son compatibles con Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Seleccionar os permisos de acceso que queres dar á aplicación <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"Actualizouse a aplicación <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>. Selecciona os permisos de acceso que lle queres dar."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Cancelar"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Continuar"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Novos permisos"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Permisos actuais"</string>
+ <string name="message_staging" msgid="641286607664721291">"Preparando aplicación…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Nome descoñecido"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Panel de control"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Último acceso: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> accesos (<xliff:g id="NUM_5">%3$s</xliff:g> en segundo plano)</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 (<xliff:g id="NUM_2">%3$s</xliff:g> en segundo plano)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Último acceso: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> accesos\nDuración: <xliff:g id="TIME_5">%3$s</xliff:g></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\nDuración: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Último acceso: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> accesos (<xliff:g id="NUM_6">%3$s</xliff:g> en segundo plano)\nDuración: <xliff:g id="TIME_7">%3$s</xliff:g></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 (<xliff:g id="NUM_2">%3$s</xliff:g> en segundo plano)\nDuración: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Calquera permiso"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"En calquera momento"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Últimos 7 días"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Últimas 24 horas"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Última hora"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Últimos 15 minutos"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Último minuto"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Non se utilizaron os permisos"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Acceso en calquera momento"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Acceso nos últimos 7 días"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Acceso nas últimas 24 horas"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Acceso la última hora"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Acceso nos últimos 15 minutos"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Acceso no último minuto"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Uso de permisos máis comúns en calquera momento"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Uso de permisos máis comúns nos últimos 7 días"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Uso de permisos máis comúns nas últimas 24 horas"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Uso de permisos máis comúns na última hora"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Uso de permisos máis comúns nos últimos 15 minutos"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Uso de permisos máis comúns no último minuto"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Apps"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Vista filtrada por: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Quitar filtro"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtrar por"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtrar por permisos"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Máis permisos"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Máis accesos"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Accesos recentes"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Actualizar"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Uso dos permisos da aplicación"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Acceso: <xliff:g id="NUM">%1$s</xliff:g> veces. Utilizouse por última vez hai <xliff:g id="TIME">%2$s</xliff:g>."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Permitir"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Permitir sempre"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Permitir só cando se estea utilizando a aplicación"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Non permitir"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Permiso de <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Permiso de <xliff:g id="PERM">%1$s</xliff:g> para <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> accedeu hai <xliff:g id="TIME">%3$s</xliff:g> ao seguinte: <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"A aplicación <xliff:g id="APP">%1$s</xliff:g> non ten acceso a <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Consulta os detalles sobre o uso dos permisos"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Último acceso: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Non accedeu nunca"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Permiso concedido"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Só se permiten mentres se utilizan"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Permiso denegado"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Ver uso detallado"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> días</item>
+ <item quantity="one">1 día</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> horas</item>
+ <item quantity="one">1 hora</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minutos</item>
+ <item quantity="one">1 minuto</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> segundos</item>
+ <item quantity="one">1 segundo</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Queres utilizar a aplicación <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> como <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Queres utilizar a aplicación <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> en lugar de usar <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> como <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Recordatorios de permisos"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"A aplicación <xliff:g id="APP_NAME">%s</xliff:g> estivo utilizando a túa localización"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Esta aplicación pode acceder sempre á túa localización. Toca para cambiar esta opción."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Só cando se estea utilizando a aplicación"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Non se concederon permisos"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Non se denegou ningún permiso"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Non se permite ningunha aplicación"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Non se denegou ningunha aplicación"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Abrir"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Desinstalar"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Forzar parada"</string>
+ <string name="settings" msgid="2884124136779508907">"Configuración"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ten acceso total ao teu dispositivo"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> servizos de accesibilidade teñen acceso total ao teu dispositivo"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> pode ver a túa pantalla, o que fas e o que introduces; realizar accións; e controlar a pantalla."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Estes servizos poden ver a túa pantalla, o que fas e o que introduces; realizar accións; e controlar a pantalla."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Aplicacións predeterminadas"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Sen apps predeterminadas"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Predeterminadas para o traballo"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Ningunha"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Non hai ningunha aplicación"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Acceso especial as aplicacións"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Sen acceso especial ás apps"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Non hai ningunha aplicación"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Aplicación de asistencia"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Aplicación de navegador"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Aplicación de teléfono"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Aplicación de SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Aplicación para emerxencias"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Aplicación de inicio"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Aplicación Música"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Aplicación Galería"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"App de tel. do modo de cond."</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"App de redirección de chamadas"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"App de filtro de chamadas"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"App complementaria de chamadas"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"App de proxección do coche"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Non é compatible co perfil de traballo"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Nota: Se reinicias o dispositivo e definiches un bloqueo de pantalla, esta aplicación non se poderá iniciar ata que desbloquees o dispositivo."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"O asistente poderá ler información sobre as aplicacións en uso no teu sistema, incluídos os datos visibles na pantalla ou aos que se pode acceder desde as aplicacións."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Compartir datos de depuración"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Queres compartir datos detallados da depuración?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"A aplicación <xliff:g id="APP_NAME">%1$s</xliff:g> quere cargar información de depuración."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Compartir datos de depuración"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"A aplicación <xliff:g id="APP_NAME_0">%1$s</xliff:g> quere subir un informe de erros deste dispositivo, xerado o <xliff:g id="DATE">%2$s</xliff:g> (<xliff:g id="TIME">%3$s</xliff:g>). Os informes de erros inclúen información persoal sobre o dispositivo ou datos rexistrados polas aplicacións, como os nomes de usuario, os datos de localización, os identificadores do dispositivo e a información da rede. Comparte estes informes unicamente con persoas e aplicacións de confianza. Queres permitir que a aplicación <xliff:g id="APP_NAME_1">%4$s</xliff:g> cargue un informe de erros?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Permitir"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Denegar"</string>
</resources>
diff --git a/res/values-gu-television/strings.xml b/res/values-gu-television/strings.xml
index b0a40b6..cc62d6d 100644
--- a/res/values-gu-television/strings.xml
+++ b/res/values-gu-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"નકારો અને ફરીથી પૂછશો નહીં"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"તમે પછીથી આને સેટિંગ્સ > એપ્લિકેશન્સમાં બદલી શકો છો"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"સિસ્ટમ ઍપ્લિકેશનો બતાવો"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"ઍપ્લિકેશન પરવાનગીઓ"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"ઍપ્લિકેશન પરવાનગીઓ"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> પરવાનગીઓ"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"વધારાની પરવાનગીઓ"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> પરવાનગીઓ"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"નકારો અને ફરીથી પૂછશો નહીં"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"તમે થોડા સમય પછી આને સેટિંગ > ઍપમાં બદલી શકો છો"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"સિસ્ટમ ઍપ બતાવો"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"ઍપ પરવાનગીઓ"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"ઍપ પરવાનગીઓ"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> પરવાનગીઓ"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"વધારાની પરવાનગીઓ"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> પરવાનગીઓ"</string>
</resources>
diff --git a/res/values-gu-watch/strings.xml b/res/values-gu-watch/strings.xml
index 6e83cf2..f0945ae 100644
--- a/res/values-gu-watch/strings.xml
+++ b/res/values-gu-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"નકારો, ફરીથી પૂછશો નહીં"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"સિસ્ટમ ઍપ્લિકેશનો બતાવો"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"બદલી શકતાં નથી"</string>
- <string name="generic_yes" msgid="3394094077553763689">"હા"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"રદ કરો"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"નકારો, ફરીથી પૂછશો નહીં"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"સિસ્ટમ ઍપ બતાવો"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"બદલી શકતાં નથી"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"હા"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"રદ કરો"</string>
</resources>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index d6c7287..e04bac0 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"પૅકેજ ઇન્સ્ટોલર"</string>
- <string name="next" msgid="3057143178373252333">"આગલું"</string>
- <string name="install" msgid="5896438203900042068">"ઇન્સ્ટોલ કરો"</string>
- <string name="done" msgid="3889387558374211719">"થઈ ગયું"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"આ એપ્લિકેશનને આની મંજૂરી આપો:"</string>
- <string name="cancel" msgid="8360346460165114585">"રદ કરો"</string>
- <string name="unknown" msgid="4742479012767208045">"અજાણ્યું"</string>
- <string name="installing" msgid="8613631001631998372">"ઇન્સ્ટોલ કરી રહ્યું છે…"</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>ને ઇન્સ્ટૉલ કરી રહ્યાં છીએ…"</string>
- <string name="install_done" msgid="3682715442154357097">"ઍપ્લિકેશન ઇન્સ્ટોલ કરી."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"શું તમે આ ઍપ્લિકેશન ઇન્સ્ટોલ કરવા માંગો છો? તે આની ઍક્સેસ મેળવશે:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"શું તમે આ એપ્લિકેશનને ઇન્સ્ટોલ કરવા માંગો છો? તેને કોઈપણ વિશિષ્ટ ઍક્સેસની જરૂર નથી."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"શું તમે આ અસ્તિત્વમાંની એપ્લિકેશનના અપડેટને ઇન્સ્ટોલ કરવા માગો છો? તમારો અસ્તિત્વમાંનો ડેટા ગુમ થશે નહીં. અપડેટ કરેલ એપ્લિકેશનને આની ઍક્સેસ મળશે:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"શું તમે આ બિલ્ટ-ઇન એપ્લિકેશનના અપડેટને ઇન્સ્ટોલ કરવા માગો છો? તમારો અસ્તિત્વમાંનો ડેટા ગુમ થશે નહીં. અપડેટ કરેલ એપ્લિકેશનને આની ઍક્સેસ મળશે:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"શું તમે આ અસ્તિત્વમાંની એપ્લિકેશનના અપડેટને ઇન્સ્ટોલ કરવા માગો છો? તમારો અસ્તિત્વમાંનો ડેટા ગુમ થશે નહીં. તેને કોઈ વિશિષ્ટ ઍક્સેસની જરૂર હોતી નથી."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"શું તમે આ બિલ્ટ-ઇન એપ્લિકેશનના અપડેટને ઇન્સ્ટોલ કરવા માગો છો? તમારો અસ્તિત્વમાંનો ડેટા ગુમ થશે નહીં. તેને કોઈ વિશિષ્ટ ઍક્સેસની જરૂર હોતી નથી."</string>
- <string name="install_failed" msgid="6579998651498970899">"ઍપ્લિકેશન ઇન્સ્ટોલ કરેલ નથી."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"પૅકેજને ઇન્સ્ટૉલ થવાથી અવરોધિત કરવામાં આવ્યું હતું."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"પૅકેજનો અસ્તિત્વમાંના પૅકેજ સાથે વિરોધાભાસ હોવાને કારણે ઍપ્લિકેશન ઇન્સ્ટૉલ થઈ નથી."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"તમારા ટેબ્લેટ સાથે ઍપ્લિકેશન સુસંગત ન હોવાને કારણે ઍપ્લિકેશન ઇન્સ્ટૉલ થઈ નથી."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"આ અૅપ્લિકેશન તમારા ટીવી સાથે સુસંગત નથી."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"તમારા ફોન સાથે ઍપ્લિકેશન સુસંગત ન હોવાને કારણે ઍપ્લિકેશન ઇન્સ્ટૉલ થઈ નથી."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"પૅકેજ અમાન્ય લાગી રહ્યું હોવાને કારણે ઍપ્લિકેશન ઇન્સ્ટૉલ થઈ નથી."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"તમારા ટેબ્લેટ પર <xliff:g id="APP_NAME">%1$s</xliff:g> ઇન્સ્ટોલ કરી શકાયું નથી."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"તમારા ટીવી પર <xliff:g id="APP_NAME">%1$s</xliff:g> ઇન્સ્ટોલ કરી શકાયું નથી."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"તમારા ફોન પર <xliff:g id="APP_NAME">%1$s</xliff:g> ઇન્સ્ટોલ કરી શકાયું નથી."</string>
- <string name="launch" msgid="4826921505917605463">"ખોલો"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"તમારા વ્યવસ્થાપક અજાણ્યા સ્રોતોથી મેળવેલ ઍપ્લિકેશનોના ઇન્સ્ટૉલેશનની મંજૂરી આપતા નથી"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"આ વપરાશકર્તા અજાણી ઍપ્લિકેશનો ઇન્સ્ટૉલ કરી શકશે નહીં"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"આ વપરાશકર્તાને ઍપ્લિકેશનો ઇન્સ્ટૉલ કરવાની મંજૂરી નથી"</string>
- <string name="ok" msgid="3468756155452870475">"ઓકે"</string>
- <string name="settings" msgid="6743583734099755409">"સેટિંગ્સ"</string>
- <string name="manage_applications" msgid="4033876279091996596">"એપ્લિકેશન્સનું સંચાલન કરો"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"ઍપ્લિકેશન બદલીએ?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"તમે ઇન્સ્ટોલ કરી રહ્યાં છો તે ઍપ્લિકેશન બીજી ઍપ્લિકેશનનું સ્થાન લેશે.\n\nતમારો અગાઉનો તમામ ડેટા સાચવવામાં આવશે."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"આ એક સિસ્ટમ ઍપ્લિકેશન છે. \n\n તમારો પહેલાંનો બધો વપરાશકર્તા ડેટા સાચવવામાં આવશે."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"જગ્યાની બહાર"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> ઇન્સ્ટોલ કરી શકાઈ નથી. થોડી જગ્યા ખાલી કરો અને ફરીથી પ્રયાસ કરો."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"ઓકે"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"ઍપ્લિકેશન મળી નથી"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"ઇન્સ્ટોલ કરેલ ઍપ્લિકેશન્સની સૂચિમાં ઍપ્લિકેશન મળી નહોતી."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"મંજૂરી નથી"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"વર્તમાન વપરાશકર્તાને આ અનઇન્સ્ટૉલેશન કરવાની મંજૂરી નથી."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"ભૂલ"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"ઍપ્લિકેશન અનઇન્સ્ટૉલ કરી શકાઈ નહીં."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"ઍપ્લિકેશન અનઇન્સ્ટોલ કરો"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"અપડેટ અનઇન્સ્ટોલ કરો"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> એ નીચેની એપ્લિકેશનનો એક ભાગ છે:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"શું તમે આ એપ્લિકેશનને અનઇન્સ્ટોલ કરવા માંગો છો?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"શું તમે "<b>"તમામ"</b>" વપરાશકર્તાઓ માટે આ ઍપ્લિકેશનને અનઇન્સ્ટોલ કરવા માગો છો? ઉપકરણ પરના "<b>"તમામ"</b>" વપરાશકર્તાઓમાંથી ઍપ્લિકેશન અને તેનો ડેટા દૂર કરવામાં આવશે."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"શું તમે <xliff:g id="USERNAME">%1$s</xliff:g> વપરાશકર્તા માટે આ એપ્લિકેશનને અનઇન્સ્ટોલ કરવા માગો છો?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"આ ઍપ્લિકેશનને ફેક્ટરી સંસ્કરણથી બદલીએ? તમામ ડેટા દૂર કરવામાં આવશે."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"આ ઍપ્લિકેશનને ફેક્ટરી સંસ્કરણથી બદલીએ? તમામ ડેટા દૂર કરવામાં આવશે. આનાથી કાર્ય પ્રોફાઇલ્સ સાથેના વપરાશકર્તાઓ સહિત આ ઉપકરણના તમામ વપરાશકર્તાઓ પ્રભાવિત થશે."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"ચાલી રહેલા અનઇન્સ્ટૉલ"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"નિષ્ફળ થયેલા અનઇન્સ્ટૉલ"</string>
- <string name="uninstalling" msgid="5556217435895938250">"અનઇન્સ્ટોલ કરી રહ્યું છે..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ને અનઇન્સ્ટૉલ કરી રહ્યાં છે…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"અનઇન્સ્ટોલ કરો સમાપ્ત થયું."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> અનઇન્સ્ટૉલ કર્યું"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"અનઇન્સ્ટોલ કરવું અસફળ રહ્યું."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ને અનઇન્સ્ટૉલ કરવું અસફળ રહ્યું."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"સક્રિય ઉપકરણ વ્યવસ્થાપક ઍપ્લિકેશનોને અનઇન્સ્ટૉલ કરી શકાતી નથી"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"<xliff:g id="USERNAME">%1$s</xliff:g> માટે સક્રિય ઉપકરણ વ્યવસ્થાપક ઍપ્લિકેશનોને અનઇન્સ્ટૉલ કરી શકાતી નથી"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"આ અૅપ્લિકેશન અમુક વપરાશકર્તાઓ અથવા પ્રોફાઇલ્સ માટે જરૂરી છે અને તે અન્ય લોકો માટે અનઇન્સ્ટૉલ કરી હતી"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"તમારી કાર્યાલયની પ્રોફાઇલ માટે ઍપ્લિકેશન જરૂરી છે અને અનઇન્સ્ટૉલ કરી શકાતી નથી."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"આ ઍપ્લિકેશન તમારા ઉપકરણ વ્યવસ્થાપક માટે આવશ્યક છે અને તે અનઇન્સ્ટોલ કરી શકાતી નથી."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"ઉપકરણ વ્યવસ્થાપક ઍપ્લિકેશનોનું સંચાલન કરો"</string>
- <string name="manage_users" msgid="3125018886835668847">"વપરાશકર્તાઓનું સંચાલન કરો"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> અનઇન્સ્ટોલ કરી શકાઈ નથી."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"પૅકેજનું વિશ્લેષણ કરવામાં એક સમસ્યા આવી હતી."</string>
- <string name="newPerms" msgid="6039428254474104210">"નવું"</string>
- <string name="allPerms" msgid="1024385515840703981">"તમામ"</string>
- <string name="privacyPerms" msgid="1850527049572617">"ગોપનીયતા"</string>
- <string name="devicePerms" msgid="6733560207731294504">"ઉપકરણ ઍક્સેસ"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"આ અપડેટને કોઈ નવી પરવાનગીઓની જરૂર નથી."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"શું તમે નીચેની પરવાનગીઓ આપવા માગો છો? તેને આની ઍક્સેસ મળશે:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"નકારો"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"વધુ માહિતી"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"કોઇપણ રીતે નકારો"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ને <xliff:g id="ACTION">%2$s</xliff:g> મંજૂરી આપીએ?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> અક્ષમ કરી"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"તમામ અક્ષમ કરી"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"કોઈપણ અક્ષમ કરેલ નથી"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"મંજૂરી આપો"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"ઍપ્લિકેશનો"</string>
- <string name="app_permissions" msgid="3146758905824597178">"ઍપ્લિકેશન પરવાનગીઓ"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"ફરીથી પૂછશો નહીં"</string>
- <string name="no_permissions" msgid="3210542466245591574">"કોઈ પરવાનગીઓ નથી"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"વધારાની પરવાનગીઓ"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
- <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>
+ <string name="app_name" msgid="2792757108872430971">"પરવાનગી નિયંત્રક"</string>
+ <string name="ok" msgid="4417794827535157922">"ઓકે"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"પરવાનગીઓ"</string>
+ <string name="cancel" msgid="7279939269964834974">"રદ કરો"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"ઍપ મળી નથી"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"નકારો"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"નકારો અને ફરીથી પૂછશો નહીં"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"વધુ માહિતી"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"કોઈપણ રીતે નકારો"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>ને <xliff:g id="ACTION">%2$s</xliff:g> માટેની મંજૂરી આપીએ?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>ને હંમેશાં <xliff:g id="ACTION">%2$s</xliff:g>ની મંજૂરી આપીએ?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"માત્ર ઍપનો ઉપયોગ કરતી વખતે જ"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"હંમેશાં"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"નકારો અને ફરીથી પૂછશો નહીં"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> પરવાનગી બંધ કરી"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"બધી પરવાનગીઓ બંધ કરી"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"કોઈપણ પરવાનગી બંધ કરી નથી"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"મંજૂરી આપો"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"હંમેશાં મંજૂરી આપો"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"માત્ર ઍપ ઉપયોગમાં હોય ત્યારે જ મંજૂરી આપો"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"ઍપ"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"ઍપ પરવાનગીઓ"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"પરવાનગી મેનેજર"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"ફરીથી પૂછશો નહીં"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"કોઈ પરવાનગીઓ નથી"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"વધારાની પરવાનગીઓ"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"ઍપ માહિતી ખોલો"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
+ <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="old_sdk_deny_warning" msgid="3872277112584842615">"આ ઍપ્લિકેશન Android ના જુના સંસ્કરણ માટે તૈયાર કરવામાં આવી હતી. પરવાનગી નકારવાથી તે ધાર્યા પ્રમાણે બિલકુલ કાર્ય કરશે નહી."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"એક અજાણી ક્રિયા કરો"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"સિસ્ટમ બતાવો"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"સિસ્ટમ છુપાવો"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> પરવાનગીઓ"</string>
- <string name="no_apps" msgid="1965493419005012569">"કોઇ ઍપ્લિકેશનો નથી"</string>
- <string name="location_settings" msgid="1774875730854491297">"સ્થાન સેટિંગ્સ"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> એ આ ઉપકરણ માટે સ્થાન સેવાઓના પ્રદાતા છે. સ્થાન સેટિંગ્સમાંથી સ્થાન ઍક્સેસ સંશોધિત કરી શકાય છે."</string>
- <string name="system_warning" msgid="7103819124542305179">"જો તમે આ પરવાનગી નકારો છો, તો તમારા ઉપકરણની મૂળભૂત સુવિધાઓ અપેક્ષા પ્રમાણે કાર્ય કરી શકશે નહીં."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"નીતિ દ્વારા લાગુ"</string>
- <string name="loading" msgid="7811651799620593731">"લોડ કરી રહ્યું છે..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"બધી પરવાનગીઓ"</string>
- <string name="other_permissions" msgid="2016192512386091933">"અન્ય ઍપ્લિકેશન ક્ષમતાઓ"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"પરવાનગીની વિનંતી"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"સ્ક્રીન ઓવરલે મળ્યું"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"આ પરવાનગી સેટિંગ બદલવા માટે, તમારે પહેલા સેટિંગ્સ > Apps માંથી સ્ક્રીન ઓવરલે બંધ કરવું પડશે"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"સેટિંગ્સ ખોલો"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Wear પર ઇન્સ્ટૉલ/અનઇન્સ્ટૉલ ક્રિયાઓ સમર્થિત નથી."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ને અપડેટ કરવામાં આવી છે. <xliff:g id="APP_NAME_1">%1$s</xliff:g> ને નીચેના માટે ઍક્સેસની મંજૂરી આપો."</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ને શેના ઍક્સેસ માટેની મંજૂરી આપવી તે પસંદ કરો"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> અપડેટ કરવામાં આવી છે. આ ઍપ્લિકેશનને શેના ઍક્સેસ માટેની મંજૂરી આપવી તે પસંદ કરો."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"રદ કરો"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"ચાલુ રાખો"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"નવી પરવાનગીઓ"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"વર્તમાન પરવાનગીઓ"</string>
- <string name="message_staging" msgid="6151794817691100003">"ઍપ્લિકેશન અમલમં છે..."</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"અજાણી"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"તમારી સુરક્ષા માટે, તમારા ટૅબ્લેટને આ સ્રોત પરથી અજાણી ઍપ્લિકેશનો ઇન્સ્ટૉલ કરવાની મંજૂરી નથી."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"તમારી સુરક્ષા માટે, તમારા ટીવીને આ સ્રોત પરથી અજાણી ઍપ્લિકેશનો ઇન્સ્ટૉલ કરવાની મંજૂરી નથી."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"તમારી સુરક્ષા માટે, તમારા ફોનને આ સ્રોત પરથી અજાણી ઍપ્લિકેશનો ઇન્સ્ટૉલ કરવાની મંજૂરી નથી."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"તમારો ફોન અને વ્યક્તિગત ડેટા અજાણી ઍપ્લિકેશનો દ્વારા હુમલા માટે વધુ સંવેદનશીલ છે. આ ઍપ્લિકેશન ઇન્સ્ટૉલ કરીને તમે સંમત થાઓ છો કે આનો ઉપયોગ કરવાથી તમારા ફોનને થતી કોઈપણ હાનિ અથવા ડેટાના નુકસાન માટે તમે જવાબદાર છો."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"તમારું ટૅબ્લેટ અને વ્યક્તિગત ડેટા અજાણી ઍપ્લિકેશનો દ્વારા હુમલા માટે વધુ સંવેદનશીલ છે. આ ઍપ્લિકેશન ઇન્સ્ટૉલ કરીને તમે સંમત થાઓ છો કે આનો ઉપયોગ કરવાથી તમારા ટૅબ્લેટને થતી કોઈપણ હાનિ અથવા ડેટાના નુકસાન માટે તમે જવાબદાર છો."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"તમારું ટીવી અને વ્યક્તિગત ડેટા અજાણી ઍપ્લિકેશનો દ્વારા હુમલા માટે વધુ સંવેદનશીલ છે. આ ઍપ્લિકેશન ઇન્સ્ટૉલ કરીને તમે સંમત થાઓ છો કે આનો ઉપયોગ કરવાથી તમારા ટીવીને થતી કોઈપણ હાનિ અથવા ડેટાના નુકસાન માટે તમે જવાબદાર છો."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"ચાલુ રાખો"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"સેટિંગ્સ"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"એમ્બેડ ઍપ્લિકેશનો ઇન્સ્ટૉલ/અનઇન્સ્ટૉલ"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"આ ઍપ Androidના જૂના વર્ઝન માટે તૈયાર કરવામાં આવી હતી. પરવાનગી નકારવાથી તે હેતુ પ્રમાણે કાર્ય કરશે નહી."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"અજાણી ક્રિયા કરો"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_1">%2$d</xliff:g> માંથી <xliff:g id="COUNT_0">%1$d</xliff:g> ઍપની મંજૂરી છે"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"તાજેતરનો વપરાશ"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"પરવાનગીઓનું ડૅશબોર્ડ જુઓ"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"સિસ્ટમ બતાવો"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"સિસ્ટમ છુપાવો"</string>
+ <string name="no_apps" msgid="2377153782338039463">"કોઈ ઍપ નથી"</string>
+ <string name="location_settings" msgid="547378321761364906">"સ્થાન સેટિંગ"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g>એ આ ઉપકરણ માટે સ્થાન સેવાઓના પ્રદાતા છે. સ્થાન સેટિંગમાંથી સ્થાન ઍક્સેસમાં ફેરફાર કરી શકાતો છે."</string>
+ <string name="system_warning" msgid="6868290533389195836">"જો તમે આ પરવાનગી નકારો છો, તો તમારા ઉપકરણની મૂળભૂત સુવિધાઓ અપેક્ષા પ્રમાણે કાર્ય કરી શકશે નહીં."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"નીતિ દ્વારા લાગુ"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"નીતિ દ્વારા બૅકગ્રાઉન્ડ ઍક્સેસને બંધ કરવામાં આવ્યો છે"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"નીતિ દ્વારા બૅકગ્રાઉન્ડ ઍક્સેસને ચાલુ કરવામાં આવ્યો છે"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"નીતિ દ્વારા ફૉરગ્રાઉન્ડ ઍક્સેસને ચાલુ કરવામાં આવ્યો છે"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"વ્યવસ્થાપક દ્વારા નિયંત્રિત"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"વ્યવસ્થાપકે બૅકગ્રાઉન્ડ ઍક્સેસ બંધ કર્યો છે"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"વ્યવસ્થાપકે બૅકગ્રાઉન્ડ ઍક્સેસ ચાલુ કર્યો છે"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"વ્યવસ્થાપકે ફૉરગ્રાઉન્ડ ઍક્સેસ ચાલુ કર્યો છે"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"સિસ્ટમ દ્વારા પરવાનગી સેટ કરવામાં આવી છે"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"હંમેશાં"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"માત્ર ઍપનો ઉપયોગ કરતી વખતે જ"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"ક્યારેય નહીં"</string>
+ <string name="loading" msgid="323483393167148377">"લોડ કરી રહ્યું છે…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"બધી પરવાનગીઓ"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"અન્ય ઍપ સુવિધાઓ"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"પરવાનગીની વિનંતી"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"સ્ક્રીન ઓવરલે મળ્યું"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"આ પરવાનગી સેટિંગ બદલવા માટે, તમારે પહેલા સેટિંગ > ઍપમાંથી સ્ક્રીન ઓવરલે બંધ કરવું પડશે"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"સેટિંગ ખોલો"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Wear પર ઇન્સ્ટૉલ/અનઇન્સ્ટૉલ ક્રિયાઓ સમર્થિત નથી."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>ને શેના ઍક્સેસ માટેની મંજૂરી આપવી તે પસંદ કરો"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> અપડેટ કરવામાં આવી છે. આ ઍપને શેના ઍક્સેસ માટેની મંજૂરી આપવી તે પસંદ કરો."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"રદ કરો"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"આગળ વધો"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"નવી પરવાનગીઓ"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"વર્તમાન પરવાનગીઓ"</string>
+ <string name="message_staging" msgid="641286607664721291">"ઍપની પ્રક્રિયા ચાલુ છે…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"અજાણ"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"ડૅશબોર્ડ"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">છેલ્લો ઍક્સેસ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> ઍક્સેસ (<xliff:g id="NUM_5">%3$s</xliff:g> બૅકગ્રાઉન્ડમાં)</item>
+ <item quantity="other">છેલ્લો ઍક્સેસ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> ઍક્સેસ (<xliff:g id="NUM_5">%3$s</xliff:g> બૅકગ્રાઉન્ડમાં)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">છેલ્લો ઍક્સેસ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> ઍક્સેસ\nઅવધિ: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">છેલ્લો ઍક્સેસ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> ઍક્સેસ\nઅવધિ: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">છેલ્લો ઍક્સેસ: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> ઍક્સેસ (બૅકગ્રાઉન્ડમાં <xliff:g id="NUM_6">%3$s</xliff:g>)\nઅવધિ: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">છેલ્લો ઍક્સેસ: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> ઍક્સેસ (બૅકગ્રાઉન્ડમાં <xliff:g id="NUM_6">%3$s</xliff:g>)\nઅવધિ: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"કોઈપણ પરવાનગી"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"ગમે ત્યારે"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"છેલ્લા 7 દિવસ"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"છેલ્લા 24 કલાક"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"છેલ્લો 1 કલાક"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"છેલ્લી 15 મિનિટ"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"છેલ્લી 1 મિનિટ"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"પરવાનગીનો ઉપયોગ થયો નથી"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"કોઈપણ સમયે ઍક્સેસ"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"છેલ્લા 7 દિવસમાં ઍક્સેસ"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"છેલ્લા 24 કલાકમાં ઍક્સેસ"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"છેલ્લા કલાકમાં ઍક્સેસ"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"છેલ્લી 15 મિનિટમાં ઍક્સેસ"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"છેલ્લી 1 મિનિટમાં ઍક્સેસ"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"કોઈપણ સમયે પરવાનગીનો ટોચનો ઉપયોગ"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"છેલ્લા 7 દિવસમાં પરવાનગીનો ટોચનો ઉપયોગ"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"છેલ્લા 24 કલાકમાં પરવાનગીનો ટોચનો ઉપયોગ"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"છેલ્લા 1 કલાકમાં પરવાનગીનો ટોચનો ઉપયોગ"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"છેલ્લી 15 મિનિટમાં પરવાનગીનો ટોચનો ઉપયોગ"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"છેલ્લી 1 મિનિટમાં પરવાનગીનો ટોચનો ઉપયોગ"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"ઍપ"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"આના અનુસાર ફિલ્ટર કર્યું: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"ફિલ્ટર કાઢી નાખો"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"આના અનુસાર ફિલ્ટર કરો"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"પરવાનગીઓ અનુસાર ફિલ્ટર કરો"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"સૌથી વધુ પરવાનગીઓ"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"સૌથી વધુ ઍક્સેસ"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"તાજેતરના"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"રિફ્રેશ કરો"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"અૅપ પરવાનગીઓનો ઉપયોગ"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"ઍક્સેસ આપો: <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="4040424337831328212">"ઍક્સેસ આપો: <xliff:g id="NUM">%1$s</xliff:g> વાર. છેલ્લે <xliff:g id="TIME">%2$s</xliff:g> પહેલાં ઉપયોગ કર્યો હતો."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"મંજૂરી આપો"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"હંમેશાં મંજૂરી આપો"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"માત્ર અૅપ ઉપયોગમાં હોય ત્યારે જ મંજૂરી આપો"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"નકારો"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> પરવાનગી"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="APP">%2$s</xliff:g> માટે <xliff:g id="PERM">%1$s</xliff:g> ઍક્સેસ"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> દ્વારા તમારી <xliff:g id="PERM">%2$s</xliff:g>ને <xliff:g id="TIME">%3$s</xliff:g> પહેલાં અૅક્સેસ કરવામાં આવી હતી."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g>એ તમારા <xliff:g id="PERM">%2$s</xliff:g>નો ઍક્સેસ મેળવ્યો નથી."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"પરવાનગીઓનો વિગતવાર ઉપયોગ જુઓ"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"છેલ્લે થયેલો ઍક્સેસ: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"ક્યારેય ઍક્સેસ કરેલ નથી"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"મંજૂર"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"માત્ર ઉપયોગમાં હોય ત્યારે જ મંજૂરી છે"</string>
+ <string name="denied_header" msgid="2277998574238617699">"નકારેલ"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"વિગતવાર વપરાશ જુઓ"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <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="seconds" formatted="false" msgid="1632909606956324957">
+ <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="role_request_message_add" msgid="1977772335648650272">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>નો તમારા <xliff:g id="ROLE_NAME">%2$s</xliff:g> તરીકે ઉપયોગ કરીએ?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"<b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b>ને બદલે <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b>નો તમારા <xliff:g id="ROLE_NAME">%2$s</xliff:g> તરીકે ઉપયોગ કરીએ?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"મંજૂરીના રિમાઇન્ડર"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> તમારા સ્થાનનો ઉપયોગ કરી રહી છે"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"આ ઍપ હંમેશાં તમારા સ્થાનને ઍક્સેસ કરી શકે છે. ફેરફાર કરવા માટે ટૅપ કરો."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"માત્ર ઍપ ઉપયોગમાં હોય ત્યારે જ"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"કોઈ પરવાનગીઓની મંજૂરી નથી"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"કોઈ પરવાનગીઓ નકારવામાં આવી નથી"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"કોઈ ઍપની મંજૂરી નથી"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"કોઈ ઍપ નકારવામાં આવી નથી"</string>
+ <string name="launch_app" msgid="5641437562665039291">"ખોલો"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"અનઇન્સ્ટૉલ કરો"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"ફરજિયાત બંધ કરો"</string>
+ <string name="settings" msgid="2884124136779508907">"સેટિંગ"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> તમારા ડિવાઇસ માટે સંપૂર્ણ ઍક્સેસ ધરાવે છે"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> ઍક્સેસિબિલિટી સેવાઓ તમારા ડિવાઇસ માટે સંપૂર્ણ ઍક્સેસ ધરાવે છે"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> તમારી સ્ક્રીન, ક્રિયાઓ તેમજ ઇનપુટ જોઈ શકે છે, ક્રિયાઓ કરી શકે છે અને ડિસ્પ્લેનું નિયંત્રણ કરી શકે છે."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"આ સેવાઓ તમારી સ્ક્રીન, ક્રિયાઓ તેમજ ઇનપુટ જોઈ શકે છે, ક્રિયાઓ કરી શકે છે અને ડિસ્પ્લેનું નિયંત્રણ કરી શકે છે."</string>
+ <string name="default_apps" msgid="8554530939151957828">"ડિફૉલ્ટ ઍપ"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"કોઈ ડિફૉલ્ટ ઍપ નથી"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"કાર્ય માટે ડિફૉલ્ટ"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"કોઈ નહીં"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"કોઈ ઍપ નથી"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"વિશેષ ઍપનો ઍક્સેસ"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"કોઈ વિશેષ ઍપનો ઍક્સેસ નથી"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"કોઈ ઍપ નથી"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"સહાયક ઍપ્લિકેશન"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"બ્રાઉઝર ઍપ"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"ફોન ઍપ"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS ઍપ"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"ઇમર્જન્સી ઍપ"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"હોમ ઍપ"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"મ્યુઝિક ઍપ"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"ગૅલેરી ઍપ"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"કાર મોડ ફોન ઍપ"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"કૉલ રીડાયરેક્ટ કરનારી ઍપ"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"કૉલ સ્ક્રીનિંગ ઍપ"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"કૉલ સાથી ઍપ"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"કાર પ્રોજેક્શન ઍપ"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"કાર્યાલયની પ્રોફાઇલનું સમર્થન કરતી નથી"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"નોંધ: જો તમે તમારું ડિવાઇસ ફરીથી શરૂ કરો અને કોઈ સ્ક્રીન લૉક સેટ કરેલું હોય, તો જ્યાં સુધી તમે તમારું ડિવાઇસ અનલૉક નહીં કરો ત્યાં સુધી આ ઍપ શરૂ થઈ શકશે નહીં."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"આસિસ્ટંટ તમારી સ્ક્રીન પર જોઈ શકાતી અથવા ઍપમાંથી ઍક્સેસ કરી શકાય તેવી માહિતી સહિતની તમારી સિસ્ટમમાં ઉપયોગમાં લેવાતી ઍપ વિશેની માહિતી વાંચી શકશે."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"ડિબગીંગ ડેટા શેર કરો"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"વિગતવાર ડિબગીંગ ડેટા શેર કરીએ?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g>, ડિબગીંગ માહિતી અપલોડ કરવા માગે છે"</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"ડિબગીંગ ડેટા શેર કરો"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> આ ડિવાઇસથી <xliff:g id="DATE">%2$s</xliff:g>ના રોજ <xliff:g id="TIME">%3$s</xliff:g> વાગ્યે લેવામાં આવેલ ખામીની જાણકારી અપલોડ કરવાની મંજૂરી માગી રહી છે. ખામીની જાણકારીમાં તમારા ડિવાઇસ વિશે અથવા ઍપ દ્વારા લૉગ કરવામાં આવેલી વ્યક્તિગત માહિતી શામેલ હોય છે, જેમ કે વપરાશકર્તાનું નામ, સ્થાન ડેટા, ડિવાઇસ ઓળખકર્તા અને નેટવર્કની માહિતી. ખામીની જાણકારીને માત્ર તેવા જ લોકો અને ઍપ સાથે શેર કરો કે જેની પર તમે માહિતી બાબતે વિશ્વાસ કરો છો. <xliff:g id="APP_NAME_1">%4$s</xliff:g>ને ખામીની જાણકારી અપલોડ કરવાની મંજૂરી આપીએ?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"મંજૂરી આપો"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"નકારો"</string>
</resources>
diff --git a/res/drawable/ic_fail_material.xml b/res/values-h720dp/dimens.xml
similarity index 73%
rename from res/drawable/ic_fail_material.xml
rename to res/values-h720dp/dimens.xml
index 9d53fdc..fd6407d 100644
--- a/res/drawable/ic_fail_material.xml
+++ b/res/values-h720dp/dimens.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 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.
@@ -13,6 +13,8 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
- android:src="@drawable/ic_fail"
- android:tint="?android:attr/colorControlNormal" />
+
+<resources>
+ <!-- Dialog button bar height -->
+ <dimen name="alert_dialog_button_bar_height">54dp</dimen>
+</resources>
diff --git a/res/values-hi-television/strings.xml b/res/values-hi-television/strings.xml
index e9b4bf7..2010f60 100644
--- a/res/values-hi-television/strings.xml
+++ b/res/values-hi-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"मना करें और फिर से ना पूछें"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"आप इसे बाद में सेटिंग > ऐप्स में बदल सकते हैं"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"सिस्टम ऐप्स दिखाएं"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"ऐप्लिकेशन अनुमतियां"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"ऐप्लिकेशन अनुमतियां"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> अनुमतियां"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"अतिरिक्त अनुमतियां"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> अनुमतियां"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"अनुमति न दें और दोबारा न पूछें"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"आप सेटिंग > ऐप्लिकेशन में जाकर बाद में इसे बदल सकते हैं"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"सिस्टम के ऐप्लिकेशन दिखाएं"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"ऐप्लिकेशन की अनुमतियां"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"ऐप्लिकेशन की अनुमतियां"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> एक्सेस करने की अनुमतियां"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"दूसरी अनुमतियां"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> एक्सेस करने की अनुमतियां"</string>
</resources>
diff --git a/res/values-hi-watch/strings.xml b/res/values-hi-watch/strings.xml
index f7adb0c..d3ced33 100644
--- a/res/values-hi-watch/strings.xml
+++ b/res/values-hi-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"मना करें, फिर से ना पूछें"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"सिस्टम ऐप्स दिखाएं"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"बदला नहीं जा सकता"</string>
- <string name="generic_yes" msgid="3394094077553763689">"हां"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"रद्द करें"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"अनुमति न दें, दोबारा न पूछें"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"सिस्टम के ऐप्लिकेशन दिखाएं"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"बदला नहीं जा सकता"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"हां"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"रद्द करें"</string>
</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 7ae94d4..6b0b4ae 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"पैकेज इंस्टॉलर"</string>
- <string name="next" msgid="3057143178373252333">"आगे"</string>
- <string name="install" msgid="5896438203900042068">"इंस्टॉल करें"</string>
- <string name="done" msgid="3889387558374211719">"हो गया"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"इस ऐप्स को यह करने दें:"</string>
- <string name="cancel" msgid="8360346460165114585">"रद्द करें"</string>
- <string name="unknown" msgid="4742479012767208045">"अज्ञात"</string>
- <string name="installing" msgid="8613631001631998372">"इंस्टॉल कर रहा है…"</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> इंस्टॉल हो रहा है…"</string>
- <string name="install_done" msgid="3682715442154357097">"ऐप्स इंस्टॉल हो गया."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"क्या आप इस ऐप्स को इंस्टॉल करना चाहते हैं? इससे यहां पर पहुंच प्राप्त होगी:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"क्या आप इस ऐप्स को इंस्टॉल करना चाहते हैं? इसके लिए किसी विशेष पहुंच की आवश्यकता नहीं है."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"क्या आप इस मौजूदा ऐप के बारे में नई जानकारी इंस्टॉल करना चाहते हैं? आपका मौजूदा डेटा गुम नहीं होगा. अपडेट किये गए ऐप से आपको इन पर पहुंच मिलेगी:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"क्या आप इस बिल्ट-इन ऐप के बारे में नई जानकारी इंस्टॉल करना चाहते हैं? आपका मौजूदा डेटा गुम नहीं होगा. नई जानकारी वाले ऐप से आपको इन पर मिलेगी:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"क्या आप इस मौजूदा ऐप में नई जानकारी इंस्टॉल करना चाहते हैं? आपका मौजूदा डेटा बना रहेगा. इसे किसी खास पहुंच की ज़रुरत नहीं होती."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"क्या आप इस मौजूदा ऐप में नई जानकारी इंस्टॉल करना चाहते हैं? आपका मौजूदा डेटा बना रहेगा. इसे किसी खास पहुंच की ज़रुरत नहीं होती."</string>
- <string name="install_failed" msgid="6579998651498970899">"ऐप्स इंस्टॉल नहीं हुआ."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"पैकेज को इंस्टॉल होने से अवरुद्ध किया हुआ है."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"ऐप्लिकेशन इंस्टॉल नहीं हुआ क्योंकि पैकेज का किसी मौजूदा पैकेज से विरोध है."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"ऐप्लिकेशन इंस्टॉल नहीं हुआ क्योंकि ऐप्लिकेशन आपके टैबलेट से संगत नहीं है."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"यह ऐप आपके टीवी के संगत नहीं है."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"ऐप्लिकेशन इंस्टॉल नहीं हुआ क्योंकि ऐप्लिकेशन आपके फ़ोन से संगत नहीं है."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"ऐप्लिकेशन इंस्टॉल नहीं हुआ क्योंकि पैकेज अमान्य लग रहा है."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> को आपके टैबलेट पर इंस्टॉल नहीं किया जा सका."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> को आपके टीवी पर इंस्टॉल नहीं किया जा सकता."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> को आपके फ़ोन पर इंस्टॉल नहीं किया जा सका."</string>
- <string name="launch" msgid="4826921505917605463">"खोलें"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"आपका व्यवस्थापक अनजान स्रोतों से मिलने वाले ऐप्लिकेशन को इंस्टॉल करने की अनुमति नहीं देता है"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"यह उपयोगकर्ता अनजान ऐप्लिकेशन इंस्टॉल नहीं कर सकता"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"इस उपयोगकर्ता ऐप्लिकेशन इंस्टॉल करने की अनुमति नहीं है"</string>
- <string name="ok" msgid="3468756155452870475">"ठीक है"</string>
- <string name="settings" msgid="6743583734099755409">"सेटिंग"</string>
- <string name="manage_applications" msgid="4033876279091996596">"ऐप्स प्रबंधित करें"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"ऐप्स बदलें?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"आप जिस ऐप को इंस्टॉल कर रहे हैं वह दूसरे वह दूसरे ऐप की जगह ले लेगा.\n\nपहले से मौजूद आपका पूरा डेटा सहेजकर रखा जाएगा."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"यह कोई सिस्टम एप्लिकेशन है.\n\nपहले से मौजूद आपका पूरा डेटा सेव कर लिया जाएगा."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"जगह नहीं है"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> को इंस्टॉल नहीं किया जा सका. थोड़ी जगह खाली करें और फिर से कोशिश करें."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"ठीक है"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"ऐप्स नहीं मिला"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"ऐप्स , इंस्टॉल किए गए ऐप्स की सूची में नहीं मिला था."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"अनुमति नहीं है"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"मौजूदा उपयोगकर्ता को यह अनइंस्टॉल करने की अनुमति नहीं है"</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"गड़बड़ी"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"ऐप्लिकेशन अनइंस्टॉल नहीं किया जा सका."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"ऐप्स अनइंस्टॉल करें"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"अपडेट अनइंस्टॉल करें"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> निम्न ऐप्स का भाग है:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"क्या आप इस ऐप्स को अनइंस्टॉल करना चाहते हैं?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"क्या आप इस ऐप्स को "<b>"सभी"</b>" उपयोगकर्ताओं के लिए अनइंस्टॉल करना चाहते हैं? ऐप्स और उसके डेटा को डिवाइस पर "<b>"सभी"</b>" उपयोगकर्ताओं से निकाल दिया जाएगा."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"क्या आप उपयोगकर्ता <xliff:g id="USERNAME">%1$s</xliff:g> के लिए इस ऐप को अनइंस्टॉल करना चाहते हैं?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"इस ऐप्लिकेशन को फ़ैक्टरी वर्शन से बदलें? सभी डेटा निकाल दिया जाएगा."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"इस ऐप्लिकेशन को फ़ैक्ट्री वर्शन से बदलें? पूरा डेटा निकाल दिया जाएगा. इसका इस डिवाइस के सभी उपयोगकर्ताओं पर असर पड़ेगा, जिनमें कार्य प्रोफ़ाइल वाले उपयोगकर्ता शामिल हैं."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"वे अनइंस्टॉल जो चल रहे हैं"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"वे अनइंस्टॉल जो सफल नहीं रहे"</string>
- <string name="uninstalling" msgid="5556217435895938250">"अनइंस्टॉल कर रहा है…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> अनइंस्टॉल किया जा रहा है…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"अनइंस्टॉल करना पूर्ण हो गया."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> अनइंस्टॉल किया गया"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"अनइंस्टॉल करना विफल."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> को अनइंस्टॉल करना असफल."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"सक्रिय डिवाइस व्यवस्थापक ऐप्लिकेशन को अनइंस्टॉल नहीं किया जा सकता"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"<xliff:g id="USERNAME">%1$s</xliff:g> के लिए सक्रिय डिवाइस व्यवस्थापक ऐप्लिकेशन को अनइंस्टॉल नहीं किया जा सकता"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"यह ऐप्लिकेशन कुछ उपयोगकर्ताओं या प्रोफ़ाइल हेतु आवश्यक है और अन्य हेतु अनइंस्टॉल हो गया है"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"आपकी कार्य प्रोफ़ाइल के लिए यह ऐप्लिकेशन आवश्यक है और उसे अनइंस्टॉल नहीं किया जा सकता."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"आपके डिवाइस व्यवस्थापक के लिए यह ऐप्स जरूरी है व इसे अनइंस्टॉल नहीं किया जा सकता."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"डिवाइस व्यवस्थापक ऐप्लिकेशन प्रबंधित करें"</string>
- <string name="manage_users" msgid="3125018886835668847">"उपयोगकर्ताओं को प्रबंधित करें"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> को अनइंस्टॉल नहीं किया जा सका."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"पैकेज को पार्स करने में कोई समस्या थी."</string>
- <string name="newPerms" msgid="6039428254474104210">"नया"</string>
- <string name="allPerms" msgid="1024385515840703981">"सभी"</string>
- <string name="privacyPerms" msgid="1850527049572617">"निजता"</string>
- <string name="devicePerms" msgid="6733560207731294504">"डिवाइस पहुंच"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"इस अपडेट लिए अनुमति की ज़रुरत नहीं है."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"क्या आप नीचे दी गई बातों की अनुमति देना चाहते हैं ? इससे इन चीजों पर पहुंचा जा सकेगा:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"अस्वीकार करें"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"अधिक जानकारी"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"फिर भी अस्वीकार करें"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> को <xliff:g id="ACTION">%2$s</xliff:g> की अनुमति दें?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> अक्षम"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"सभी अक्षम हैं"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"कोई भी अक्षम नहीं है"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"अनुमति दें"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"ऐप"</string>
- <string name="app_permissions" msgid="3146758905824597178">"ऐप अनुमतियां"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"फिर से ना पूछें"</string>
- <string name="no_permissions" msgid="3210542466245591574">"कोई अनुमति नहीं"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"अतिरिक्त अनुमतियां"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
- <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>
+ <string name="app_name" msgid="2792757108872430971">"अनुमति नियंत्रक"</string>
+ <string name="ok" msgid="4417794827535157922">"ठीक है"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"अनुमतियां"</string>
+ <string name="cancel" msgid="7279939269964834974">"रद्द करें"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"ऐप्लिकेशन नहीं मिला"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"अनुमति न दें"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"अनुमति न दें और दोबारा न पूछें"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"ज़्यादा जानकारी"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"फिर भी अनुमति न दें"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> को <xliff:g id="ACTION">%2$s</xliff:g> की अनुमति दें?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> को <xliff:g id="ACTION">%2$s</xliff:g> की अनुमति हमेशा दें?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"सिर्फ़ ऐप्लिकेशन इस्तेमाल करते समय"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"हमेशा"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"अनुमति न दें और दोबारा न पूछें"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> अनुमतियां बंद हैं"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"सभी अनुमतियां बंद हैं"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"कोई अनुमति बंद नहीं है"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"अनुमति दें"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"हमेशा मंज़ूरी दें"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"तभी मंज़ूरी दें जब ऐप्लिकेशन का इस्तेमाल हो रहा हो"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"ऐप्लिकेशन"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"ऐप्लिकेशन की अनुमतियां"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"अनुमतियों का प्रबंधन"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"दोबारा न पूछें"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"किसी अनुमति की ज़रूरत नहीं है"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"दूसरी अनुमतियां"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"ऐप्लिकेशन के बारे में जानकारी देखें"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
+ <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="old_sdk_deny_warning" msgid="3872277112584842615">"इस ऐप को Android के पुराने वर्शन के लिए डिज़ाइन किया गया था. अनुमति अस्वीकार करने पर हो सकता है कि फ़ंक्शन लक्षित रूप से काम नहीं करे."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"कोई अज्ञात कार्रवाई करें"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"सिस्टम दिखाएं"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"सिस्टम छिपाएं"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> अनुमतियां"</string>
- <string name="no_apps" msgid="1965493419005012569">"कोई ऐप्स नहीं"</string>
- <string name="location_settings" msgid="1774875730854491297">"जगह की सेटिंग"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> इस डिवाइस के लिए जगह की जानकारी उपलब्ध कराता है. जगह की पहुंच (एक्सेस) को जगह की सेटिंग से बदला जा सकता है."</string>
- <string name="system_warning" msgid="7103819124542305179">"यदि आप इस अनुमति को अस्वीकार करते हैं, तो हो सकता है कि आपके डिवाइस की मूलभूत सुविधाएं लक्षित कार्य ना कर पाएं."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"नीति द्वारा लागू"</string>
- <string name="loading" msgid="7811651799620593731">"लोड हो रहा है…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"सभी अनुमतियां"</string>
- <string name="other_permissions" msgid="2016192512386091933">"अन्य ऐप कार्यक्षमताएं"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"अनुमति का अनुरोध"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"स्क्रीन ओवरले मिला"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"इस अनुमति सेटिंग को बदलने के लिए, आपको पहले सेटिंग > ऐप, से स्क्रीन ओवरले को बंद करना होगा"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"सेटिंग खोलें"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"इंस्टॉल/अनइंस्टॉल किए जाने की कार्रवाइयां Wear पर समर्थित नहीं हैं."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> को अपडेट किया गया है. <xliff:g id="APP_NAME_1">%1$s</xliff:g> को नीचे दी गई चीजों तक पहुंचने दें?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"यह चुनें कि <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> को किस-किस चीज पर पहुंचने देना चाहते हैं"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> को अपडेट कर दिया गया है. यह चुनें कि इस ऐप्लिकेशन को किस-किस चीज तक पहुंचने देना चाहते हैं."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"रद्द करें"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"जारी रखें"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"नई अनुमतियां"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"वर्तमान अनुमतियां"</string>
- <string name="message_staging" msgid="6151794817691100003">"ऐप्लिकेशन चरणबद्ध किया जा रहा है…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"अज्ञात"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"आपकी सुरक्षा के लिए, आपके टैबलेट को इस स्रोत से आने वाले अनजान ऐप्लिकेशन इंस्टॉल करने की अनुमति नहीं है."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"आपकी सुरक्षा के लिए, आपके टीवी को इस स्रोत से आने वाले अनजान ऐप्लिकेशन इंस्टॉल करने की अनुमति नहीं है."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"आपकी सुरक्षा के लिए, आपके फ़ोन को इस स्रोत से आने वाले अनजान ऐप्लिकेशन इंस्टॉल करने की अनुमति नहीं है."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"आपका फ़ोन और व्यक्तिगत डेटा अज्ञात ऐप्लिकेशन के हमले के प्रति अधिक संवेदनशील हैं. इस ऐप्लिकेशन को इंस्टॉल करके आप सहमति देते हैं कि इसके उपयोग के चलते आपके फ़ोन को होने वाले किसी भी नुकसान या डेटा की हानि के लिए आप ज़िम्मेदार हैं."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"आपका टैबलेट और व्यक्तिगत डेटा अज्ञात ऐप्लिकेशन के हमले के प्रति अधिक संवेदनशील हैं. इस ऐप्लिकेशन को इंस्टॉल करके आप सहमति देते हैं कि इसके उपयोग के चलते आपके टैबलेट को होने वाले किसी भी नुकसान या डेटा की हानि के लिए आप ज़िम्मेदार हैं."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"आपका टीवी और व्यक्तिगत डेटा अज्ञात ऐप्लिकेशन के हमले के प्रति अधिक संवेदनशील हैं. इस ऐप्लिकेशन को इंस्टॉल करके आप सहमति देते हैं कि इसके उपयोग के चलते आपके टीवी को होने वाले किसी भी नुकसान या डेटा की हानि के लिए आप ज़िम्मेदार हैं."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"जारी रखें"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"सेटिंग"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"वियर ऐप इंस्टॉल/अनइंस्टॉल हो रहे हैं"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"यह ऐप्लिकेशन Android के पुराने वर्शन के लिए बनाया गया था. अगर आप अनुमति नहीं देते हैं, तो हो सकता है कि यह ठीक तरह से काम न करे."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"ऐसी कार्रवाई करें जिसकी जानकारी नहीं है"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_1">%2$d</xliff:g> में से <xliff:g id="COUNT_0">%1$d</xliff:g> ऐप्लिकेशन को अनुमति मिली है"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"हाल ही में इस्तेमाल हुईं अनुमतियां"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"अनुमतियों का डैशबोर्ड देखें"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"सिस्टम के ऐप्लिकेशन दिखाएं"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"सिस्टम के ऐप्लिकेशन छिपाएं"</string>
+ <string name="no_apps" msgid="2377153782338039463">"किसी ऐप्लिकेशन को इस अनुमति की ज़रूरत नहीं है"</string>
+ <string name="location_settings" msgid="547378321761364906">"जगह की जानकारी की सेटिंग"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> से इस डिवाइस पर जगह की जानकारी मिलती है. जगह की जानकारी की सेटिंग में जाकर जगह की जानकरी एक्सेस करने की अनुमति में बदलाव किया जा सकता है."</string>
+ <string name="system_warning" msgid="6868290533389195836">"अगर आप यह अनुमति नहीं देते हैं, तो हो सकता है कि आपके डिवाइस की बुनियादी सुविधाएं ठीक तरह से काम न करें."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"नीति के मुताबिक चालू किया गया"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"नीति के मुताबिक बैकग्राउंड में चलने का एक्सेस बंद है"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"नीति के मुताबिक बैकग्राउंड में चलने का एक्सेस चालू किया गया"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"नीति के मुताबिक स्क्रीन पर दिखाने का एक्सेस चालू किया गया"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"इसका नियंत्रण एडमिन के पास है"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"एडमिन ने बैकग्राउंड में चलने का एक्सेस बंद कर दिया है"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"एडमिन ने बैकग्राउंड में चलने का एक्सेस चालू कर दिया है"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"एडमिन ने स्क्रीन पर दिखाने का एक्सेस चालू कर दिया है"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"अनुमति सिस्टम ने सेट की है"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"हमेशा अनुमति दें"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"सिर्फ़ ऐप इस्तेमाल करते समय"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"कभी नहीं"</string>
+ <string name="loading" msgid="323483393167148377">"लोड हो रहा है…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"सभी अनुमतियां"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"ऐप्लिकेशन को ये अनुमतियां भी दी गई हैं"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"अनुमति पाने का अनुरोध"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"स्क्रीन ओवरले मौजूद है"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"इस अनुमति की सेटिंग बदलने के लिए, आपको पहले \'सेटिंग > ऐप्लिकेशन\' पर जाकर स्क्रीन ओवरले बंद करना होगा"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"सेटिंग खोलें"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Wear पर ऐप्लिकेशन इंस्टॉल या अनइंस्टॉल नहीं किए जा सकते."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"चुनें कि <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> को किन चीज़ों को एक्सेस करने की अनुमति दी जाए"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> को अपडेट कर दिया गया है. चुनें कि इस ऐप्लिकेशन को किन चीज़ों को एक्सेस करने की अनुमति दी जाए."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"रद्द करें"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"जारी रखें"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"नई अनुमतियां"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"मौजूदा अनुमतियां"</string>
+ <string name="message_staging" msgid="641286607664721291">"ऐप्लिकेशन तैयार किया जा रहा है…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"ऐप्लिकेशन के बारे में कोई जानकारी नहीं है"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"डैशबोर्ड"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">पिछले एक्सेस की जानकारी: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> बार एक्सेस किया गया (बैकग्राउंड में <xliff:g id="NUM_5">%3$s</xliff:g> बार)</item>
+ <item quantity="other">पिछले एक्सेस की जानकारी: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> बार एक्सेस किया गया (बैकग्राउंड में <xliff:g id="NUM_5">%3$s</xliff:g> बार)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">पिछले एक्सेस की जानकारी: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> बार एक्सेस किया गया\nअवधि: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">पिछले एक्सेस की जानकारी: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> बार एक्सेस किया गया\nअवधि: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">पिछले एक्सेस की जानकारी: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> बार एक्सेस किया गया (बैकग्राउंड में <xliff:g id="NUM_6">%3$s</xliff:g> बार)\nअवधि:<xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">पिछले एक्सेस की जानकारी: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> बार एक्सेस किया गया (बैकग्राउंड में <xliff:g id="NUM_6">%3$s</xliff:g> बार)\nअवधि:<xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"कोई भी अनुमति"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"किसी भी समय"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"पिछले सात दिनों में"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"पिछले 24 घंटों में"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"पिछले एक घंटे में"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"पिछले 15 मिनट में"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"आखिरी एक मिनट"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"अनुमति का इस्तेमाल नहीं हुआ"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"किसी भी समय में किए गए एक्सेस"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"पिछले सात दिनों में किए गए एक्सेस"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"पिछले 24 घंटों में किए गए एक्सेस"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"पिछले एक घंटे में किए गए एक्सेस"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"पिछले 15 मिनट में किए गए एक्सेस"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"आखिरी एक मिनट में एक्सेस"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"किसी भी समय में सबसे ज़्यादा बार मांगी गई अनुमति"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"सात दिनों में सबसे ज़्यादा बार मांगी गई अनुमति"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"पिछले 24 घंटों में सबसे ज़्यादा बार मांगी गई अनुमति"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"पिछले एक घंटे में सबसे ज़्यादा बार मांगी गई अनुमति"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"पिछले 15 मिनट में सबसे ज़्यादा बार मांगी गई अनुमति"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"पिछले एक मिनट में सबसे ज़्यादा बार मांगी गई अनुमति"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"ऐप्लिकेशन"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"इससे फ़िल्टर किया गया: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"फ़िल्टर हटाएं"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"इसके मुताबिक फ़िल्टर करें"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"अनुमतियों के हिसाब से फ़िल्टर करें"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"सबसे ज़्यादा ली गईं अनुमतियां"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"सबसे ज़्यादा बार किए गए एक्सेस"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"हाल ही में"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"रीफ़्रेश करें"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"ऐप्लिकेशन अनुमतियों इस्तेमाल"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"एक्सेस: <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="4040424337831328212">"एक्सेस: <xliff:g id="NUM">%1$s</xliff:g> बार. आखिरी बार <xliff:g id="TIME">%2$s</xliff:g> पहले इस्तेमाल किया गया."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"मंज़ूरी दें"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"हमेशा मंज़ूरी दें"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"तभी मंज़ूरी दें जब ऐप्लिकेशन का इस्तेमाल हो रहा हो"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"नामंज़ूर करें"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> अनुमति"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="APP">%2$s</xliff:g> के लिए <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> ने <xliff:g id="TIME">%3$s</xliff:g> पहले आपकी <xliff:g id="PERM">%2$s</xliff:g> का इस्तेमाल किया है."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> ने आपसे <xliff:g id="PERM">%2$s</xliff:g> नहीं ली है."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"अनुमतियों के इस्तेमाल से जुड़ी ज़्यादा जानकारी देखें"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"पिछली बार एक्सेस किया गया: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"कभी एक्सेस नहीं किया गया"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"अनुमति है"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"सिर्फ़ इस्तेमाल में होने पर अनुमति है"</string>
+ <string name="denied_header" msgid="2277998574238617699">"मंज़ूरी नहीं मिली"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"इस्तेमाल की ज़्यादा जानकारी देखें"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <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="seconds" formatted="false" msgid="1632909606956324957">
+ <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="role_request_message_add" msgid="1977772335648650272">"क्या आप <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> का इस्तेमाल अपने <xliff:g id="ROLE_NAME">%2$s</xliff:g> के रूप में करना चाहते हैं?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"क्या आप <b&gt<xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b&gt के बजाय <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> का इस्तेमाल अपने <xliff:g id="ROLE_NAME">%2$s</xliff:g> के रूप में करना चाहते हैं?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"अनुमति रिमाइंडर"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> आपकी जगह की जानकारी का इस्तेमाल कर रहा है"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"यह ऐप्लिकेशन हमेशा आपकी जगह की जानकारी एक्सेस कर सकता है. बदलने के लिए टैप करें."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"सिर्फ़ ऐप्लिकेशन इस्तेमाल में होने के दौरान"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"कोई अनुमति नहीं मिली है"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"सभी अनुमतियां मंज़ूर की गई हैं"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"किसी ऐप्लिकेशन को अनुमति नहीं है"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"किसी ऐप्लिकेशन को नामंज़ूर नहीं किया गया है"</string>
+ <string name="launch_app" msgid="5641437562665039291">"खोलें"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"अनइंस्टॉल करें"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"ज़बरदस्ती रोकें"</string>
+ <string name="settings" msgid="2884124136779508907">"सेटिंग"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> को आपके डिवाइस पर पूरा एक्सेस मिला है"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> सुलभता सुविधाओं को आपके डिवाइस पर पूरा एक्सेस मिला है"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> आपकी स्क्रीन, कार्रवाइयां, और इनपुट देख सकता है और आपके लिए काम कर सकता है. साथ ही, यह स्क्रीन के डिसप्ले को नियंत्रित भी कर सकता है."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"ये सुविधाएं आपकी स्क्रीन, कार्रवाइयां, और इनपुट देख सकती हैं और आपके लिए काम कर सकती हैं. साथ ही, ये स्क्रीन के डिसप्ले को नियंत्रित भी कर सकती हैं."</string>
+ <string name="default_apps" msgid="8554530939151957828">"डिफ़ॉल्ट ऐप्लिकेशन"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"कोई डिफ़ॉल्ट ऐप्लिकेशन नहीं."</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"काम के लिए डिफ़ॉल्ट"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"कोई नहीं"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"कोई ऐप्लिकेशन नहीं"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"ऐप्लिकेशन को खास अनुमति"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"ऐप्लिकेशन को खास अनुमति नहीं"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"कोई ऐप्लिकेशन नहीं"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"सहायक ऐप्लिकेशन"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"ब्राउज़र ऐप्लिकेशन"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"फ़ोन ऐप्लिकेशन"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"मैसेज (एसएमएस) ऐप्लिकेशन"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"आपातकालीन ऐप्लिकेशन"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"होम ऐप्लिकेशन"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"संगीत ऐप्लिकेशन"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"गैलरी ऐप्लिकेशन"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"कार मोड वाला फ़ोन ऐप्लिकेशन"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"कॉल रीडायरेक्ट करने वाला ऐप"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"कॉल की स्क्रीनिंग का ऐप्लिकेशन"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"कॉल करने का साथी ऐप्लिकेशन"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"कार प्रोजेक्शन ऐप्लिकेशन"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"वर्क प्रोफ़ाइल का इस्तेमाल नहीं किया जा सकता"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"ध्यान दें : अगर डिवाइस को रीस्टार्ट करते समय उसकी स्क्रीन लॉक है, तो यह ऐप्लिकेशन तब तक शुरू नहीं होगा, जब तक आप डिवाइस को अनलॉक नहीं करते."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Assistant आपके सिस्टम पर इस्तेमाल किए जा रहे ऐप्लिकेशन की जानकारी देख पाएगी. इसमें आपकी स्क्रीन पर दिखाई देने वाली या ऐप्लिकेशन की एक्सेस करने लायक जानकारी शामिल होगी."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"डीबग करने की प्रक्रिया का डेटा शेयर करें"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"डीबग करने की ज़्यादा जानकारी शेयर करना चाहते हैं?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> डीबग करने की जानकारी अपलोड करना चाहता है."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"डीबग करने की प्रक्रिया का डेटा शेयर करें"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> इस डिवाइस से <xliff:g id="DATE">%2$s</xliff:g> को <xliff:g id="TIME">%3$s</xliff:g> बजे ली गई गड़बड़ी की रिपोर्ट अपलोड करने की मंज़ूरी मांग रहा है. गड़बड़ी की रिपोर्ट में आपके डिवाइस के बारे में या ऐप्लिकेशन की ओर से लॉग की गई निजी जानकारी शामिल होती है, जैसे कि उपयोगकर्ता नाम, जगह की जानकारी का डेटा, डिवाइस पहचानकर्ता, और नेटवर्क की जानकारी. गड़बड़ी की रिपोर्ट सिर्फ़ उन लोगों और ऐप्लिकेशन के साथ शेयर करें जिन पर आप इस जानकारी को लेकर भरोसा करते हैं. क्या आप <xliff:g id="APP_NAME_1">%4$s</xliff:g> को गड़बड़ी की रिपोर्ट अपलोड करने देना चाहते हैं?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"अनुमति दें"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"अनुमति न दें"</string>
</resources>
diff --git a/res/values-hr-television/strings.xml b/res/values-hr-television/strings.xml
index ba363f4..f76b3fa 100644
--- a/res/values-hr-television/strings.xml
+++ b/res/values-hr-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Odbij i više ne pitaj"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"To možete kasnije promijenili u odjeljku Postavke > Aplikacije"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Prikaži aplikacije sustava"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Dopuštenja aplikacije"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Dopuštenja aplikacije"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Dopuštenja – <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Dodatna dopuštenja"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Dopuštenja – <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Odbij i više ne pitaj"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"To možete kasnije promijenili u odjeljku Postavke > Aplikacije"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Prikaz aplikacija sustava"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Dopuštenja aplikacije"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Dopuštenja aplikacije"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Dopuštenja – <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Dodatna dopuštenja"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Dopuštenja – <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-hr-watch/strings.xml b/res/values-hr-watch/strings.xml
index cd44eee..11672be 100644
--- a/res/values-hr-watch/strings.xml
+++ b/res/values-hr-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Ne, više ne pitaj"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Prikaži aplikacije sustava"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Promjena nemoguća"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Da"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Odustani"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Ne, više ne pitaj"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Prikaz aplikacija sustava"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Promjena nemoguća"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Da"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Otkaži"</string>
</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index ad39ac7..dbb7db3 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,137 +16,217 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Alat za instaliranje paketa"</string>
- <string name="next" msgid="3057143178373252333">"Sljedeća"</string>
- <string name="install" msgid="5896438203900042068">"Instaliraj"</string>
- <string name="done" msgid="3889387558374211719">"Gotovo"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Dopusti ovoj aplikaciji da:"</string>
- <string name="cancel" msgid="8360346460165114585">"Odustani"</string>
- <string name="unknown" msgid="4742479012767208045">"Nepoznato"</string>
- <string name="installing" msgid="8613631001631998372">"Instaliranje..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Instaliranje paketa <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Aplikacija je instalirana."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Želite li instalirati ovu aplikaciju? Aplikacija će moći sljedeće:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Želite li instalirati ovu aplikaciju? Aplikacija ne zahtijeva nikakav poseban pristup."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Želite li instalirati ažuriranje postojeće aplikacije? Vaši postojeći podaci neće biti izgubljeni. Ažurirana aplikacija dobit će pristup sljedećem:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Želite li instalirati ažuriranje za ovu ugrađenu aplikaciju? Vaši postojeći podaci neće biti izgubljeni. Ažurirana aplikacija dobit će pristup sljedećem:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Želite li instalirati ažuriranje postojeće aplikacije? Vaši postojeći podaci neće se izgubiti. Nije potreban nikakav poseban pristup."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Želite li instalirati ažuriranje te ugrađene aplikacije? Vaši postojeći podaci neće se izgubiti. Nije potreban nikakav poseban pristup."</string>
- <string name="install_failed" msgid="6579998651498970899">"Aplikacija nije instalirana."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Instaliranje paketa blokirano je."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Aplikacija koja nije instalirana kao paket u sukobu je s postojećim paketom."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Aplikacija koja nije instalirana kao aplikacija nije kompatibilna s vašim tabletom."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Aplikacija nije kompatibilna s vašim televizorom."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Aplikacija koja nije instalirana kao aplikacija nije kompatibilna s vašim telefonom."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Aplikacija koja nije instalirana kao paket vjerojatno nije važeća."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g> nije moguće instalirati na ovo tabletno računalo."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Nije bilo moguće instalirati aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g> na vaš televizor."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g> nije moguće instalirati na vaš telefon."</string>
- <string name="launch" msgid="4826921505917605463">"Otvori"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Vaš administrator ne dopušta instaliranje aplikacija iz nepoznatih izvora"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Ovaj korisnik ne može instalirati nepoznate aplikacije"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Ovaj korisnik nema dopuštenje za instaliranje aplikacija"</string>
- <string name="ok" msgid="3468756155452870475">"U redu"</string>
- <string name="settings" msgid="6743583734099755409">"Postavke"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Upravljanje aplikacijama"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Zamijeniti aplikaciju?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Aplikacija koju instalirate zamijenit će drugu aplikaciju.\n\nBit će spremljeni svi vaši prethodni korisnički podaci."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"To je aplikacija sustava.\n\nBit će spremljeni svi vaši prethodni korisnički podaci."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Nema dovoljno mjesta"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g> nije moguće instalirati. Oslobodite dio prostora i pokušajte ponovo."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"U redu"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Aplikacija nije pronađena"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Na popisu instaliranih aplikacija ova aplikacija nije pronađena."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Nije dopušteno"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Trenutačni korisnik nema dopuštenje za to deinstaliranje."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Pogreška"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Deinstaliranje aplikacije nije uspjelo."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Deinstaliraj aplikaciju"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Deinstalacija ažuriranja"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"Aktivnost <xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> dio je sljedeće aplikacije:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Želite li deinstalirati ovu aplikaciju?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Želite li deinstalirati tu aplikaciju za "<b>"sve"</b>" korisnike? Aplikacija i njezini podaci bit će uklonjeni sa "<b>"svih"</b>" korisnika na uređaju."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Želite li deinstalirati tu aplikaciju za korisnika <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Želite li tu aplikaciju zamijeniti tvorničkom verzijom? Izgubit ćete sve podatke."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Želite li tu aplikaciju zamijeniti tvorničkom verzijom? Izgubit ćete sve podatke. To se odnosi na sve korisnike uređaja, uključujući one s radnim profilima."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Deinstaliranja u tijeku"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Neuspjela deinstaliranja"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Deinstaliranje..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Deinstaliranje aplikacije <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Deinstalacija je završena."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Aplikacija <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> deinstalirana"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Deinstalacija nije uspjela."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Deinstaliranje aplikacije <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> nije uspjelo."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Deinstaliranje aktivne aplikacije administratora uređaja nije uspjelo"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Nije uspjelo deinstaliranje aktivne aplikacije administratora uređaja za <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Ta je aplikacija obavezna za neke korisnike ili profile, deinstalirana je za ostale"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Ta je aplikacija potrebna za vaš profil i ne može se deinstalirati."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Ta je aplikacija neophodna administratoru uređaja i nije ju moguće deinstalirati."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Upravljaj aplikacijama administratora uređaja"</string>
- <string name="manage_users" msgid="3125018886835668847">"Upravljaj korisnicima"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g> nije moguće instalirati."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Došlo je do problema pri analiziranju paketa."</string>
- <string name="newPerms" msgid="6039428254474104210">"Novo"</string>
- <string name="allPerms" msgid="1024385515840703981">"Sve"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privatnost"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Pristup uređaja"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Ovo ažuriranje ne zahtijeva nove dozvole."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Želite li dati sljedeće dozvole? Odobrit će se pristup sljedećem:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Odbij"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Više informacija"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Svejedno odbij"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Želite li aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> dopustiti da može <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"Onemogućeno: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"sve onemogućeno"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"ništa nije onemogućeno"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Dopusti"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Aplikacije"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Dopuštenja aplikacije"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Više me ne pitaj"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Nema dopuštenja"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Dodatna dopuštenja"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Upravljač dopuštenjima"</string>
+ <string name="ok" msgid="4417794827535157922">"U redu"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"dopuštenja"</string>
+ <string name="cancel" msgid="7279939269964834974">"Odustani"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Aplikacija nije pronađena"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Odbij"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Odbij i više ne pitaj"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Više podataka"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Svejedno odbij"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Želite li aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> dopustiti sljedeće: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Želite li uvijek dopustiti aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> sljedeće: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Samo dok se aplikacija koristi"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Uvijek"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Odbij i više ne pitaj"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"Onemogućeno: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"sve onemogućeno"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"ništa nije onemogućeno"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Dopusti"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Dopusti cijelo vrijeme"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Dopusti samo dok je aplikacija u upotrebi"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Aplikacije"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Dopuštenja aplikacije"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Upravitelj dopuštenja"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Više me ne pitaj"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Nema dopuštenja"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Dodatna dopuštenja"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Otvori informacije o aplikaciji"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="one">Još <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="few">Još <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="other">Još <xliff:g id="COUNT_1">%1$d</xliff:g></item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Ova je aplikacija napravljena za stariju verziju Androida. Ako ne dobije dopuštenje, možda više neće funkcionirati kako treba."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"izvršiti nepoznatu radnju"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"Aplikacije s dopuštenjem: <xliff:g id="COUNT_0">%1$d</xliff:g> od <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Prikaži sustav"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Sakrij sustav"</string>
- <string name="permission_title" msgid="6495415273398916381">"Dopuštenja – <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Nema aplikacija"</string>
- <string name="location_settings" msgid="1774875730854491297">"Postavke lokacije"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Ako ne odobrite ovo dopuštenje, osnovne značajke vašeg uređaja možda više neće funkcionirati pravilno."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Provoditi se na temelju pravila"</string>
- <string name="loading" msgid="7811651799620593731">"Učitavanje…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Sva dopuštenja"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Ostale mogućnosti aplikacije"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Zahtijevanje dopuštenja"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Otkriveno je preklapanje na zaslonu"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Da biste promijenili tu postavku dopuštenja, prvo morate isključiti preklapanje na zaslonu u Postavkama > Aplikacije"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Otvori postavke"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Radnje instaliranja i deinstaliranja nisu podržane na Wearu."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"Aplikacija <xliff:g id="APP_NAME_0">%1$s</xliff:g> ažurirana je. Želite li dopustiti da <xliff:g id="APP_NAME_1">%1$s</xliff:g> pristupa sljedećem?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Odaberite čemu će <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> moći pristupiti"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"Aplikacija <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ažurirana je. Odaberite čemu će moći pristupiti."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Otkaži"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Nastavi"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Nova dopuštenja"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Trenutačna dopuštenja"</string>
- <string name="message_staging" msgid="6151794817691100003">"Postavljanje aplikacije…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Nepoznato"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Iz sigurnosnih razloga tablet nema dopuštenje za instaliranje nepoznatih aplikacija iz ovog izvora."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Iz sigurnosnih razloga televizor nema dopuštenje za instaliranje nepoznatih aplikacija iz ovog izvora."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Iz sigurnosnih razloga telefon nema dopuštenje za instaliranje nepoznatih aplikacija iz ovog izvora."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Vaš telefon i osobni podaci podložniji su napadima nepoznatih aplikacija. Instaliranjem te aplikacije prihvaćate odgovornost za oštećenje telefona ili gubitak podataka do kojih može doći uslijed njezine upotrebe."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Vaš tablet i osobni podaci podložniji su napadima nepoznatih aplikacija. Instaliranjem te aplikacije prihvaćate odgovornost za oštećenje tableta ili gubitak podataka do kojih može doći uslijed njezine upotrebe."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Vaš TV i osobni podaci podložniji su napadima nepoznatih aplikacija. Instaliranjem te aplikacije prihvaćate odgovornost za oštećenje televizora ili gubitak podataka do kojih može doći uslijed njezine upotrebe."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Nastavi"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Postavke"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Instaliranje/deinstaliranje Wear apl."</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Ova je aplikacija napravljena za stariju verziju Androida. Ako ne dobije dopuštenje, možda više neće funkcionirati kako treba."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"izvršiti nepoznatu radnju"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"Aplikacije s dopuštenjem: <xliff:g id="COUNT_0">%1$d</xliff:g> od <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Nedavna upotreba"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Prikaz nadzorne ploče s dopuštenjima"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Prikaži sustav"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Sakrij sustav"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Nema aplikacija"</string>
+ <string name="location_settings" msgid="547378321761364906">"Postavke lokacije"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Ako ne odobrite ovo dopuštenje, osnovne značajke vašeg uređaja možda više neće funkcionirati pravilno."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Provoditi se na temelju pravila"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Pristup u pozadini onemogućen je pravilima"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Pristup u pozadini omogućen je pravilima"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Pristup u prednjem planu omogućen je pravilima"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Kontrolira administrator"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Pristup iz pozadine onemogućio je administrator"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Pristup iz pozadine omogućio je administrator"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Pristup iz prednjeg plana omogućio je administrator"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Dopuštenje koje je postavio sustav"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Uvijek"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Samo dok se aplikacija koristi"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Nikad"</string>
+ <string name="loading" msgid="323483393167148377">"Učitavanje…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Sva dopuštenja"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Ostale mogućnosti aplikacije"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Zahtijevanje dopuštenja"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Otkriveno je preklapanje na zaslonu"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Da biste promijenili tu postavku dopuštenja, prvo morate isključiti preklapanje na zaslonu u Postavkama > Aplikacije"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Otvori postavke"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Radnje instaliranja i deinstaliranja nisu podržane na Wearu."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Odaberite čemu će <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> moći pristupiti"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"Aplikacija <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ažurirana je. Odaberite čemu će moći pristupiti."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Otkaži"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Nastavi"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Nova dopuštenja"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Trenutačna dopuštenja"</string>
+ <string name="message_staging" msgid="641286607664721291">"Postavljanje aplikacije…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Nepoznato"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Nadzorna ploča"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ <item quantity="other">Zadnji pristup: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> pristupa</item>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">Zadnji pristup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> pristup (<xliff:g id="NUM_5">%3$s</xliff:g> u pozadini)</item>
+ <item quantity="few">Zadnji pristup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> pristupa (<xliff:g id="NUM_5">%3$s</xliff:g> u pozadini)</item>
+ <item quantity="other">Zadnji pristup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> pristupa (<xliff:g id="NUM_5">%3$s</xliff:g> u pozadini)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">Zadnji pristup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> pristup\nTrajanje: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="few">Zadnji pristup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> pristupa\nTrajanje: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">Zadnji pristup: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> pristupa\nTrajanje: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">Zadnji pristup: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> pristupa (<xliff:g id="NUM_6">%3$s</xliff:g> u pozadini)\nTrajanje: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="few">Zadnji pristup: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> pristupa (<xliff:g id="NUM_6">%3$s</xliff:g> u pozadini)\nTrajanje: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">Zadnji pristup: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> pristupa (<xliff:g id="NUM_6">%3$s</xliff:g> u pozadini)\nTrajanje: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Bilo koje dopuštenje"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Bilo kad"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Posljednjih tjedan dana"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Posljednja 24 sata"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Posljednjih sat vremena"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Posljednjih 15 minuta"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Posljednja minuta"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Nema upotreba dopuštenja"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Pristup bilo kada"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Pristup u posljednjih sedam dana"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Pristup u posljednja 24 sata"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Pristup u posljednjih sat vremena"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Pristupa u posljednjih 15 minuta"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Pristup u posljednjoj minuti"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Upotreba dopuštenja bilo kada"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Upotreba dopuštenja u posljednjih sedam dana"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Upotreba dopuštenja u posljednja 24 sata"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Upotreba dopuštenja u posljednjih sat vremena"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Upotreba dopuštenja u posljednjih 15 minuta"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Upotreba dopuštenja u posljednjoj minuti"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Aplikacije"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtrirano po: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Ukloni filtar"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Kriterij filtriranja"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtriraj prema dopuštenjima"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Najviše dopuštenja"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Najviše pristupa"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Nedavno"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Osvježi"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Upotreba dopuštenja aplikacije"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Pristup: <xliff:g id="NUM">%1$s</xliff:g> puta. Posljednji put korišteno prije <xliff:g id="TIME">%2$s</xliff:g>."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Dopusti"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Dopusti cijelo vrijeme"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Dopusti samo dok je aplikacija u upotrebi"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Odbij"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Dopuštenje <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Pristup dopuštenju <xliff:g id="PERM">%1$s</xliff:g> za aplikaciju <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"Aplikacija <xliff:g id="APP">%1$s</xliff:g> pristupila je dopuštenju <xliff:g id="PERM">%2$s</xliff:g> prije <xliff:g id="TIME">%3$s</xliff:g>."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"Aplikacija <xliff:g id="APP">%1$s</xliff:g> nije pristupila vašem dopuštenju <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Pregledajte detaljnu upotrebu dopuštenja"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Zadnji pristup: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Bez pristupa"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Dopušteno"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Dopušteno samo tijekom upotrebe"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Odbijeno"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Pogledajte detaljnu upotrebu"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> dana</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="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> sata</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="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> minute</item>
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> minute</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minuta</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> sekunde</item>
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> sekunde</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sekundi</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Upotrijebiti naziv aplikacije <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> kao <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Upotrijebiti novi naziv aplikacije <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> umjesto trenutačnog <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> kao <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Podsjetnici za dopuštenja"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"Aplikacija <xliff:g id="APP_NAME">%s</xliff:g> koristi vašu lokaciju"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Ova aplikacija može uvijek pristupiti vašoj lokaciji. Dodirnite za promjenu."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Samo dok je aplikacija u upotrebi"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Nije odobreno nijedno dopuštenje"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Nije odbijeno nijedno dopuštenje"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Nije dopuštena nijedna aplikacija"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Nije odbijena nijedna aplikacija"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Otvori"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Deinstaliraj"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Prisilno zaustavi"</string>
+ <string name="settings" msgid="2884124136779508907">"Postavke"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ima potpuni pristup uređaju"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"Usluge pristupačnosti s potpunim pristupom uređaju (<xliff:g id="NUM_SERVICES">%s</xliff:g>)"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> može vidjeti vaš zaslon, radnje i unose, izvršavati radnje i upravljati zaslonom."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Te usluge mogu vidjeti vaš zaslon, radnje i unose, izvršavati radnje i upravljati zaslonom."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Zadane aplikacije"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Nema zadanih aplikacija"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Zadano za posao"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Nijedna"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Nema aplikacija"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Poseban pristup aplikaciji"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Bez poseb. pristupa aplikaciji"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Nema aplikacija"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Aplikacija pomoćnik"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Aplikacija preglednika"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Aplikacija Telefon"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Aplikacija za SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Aplikacija za hitne slučajeve"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Aplikacija početnog zaslona"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Aplikacija Glazba"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Aplikacija Galerija"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Ap. za način rada u automobilu"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Apl. za preusmjeravanje poziva"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Ap. za filtriranje poziva"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Popratna aplikacija za pozive"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Apl. Projekcija u automobilu"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Ne podržava radni profil"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Napomena: ako ponovo pokrenete uređaj, a na njemu je postavljeno zaključavanje zaslona, ova se aplikacija ne može pokrenuti dok ne otključate uređaj."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Pomoćnik će moći čitati podatke o aplikacijama koje se upotrebljavaju na vašem sustavu, uključujući podatke vidljive na zaslonu ili podatke kojima se može pristupiti u aplikacijama."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Dijeli podatke o otklanjanju pogrešaka"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Dijeliti detaljne podatke o otklanjanju pogrešaka?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> želi prenijeti informacije o otklanjanju pogrešaka."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Dijeli podatke o otklanjanju pogrešaka"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> zahtijeva prijenos izvješća o programskoj pogrešci s ovog uređaja od <xliff:g id="DATE">%2$s</xliff:g> u <xliff:g id="TIME">%3$s</xliff:g>. Izvješća o programskim pogreškama sadržavaju osobne podatke o uređaju ili one koje su zabilježile aplikacije, kao što su korisnička imena, podaci o lokaciji, alati za identifikaciju uređaja i podaci o mreži. Izvješća o programskim pogreškama dijelite samo s osobama i aplikacijama koje smatrate pouzdanima. Dopustiti aplikaciji <xliff:g id="APP_NAME_1">%4$s</xliff:g> prijenos izvješća o programskoj pogrešci?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Dopusti"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Odbij"</string>
</resources>
diff --git a/res/values-hu-television/strings.xml b/res/values-hu-television/strings.xml
index 0557700..fecadc6 100644
--- a/res/values-hu-television/strings.xml
+++ b/res/values-hu-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Megtagadás, és ne jelenjen meg többé"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Ezt később módosíthatja a Beállítások > Alkalmazások pontnál"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Rendszeralkalmazások megjelenítése"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Alkalmazásengedélyek"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Alkalmazásengedélyek"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> – jogosultságok"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"További engedélyek"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> – jogosultságok"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Tiltás, és ne jelenjen meg többé"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Ezt később módosíthatja a Beállítások > Alkalmazások pontnál"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>/<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>."</string>
+ <string name="preference_show_system_apps" msgid="4678781389736017160">"Rendszeralkalmazások megjelenítése"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Alkalmazásengedélyek"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Alkalmazásengedélyek"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g>-engedélyek"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"További engedélyek"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g>-engedélyek"</string>
</resources>
diff --git a/res/values-hu-watch/strings.xml b/res/values-hu-watch/strings.xml
index 8ae3504..eadf483 100644
--- a/res/values-hu-watch/strings.xml
+++ b/res/values-hu-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Megtagadás, ne jelenjen meg"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>/<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>"</string>
- <string name="preference_show_system_apps" msgid="7042886929865431207">"Rendszeralkalmazások megjelenítése"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Nem változtatható"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Igen"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Mégse"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Tiltás, ne jelenjen meg többé"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>/<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>."</string>
+ <string name="preference_show_system_apps" msgid="4294454268471039411">"Rendszeralkalmazások megjelenítése"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Nem változtatható"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Igen"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Mégse"</string>
</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 3c53fa2..7f136be 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Csomagtelepítő"</string>
- <string name="next" msgid="3057143178373252333">"Tovább"</string>
- <string name="install" msgid="5896438203900042068">"Telepítés"</string>
- <string name="done" msgid="3889387558374211719">"Kész"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Alkalmazás engedélyezése a következőkre:"</string>
- <string name="cancel" msgid="8360346460165114585">"Mégse"</string>
- <string name="unknown" msgid="4742479012767208045">"Ismeretlen"</string>
- <string name="installing" msgid="8613631001631998372">"Telepítés..."</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> telepítése…"</string>
- <string name="install_done" msgid="3682715442154357097">"Alkalmazás telepítve."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Telepíti ezt az alkalmazást? Az a következőkhöz fog hozzáférést kapni:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Telepíti ezt az alkalmazást? Az alkalmazás nem igényel különleges hozzáférést."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Telepít egy frissítést ehhez a meglévő alkalmazáshoz? A meglévő adatai nem vesznek el. A frissített alkalmazás a következőkhöz kap hozzáférést:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Telepít egy frissítést ehhez a beépített alkalmazáshoz? A meglévő adatai nem vesznek el. A frissített alkalmazás a következőkhöz kap hozzáférést:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Telepít egy frissítést ehhez a meglévő alkalmazáshoz? A meglévő adatai nem vesznek el. A frissítés nem igényel különleges hozzáférést."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Telepít egy frissítést ehhez a beépített alkalmazáshoz? A meglévő adatai nem vesznek el. A frissítés nem igényel különleges hozzáférést."</string>
- <string name="install_failed" msgid="6579998651498970899">"Az alkalmazás nincs telepítve."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"A csomag telepítését letiltotta a rendszer."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"A nem csomagként telepített alkalmazás ütközik egy már létező csomaggal."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"A nem alkalmazásként telepített alkalmazás nem kompatibilis az Ön táblagépével."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Ez az alkalmazás nem kompatibilis tévéjével."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"A nem alkalmazásként telepített alkalmazás nem kompatibilis az Ön telefonjával."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"A nem csomagként telepített alkalmazás érvénytelen."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> alkalmazás nem telepíthető táblagépére."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> alkalmazás nem telepíthető a tévéjére."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> alkalmazás nem telepíthető telefonjára."</string>
- <string name="launch" msgid="4826921505917605463">"Megnyitás"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"A rendszergazda nem engedélyezi az ismeretlen forrásokból származó alkalmazások telepítését"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Ez a felhasználó nem telepíthet ismeretlen alkalmazásokat"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Ez a felhasználó nem telepíthet alkalmazásokat"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Beállítások"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Alkalmazások kezelése"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Lecseréli az alkalmazást?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"A telepítés alatt álló alkalmazás lecserél egy másikat.\n\nMinden korábbi felhasználói adatot ment a rendszer."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Ez egy rendszeralkalmazás.\n\nMinden korábbi felhasználói adatot ment a rendszer."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Nincs elég hely"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> alkalmazást nem lehet telepíteni. Szabadítson fel egy kis helyet, és próbálja újra."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Az alkalmazás nem található"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Az alkalmazás nem található a telepített alkalmazások listájában."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Nem engedélyezett"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"A jelenlegi felhasználó számára nem engedélyezett az eltávolítás végrehajtása."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Hiba"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Az alkalmazás nem távolítható el."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Alkalmazás eltávolítása"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Frissítés eltávolítása"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"A(z) <xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> a következő alkalmazás része:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Eltávolítja ezt az alkalmazást?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Szeretné eltávolítani ezt az alkalmazást "<b>"minden"</b>" felhasználónál? Az alkalmazást és adatait az eszköz "<b>"minden"</b>" felhasználójánál töröljük."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Eltávolítja ezt az alkalmazást <xliff:g id="USERNAME">%1$s</xliff:g> felhasználó esetében?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Lecseréli az alkalmazást a gyári verzióra? Minden adat törlődik."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Lecseréli az alkalmazást a gyári verzióra? Minden adat törlődik. Ez az eszköz összes felhasználóját érinti, így a munkaprofilokkal rendelkezőket is."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Futó telepítések"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Sikertelen telepítések"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Eltávolítás..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"A(z) <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> eltávolítása folyamatban van…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Az eltávolítás befejeződött."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"A(z) <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> eltávolítása befejeződött"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Az eltávolítás sikertelen."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"A(z) <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> eltávolítása nem sikerült."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Nem lehet eltávolítani az aktív eszközrendszergazdai alkalmazást"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Nem lehet eltávolítani az aktív eszközrendszergazdai alkalmazást <xliff:g id="USERNAME">%1$s</xliff:g> felhasználó esetében"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Egyes felhasználóknak/profiloknak szüksége van erre, másoknál pedig eltávolították"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Ez az alkalmazás szükséges a profiljához, így nem távolítható el."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Az alkalmazásra szüksége van az eszköz adminisztrátorának, és nem távolítható el."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Eszközrendszergazdai alkalmazások kezelése"</string>
- <string name="manage_users" msgid="3125018886835668847">"Felhasználók kezelése"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Nem sikerült a(z) <xliff:g id="APP_NAME">%1$s</xliff:g> eltávolítása"</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Gond volt a csomag elemzésekor."</string>
- <string name="newPerms" msgid="6039428254474104210">"Új"</string>
- <string name="allPerms" msgid="1024385515840703981">"Mind"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Adatvédelem"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Eszközhozzáférés"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"A frissítés nem igényel új engedélyeket."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Megadja a következő engedélyeket? A következőkhöz biztosít hozzáférést:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Elutasítás"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"További információ"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Tiltás mindenképpen"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Engedélyezi a(z) <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> számára a következőt: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> van letiltva"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"az összes le van tiltva"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"egy sincs letiltva"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Engedélyezés"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Alkalmazások"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Alkalmazásengedélyek"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Ne jelenjen meg többé"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Nincs engedély"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"További engedélyek"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Engedélykezelő"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"engedélyek"</string>
+ <string name="cancel" msgid="7279939269964834974">"Mégse"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Az alkalmazás nem található"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Tiltás"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Engedély megtagadása, és ne jelenjen meg többé"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Bővebben"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Tiltás"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Engedélyezi a(z) <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> számára a következőt: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Mindig engedélyezi a(z) <b><xliff:g id="APP_NAME">%1$s</xliff:g></b&gt számára a következőt: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Az alkalmazás használatakor"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Mindig"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Tiltás, és ne jelenjen meg többé"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> van letiltva"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"az összes le van tiltva"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"egy sincs letiltva"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Engedélyezés"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Mindig engedélyezett"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Csak akkor engedélyezett, ha az alkalmazás használatban van"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Alkalmazások"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Alkalmazásengedélyek"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Engedélykezelő"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Ne jelenjen meg többé"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Nincs engedély"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"További engedélyek"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Alkalmazásinformációk megnyitása"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> további</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> további</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Ez az alkalmazás az Android egy korábbi verziójához készült. Az engedély megtagadása esetén előfordulhat, hogy a továbbiakban nem fog megfelelően működni."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"végrehajt egy ismeretlen műveletet"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"Rendszerfolyamatok megjelenítése"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Rendszerfolyamatok elrejtése"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> – jogosultságok"</string>
- <string name="no_apps" msgid="1965493419005012569">"Nincsenek alkalmazások"</string>
- <string name="location_settings" msgid="1774875730854491297">"Helybeállítások"</string>
- <string name="location_warning" msgid="8778701356292735971">"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="7103819124542305179">"Ha ezt nem engedélyezi, akkor előfordulhat, hogy az eszköz egyes alapfunkciói nem megfelelően fognak működni."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Irányelv által kényszerítve"</string>
- <string name="loading" msgid="7811651799620593731">"Betöltés…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Az összes engedély"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Egyéb alkalmazáslehetőségek"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Engedélykérés"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Képernyőfedvény észlelve"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Ennek az engedélynek a módosításához először ki kell kapcsolnia a képernyőfedvényt a Beállítások > Alkalmazások menüben"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Beállítások megnyitása"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"A Wear nem támogatja a telepítés/eltávolítás műveletet."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"A(z) <xliff:g id="APP_NAME_0">%1$s</xliff:g> frissítve. Engedélyezi, hogy a(z) <xliff:g id="APP_NAME_1">%1$s</xliff:g> hozzáférjen a következőhöz?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Válassza ki, hogy a(z) <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> mihez férjen hozzá"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"A(z) <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> frissítése megtörtént. Válassza ki, hogy mihez férjen hozzá ez az alkalmazás."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Mégse"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Tovább"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Új engedélyek"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Jelenlegi engedélyek"</string>
- <string name="message_staging" msgid="6151794817691100003">"Alkalmazás fokozatos közzététele…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Ismeretlen"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Az Ön biztonsága érdekében táblagépe nem telepíthet ebből a forrásból származó ismeretlen alkalmazásokat."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Az Ön biztonsága érdekében tévéje nem telepíthet ebből a forrásból származó ismeretlen alkalmazásokat."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Az Ön biztonsága érdekében telefonja nem telepíthet ebből a forrásból származó ismeretlen alkalmazásokat."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Telefonja és személyes adatai fokozott kockázatnak vannak kitéve az ismeretlen alkalmazások támadásaival szemben. Az alkalmazás telepítésével elismeri, hogy Ön a felelős az alkalmazás használatából eredő esetleges adatvesztésért és a telefont ért károkért."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Táblagépe és személyes adatai fokozott kockázatnak vannak kitéve az ismeretlen alkalmazások támadásaival szemben. Az alkalmazás telepítésével elismeri, hogy Ön a felelős az alkalmazás használatából eredő esetleges adatvesztésért és a táblagépet ért károkért."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Tévéje és személyes adatai fokozott kockázatnak vannak kitéve az ismeretlen alkalmazások támadásaival szemben. Az alkalmazás telepítésével elismeri, hogy Ön a felelős az alkalmazás használatából eredő esetleges adatvesztésért és a tévét ért károkért."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Tovább"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Beállítások"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Wear-alkalmazások telepítése/törlése"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Ez az alkalmazás az Android egy korábbi verziójához készült. Az engedély megtagadása esetén előfordulhat, hogy az alkalmazás a továbbiakban nem működik majd megfelelően."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"végrehajt egy ismeretlen műveletet"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_1">%2$d</xliff:g>/<xliff:g id="COUNT_0">%1$d</xliff:g> alkalmazás kapott engedélyt"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Legutóbbi használat"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Az engedélyek irányítópultja"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Rendszer megjelenítése"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Rendszer elrejtése"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Nincsenek alkalmazások"</string>
+ <string name="location_settings" msgid="547378321761364906">"Helybeállítások"</string>
+ <string name="location_warning" msgid="4687406043150343369">"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="6868290533389195836">"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="permission_summary_enforced_by_policy" msgid="632945329450867948">"Házirend által kényszerítve"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"A házirend letiltotta a háttérhozzáférést"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"A házirend engedélyezte a háttérhozzáférést"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"A házirend engedélyezte az előtérbeli hozzáférést"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Rendszergazda által irányítva"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"A rendszergazda letiltotta a háttérhozzáférést"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"A rendszergazda engedélyezte a háttérhozzáférést"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"A rendszergazda engedélyezte az előtérbeli hozzáférést"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"A rendszer által beállított engedély"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Mindig"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Az alkalmazás használatakor"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Soha"</string>
+ <string name="loading" msgid="323483393167148377">"Betöltés…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Az összes engedély"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Egyéb alkalmazáslehetőségek"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Engedélykérés"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Képernyőfedvény észlelve"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Ennek az engedélynek a módosításához először ki kell kapcsolnia a képernyőfedvényt a Beállítások > Alkalmazások menüben"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Beállítások megnyitása"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"A Wear nem támogatja a telepítés/eltávolítás műveletet."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Válassza ki, hogy a(z) <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> mihez férjen hozzá"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"A(z) <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> frissítése megtörtént. Válassza ki, hogy mihez férjen hozzá ez az alkalmazás."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Mégse"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Tovább"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Új engedélyek"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Jelenlegi engedélyek"</string>
+ <string name="message_staging" msgid="641286607664721291">"Alkalmazás fokozatos közzététele…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Ismeretlen"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Irányítópult"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Legutóbbi hozzáférés: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> hozzáférés (<xliff:g id="NUM_5">%3$s</xliff:g> a háttérben)</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 (<xliff:g id="NUM_2">%3$s</xliff:g> a háttérben)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Legutóbbi hozzáférés: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> hozzáférés\nIdőtartam: <xliff:g id="TIME_5">%3$s</xliff:g></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\nIdőtartam: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Legutóbbi hozzáférés: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> hozzáférés (<xliff:g id="NUM_6">%3$s</xliff:g> a háttérben)\nIdőtartam: <xliff:g id="TIME_7">%3$s</xliff:g></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 (<xliff:g id="NUM_2">%3$s</xliff:g> a háttérben)\nIdőtartam: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Bármely engedély"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Bármikor"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Elmúlt 7 nap"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Elmúlt 24 óra"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Elmúlt 1 óra"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Elmúlt 15 perc"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Elmúlt 1 perc"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Nincs engedélyhasználat"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Hozzáférés bármikor"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Hozzáférés az elmúlt hét napban"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Hozzáférés az elmúlt 24 órában"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Hozzáférés az elmúlt órában"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Hozzáférés az elmúlt 15 percben"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Hozzáférés az elmúlt percben"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Leggyakoribb engedélyhasználat bármikor"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Leggyakoribb engedélyhasználat az elmúlt 7 napban"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Leggyakoribb engedélyhasználat az elmúlt 24 órában"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Leggyakoribb engedélyhasználat az elmúlt órában"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Leggyakoribb engedélyhasználat az előző 15 percben"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Leggyakoribb engedélyhasználat az elmúlt percben"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Alkalmazás"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Szűrve a következő alapján: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Szűrő eltávolítása"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Szűrő:"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Szűrés engedélyek szerint"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Legtöbb engedély"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Legtöbb hozzáférés"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Legutóbbiak"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Frissítés"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Alkalmazásengedély-használat"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"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>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Engedélyezés"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Mindig engedélyezett"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Csak akkor engedélyezett, ha az alkalmazás használatban van"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Tiltás"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> engedély"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="PERM">%1$s</xliff:g> hozzáférés <xliff:g id="APP">%2$s</xliff:g> számára"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"A(z) <xliff:g id="APP">%1$s</xliff:g> alkalmazás hozzáfért a következőhöz: <xliff:g id="PERM">%2$s</xliff:g> (ennyi ideje: <xliff:g id="TIME">%3$s</xliff:g>)."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"A(z) <xliff:g id="APP">%1$s</xliff:g> még nem fért hozzá a következő engedélyhez: <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Engedélyhasználat részletes adatainak megtekintése"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Legutóbbi hozzáférés: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Sosem használta"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Engedélyezett"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Csak használat közben engedélyezett"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Elutasítva"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Részletes használati adatok megtekintése"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> nap</item>
+ <item quantity="one">1 nap</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> óra</item>
+ <item quantity="one">1 óra</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> perc</item>
+ <item quantity="one">1 perc</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> másodperc</item>
+ <item quantity="one">1 másodperc</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"A(z) <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> alkalmazást szeretné használni a következőként: <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"A(z) <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> alkalmazást szeretné használni a(z) <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> helyett a következőként: <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Engedélyekre vonatkozó emlékeztetők"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"A(z) <xliff:g id="APP_NAME">%s</xliff:g> az Ön tartózkodási helyét használja"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Ez az alkalmazás bármikor hozzáférhet az Ön tartózkodási helyéhez. A módosításhoz koppintson."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Csak az alkalmazás használata közben"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Nincs megadott engedély"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Nincs megtagadott engedély"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Nincs engedélyezett alkalmazás"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Nincs elutasított alkalmazás"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Megnyitás"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Eltávolítás"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Mindenképp álljon le"</string>
+ <string name="settings" msgid="2884124136779508907">"Beállítások"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"A(z) <xliff:g id="SERVICE_NAME">%s</xliff:g> teljes körű hozzáféréssel rendelkezik az eszközhöz"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> kisegítő szolgáltatás teljes körű hozzáféréssel rendelkezik az eszközhöz"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"A(z) <xliff:g id="SERVICE_NAME">%s</xliff:g> megtekintheti a képernyőt, a műveleteket és a beviteleket, műveleteket végezhet, és vezérelheti a képernyőt."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Ezek a szolgáltatások megtekinthetik a képernyőt, a műveleteket és a beviteleket, műveleteket végezhetnek, és vezérelhetik a képernyőt."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Alapértelmezett alkalmazások"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Nincsenek alapértelmezettek"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Munkahelyi alapértelmezett"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Nincs"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Nincs alkalmazás"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Különleges alkalmazás-hozzáférés"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Nincs különleges hozzáférés"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Nincs alkalmazás"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Segédalkalmazás"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Böngésző"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Telefon alkalmazás"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS-küldő"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Segélyhívó"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Kezdőalkalmazás"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Zenealkalmazás"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Galériaalkalmazás"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Telefonalkalmazás autós módhoz"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Hívásátirányító alkalmazás"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Hívásszűrő alkalmazás"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Társalkalmazás hívásokhoz"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Autós kivetítő alkalmazás"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Az alkalmazás nem támogatja a munkaprofilt"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Megjegyzés: Ha újraindítja az eszközt, és képernyőzárat állított be, ez az alkalmazás csak a telefon feloldását követően indul el."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"A segéd hozzáfér majd a rendszer éppen használatban lévő alkalmazásainak információihoz, beleértve a képernyőn megjelenő vagy az alkalmazásokban hozzáférhető információkat is."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Hibakeresési adatok megosztása"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Megosztja a részletes hibakeresési adatokat?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> hibakeresési adatokat szeretne feltölteni."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Hibakeresési adatok megosztása"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"A(z) <xliff:g id="APP_NAME_0">%1$s</xliff:g> hibajelentést szeretne feltölteni az eszközről (a jelentés létrehozásának időpontja: <xliff:g id="DATE">%2$s</xliff:g>, <xliff:g id="TIME">%3$s</xliff:g>). A hibajelentések eszközre vonatkozó vagy alkalmazások által rögzített személyes adatokat tartalmazhatnak, például felhasználóneveket, helyadatokat, eszközazonosítókat és hálózati adatokat. Csak megbízható személyekkel és alkalmazásokkal osszon meg hibajelentéseket. Engedélyezi, hogy a(z) <xliff:g id="APP_NAME_1">%4$s</xliff:g> hibajelentést töltsön fel?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Engedélyezés"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Elutasítás"</string>
</resources>
diff --git a/res/values-hy-television/strings.xml b/res/values-hy-television/strings.xml
index f260673..d26924f 100644
--- a/res/values-hy-television/strings.xml
+++ b/res/values-hy-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Մերժել և այլևս չհարցնել"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Կարող եք փոխել սա ավելի ուշ Կարգավորումներում և Հավելվածներում"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Ցուցադրել համակարգի հավելվածները"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Հավելվածի թույլտվությունները"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Հավելվածի թույլտվությունները"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> թույլտվությունները"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Լրացուցիչ թույլտվություններ"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> թույլտվությունները"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Մերժել և այլևս չհարցնել"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Կարող եք փոխել սա ավելի ուշ՝ անցնելով Կարգավորումներ > Հավելվածներ"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Ցուցադրել համակարգի հավելվածները"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Հավելվածների թույլտվություններ"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Հավելվածների թույլտվություններ"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Թույլտվություններ (<xliff:g id="PERMISSION">%1$s</xliff:g>)"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Լրացուցիչ թույլտվություններ"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Թույլտվություններ (<xliff:g id="PERMISSION">%1$s</xliff:g>)"</string>
</resources>
diff --git a/res/values-hy-watch/strings.xml b/res/values-hy-watch/strings.xml
index 5538858..1282e65 100644
--- a/res/values-hy-watch/strings.xml
+++ b/res/values-hy-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Մերժել, այլևս չհարցնել"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Ցուցադրել համակարգի հավելվածները"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Հնարավոր չէ փոխել"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Այո"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Չեղարկել"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Մերժել և այլևս չհարցնել"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Ցուցադրել համակարգի հավելվածները"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Հնարավոր չէ փոխել"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Այո"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Չեղարկել"</string>
</resources>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index b27d537..f35af9e 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,286 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Փաթեթի տեղադրիչ"</string>
- <string name="next" msgid="3057143178373252333">"Հաջորդը"</string>
- <string name="install" msgid="5896438203900042068">"Տեղադրել"</string>
- <string name="done" msgid="3889387558374211719">"Պատրաստ է"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Թույլատրել այս հավելվածին`"</string>
- <string name="cancel" msgid="8360346460165114585">"Չեղարկել"</string>
- <string name="unknown" msgid="4742479012767208045">"Անհայտ"</string>
- <string name="installing" msgid="8613631001631998372">"Տեղադրվում է..."</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>-ի տեղադրում…"</string>
- <string name="install_done" msgid="3682715442154357097">"Հավելվածը տեղադրված է:"</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Ցանկանու՞մ եք տեղադրել այս ծրագիրը: Այն մուտքի հնարավորություն կունենա`"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Ցանկանու՞մ եք տեղադրել այս հավելվածը: Այն հատուկ մուտք չի պահանջում:"</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Ցանկանու՞մ եք այս առկա հավելվածում թարմացում տեղադրել: Ձեր ընթացիկ տվյալները չեն կորի: Նորացված հավելվածը կստանա մատչում`"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Ցանկանու՞մ եք այս ներկառուցված հավելվածում թարմացում տեղադրել: Ձեր առկա տվյալները չեն կորի: Նորացված հավելվածը կստանա մատչում `"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Ցանկանու՞մ եք այս առկա հավելվածում թարմացում տեղադրել: Ձեր ընթացիկ տվյալները չեն կորի: Այն չի պահանջում որևէ հատուկ մուտք:"</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Ցանկանու՞մ եք այս ներկառուցված հավելվածում թարմացում տեղադրել: Ձեր ընթացիկ տվյալները չեն կորի: Այն չի պահանջում որևէ հատուկ մուտք:"</string>
- <string name="install_failed" msgid="6579998651498970899">"Հավելվածը տեղադրված չէ:"</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Փաթեթի տեղադրումն արգելափակվել է:"</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Հավելվածը չի տեղադրվել, քանի որ տեղադրման փաթեթն ունի հակասություն առկա փաթեթի հետ:"</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Հավելվածը չի տեղադրվել, քանի որ այն համատեղելի չէ ձեր պլանշետի հետ:"</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Այս հավելվածը համատեղելի չէ ձեր հեռուստացույցի հետ:"</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Հավելվածը չի տեղադրվել, քանի որ այն համատեղելի չէ ձեր հեռախոսի հետ:"</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Հավելվածը չի տեղադրվել, քանի որ տեղադրման փաթեթը, կարծես թե, վնասված է:"</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ը չհաջողվեց տեղադրել ձեր պլանշետում:"</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Չհաջողվեց տեղադրել <xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածը ձեր հեռուստացույցի վրա:"</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ը չհաջողվեց տեղադրել ձեր հեռախոսում:"</string>
- <string name="launch" msgid="4826921505917605463">"Բացել"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Ձեր ադմինիստրատորը թույլ չի տալիս տեղադրել հավելվածներ անհայտ աղբյուրներից"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Այս օգտատերը չի կարող անհայտ հավելվածներ տեղադրել"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Այս օգտատիրոջը չի թույլատրվում տեղադրել հավելվածներ"</string>
- <string name="ok" msgid="3468756155452870475">"Հաստատել"</string>
- <string name="settings" msgid="6743583734099755409">"Կարգավորումներ"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Կառավարել հավելվածները"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Փոխարինե՞լ հավելվածը:"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Ծրագիրը, որը դուք տեղադրում եք, կփոխարինի մեկ այլ ծրագրի:\n\nՁեր բոլոր նախկին օգտատիրոջ տվյալները կպահվեն:"</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Սա համակարգային ծրագիր է:\n\nՁեր բոլոր նախկին օգտատիրոջ տվյալները կպահվեն:"</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Տարածքից դուրս"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ը չհաջողվեց տեղադրել: Ազատեք որոշակի տարածք և կրկին փորձեք:"</string>
- <string name="dlg_ok" msgid="6944357727705699232">"Հաստատել"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Հավելվածը չի գտնվել"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Հավելվածը չի գտնվել տեղադրված հավելվածների ցանկում:"</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Արգելված է"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Ընթացիկ օգտատերը հեռացնելու թույլտվություն չունի:"</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Սխալ"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Հնարավոր չէ հեռացնել հավելվածը:"</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Ապատեղադրել հավելվածը"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Ապատեղադրել թարմացումը"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g>-ը հետևյալ հավելվածի մասն է`"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Ուզո՞ւմ եք ապատեղադրել այս հավելվածը։"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Ցանկանու՞մ եք ապատեղադրել այս հավելվածը "<b>"բոլոր"</b>" օգտատերերի համար: Հավելվածը և դրա տվյալները կհեռացվեն սարքի "<b>"բոլոր"</b>" օգտատերերից:"</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Ցանկանում եք ապատեղադրե՞լ այս ծրագիրը <xliff:g id="USERNAME">%1$s</xliff:g> օգտատիրոջ համար:"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Փոխարինե՞լ այս հավելվածը գործարանային տարբերակով: Բոլոր տվյալները կհեռացվեն:"</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Փոխարինե՞լ այս հավելվածը գործարանային տարբերակով: Բոլոր տվյալները կհեռացվեն: Դա վերաբերում է այս սարքի բոլոր օգտատերերին, այդ թվում նաև աշխատանքային պրոֆիլներ ունեցողներին:"</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Ընթացիկ հեռացումներ"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Ձախողված հեռացումներ"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Ապատեղադրում է..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> հավելվածը հեռացվում է…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Ապատեղադրումը ավարտված է:"</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Հեռացված <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Ապատեղադրումն անհաջող է:"</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Չհաջողվեց հեռացնել <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> հավելվածը:"</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Հնարավոր չէ հեռացնել ակտիվ սարքի ադմինիստրատորի հավելվածը"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Հնարավոր չէ հեռացնել ակտիվ սարքի ադմինիստրատորի հավելվածը <xliff:g id="USERNAME">%1$s</xliff:g> օգտատիրոջ համար"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Այս հավելվածն անհրաժեշտ է որոշ օգտատերերի կամ պրոֆիլների համար և մնացածի մոտ հեռացվել է"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Այս հավելվածն անհրաժեշտ է ձեր պրոֆիլի համար: Այն հնարավոր չէ հեռացնել:"</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Ծրագիրը ձեր սարքի ադմինիստրատորի կողմից նշվել է որպես պարտադիր և չի կարող հեռացվել:"</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Կառավարել սարքի ադմինիստրատորի հավելվածները"</string>
- <string name="manage_users" msgid="3125018886835668847">"Կառավարել օգտատերերին"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ը չհաջողվեց ապատեղադրել:"</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Փաթեթը վերլուծելիս խնդիր առաջացավ:"</string>
- <string name="newPerms" msgid="6039428254474104210">"Նոր"</string>
- <string name="allPerms" msgid="1024385515840703981">"Բոլորը"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Գաղտնիություն"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Սարքի մատչում"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Այս թարմացումը պահանջում է, որ նոր թույլտվություններ չտրվեն:"</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Ցանկանու՞մ եք շնորհել հետևյալ թույլտվությունները: Այն կստանա մատչում`"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Մերժել"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Այլ տեղեկություններ"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Մերժել ամեն դեպքում"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Թույլատրե՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին <xliff:g id="ACTION">%2$s</xliff:g>:"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"կասեցվել է <xliff:g id="COUNT">%1$d</xliff:g> թույլտվություն"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"բոլոր թույլտվությունները կասեցվել են"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"ոչ մի թույլտվություն չի կասեցվել"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Թույլատրել"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Հավելվածներ"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Հավելվածների թույլտվություններ"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Այլևս չհարցնել"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Թույլտվություններ չկան"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Լրացուցիչ թույլտվություններ"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Թույլտվությունների հսկիչ"</string>
+ <string name="ok" msgid="4417794827535157922">"Եղավ"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"թույլտվություններ"</string>
+ <string name="cancel" msgid="7279939269964834974">"Չեղարկել"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Հավելվածը չի գտնվել"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Մերժել"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Մերժել և այլևս չհարցնել"</string>
+ <!-- no translation found for grant_dialog_button_deny_background (5378693207810841555) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_deny_background_and_dont_ask_again (1032019626928637454) -->
+ <skip />
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Մանրամասն"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Մերժել"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Թույլ տա՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին <xliff:g id="ACTION">%2$s</xliff:g>:"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Միշտ թույլ տա՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին <xliff:g id="ACTION">%2$s</xliff:g>:"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Միայն հավելվածն օգտագործելիս"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Միշտ"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Մերժել և այլևս չհարցնել"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"չեղարկվել է <xliff:g id="COUNT">%1$d</xliff:g> թույլտվություն"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"բոլորը չեղարկվել են"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"ոչինչ չի չեղարկվել"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Թույլատրել"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Թույլատրել միշտ"</string>
+ <!-- no translation found for grant_dialog_button_allow_foreground (8090382319222429427) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_allow_background (3190568549032350790) -->
+ <skip />
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Հավելվածներ"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Հավելվածների թույլտվություններ"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Թույլտվությունների կառավարիչ"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Այլևս չհարցնել"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Թույլտվություններ չկան"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Լրացուցիչ թույլտվություններ"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Հավելվածի մասին"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"Այս հավելվածը նախատեսված է Android-ի ավելի հին տարբերակի համար: Եթե մերժեք թույլտվությունը, այն կարող է չաշխատել ինչպես հարկն է:"</string>
- <string name="default_permission_description" msgid="4992892207044156668">"թույլատրել անհայտ գործողություն"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"Թույլատրված է <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="6773743421743728921">"Ցուցադրել համակարգայինները"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Թաքցնել համակարգայինները"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> թույլտվություններ"</string>
- <string name="no_apps" msgid="1965493419005012569">"Հավելվածներ չկան"</string>
- <string name="location_settings" msgid="1774875730854491297">"Տեղորոշման կարգավորումներ"</string>
- <string name="location_warning" msgid="8778701356292735971">"Այս սարքի տեղադրության ծառայությունները տրամադրում է <xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածը: Տեղադրության ցուցադրման կարգավորումները կարող եք փոխել տեղադրության կարգավորումներից:"</string>
- <string name="system_warning" msgid="7103819124542305179">"Եթե չտրամադրեք այս թույլտվությունը, ձեր սարքի հիմնական գործառույթները հնարավոր է սխալ աշխատեն:"</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Սահմանված է կանոններով"</string>
- <string name="loading" msgid="7811651799620593731">"Բեռնում…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Բոլոր թույլտվությունները"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Այլ հավելվածների հնարավորությունները"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Թույլտվության հարցում"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Ցուցադրում այլ պատուհանների վրա"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Այս թույլտվության կարգավորումները փոխելու համար նախ անհրաժեշտ է անջատել էկրանի վերադրումը՝ անցնելով Կարգավորումներ > Հավելվածներ"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Բացել կարգավորումները"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Տեղադրման/հեռացման գործողությունները Android Wear-ում չեն աջակցվում:"</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> հավելվածը թարմացվել է: Թույլ տա՞լ <xliff:g id="APP_NAME_1">%1$s</xliff:g> հավելվածին օգտագործել հետևյալը:"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Ընտրեք, ինչ թույլտվություններ եք ցանկանում տրամադրել <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածը թարմացվել է: Ընտրեք, ինչ թույլտվություններ եք ցանկանում տրամադրել այդ հավելվածին:"</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Չեղարկել"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Շարունակել"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Նոր թույլտվությունները"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Առկա թույլտվությունները"</string>
- <string name="message_staging" msgid="6151794817691100003">"Հավելվածի նախապատրաստում…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Անհայտ"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Անվտանգության նկատառումներից ելնելով՝ ձեր պլանշետին չի թույլատրվում այս աղբյուրից տեղադրել անհայտ հավելվածներ:"</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Անվտանգության նկատառումներից ելնելով՝ ձեր հեռուստացույցին չի թույլատրվում այս աղբյուրից տեղադրել անհայտ հավելվածներ:"</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Անվտանգության նկատառումներից ելնելով՝ ձեր հեռախոսին չի թույլատրվում այս աղբյուրից տեղադրել անհայտ հավելվածներ:"</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Ձեր հեռախոսը և անձնական տվյալներն առավել խոցելի են անհայտ հավելվածների գրոհների նկատմամբ: Տեղադրելով այս հավելվածը՝ դուք ընդունում եք, որ պատասխանատվություն եք կրում հավելվածի օգտագործման հետևանքով ձեր հեռախոսին պատճառած ցանկացած վնասի կամ տվյալների կորստի համար:"</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Ձեր պլանշետը և անձնական տվյալներն առավել խոցելի են անհայտ հավելվածների գրոհների նկատմամբ: Տեղադրելով այս հավելվածը՝ դուք ընդունում եք, որ պատասխանատվություն եք կրում հավելվածի օգտագործման հետևանքով ձեր պլանշետին պատճառած ցանկացած վնասի կամ տվյալների կորստի համար:"</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Ձեր TV-ն և անձնական տվյալներն առավել խոցելի են անհայտ հավելվածների գրոհների նկատմամբ: Տեղադրելով այս հավելվածը՝ դուք ընդունում եք, որ պատասխանատվություն եք կրում հավելվածի օգտագործման հետևանքով ձեր TV-ին պատճառած ցանկացած վնասի կամ տվյալների կորստի համար:"</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Շարունակել"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Կարգավորումներ"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Wear հավելվածների տեղադրում/հեռացում"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Այս հավելվածը նախատեսված է Android-ի ավելի հին տարբերակի համար: Եթե մերժեք թույլտվությունը, այն կարող է չաշխատել ինչպես հարկն է:"</string>
+ <string name="default_permission_description" msgid="692254823411049573">"կատարել անհայտ գործողություն"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"Թույլատրված է <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="7623002570829860709">"Ցույց տալ համակարգի հավելվածները"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Թաքցնել համակարգի հավելվածները"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Հավելվածներ չկան"</string>
+ <string name="location_settings" msgid="547378321761364906">"Տեղորոշման կարգավորումներ"</string>
+ <string name="location_warning" msgid="4687406043150343369">"Այս սարքի տեղորոշման ծառայությունները տրամադրում է <xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածը: Տեղադրության ցուցադրման կարգավորումները կարող եք փոխել տեղորոշման կարգավորումներից:"</string>
+ <string name="system_warning" msgid="6868290533389195836">"Եթե չտրամադրեք այս թույլտվությունը, ձեր սարքի հիմնական գործառույթները հնարավոր է պատշաճ չաշխատեն:"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Կանոնների համաձայն"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Հասանելիությունը ֆոնային ռեժիմում անջատած է կանոնի համաձայն"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Հասանելիությունը ֆոնային ռեժիմում միացված է կանոնի համաձայն"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Հասանելիությունն ակտիվ ռեժիմում միացված է կանոնի համաձայն"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Վերահսկվում է ադմինիստրատորի կողմից"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Ադմինիստրատորն անջատել է հասանելիությունը ֆոնային ռեժիմում"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Ադմինիստրատորը միացրել է հասանելիությունը ֆոնային ռեժիմում"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Ադմինիստրատորը միացրել է հասանելիությունն ակտիվ ռեժիմում"</string>
+ <!-- no translation found for permission_summary_enabled_system_fixed (5463084832974856683) -->
+ <skip />
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <!-- no translation found for permission_access_always (5419580764084361573) -->
+ <skip />
+ <!-- no translation found for permission_access_only_foreground (2857031150724321567) -->
+ <skip />
+ <!-- no translation found for permission_access_never (425385910378172045) -->
+ <skip />
+ <string name="loading" msgid="323483393167148377">"Բեռնում…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Բոլոր թույլտվությունները"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Էլ ինչ կարող է անել հավելվածը"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Թույլտվության հարցում"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Հայտնաբերվել է էկրանի վրադրում"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Այս թույլտվության կարգավորումները փոխելու համար նախ անհրաժեշտ է անջատել էկրանի վրադրումը՝ անցնելով Կարգավորումներ > Հավելվածներ"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Բացել կարգավորումները"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Տեղադրման/հեռացման գործողությունները Android Wear-ում չեն աջակցվում:"</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Ընտրեք՝ ինչ թույլտվություններ եք ուզում տրամադրել <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածը թարմացվել է: Ընտրեք՝ ինչ թույլտվություններ եք ուզում տրամադրել այդ հավելվածին:"</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Չեղարկել"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Շարունակել"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Նոր թույլտվություններ"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Ընթացիկ թույլտվություններ"</string>
+ <string name="message_staging" msgid="641286607664721291">"Սպասեք…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Անհայտ"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Կառավարման վահանակ"</string>
+ <!-- no translation found for permission_usage_summary_foreground (3203419920107457274) -->
+ <skip />
+ <!-- no translation found for permission_usage_summary_background (5719598203265078254) -->
+ <skip />
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Բոլոր թույլտվությունները"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Ցանկացած ժամանակ"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Վերջին 7 օրում"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Վերջին 24 ժամում"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Վերջին ժամում"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Վերջին 15 րոպեում"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Վերջին 1 րոպեում"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Թույլտվություններ չեն կիրառվել"</string>
+ <!-- no translation found for permission_usage_list_title_any_time (5641676869304328239) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_7_days (2972289322203714509) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_day (6298662604046093174) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_hour (7224982939487774388) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_15_minutes (49045607172810502) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_minute (7716966405942817635) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_any_time (862654449303514044) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_7_days (5393381637937213483) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_day (7202567658282481259) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_hour (4672313408976666479) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_15_minutes (1776918144361651860) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_minute (236300476767668315) -->
+ <skip />
+ <!-- no translation found for app_permission_usage_bar_label (7261634017833698654) -->
+ <!-- no translation found for permission_usage_view_details (4728049344017619500) -->
+ <skip />
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Զտված է ըստ՝ <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Հեռացնել զտիչը"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Զտել ըստ"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Զտել ըստ թույլտվությունների"</string>
+ <!-- no translation found for filter_by_time (1763143592970195407) -->
+ <skip />
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Ամենաշատ օգտագործում"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Թույլտվությունների քանակ"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Վերջինները"</string>
+ <!-- no translation found for sort_by_app (1912228966803416485) -->
+ <skip />
+ <!-- no translation found for sort_by_time (8280378662234104410) -->
+ <skip />
+ <!-- no translation found for item_separator (8266062815210378175) -->
+ <skip />
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Թարմացնել"</string>
+ <!-- no translation found for permission_usage_permission_filter_subtitle (5539392196389332769) -->
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Թույլտվությունների օգտագործում"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"Օգտագործվել է <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="4040424337831328212">"Օգտագործվել է <xliff:g id="NUM">%1$s</xliff:g> անգամ։ Վերջինը՝ <xliff:g id="TIME">%2$s</xliff:g> առաջ։"</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Թույլատրել"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Թույլատրել միշտ"</string>
+ <!-- no translation found for app_permission_button_allow_foreground (2303741829613210541) -->
+ <skip />
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Մերժել"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"«<xliff:g id="PERM">%1$s</xliff:g>» թույլտվություն"</string>
+ <!-- no translation found for app_permission_header (228974007660007656) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_usage_summary (1034436308858219976) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_no_usages (4444374134047275841) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_app_permissions_link (8033278634020892918) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_permission_apps_link (8759141212929298774) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_generic (5479202003136667039) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_activity_recognition (2022880340017289990) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_calendar (2846128908236787586) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_call_log (2429916962093948340) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_camera (6699611334403400091) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_contacts (5169995707720233126) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_location (687820658574645201) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_aural (2102206495149326019) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_visual (3105938942794669520) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_microphone (2300290217308759293) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_phone (3773977614654088578) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sensors (6733606479604624853) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sms (8850213022386508528) -->
+ <skip />
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Վերջին օգտագործումը՝ <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Երբեք չի օգտագործվել"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Թույլատրված"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Միայն հավելվածն օգտագործելիս"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Մերժված"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Դիտեք օգտագործման մանրամասները"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <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="seconds" formatted="false" msgid="1632909606956324957">
+ <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_reminders" msgid="8040710767178843151">"Հիշեցումներ թույլտվությունների մասին"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"«<xliff:g id="APP_NAME">%s</xliff:g>» հավելվածն օգտագործում է ձեր տեղադրության մասին տվյալները"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Այս հավելվածին միշտ հասանելի են ձեր տեղադրության մասին տվյալները: Փոխելու համար հպեք:"</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Միայն երբ հավելվածն օգտագործվում է"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Թույլտվությունները տրված չեն"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Բոլոր թույլտվությունները տրված են"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Ոչ մի հավելվածում չի գործում"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Գործում է բոլոր հավելվածներում"</string>
+ <string name="settings" msgid="2884124136779508907">"Կարգավորումներ"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ծառայությունն ունի ձեր սարքն օգտագործելու լրիվ թույլտվություն"</string>
+ <!-- no translation found for accessibility_service_dialog_title_multiple (8129325613496173909) -->
+ <skip />
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ծառայությունը կարող է տեսնել ձեր էկրանը, գործողությունները և մուտքագրած տեքստը, ինչպես նաև կատարել գործողություններ և կառավարել էկրանը:"</string>
+ <!-- no translation found for accessibility_service_dialog_bottom_text_multiple (1387803460488775887) -->
+ <skip />
+ <!-- no translation found for request_role_title (3611734134669430568) -->
+ <skip />
+ <!-- no translation found for request_role_current_default (7512045433655289638) -->
+ <skip />
+ <!-- no translation found for request_role_set_as_default (5706081295230541240) -->
+ <skip />
+ <!-- no translation found for default_app_search_keyword (6938709626391437391) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_ok (3007005536659549573) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_open_settings (3368892579319881043) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_title (7173961211414061803) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_separator (9008030412869423988) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_last_separator (7455459775266515801) -->
+ <skip />
+ <string name="default_apps" msgid="8554530939151957828">"Կանխադրված հավելվածներ"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Կանխադրված հավելվածներ չկան"</string>
+ <!-- no translation found for default_apps_manage_domain_urls (3146379064445013719) -->
+ <skip />
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Կանխադրված՝ աշխատանքի համար"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Չկա"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Հավելվածներ չկան"</string>
+ <!-- no translation found for special_app_access_search_keyword (462008045110320714) -->
+ <skip />
+ <string name="special_app_access" msgid="2561673957499408877">"Հատուկ հասանելիություն"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Հատուկ հասանելիություն չկա"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Հավելվածներ չկան"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Օգնական հավելված"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"«Դիտարկիչ» հավելված"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"«Հեռախոս» հավելված"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"«SMS» հավելված"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Արտակարգ իրավիճակների հավելված"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Հիմնական հավելված"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Երաժշտություն"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Ցուցասրահ"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"«Հեռախոս» մեքենայի ռեժիմի համար"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Զանգի վերահասցեավորման հավելված"</string>
+ <!-- no translation found for role_label_call_screening (1089966334646538858) -->
+ <skip />
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Ուղեկցող հավելված զանգերի համար"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Աշխատանքային պրոֆիլներ չի աջակցում"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Ուշադրություն. եթե դուք վերագործարկեք ձեր սարքը, որում սահմանված է էկրանի կողպում, այս հավելվածը չի աշխատի, մինչև չապակողպեք սարքը։"</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Օգնականը կկարողանա կարդալ համակարգում օգտագործվող հավելվածների մասին տվյալները, այդ թվում՝ էկրանին ցուցադրվող կամ հավելվածներից ստացվող տեղեկությունները:"</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Վրիպազերծման տվյալների ուղարկում"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Ուղարկե՞լ վրիպազերծման մանրամասն տվյալները"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ն ուզում է վերբեռնել վրիպազերծման տվյալները:"</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Վրիպազերծման տվյալների ուղարկում"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g>-ը թույլտվություն է խնդրում՝ այս սարքից վրիպակների հաշվետվությունը (վերցված <xliff:g id="DATE">%2$s</xliff:g>-ին ժամը <xliff:g id="TIME">%3$s</xliff:g>-ին) վերբեռնելու համար: Վրիպակների հաշվետվությունները ներառում են տվյալներ ձեր սարքի մասին կամ անձնական տվյալներ, որոնք գրանցվել են հավելվածների կողմից, օրինակ՝ օգտատերերի անուններ, տեղադրության մասին տվյալներ, սարքերի ID-ներ և ցանցի մասին տեղեկություններ: Վրիպակների հաշվետվություններով կիսվեք միայն այն մարդկանց ու հավելվածների հետ, որոնց կարող եք վստահել այս տեղեկությունները: Թույլատրե՞լ <xliff:g id="APP_NAME_1">%4$s</xliff:g>-ին վերբեռնել վրիպակների հաշվետվությունը:"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Թույլատրել"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Մերժել"</string>
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_title (5699953608028268176) -->
+ <skip />
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_content (6960592986228883592) -->
+ <skip />
+ <!-- no translation found for dismiss_with_acknowledgment (2879819713128822468) -->
+ <skip />
</resources>
diff --git a/res/values-in-television/strings.xml b/res/values-in-television/strings.xml
index 8e6e9ab..4bd8477 100644
--- a/res/values-in-television/strings.xml
+++ b/res/values-in-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Tolak dan jangan tanya lagi"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Anda dapat mengubah ini nanti di Setelan > Aplikasi"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Tampilkan aplikasi sistem"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Izin aplikasi"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Izin aplikasi"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Izin <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Izin tambahan"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Izin <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Tolak dan jangan tanya lagi"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Anda dapat mengubah ini nanti di Setelan > Aplikasi"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Menampilkan aplikasi sistem"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Izin aplikasi"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Izin aplikasi"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Izin <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Izin tambahan"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Izin <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-in-watch/strings.xml b/res/values-in-watch/strings.xml
index ca2e087..231aaf7 100644
--- a/res/values-in-watch/strings.xml
+++ b/res/values-in-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Tolak, jangan tanya lagi"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Tampilkan aplikasi sistem"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Tidak dapat diubah"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Ya"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Batal"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Tolak, jangan tanya lagi"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Menampilkan aplikasi sistem"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Tidak dapat diubah"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Ya"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Batal"</string>
</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 5eb7a3c..e742695 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Pemasang paket"</string>
- <string name="next" msgid="3057143178373252333">"Berikutnya"</string>
- <string name="install" msgid="5896438203900042068">"Instal"</string>
- <string name="done" msgid="3889387558374211719">"Selesai"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Izinkan apl ini untuk:"</string>
- <string name="cancel" msgid="8360346460165114585">"Batal"</string>
- <string name="unknown" msgid="4742479012767208045">"Tidak diketahui"</string>
- <string name="installing" msgid="8613631001631998372">"Memasang..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Menginstal <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Apl terpasang."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Apakah Anda ingin memasang aplikasi ini? Aplikasi akan memiliki akses ke:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Apakah Anda ingin memasang aplikasi ini? Aplikasi tidak memerlukan akses khusus apa pun."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Apakah Anda ingin memasang pembaruan ke aplikasi yang ada? Data Anda yang ada tidak akan hilang. Aplikasi yang diperbarui akan mendapatkan akses ke:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Apakah Anda ingin memasang pembaruan ke aplikasi yang tertanam? Data Anda yang ada tidak akan hilang. Aplikasi yang diperbarui akan mendapatkan akses ke:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Anda ingin memasang pembaruan ke aplikasi yang ada ini? Data Anda yang ada akan hilang. Tindakan ini tidak memerlukan akses khusus apa pun."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Anda ingin memasang pembaruan ke aplikasi yang ada di dalamnya? Data Anda yang ada akan hilang. Tindakan ini tidak memerlukan akses khusus apa pun."</string>
- <string name="install_failed" msgid="6579998651498970899">"Apl tidak terpasang."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Paket diblokir sehingga tidak dapat dipasang."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Aplikasi yang tidak dipasang sebagai paket akan bentrok dengan paket yang sudah ada."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Aplikasi yang tidak dipasang sebagai aplikasi tidak kompatibel dengan tablet Anda."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Aplikasi ini tidak kompatibel dengan TV Anda."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Aplikasi yang tidak dipasang sebagai aplikasi tidak kompatibel dengan ponsel Anda."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Aplikasi yang tidak dipasang sebagai paket tampaknya tidak valid."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak dapat dipasang pada tablet Anda."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak dapat dipasang di TV."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak dapat dipasang pada ponsel Anda."</string>
- <string name="launch" msgid="4826921505917605463">"Buka"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Admin tidak mengizinkan penginstalan aplikasi yang didapatkan dari sumber tidak dikenal"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Aplikasi yang tidak dikenal tidak dapat diinstal oleh pengguna ini"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Pengguna ini tidak diizinkan menginstal aplikasi"</string>
- <string name="ok" msgid="3468756155452870475">"Oke"</string>
- <string name="settings" msgid="6743583734099755409">"Setelan"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Kelola apl"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Ganti apl?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Apl yang Anda instal akan menggantikan apl lain.\n\nSemua data pengguna Anda sebelumnya akan disimpan."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Ini adalah apl sistem.\n\nSemua data pengguna Anda sebelumnya akan disimpan."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Kehabisan ruang penyimpanan"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak dapat dipasang. Kosongkan sebagian ruang dan coba lagi."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"Oke"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Apl tidak ditemukan"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Apl tersebut tidak ditemukan di dalam daftar apl yang terpasang."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Tidak diizinkan"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Pengguna saat ini tidak diizinkan mencopot pemasangan."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Kesalahan"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Aplikasi tidak dapat dipasang."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Uninstal apl"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Uninstal pembaruan"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> adalah bagian dari apl berikut:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Apakah Anda ingin mencopot pemasangan apl ini?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Anda ingin mencopot aplikasi ini untuk "<b>"semua"</b>" pengguna? Aplikasi dan datanya akan dihapus dari "<b>"semua"</b>" pengguna pada perangkat."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Ingin mencopot pemasangan aplikasi ini untuk pengguna <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Gantikan aplikasi ini dengan versi pabrik? Semua data akan dihapus."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Gantikan aplikasi ini dengan versi pabrik? Semua data akan dihapus. Tindakan ini memengaruhi semua pengguna perangkat ini, termasuk yang memiliki profil kerja."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Menjalankan uninstal"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Uninstal yang gagal"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Mencopot pemasangan..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Mencopot pemasangan <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Pencopotan pemasangan selesai."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> di-uninstal"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Pencopotan pemasangan tidak berhasil."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Gagal mencopot pemasangan <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Tidak dapat meng-uninstal aplikasi admin perangkat yang aktif"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Tidak dapat meng-uninstal aplikasi admin perangkat yang aktif untuk <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Aplikasi ini diperlukan untuk beberapa pengguna atau profil, dan telah dicopot pemasangannya untuk yang lainnya"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Aplikasi ini diperlukan untuk profil Anda dan tidak dapat dicopot pemasangannya."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Aplikasi diwajibkan administrator perangkat & pemasangannya tidak bisa dicopot."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Kelola aplikasi admin perangkat"</string>
- <string name="manage_users" msgid="3125018886835668847">"Kelola pengguna"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak dapat dicopot pemasangannya."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Terjadi masalah saat mengurai paket."</string>
- <string name="newPerms" msgid="6039428254474104210">"Baru"</string>
- <string name="allPerms" msgid="1024385515840703981">"Semua"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privasi"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Akses Perangkat"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Pembaruan ini tidak memerlukan izin baru."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Ingin memberikan izin ini? Akses akan diberikan ke:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Tolak"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Info selengkapnya"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Tetap tolak"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Izinkan <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> untuk <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> dinonaktifkan"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"semua dinonaktifkan"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"tidak ada yang dinonaktifkan"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Izinkan"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Aplikasi"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Izin aplikasi"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Jangan tanya lagi"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Tidak ada izin"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Izin tambahan"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Pengontrol izin"</string>
+ <string name="ok" msgid="4417794827535157922">"Ya"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"izin"</string>
+ <string name="cancel" msgid="7279939269964834974">"Batal"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Apl tidak ditemukan"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Tolak"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Tolak & jangan tanya lagi"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Info lengkap"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Tetap tolak"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Izinkan <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> untuk <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Selalu izinkan <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> untuk <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Hanya saat menggunakan aplikasi"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Selalu"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Tolak dan jangan tanya lagi"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> dinonaktifkan"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"semua dinonaktifkan"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"tidak ada yang dinonaktifkan"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Izinkan"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Izinkan sepanjang waktu"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Izinkan hanya saat aplikasi sedang digunakan"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Aplikasi"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Izin aplikasi"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Pengelola izin"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Jangan tanya lagi"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Tidak ada izin"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Izin tambahan"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Buka info aplikasi"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> lainnya</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> lainnya</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Aplikasi ini dirancang untuk versi lama Android. Menolak izin dapat menyebabkan aplikasi tidak berfungsi lagi sesuai harapan."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"melakukan tindakan yang tidak dikenal"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_0">%1$d</xliff:g> dari <xliff:g id="COUNT_1">%2$d</xliff:g> aplikasi diizinkan"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Tampilkan sistem"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Sembunyikan sistem"</string>
- <string name="permission_title" msgid="6495415273398916381">"Izin <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Tidak ada aplikasi"</string>
- <string name="location_settings" msgid="1774875730854491297">"Setelan Lokasi"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Jika Anda menolak izin ini, fitur dasar perangkat mungkin tidak berfungsi lagi sesuai harapan."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Diterapkan menurut kebijakan"</string>
- <string name="loading" msgid="7811651799620593731">"Memuat…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Semua izin"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Kemampuan aplikasi lainnya"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Permintaan izin"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Hamparan layar terdeteksi"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Untuk mengubah setelan izin ini, terlebih dahulu Anda harus menonaktifkan hamparan layar dari Setelan > Aplikasi"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Buka setelan"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Instal/Uninstal tidak didukung di Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> telah diperbarui. Izinkan <xliff:g id="APP_NAME_1">%1$s</xliff:g> untuk mengakses berikut ini?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Pilih item yang boleh diakses oleh <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> telah diperbarui. Pilih item yang boleh diakses oleh aplikasi ini."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Batal"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Lanjutkan"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Izin baru"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Izin saat ini"</string>
- <string name="message_staging" msgid="6151794817691100003">"Menyiapkan aplikasi..."</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Tidak dikenal"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Demi keamanan, TV tidak diizinkan menginstal aplikasi yang tidak dikenal dari sumber ini."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Demi keamanan, TV tidak diizinkan menginstal aplikasi yang tidak dikenal dari sumber ini."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Demi keamanan, ponsel tidak diizinkan menginstal aplikasi yang tidak dikenal dari sumber ini."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Data pribadi dan ponsel lebih rentan terhadap serangan oleh aplikasi yang tidak dikenal. Dengan menginstal aplikasi ini, Anda setuju bahwa Anda bertanggung jawab atas kerusakan ponsel atau kehilangan data yang mungkin diakibatkan oleh penggunaannya."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Data pribadi dan tablet lebih rentan terhadap serangan oleh aplikasi yang tidak dikenal. Dengan menginstal aplikasi ini, Anda setuju bahwa Anda bertanggung jawab atas kerusakan tablet atau kehilangan data yang mungkin diakibatkan oleh penggunaannya."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Data pribadi dan TV lebih rentan terhadap serangan oleh aplikasi yang tidak dikenal. Dengan menginstal aplikasi ini, Anda setuju bahwa Anda bertanggung jawab atas kerusakan TV atau kehilangan data yang mungkin diakibatkan oleh penggunaannya."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Lanjutkan"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Setelan"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Melakukan instal/uninstal aplikasi Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Aplikasi ini dirancang untuk versi lama Android. Menolak izin dapat menyebabkan aplikasi tidak berfungsi lagi sesuai harapan."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"melakukan tindakan yang tidak dikenal"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> dari <xliff:g id="COUNT_1">%2$d</xliff:g> aplikasi diizinkan"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Penggunaan terbaru"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Lihat Dasbor Izin"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Tampilkan sistem"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Sembunyikan sistem"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Tidak ada aplikasi"</string>
+ <string name="location_settings" msgid="547378321761364906">"Setelan Lokasi"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Jika Anda menolak izin ini, fitur dasar perangkat mungkin tidak berfungsi lagi sesuai harapan."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Diterapkan menurut kebijakan"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Akses latar belakang dinonaktifkan oleh kebijakan"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Akses latar belakang diaktifkan oleh kebijakan"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Akses latar depan diaktifkan oleh kebijakan"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Dikontrol oleh admin"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Akses latar belakang dinonaktifkan oleh admin"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Akses latar belakang diaktifkan oleh admin"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Akses latar depan diaktifkan oleh admin"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Izin disetel oleh sistem"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Selalu"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Hanya saat menggunakan aplikasi"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Tidak pernah"</string>
+ <string name="loading" msgid="323483393167148377">"Memuat…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Semua izin"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Kemampuan aplikasi lainnya"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Permintaan izin"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Hamparan layar terdeteksi"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Untuk mengubah setelan izin ini, terlebih dahulu Anda harus menonaktifkan hamparan layar dari Setelan > Aplikasi"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Buka setelan"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Instal/Uninstal tidak didukung di Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Pilih item yang boleh diakses oleh <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> telah diperbarui. Pilih item yang boleh diakses oleh aplikasi ini."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Batal"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Lanjutkan"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Izin baru"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Izin saat ini"</string>
+ <string name="message_staging" msgid="641286607664721291">"Menyiapkan aplikasi..."</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Tidak tahu"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Dasbor"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Akses terakhir: Akses <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> (<xliff:g id="NUM_5">%3$s</xliff:g> di latar belakang)</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> (<xliff:g id="NUM_2">%3$s</xliff:g> di latar belakang)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Akses terakhir: Akses <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> \nDurasi: <xliff:g id="TIME_5">%3$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> \nDurasi: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Akses terakhir: Akses <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> (<xliff:g id="NUM_6">%3$s</xliff:g> di latar belakang)\nDurasi: <xliff:g id="TIME_7">%3$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> (<xliff:g id="NUM_2">%3$s</xliff:g> di latar belakang)\nDurasi: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Izin apa pun"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Kapan saja"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"7 hari terakhir"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"24 jam terakhir"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"1 jam terakhir"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"15 menit terakhir"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"1 menit terakhir"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Tidak ada penggunaan izin"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Diakses kapan saja"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Diakses dalam 7 hari terakhir"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Diakses dalam 24 jam terakhir"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Diakses dalam 1 jam terakhir"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Diakses dalam 15 menit terakhir"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Diakses dalam 1 menit terakhir"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Penggunaan izin teratas kapan saja"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Penggunaan izin teratas dalam 7 hari terakhir"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Penggunaan izin teratas dalam 24 jam terakhir"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Penggunaan izin teratas dalam 1 jam terakhir"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Penggunaan izin teratas dalam 15 menit terakhir"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Penggunaan izin teratas dalam 1 menit terakhir"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Aplikasi"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Difilter menurut: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Hapus filter"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filter menurut"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filter menurut izin"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Izin terbanyak"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Paling banyak diakses"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Terbaru"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Refresh"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Penggunaan izin aplikasi"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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> yang lalu."</string>
+ <string name="app_permission_usage_summary_no_duration" msgid="4040424337831328212">"Akses: <xliff:g id="NUM">%1$s</xliff:g> kali. Terakhir digunakan <xliff:g id="TIME">%2$s</xliff:g> yang lalu."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Izinkan"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Izinkan sepanjang waktu"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Izinkan hanya saat aplikasi sedang digunakan"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Tolak"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Izin <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Akses <xliff:g id="PERM">%1$s</xliff:g> untuk <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> mengakses <xliff:g id="PERM">%2$s</xliff:g> Anda <xliff:g id="TIME">%3$s</xliff:g> yang lalu."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> belum mengakses <xliff:g id="PERM">%2$s</xliff:g> Anda."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Melihat penggunaan izin mendetail"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Akses terakhir: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Tidak pernah mengakses"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Diizinkan"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Hanya diizinkan saat digunakan"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Ditolak"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Lihat penggunaan mendetail"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> hari</item>
+ <item quantity="one">1 hari</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> jam</item>
+ <item quantity="one">1 jam</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> menit</item>
+ <item quantity="one">1 menit</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> detik</item>
+ <item quantity="one">1 detik</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Gunakan <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> sebagai <xliff:g id="ROLE_NAME">%2$s</xliff:g> Anda?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Gunakan <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> dan bukan <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> sebagai <xliff:g id="ROLE_NAME">%2$s</xliff:g> Anda?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Pengingat izin"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> sedang menggunakan lokasi Anda"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Aplikasi ini selalu dapat mengakses lokasi Anda. Tap untuk mengubah."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Hanya saat aplikasi sedang digunakan"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Tidak ada izin"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Tidak ada izin yang ditolak"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Tidak ada aplikasi yang diizinkan"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Tidak ada aplikasi yang ditolak"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Buka"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Uninstal"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Paksa berhenti"</string>
+ <string name="settings" msgid="2884124136779508907">"Setelan"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> memiliki akses penuh ke perangkat Anda"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"Layanan aksesibilitas <xliff:g id="NUM_SERVICES">%s</xliff:g> memiliki akses penuh ke perangkat Anda"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> dapat melihat layar, tindakan, dan masukan Anda, serta dapat melakukan tindakan dan mengontrol tampilan."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Layanan ini dapat melihat layar, tindakan, dan masukan Anda, serta dapat melakukan tindakan dan mengontrol tampilan."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Aplikasi default"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Tidak ada aplikasi default"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Default untuk kerja"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Tidak Ada"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Tidak ada aplikasi"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Akses aplikasi khusus"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Tidak ada akses apl khusus"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Tidak ada aplikasi"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Aplikasi bantuan"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Aplikasi browser"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Aplikasi telepon"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Aplikasi SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Aplikasi darurat"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Aplikasi layar utama"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Aplikasi Musik"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Aplikasi Galeri"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Aplikasi telepon mode mobil"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Aplikasi pengalihan panggilan"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Aplikasi penyaringan telepon"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Aplikasi pendamping telepon"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Aplikasi Proyeksi Mobil"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Tidak mendukung profil kerja"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Catatan: Jika Anda memulai ulang perangkat dan menyetel kunci layar, aplikasi ini tidak dapat dimulai hingga Anda membuka kunci perangkat Anda."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Asisten dapat membaca informasi tentang aplikasi yang sedang digunakan di sistem, termasuk informasi yang terlihat di layar atau dapat diakses dalam aplikasi."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Bagikan Data Proses Debug"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Bagikan data proses debug yang mendetail?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> ingin mengupload informasi proses debug."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Bagikan Data Proses Debug"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> meminta untuk mengupload laporan bug dari perangkat ini yang diambil pada <xliff:g id="DATE">%2$s</xliff:g> pukul <xliff:g id="TIME">%3$s</xliff:g>. Laporan bug mencakup informasi pribadi tentang perangkat Anda atau yang dicatat dalam log oleh aplikasi, misalnya, nama pengguna, data lokasi, ID perangkat, dan informasi jaringan. Bagikan laporan bug hanya kepada orang dan aplikasi yang Anda percayai dengan informasi ini. Izinkan <xliff:g id="APP_NAME_1">%4$s</xliff:g> mengupload laporan bug?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Izinkan"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Tolak"</string>
</resources>
diff --git a/res/values-is-television/strings.xml b/res/values-is-television/strings.xml
index 0c1fad7..c68411b 100644
--- a/res/values-is-television/strings.xml
+++ b/res/values-is-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Hafna og ekki spyrja aftur"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Þú getur breytt þessu seinna undir Stillingar og forrit"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Sýna kerfisforrit"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Heimildir forrita"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Heimildir forrita"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Heimildir fyrir <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Viðbótarheimildir"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Heimildir fyrir <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Hafna og ekki spyrja aftur"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Þú getur breytt þessu seinna undir Stillingar og forrit"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Sýna kerfisforrit"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Heimildir forrits"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Heimildir forrits"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Heimildir fyrir <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Viðbótarheimildir"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Heimildir fyrir <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-is-watch/strings.xml b/res/values-is-watch/strings.xml
index b82da5e..0cebf36 100644
--- a/res/values-is-watch/strings.xml
+++ b/res/values-is-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Hafna, ekki spyrja aftur"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Sýna kerfisforrit"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Má ekki breyta"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Já"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Hætta við"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Hafna, ekki spyrja aftur"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Sýna kerfisforrit"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Má ekki breyta"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Já"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Hætta við"</string>
</resources>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 7b7c762..8b053a7 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Uppsetningarforrit pakka"</string>
- <string name="next" msgid="3057143178373252333">"Áfram"</string>
- <string name="install" msgid="5896438203900042068">"Setja upp"</string>
- <string name="done" msgid="3889387558374211719">"Lokið"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Leyfa þessu forriti að:"</string>
- <string name="cancel" msgid="8360346460165114585">"Hætta við"</string>
- <string name="unknown" msgid="4742479012767208045">"Óþekkt"</string>
- <string name="installing" msgid="8613631001631998372">"Setur upp…"</string>
- <string name="installing_app" msgid="4097935682329028894">"Setur upp <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Forritið er uppsett."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Viltu setja þetta forrit upp? Það mun fá aðgang að:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Viltu setja þetta forrit upp? Það krefst ekki neins sérstaks aðgangs."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Viltu setja upp uppfærslu á þessu uppsetta forriti? Eldri gögn glatast ekki. Uppfærða forritið mun fá aðgang að:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Viltu setja upp uppfærslu á þessu innbyggða forriti? Eldri gögn glatast ekki. Uppfærða forritið mun fá aðgang að:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Viltu setja upp uppfærslu á þessu uppsetta forriti? Eldri gögn glatast ekki. Forritið krefst ekki neins sérstaks aðgangs."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Viltu setja upp uppfærslu á þessu innbyggða forriti? Eldri gögn glatast ekki. Forritið krefst ekki neins sérstaks aðgangs."</string>
- <string name="install_failed" msgid="6579998651498970899">"Forritið er ekki uppsett."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Lokað var á uppsetningu pakkans."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Forritið var ekki sett upp vegna árekstra á milli pakkans og annars pakka."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Forritið var ekki sett upp því að forritið er ekki samhæft við spjaldtölvuna þína."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Þetta forrit er ekki samhæft við sjónvarpið."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Forritið var ekki sett upp því að forritið er ekki samhæft við símann þinn."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Forritið var ekki sett upp því að pakkinn virðist vera ógildur."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Ekki tókst að setja <xliff:g id="APP_NAME">%1$s</xliff:g> upp í spjaldtölvunni."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Ekki var hægt að setja <xliff:g id="APP_NAME">%1$s</xliff:g> upp í sjónvarpinu."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Ekki tókst að setja <xliff:g id="APP_NAME">%1$s</xliff:g> upp í símanum."</string>
- <string name="launch" msgid="4826921505917605463">"Opna"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Kerfisstjórinn leyfir ekki uppsetningu forrita af óþekktum uppruna"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Þessi notandi getur ekki sett upp óþekkt forrit"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Þessi notandi hefur ekki leyfi til að setja upp forrit"</string>
- <string name="ok" msgid="3468756155452870475">"Í lagi"</string>
- <string name="settings" msgid="6743583734099755409">"Stillingar"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Stjórna forritum"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Skipta út forriti?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Forritið sem þú ert að setja upp kemur í stað annars forrits.\n\nÖll fyrri notandagögn þín verða vistuð."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Þetta er kerfisforrit.\n\nÖll fyrri notandagögn þín verða vistuð."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Ekkert pláss eftir"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Ekki tókst að setja upp <xliff:g id="APP_NAME">%1$s</xliff:g>. Losaðu um pláss og reyndu aftur."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"Í lagi"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Forritið finnst ekki"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Forritið fannst ekki á listanum yfir uppsett forrit."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Ekki heimilað"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Núverandi notandi hefur ekki heimild til að fjarlægja þetta."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Villa"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Ekki tókst að fjarlægja forritið."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Fjarlægja forrit"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Fjarlægja uppfærslu"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> er hluti af þessu forriti:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Viltu fjarlægja þetta forrit?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Viltu fjarlægja þetta forrit hjá "<b>"öllum"</b>" notendum? Forritið og gögn þess verða fjarlægð hjá "<b>"öllum"</b>" notendum tækisins."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Viltu fjarlægja þetta forrit fyrir notandann <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Viltu skipta þessu forriti út fyrir verksmiðjuútgáfuna? Öll gögn verða fjarlægð."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Viltu skipta þessu forriti út fyrir verksmiðjuútgáfuna? Öll gögn verða fjarlægð. Þetta hefur áhrif á alla notendur tækisins, þar á meðal þá sem eru með vinnusnið."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Fjarlægingar í gangi"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Fjarlægingar sem mistókust"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Fjarlægir…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Fjarlægir <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Forritið hefur verið fjarlægt."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Fjarlægði <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Ekki tókst að fjarlægja forritið."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Ekki tókst að fjarlægja <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Ekki er hægt að fjarlægja virkt forrit tækjastjóra"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Ekki er hægt að fjarlægja virkt forrit tækjastjóra fyrir <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Þessa forrits er krafist hjá sumum notendum eða sniðum en var fjarlægt hjá öðrum"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Sniðið þitt krefst þessa forrits og ekki er hægt að fjarlægja það."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Stjórnandi tækisins krefst þessa forrits og ekki er hægt að fjarlægja það."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Stjórna forritum tækjastjóra"</string>
- <string name="manage_users" msgid="3125018886835668847">"Stjórna notendum"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Ekki tókst að fjarlægja <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Vandamál kom upp við að vinna úr pakkanum."</string>
- <string name="newPerms" msgid="6039428254474104210">"Nýjar"</string>
- <string name="allPerms" msgid="1024385515840703981">"Allar"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Persónuvernd"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Tækisaðgangur"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Þessi uppfærsla krefst engra nýrra heimilda."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Viltu veita eftirfarandi heimildir? Aðgangur er veittur að:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Hafna"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Frekari upplýsingar"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Hafna samt"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Leyfa forritinu <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> að <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> óvirkar"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"allar óvirkar"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"engin óvirk"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Leyfa"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Forrit"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Heimildir forrits"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Ekki spyrja aftur"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Engar heimildir"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Viðbótarheimildir"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Heimildastýring"</string>
+ <string name="ok" msgid="4417794827535157922">"Í lagi"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"heimildir"</string>
+ <string name="cancel" msgid="7279939269964834974">"Hætta við"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Forritið finnst ekki"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Hafna"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Hafna og ekki spyrja aftur"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Upplýsingar"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Hafna samt"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Leyfa <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> að <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Viltu alltaf veita <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> leyfi til að <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Aðeins þegar forrit er í notkun"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Alltaf"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Hafna og ekki spyrja aftur"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> óvirkar"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"allar óvirkar"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"engin óvirk"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Leyfa"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Leyfa alltaf"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Leyfa aðeins þegar forritið er í notkun"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Forrit"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Heimildir forrits"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Heimildastjóri"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Ekki spyrja aftur"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Engar heimildir"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Viðbótarheimildir"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Opna upplýsingar um forrit"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> í viðbót</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> í viðbót</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Þetta forrit var hannað fyrir eldri útgáfu af Android. Ef því er ekki veitt heimild er hugsanlegt að það virki ekki rétt."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"framkvæma óþekkta aðgerð"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_0">%1$d</xliff:g> forrit af <xliff:g id="COUNT_1">%2$d</xliff:g> leyfð"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Sýna kerfisforrit"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Fela kerfisforrit"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> heimildir"</string>
- <string name="no_apps" msgid="1965493419005012569">"Engin forrit"</string>
- <string name="location_settings" msgid="1774875730854491297">"Staðsetningarstillingar"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Ef þú veitir ekki þessa heimild getur verið að grunneiginleikar tækisins virki ekki lengur sem skyldi."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Stjórnað af reglu"</string>
- <string name="loading" msgid="7811651799620593731">"Hleður…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Allar heimildir"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Aðrir forritseiginleikar"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Beiðni um heimild"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Skjáyfirlögn greindist"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Til að breyta þessari heimildarstillingu þarftu fyrst að slökkva á skjáyfirlögn undir Stillingar > Forrit"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Opna stillingar"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Aðgerðir til að setja upp / fjarlægja eru ekki studdar í Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> hefur verið uppfært. Hverju viltu veita <xliff:g id="APP_NAME_1">%1$s</xliff:g> aðgang að?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Veldu hverju <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> fær aðgang að"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> hefur verið uppfært. Veldu hverju forritið fær aðgang að."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Hætta við"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Halda áfram"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Nýjar heimildir"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Núgildandi heimildir"</string>
- <string name="message_staging" msgid="6151794817691100003">"Setur upp forrit…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Óþekkt"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Til að tryggja öryggi þitt er ekki heimild í spjaldtölvunni þinni fyrir uppsetningu óþekktra forrita frá þessari veitu."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Til að tryggja öryggi þitt er ekki heimild í sjónvarpinu þínu fyrir uppsetningu óþekktra forrita frá þessari veitu."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Til að tryggja öryggi þitt er ekki heimild í símanum þínum fyrir uppsetningu óþekktra forrita frá þessari veitu."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Síminn þinn og persónuleg gögn eru berskjaldaðri fyrir árásum forrita af óþekktum uppruna. Með uppsetningu þessa forrits samþykkirðu að bera fulla ábyrgð á hverju því tjóni sem verða kann á símanum eða gagnatapi sem leiða kann af notkun þess."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Spjaldtölvan þín og persónuleg gögn eru berskjaldaðri fyrir árásum forrita af óþekktum uppruna. Með uppsetningu þessa forrits samþykkirðu að bera fulla ábyrgð á hverju því tjóni sem verða kann á spjaldtölvunni eða gagnatapi sem leiða kann af notkun þess."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Sjónvarpið þitt og persónuleg gögn eru berskjaldaðri fyrir árásum forrita af óþekktum uppruna. Með uppsetningu þessa forrits samþykkirðu að bera fulla ábyrgð á hverju því tjóni sem verða kann á sjónvarpinu eða gagnatapi sem leiða kann af notkun þess."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Áfram"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Stillingar"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Uppsetning/fjarlæging Wear forrita"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Þetta forrit var hannað fyrir eldri útgáfu af Android. Ef ekki er veitt heimild fyrir því er hugsanlegt að það virki ekki rétt."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"framkvæma óþekkta aðgerð"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> af <xliff:g id="COUNT_1">%2$d</xliff:g> forritum leyfð"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Nýleg notkun"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Skoða stjórnborð heimilda"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Sýna kerfi"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Fela kerfi"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Engin forrit"</string>
+ <string name="location_settings" msgid="547378321761364906">"Staðsetningarstillingar"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Ef þú veitir ekki þessa heimild getur verið að grunneiginleikar tækisins virki ekki lengur sem skyldi."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Stjórnað af reglu"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Bakgrunnsaðgangur óvirkur vegna reglu"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Bakgrunnsaðgangur virkur vegna reglu"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Forgrunnsaðgangur virkur vegna reglu"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Stjórnað af kerfisstjóra"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Bakgrunnsaðgangur gerður óvirkur af kerfisstjóra"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Bakgrunnsaðgangur gerður virkur af kerfisstjóra"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Forgrunnsaðgangur gerður virkur af kerfisstjóra"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Heimildir sem kerfið hefur stillt"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Alltaf"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Aðeins þegar forrit er í notkun"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Aldrei"</string>
+ <string name="loading" msgid="323483393167148377">"Hleður…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Allar heimildir"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Aðrir forritseiginleikar"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Beiðni um heimild"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Skjáyfirlögn greindist"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Til að breyta þessari heimildarstillingu þarftu fyrst að slökkva á skjáyfirlögn undir Stillingar > Forrit"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Opna stillingar"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Aðgerðir til að setja upp / fjarlægja eru ekki studdar í Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Veldu hverju <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> fær aðgang að"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> hefur verið uppfært. Veldu hverju forritið fær aðgang að."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Hætta við"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Áfram"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Nýjar heimildir"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Núgildandi heimildir"</string>
+ <string name="message_staging" msgid="641286607664721291">"Setur upp forrit…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Óþekkt"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Stjórnborð"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">Síðast notuð: <xliff:g id="TIME_3">%1$s</xliff:g>\n Notuð <xliff:g id="NUM_4">%2$s</xliff:g> sinni (<xliff:g id="NUM_5">%3$s</xliff:g> sinni í bakgrunni)</item>
+ <item quantity="other">Síðast notuð: <xliff:g id="TIME_3">%1$s</xliff:g>\n Notuð <xliff:g id="NUM_4">%2$s</xliff:g> sinnum (<xliff:g id="NUM_5">%3$s</xliff:g> sinnum í bakgrunni)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">Síðast notuð: <xliff:g id="TIME_3">%1$s</xliff:g>\n Notuð <xliff:g id="NUM_4">%2$s</xliff:g> sinni\nLengd: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">Síðast notuð: <xliff:g id="TIME_3">%1$s</xliff:g>\n Notuð <xliff:g id="NUM_4">%2$s</xliff:g> sinni\nLengd: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">Síðast notuð: <xliff:g id="TIME_4">%1$s</xliff:g>\n Notuð <xliff:g id="NUM_5">%2$s</xliff:g> sinni (<xliff:g id="NUM_6">%3$s</xliff:g> sinni í bakgrunni)\nLengd: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">Síðast notuð: <xliff:g id="TIME_4">%1$s</xliff:g>\n Notuð <xliff:g id="NUM_5">%2$s</xliff:g> sinnum (<xliff:g id="NUM_6">%3$s</xliff:g> sinnum í bakgrunni)\nLengd: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Hvaða heimild sem er"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Hvenær sem er"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Síðustu sjö daga"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Síðasta sólarhring"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Síðustu klukkustund"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Síðustu 15 mínútur"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Síðasta mínúta"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Engin heimildanotkun"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Notkun hvenær sem er"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Notkun síðustu 7 daga"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Notkun síðasta sólarhring"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Notkun síðustu klukkustund"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Notkun síðustu 15 mínútur"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Notkun síðustu mínútuna"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Algengasta heimildanotkun hvenær sem er"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Algengasta heimildanotkun síðustu 7 daga"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Algengasta heimildanotkun síðasta sólarhring"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Algengasta heimildanotkun síðustu klukkustund"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Algengasta heimildanotkun síðustu 15 mínútur"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Algengasta heimildanotkun síðustu mínútu"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Forrit"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Síað eftir: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Fjarlægja síu"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Sía eftir"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Sía eftir heimildum"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Flestar heimildir"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Mesta notkun"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Nýlegt"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Endurnýja"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Notkun heimilda forrits"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Aðgangur: <xliff:g id="NUM">%1$s</xliff:g> sinnum. Síðast notað fyrir <xliff:g id="TIME">%2$s</xliff:g>."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Leyfa"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Leyfa alltaf"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Leyfa aðeins þegar forritið er í notkun"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Hafna"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> heimild"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="PERM">%1$s</xliff:g> aðgangur að <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> fékk aðgang að <xliff:g id="PERM">%2$s</xliff:g> þínu fyrir <xliff:g id="TIME">%3$s</xliff:g>."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> hefur ekki fengið aðgang að <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Skoða nákvæma heimildanotkun"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Síðast notuð: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Aldrei notuð"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Leyft"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Aðeins leyft við notkun"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Hafnað"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Sjá ítarlegar upplýsingar um notkun"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> klukkustund</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> klukkustundir</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> mínúta</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> mínútur</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> sekúnda</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sekúndur</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Nota <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> sem <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Nota <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> í stað <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b&gt sem <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Áminningar um heimild"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> hefur verið að nota staðsetningu þína"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Þetta forrit hefur alltaf aðgang að staðsetningu þinni. Ýttu til að breyta."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Aðeins þegar forritið er í notkun"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Engar heimildir leyfðar"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Engum heimildum hafnað"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Engin forrit leyfð"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Engum forritum hafnað"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Opna"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Fjarlægja"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Þvinga lokun"</string>
+ <string name="settings" msgid="2884124136779508907">"Stillingar"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> hefur fullan aðgang að tækinu þínu"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> aðgengisþjónustur hafa fullan aðgang að tækinu þínu"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> getur skoðað skjáinn þinn, aðgerðir og innslátt, framkvæmt aðgerðir og stjórnað skjánum."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Þessar þjónustur geta skoðað skjáinn þinn, aðgerðir og innslátt, framkvæmt aðgerðir og stjórnað skjánum."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Sjálfgefin forrit"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Engin sjálfgefin forrit"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Sjálfgefið fyrir vinnu"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Ekkert"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Engin forrit"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Sérstakur forritaaðgangur"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Enginn sérstakur forritaaðgangur"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Engin forrit"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Aðstoðarforrit"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Vafraforrit"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Símaforrit"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS-forrit"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Neyðarforrit"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Heimaforrit"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Tónlistarforrit"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Myndasafnsforrit"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Símaforrit í bílastillingu"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Símtalsflutningaforrit"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Símtalasíuforrit"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Fylgiforrit fyrir símtöl"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Forrit fyrir vörpun bíls"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Styður ekki vinnusnið"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Athugaðu: Ef þú endurræsir tækið og það er með skjálás er ekki hægt að ræsa þetta forrit fyrr en þú tekur tækið úr lás."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Hjálparinn mun geta séð upplýsingar um forrit í notkun í kerfinu þínu, þar á meðal upplýsingar sem sjást á skjánum eða eru aðgengilegar úr forritum."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Deila villuleitargögnum"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Viltu deila ítarlegum villuleitargögnum?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> vill hlaða inn upplýsingum um villuleit."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Deila villuleitargögnum"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> biður um að hlaða inn villutilkynningu úr þessu tæki frá <xliff:g id="DATE">%2$s</xliff:g> kl. <xliff:g id="TIME">%3$s</xliff:g>. Villutilkynningar innihalda persónuupplýsingar um tækið eða innskráningar forrita, til dæmis notendanöfn, staðsetningargögn, auðkenni tækis og upplýsingar um netkerfi. Deildu aðeins villutilkynningum með fólki og forritum sem þú treystir fyrir þessum upplýsingum. Leyfa <xliff:g id="APP_NAME_1">%4$s</xliff:g> að hlaða inn villutilkynningu?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Leyfa"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Hafna"</string>
</resources>
diff --git a/res/values-it-television/strings.xml b/res/values-it-television/strings.xml
index 14c46de..0495a73 100644
--- a/res/values-it-television/strings.xml
+++ b/res/values-it-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Nega e non chiedermelo più"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Puoi modificare questa scelta in seguito in Impostazioni > App"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Mostra app di sistema"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Autorizzazioni app"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Autorizzazioni app"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Autorizzazioni <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Altre autorizzazioni"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Autorizzazioni <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Nega e non chiedermelo più"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Puoi modificare questa scelta in seguito in Impostazioni > App"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Mostra app di sistema"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Autorizzazioni app"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Autorizzazioni app"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Autorizzazioni <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Altre autorizzazioni"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Autorizzazioni <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-it-watch/strings.xml b/res/values-it-watch/strings.xml
index 73b2ab1..86f1175 100644
--- a/res/values-it-watch/strings.xml
+++ b/res/values-it-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Nega e non chiedermelo più"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Mostra app di sistema"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Imposs modif"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Sì"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Annulla"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Nega e non chiedermelo più"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Mostra app di sistema"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Impos. modificare"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Sì"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Annulla"</string>
</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 00af964..df7c79d 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Installazione pacchetti"</string>
- <string name="next" msgid="3057143178373252333">"Avanti"</string>
- <string name="install" msgid="5896438203900042068">"Installa"</string>
- <string name="done" msgid="3889387558374211719">"Fine"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Consenti a questa applicazione di:"</string>
- <string name="cancel" msgid="8360346460165114585">"Annulla"</string>
- <string name="unknown" msgid="4742479012767208045">"Sconosciuto"</string>
- <string name="installing" msgid="8613631001631998372">"Installazione..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Installazione di <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"App installata."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Vuoi installare questa applicazione? Avrà accesso a:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Vuoi installare questa applicazione? Non richiede alcun accesso speciale."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Vuoi installare un aggiornamento per questa applicazione esistente? I tuoi dati esistenti non andranno persi. L\'applicazione aggiornata avrà accesso a:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Vuoi installare un aggiornamento per questa applicazione integrata? I tuoi dati esistenti non andranno persi. L\'applicazione aggiornata avrà accesso a:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Vuoi installare un aggiornamento di questa applicazione esistente? I dati correnti verranno conservati. Non occorrono accessi speciali."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Vuoi installare un aggiornamento di questa applicazione integrata? I dati correnti verranno conservati. Non occorrono accessi speciali."</string>
- <string name="install_failed" msgid="6579998651498970899">"App non installata."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"È stata bloccata l\'installazione del pacchetto."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"App non installata poiché il pacchetto è in conflitto con un pacchetto esistente."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"App non installata poiché non compatibile con il tuo tablet."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Questa app non è compatibile con la tua TV."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"App non installata poiché non compatibile con il tuo telefono."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"App non installata poiché il pacchetto risulta non valido."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Impossibile installare <xliff:g id="APP_NAME">%1$s</xliff:g> sul tablet."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Impossibile installare <xliff:g id="APP_NAME">%1$s</xliff:g> sulla tua TV."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Impossibile installare <xliff:g id="APP_NAME">%1$s</xliff:g> sul telefono."</string>
- <string name="launch" msgid="4826921505917605463">"Apri"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"L\'amministratore non consente l\'installazione di app ottenute da fonti sconosciute"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Questo utente non può installare app sconosciute"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"L\'utente non è autorizzato a installare app"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Impostazioni"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Gestisci applicazioni"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Sostituire applicazione?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"L\'applicazione che stai installando sostituirà un\'altra applicazione.\n\nTutti i dati utente precedenti verranno salvati."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Questa è un applicazione di sistema.\n\nTutti i dati utente precedenti verranno salvati."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Spazio esaurito"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Impossibile installare <xliff:g id="APP_NAME">%1$s</xliff:g>. Libera dello spazio e riprova."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Applicazione non trovata"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Impossibile trovare l\'applicazione nell\'elenco di applicazioni installate."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Non autorizzato"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"L\'utente corrente non è autorizzato a eseguire questa disinstallazione."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Errore"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Impossibile disinstallare l\'app."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Disinstalla applicazione"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Disinstalla aggiornamento"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> fa parte della seguente applicazione:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Vuoi disinstallare questa applicazione?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Vuoi disinstallare questa applicazione per "<b>"tutti"</b>" gli utenti? L\'applicazione e i relativi dati verranno rimossi da "<b>"tutti"</b>" gli utenti configurati sul dispositivo."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Disinstallare l\'app per l\'utente <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Sostituire questa app con la versione di fabbrica? Tutti i dati verranno rimossi."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Sostituire questa app con la versione di fabbrica? Tutti i dati verranno rimossi. Saranno interessati tutti gli utenti del dispositivo, inclusi quelli che hanno profili di lavoro."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Disinstallazioni attuali"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Disinstallazioni non riuscite"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Disinstallazione..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Disinstallazione di <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Disinstallazione completata."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"App <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> disinstallata"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Disinstallazione non riuscita."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Impossibile disinstallare <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Impossibile disinstallare l\'app di amministrazione del dispositivo attiva"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Impossibile disinstallare l\'app di amministrazione del dispositivo attiva per <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"L\'app è necessaria per alcuni utenti/profili ed è stata disinstallata per altri"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"L\'app è necessaria per il tuo profilo e non può essere disinstallata."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"App richiesta dall\'amministratore del dispositivo. Non può essere disinstallata."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Gestisci app di amministrazione del dispositivo"</string>
- <string name="manage_users" msgid="3125018886835668847">"Gestisci utenti"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Impossibile disinstallare <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Errore durante l\'analisi del pacchetto."</string>
- <string name="newPerms" msgid="6039428254474104210">"Nuove"</string>
- <string name="allPerms" msgid="1024385515840703981">"Tutte"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privacy"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Accesso dispositivo"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Questo aggiornamento non richiede nuove autorizzazioni."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Vuoi concedere le autorizzazioni che seguono? Concederai l\'accesso a:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Nega"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Altre informazioni"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Nega comunque"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Consentire a <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> di <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> disattivate"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"tutte disattivate"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"nessuna disattivata"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Consenti"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"App"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Autorizzazioni app"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Non chiedermelo più"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Nessuna autorizzazione"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Altre autorizzazioni"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"App di controllo autorizzazioni"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"autorizzazioni"</string>
+ <string name="cancel" msgid="7279939269964834974">"Annulla"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"App non trovata"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Nega"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Nega e non chiedermelo più"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Altre info"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Nega comunque"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Consentire all\'app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> di <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Vuoi consentire sempre all\'app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> di <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Solo durante l\'uso dell\'app"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Sempre"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Nega e non chiedermelo più"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> disattivate"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"tutte disattivate"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"nessuna disattivata"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Consenti"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Consenti sempre"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Consenti solo mentre l\'app è in uso"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"App"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Autorizzazioni app"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Gestione autorizzazioni"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Non chiedermelo più"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Nessuna autorizzazione"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Altre autorizzazioni"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Apri informazioni sull\'app"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other">Altre <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> altra</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Questa app è stata sviluppata per una versione precedente di Android. Se l\'autorizzazione viene negata, l\'app potrebbe non funzionare più come previsto."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"esegue un\'azione sconosciuta"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"Sono consentite <xliff:g id="COUNT_0">%1$d</xliff:g> app su <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Mostra app di sistema"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Nascondi app di sistema"</string>
- <string name="permission_title" msgid="6495415273398916381">"Autorizzazioni <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Nessuna app"</string>
- <string name="location_settings" msgid="1774875730854491297">"Impostazioni posizione"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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 sulla posizione."</string>
- <string name="system_warning" msgid="7103819124542305179">"Se neghi questa autorizzazione, le funzionalità di base del dispositivo potrebbero non funzionare più come previsto."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Applicata in base alle norme"</string>
- <string name="loading" msgid="7811651799620593731">"Caricamento…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Tutte le autorizzazioni"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Altre funzionalità dell\'app"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Richiesta di autorizzazione"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Overlay schermo rilevato"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Per modificare questa impostazione di autorizzazione, devi innanzitutto disattivare l\'overlay schermo da Impostazioni > App"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Apri impostazioni"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Le azioni di installazione/disinstallazione non sono supportate su Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"L\'app <xliff:g id="APP_NAME_0">%1$s</xliff:g> è stata aggiornata. Consentire all\'app <xliff:g id="APP_NAME_1">%1$s</xliff:g> di accedere ai seguenti dati?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Scegli i dati a cui l\'app <xliff:g id="APP_NAME">%1$s</xliff:g> può accedere"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"L\'app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> è stata aggiornata. Scegli i dati a cui può accedere."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Annulla"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Continua"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Nuove autorizzazioni"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Autorizzazioni correnti"</string>
- <string name="message_staging" msgid="6151794817691100003">"App in preparazione…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Sconosciuto"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Per sicurezza, il tuo tablet non è autorizzato a installare app sconosciute da questa origine."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Per sicurezza, la tua TV non è autorizzata a installare app sconosciute da questa origine."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Per sicurezza, il tuo telefono non è autorizzato a installare app sconosciute da questa origine."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"I dati del telefono e i dati personali sono più vulnerabili agli attacchi di app sconosciute. Se installi questa app, accetti di essere responsabile degli eventuali danni al telefono o dell\'eventuale perdita di dati derivanti dall\'uso dell\'app."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"I dati del tablet e i dati personali sono più vulnerabili agli attacchi di app sconosciute. Se installi questa app, accetti di essere responsabile degli eventuali danni al tablet o dell\'eventuale perdita di dati derivanti dall\'uso dell\'app."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"I dati della TV e i dati personali sono più vulnerabili agli attacchi di app sconosciute. Se installi questa app, accetti di essere responsabile degli eventuali danni alla TV o dell\'eventuale perdita di dati derivanti dall\'uso dell\'app."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Continua"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Impostazioni"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Installazione/disinstallazione di app Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Questa app è stata sviluppata per una versione precedente di Android. Se l\'autorizzazione viene negata, l\'app potrebbe non funzionare più come previsto."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"esegue un\'azione sconosciuta"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"Sono consentite <xliff:g id="COUNT_0">%1$d</xliff:g> app su <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Utilizzo recente"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Dashboard autorizzazioni"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Mostra sistema"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Nascondi sistema"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Nessuna app"</string>
+ <string name="location_settings" msgid="547378321761364906">"Geolocalizzazione"</string>
+ <string name="location_warning" msgid="4687406043150343369">"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="6868290533389195836">"Se neghi questa autorizzazione, le funzionalità di base del dispositivo potrebbero non funzionare più come previsto."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Applicata in base alle norme"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Accesso in background disattivato in base alla norma"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Accesso in background attivato in base alla norma"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Accesso in primo piano attivato in base alla norma"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Gestita dall\'amministratore"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Accesso in background disattivato dall\'amministratore"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Accesso in background attivato dall\'amministratore"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Accesso in primo piano attivato dall\'amministratore"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Autorizzazione impostata dal sistema"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Sempre"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Solo durante l\'uso dell\'app"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Mai"</string>
+ <string name="loading" msgid="323483393167148377">"Caricamento…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Tutte le autorizzazioni"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Altre funzionalità dell\'app"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Richiesta di autorizzazione"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Overlay schermo rilevato"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Per modificare questa impostazione di autorizzazione, devi innanzitutto disattivare l\'overlay schermo da Impostazioni > App"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Apri impostazioni"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Le azioni di installazione/disinstallazione non sono supportate su Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Scegli i dati a cui l\'app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> può accedere"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"L\'app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> è stata aggiornata. Scegli i dati a cui può accedere."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Annulla"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Continua"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Nuove autorizzazioni"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Autorizzazioni correnti"</string>
+ <string name="message_staging" msgid="641286607664721291">"App in preparazione…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Sconosciuto"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Dashboard"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Ultimo accesso: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> accessi (<xliff:g id="NUM_5">%3$s</xliff:g> in background)</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 (<xliff:g id="NUM_2">%3$s</xliff:g> in background)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Ultimo accesso: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> accessi\nDurata: <xliff:g id="TIME_5">%3$s</xliff:g></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\nDurata: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Ultimo accesso: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> accessi (<xliff:g id="NUM_6">%3$s</xliff:g> in background)\nDurata: <xliff:g id="TIME_7">%3$s</xliff:g></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 (<xliff:g id="NUM_2">%3$s</xliff:g> in background)\nDurata: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Qualsiasi autorizzazione"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Qualsiasi data"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Ultimi 7 giorni"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Ultime 24 ore"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Ultima ora"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Ultimi 15 minuti"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Ultimo minuto"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Autorizzazioni non usate"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Accedi in qualsiasi momento"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Accesso negli ultimi 7 giorni"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Accesso nelle ultime 24 ore"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Accesso nell\'ultima ora"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Accesso negli ultimi 15 minuti"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Accesso nell\'ultimo minuto"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Uso di autorizzazioni principali sempre"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Uso autorizzazioni principali, ultimi 7 giorni"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Uso autorizzazioni principali nelle ultime 24 ore"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Uso di autorizzazioni principali nell\'ultima ora"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Uso autorizzazioni principali, ultimi 15 minuti"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Uso autorizzazioni principali nell\'ultimo minuto"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"App"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtrata per: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Rimuovi filtro"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtra per"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtra per autorizzazioni"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Maggior numero autorizzazioni"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Maggior numero di accessi"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Recenti"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Aggiorna"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Uso delle autorizzazioni app"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Accesso: <xliff:g id="NUM">%1$s</xliff:g> volte. Ultimo utilizzo: <xliff:g id="TIME">%2$s</xliff:g> fa."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Consenti"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Consenti sempre"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Consenti solo mentre l\'app è in uso"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Nega"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Autorizzazione per i dati di <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Accesso ai dati di <xliff:g id="PERM">%1$s</xliff:g> per l\'app <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"L\'app <xliff:g id="APP">%1$s</xliff:g> ha avuto accesso ai tuoi dati di <xliff:g id="PERM">%2$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g> fa."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> non ha accesso a <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Consulta l\'uso dettagliato delle autorizzazioni"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Ultimo accesso: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Accesso mai eseguito"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Consentite"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Consentite solo durante l\'uso"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Rifiutate"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Vedi dati dettagliati sull\'utilizzo"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> giorni</item>
+ <item quantity="one">1 giorno</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ore</item>
+ <item quantity="one">1 ora</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minuti</item>
+ <item quantity="one">1 minuto</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> secondi</item>
+ <item quantity="one">1 secondo</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Utilizzare <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> come <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Utilizzare <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> anziché <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> come <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Promemoria autorizzazione"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"L\'app <xliff:g id="APP_NAME">%s</xliff:g> sta usando la tua posizione"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Questa app può accedere sempre alla tua posizione. Tocca per modificare."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Solo mentre l\'app è in uso"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Nessuna autorizzazione consentita"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Nessuna autorizzazione negata"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Nessuna app consentita"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Nessuna app rifiutata"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Apri"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Disinstalla"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Forza interruzione"</string>
+ <string name="settings" msgid="2884124136779508907">"Impostazioni"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ha accesso completo al tuo dispositivo"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> servizi di accessibilità hanno accesso completo al tuo dispositivo"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> può vedere il tuo schermo, le tue azioni e i tuoi inserimenti, compiere azioni e controllare il display."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Questi servizi possono vedere il tuo schermo, le tue azioni e i tuoi inserimenti, compiere azioni e controllare il display."</string>
+ <string name="default_apps" msgid="8554530939151957828">"App predefinite"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Nessuna app predefinita"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Predefinite per il lavoro"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Nessuna"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Nessuna app"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Accesso speciale alle app"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Nessun accesso speciale ad app"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Nessuna app"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"App di assistenza"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"App browser"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"App Telefono"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"App per SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"App di emergenza"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"App Home"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"App per la musica"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"App Galleria"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"App telefono modalità auto"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"App reindirizzamento chiamate"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"App per screening chiamate"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"App complementare chiamate"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"App di proiezione dell\'auto"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Il profilo di lavoro non è supportato"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Nota: se riavvii il dispositivo ed è impostato un blocco schermo, sarà possibile avviare l\'app soltanto dopo aver sbloccato il dispositivo."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"L\'assistente potrà leggere informazioni sulle app in uso nel sistema, incluse le informazioni visibili sullo schermo o accessibili all\'interno delle app."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Condividi dati di debug"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Condividere i dati di debug dettagliati?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"L\'app <xliff:g id="APP_NAME">%1$s</xliff:g> vorrebbe caricare informazioni di debug."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Condividi dati di debug"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"L\'app <xliff:g id="APP_NAME_0">%1$s</xliff:g> chiede di caricare una segnalazione di bug da questo dispositivo, ricevuta il giorno <xliff:g id="DATE">%2$s</xliff:g> alle ore <xliff:g id="TIME">%3$s</xliff:g>. Le segnalazioni di bug includono informazioni personali relative al tuo dispositivo oppure registrate dalle app, ad esempio nomi utente, dati sulla posizione, identificatori dei dispositivi e informazioni sulle reti. Condividi le segnalazioni di bug solo con persone e app che ritieni affidabili. Consentire all\'app <xliff:g id="APP_NAME_1">%4$s</xliff:g> di caricare una segnalazione di bug?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Consenti"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Nega"</string>
</resources>
diff --git a/res/values-iw-television/strings.xml b/res/values-iw-television/strings.xml
index 1ec1cd7..b98eea4 100644
--- a/res/values-iw-television/strings.xml
+++ b/res/values-iw-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"דחה ואל תשאל שוב"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"ניתן לשנות זאת מאוחר יותר ב\'הגדרות\' > \'אפליקציות\'"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"הצג אפליקציות מערכת"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"הרשאות לאפליקציות"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"הרשאות לאפליקציות"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"הרשאות <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"הרשאות נוספות"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"הרשאות <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"דחה ואל תשאל שוב"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"ניתן לשנות זאת מאוחר יותר ב\'הגדרות\' > \'אפליקציות\'"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"הצגת אפליקציות מערכת"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"הרשאות לאפליקציה"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"הרשאות לאפליקציה"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"הרשאות <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"הרשאות נוספות"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"הרשאות <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-iw-watch/strings.xml b/res/values-iw-watch/strings.xml
index 34dd0d3..7d58e50 100644
--- a/res/values-iw-watch/strings.xml
+++ b/res/values-iw-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"דחה ואל תשאל שוב"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"הצג אפליקציות מערכת"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"לא ניתן לשנות"</string>
- <string name="generic_yes" msgid="3394094077553763689">"כן"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"ביטול"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"דחה ואל תשאל שוב"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"הצגת אפליקציות מערכת"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"לא ניתן לשנות"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"כן"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"ביטול"</string>
</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 78b4030..789e740 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,138 +16,226 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"מתקין החבילה"</string>
- <string name="next" msgid="3057143178373252333">"הבא"</string>
- <string name="install" msgid="5896438203900042068">"התקן"</string>
- <string name="done" msgid="3889387558374211719">"סיום"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"אפשר לאפליקציה זו:"</string>
- <string name="cancel" msgid="8360346460165114585">"ביטול"</string>
- <string name="unknown" msgid="4742479012767208045">"לא ידוע"</string>
- <string name="installing" msgid="8613631001631998372">"מתקין..."</string>
- <string name="installing_app" msgid="4097935682329028894">"מתקין את <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"האפליקציה הותקנה."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"האם ברצונך להתקין את האפליקציה? היא תקבל גישה אל:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"האם ברצונך להתקין את האפליקציה? היא אינה דורשת גישה מיוחדת."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"האם ברצונך להתקין עדכון לאפליקציה קיימת זו? הנתונים הקיימים שלך לא יאבדו. האפליקציה המעודכנת תקבל גישה אל:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"האם ברצונך להתקין עדכון לאפליקציה מובנית זו? הנתונים הקיימים שלך לא יאבדו. האפליקציה המעודכנת תקבל גישה אל:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"האם ברצונך להתקין עדכון עבור אפליקציה קיימת זו? הנתונים הקיימים שלך לא יאבדו. אין צורך בגישה מיוחדת."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"האם ברצונך להתקין עדכון עבור אפליקציה מובנית זו? הנתונים הקיימים שלך לא יאבדו. אין צורך בגישה מיוחדת."</string>
- <string name="install_failed" msgid="6579998651498970899">"האפליקציה לא הותקנה."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"החבילה נחסמה להתקנה."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"האפליקציה לא הותקנה כי החבילה מתנגשת עם חבילה קיימת."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"האפליקציה לא הותקנה כי האפליקציה אינה תואמת לטאבלט."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"האפליקציה הזו אינה תואמת לטלוויזיה שלך."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"האפליקציה לא הותקנה כי האפליקציה אינה תואמת לטלפון."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"האפליקציה לא הותקנה כי נראה שהחבילה לא תקפה."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"לא ניתן להתקין את <xliff:g id="APP_NAME">%1$s</xliff:g> בטאבלט שלך."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"לא ניתן להתקין את <xliff:g id="APP_NAME">%1$s</xliff:g> בטלוויזיה שלך."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"לא ניתן להתקין את <xliff:g id="APP_NAME">%1$s</xliff:g> בטלפון שלך."</string>
- <string name="launch" msgid="4826921505917605463">"פתח"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"מנהל המערכת שלך לא מתיר התקנה של אפליקציות ממקורות לא ידועים"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"למשתמש זה אין הרשאה להתקין אפליקציות שאינן מוכרות"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"למשתמש הזה אין הרשאה להתקין אפליקציות"</string>
- <string name="ok" msgid="3468756155452870475">"אישור"</string>
- <string name="settings" msgid="6743583734099755409">"הגדרות"</string>
- <string name="manage_applications" msgid="4033876279091996596">"נהל אפליקציות"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"להחליף אפליקציה?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"האפליקציה שאתה מתקין תחליף אפליקציה אחרת.\n\nכל נתוני המשתמש הקודמים שלך יישמרו."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"זוהי אפליקציית מערכת.\n\nכל נתוני המשתמש הקודמים שלך יישמרו."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"אין מספיק שטח"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"לא ניתן להתקין את <xliff:g id="APP_NAME">%1$s</xliff:g>. פנה שטח ונסה שוב."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"אישור"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"האפליקציה לא נמצא"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"האפליקציה לא נמצאה ברשימת האפליקציות המותקנות."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"לא מורשה"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"המשתמש הנוכחי אינו מורשה להסיר את ההתקנה הזו."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"שגיאה"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"לא ניתן היה להסיר את התקנת האפליקציה."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"הסר את התקנת האפליקציה"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"הסר את התקנת העדכון"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> הוא חלק מהאפליקציה הבאה:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"האם ברצונך להסיר את ההתקנה של אפליקציה זו?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"האם אתה רוצה להסיר את האפליקציה הזו עבור "<b>"כל"</b>" המשתמשים? האפליקציה והנתונים שלה יוסרו מ"<b>"כל"</b>" המשתמשים במכשיר."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"האם ברצונך להסיר את התקנתה של אפליקציה זו עבור המשתמש <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"האם להחליף את האפליקציה הזאת בגירסת היצרן? כל הנתונים יוסרו."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"האם להחליף את האפליקציה הזאת בגירסת היצרן? כל הנתונים יוסרו. הפעולה תשפיע על כל משתמשי המכשיר, כולל משתמשים בעלי פרופיל עבודה."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"התקנות בתהליכי הסרה"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"הסרות התקנה שנכשלו"</string>
- <string name="uninstalling" msgid="5556217435895938250">"מסיר התקנה..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"מסיר את ההתקנה של <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"הסרת ההתקנה הסתיימה."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"ההתקנה של <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> הוסרה"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"הסרת התקנה נכשלה."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"נכשלה הסרת ההתקנה של <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"לא ניתן להסיר את ההתקנה של אפליקציה פעילה של מנהל המכשיר"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"לא ניתן להסיר את ההתקנה של אפליקציה פעילה של מנהל המכשיר של <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"אפליקציה זו נדרשת לחלק מהמשתמשים או מהפרופילים והתקנתה הוסרה למשתמשים אחרים"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"האפליקציה הזו נחוצה לפרופיל שלך ולא ניתן להסיר את ההתקנה שלה."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"מנהל המכשיר שלך מחייב את קיומה של אפליקציה זו, ולא ניתן להסירה."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"אפליקציות למנהל המערכת של מכשיר מנוהל"</string>
- <string name="manage_users" msgid="3125018886835668847">"ניהול משתמשים"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"לא ניתן להסיר את ההתקנה של <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"אירעה בעיה בניתוח החבילה."</string>
- <string name="newPerms" msgid="6039428254474104210">"חדש"</string>
- <string name="allPerms" msgid="1024385515840703981">"הכל"</string>
- <string name="privacyPerms" msgid="1850527049572617">"פרטיות"</string>
- <string name="devicePerms" msgid="6733560207731294504">"גישה למכשיר"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"עדכון זה לא דורש הרשאות חדשות."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"האם ברצונך להעניק את ההרשאות הבאות? תוענק גישה אל:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"לא, אין מצב"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"למידע נוסף"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"לדחות בכל מקרה"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"האם לאשר ל<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> לבצע <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> הרשאות מושבתות"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"כל ההרשאות מושבתות"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"אין הרשאות מושבתות"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"כן, זה בסדר"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"אפליקציות"</string>
- <string name="app_permissions" msgid="3146758905824597178">"הרשאות לאפליקציות"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"ראיתי פעם אחת, זה מספיק"</string>
- <string name="no_permissions" msgid="3210542466245591574">"אין הרשאות"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"הרשאות נוספות"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"בקר הרשאות"</string>
+ <string name="ok" msgid="4417794827535157922">"אישור"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"הרשאות"</string>
+ <string name="cancel" msgid="7279939269964834974">"ביטול"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"האפליקציה לא נמצאה"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"אני לא מרשה"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"יש לדחות ואין לשאול שוב"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"מידע נוסף"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"לדחות בכל מקרה"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"האם לאשר לאפליקציה <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> לבצע <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"תמיד לאשר לאפליקציה <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> לבצע <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"רק בזמן השימוש באפליקציה"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"תמיד"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"דחה ואל תשאל שוב"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> הרשאות מושבתות"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"כל ההרשאות מושבתות"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"אין הרשאות מושבתות"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"יש אישור"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"לאישור כל הזמן"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"לאישור רק בזמן שהאפליקציה בשימוש"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"אפליקציות"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"הרשאות לאפליקציה"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"מנהל הרשאות"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"אל תשאל שוב"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"אין הרשאות"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"הרשאות נוספות"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"פתיחה של פרטי האפליקציה"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"האפליקציה הזו עוצבה בשביל גרסה ישנה יותר של Android. דחיית ההרשאה עשויה לגרום לה לתפקד בצורה לקויה."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"ביצוע פעולה לא ידועה"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"הרשאות המערכת"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"הסתר מערכת"</string>
- <string name="permission_title" msgid="6495415273398916381">"הרשאות <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"אין אפליקציות"</string>
- <string name="location_settings" msgid="1774875730854491297">"הגדרות מיקום"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> הוא ספק של שירותי מיקום בשביל המכשיר הזה. אפשר לשנות את גישת המיקום בהגדרות המיקום."</string>
- <string name="system_warning" msgid="7103819124542305179">"אם תדחה את ההרשאה הזו, ייתכן שתכונות בסיסיות במכשיר לא יפעלו כצפוי."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"נאכף באמצעות מדיניות"</string>
- <string name="loading" msgid="7811651799620593731">"טוען..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"כל ההרשאות"</string>
- <string name="other_permissions" msgid="2016192512386091933">"הרשאות אחרות של האפליקציה"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"בקשת הרשאה"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"זוהתה שכבת על במסך"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"כדי לשנות את הגדרת ההרשאה הזו, ראשית עליך לכבות את שכבת העל במסך ב\'הגדרות\' > \'אפליקציות\'"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"פתח הגדרות"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"פעולות התקנה/הסרת התקנה אינן נתמכות ב-Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> עודכנה. לתת ל-<xliff:g id="APP_NAME_1">%1$s</xliff:g> את הרשאות הגישה הבאות?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"בחר אילו הרשאות גישה ברצונך לתת ל <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> עודכנה. בחר אילו הרשאות גישה יהיו לאפליקציה זו."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"ביטול"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"המשך"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"הרשאות חדשות"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"הרשאות קיימות"</string>
- <string name="message_staging" msgid="6151794817691100003">"מכין אפליקציה להתקנה…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"לא ידוע"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"לצורכי אבטחה, הטאבלט שלך חסום להתקנת אפליקציות בלתי מוכרות המגיעות ממקור זה."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"לצורכי אבטחה, מכשיר הטלוויזיה שלך חסום להתקנת אפליקציות בלתי מוכרות המגיעות ממקור זה."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"לצורכי אבטחה, הטלפון שלך חסום להתקנת אפליקציות בלתי מוכרות המגיעות ממקור זה."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"נתוני הטלפון והנתונים האישיים שלך חשופים יותר בפני התקפות על ידי אפליקציות ממקורות לא ידועים. אם תתקין אפליקציה זו, אתה מסכים לכך שאתה האחראי הבלעדי במקרה של אובדן נתונים או אם ייגרם נזק לטלפון שלך בעקבות השימוש באפליקציה."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"נתוני הטאבלט והנתונים האישיים שלך חשופים יותר בפני התקפות על ידי אפליקציות ממקורות לא ידועים. אם תתקין אפליקציה זו, אתה מסכים לכך שאתה האחראי הבלעדי במקרה של אובדן נתונים או אם ייגרם נזק לטאבלט שלך בעקבות השימוש באפליקציה."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"נתוני הטלוויזיה והנתונים האישיים שלך חשופים יותר בפני התקפות על ידי אפליקציות ממקורות לא ידועים. אם תתקין אפליקציה זו, אתה מסכים לכך שאתה האחראי הבלעדי במקרה של אובדן נתונים או אם ייגרם נזק לטלוויזיה שלך בעקבות השימוש באפליקציה."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"המשך"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"הגדרות"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"מתקין/מסיר התקנה של אפליקציות Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"האפליקציה הזו תוכננה לגרסה ישנה יותר של Android. דחיית ההרשאה עשויה לגרום לה לתפקד בצורה לקויה."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"ביצוע פעולה לא ידועה"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> מתוך <xliff:g id="COUNT_1">%2$d</xliff:g> אפליקציות קיבלו הרשאה"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"נתוני שימוש אחרונים בהרשאות"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"למרכז השליטה של ההרשאות"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"הצגת המערכת"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"הסתרת המערכת"</string>
+ <string name="no_apps" msgid="2377153782338039463">"אין אפליקציות"</string>
+ <string name="location_settings" msgid="547378321761364906">"הגדרות מיקום"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> הוא ספק של שירותי מיקום בשביל המכשיר הזה. אפשר לשנות את גישת המיקום בהגדרות המיקום."</string>
+ <string name="system_warning" msgid="6868290533389195836">"אם ההרשאה הזו תידחה, ייתכן שתכונות בסיסיות במכשיר לא יפעלו כצפוי."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"נאכף באמצעות מדיניות"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"הגישה ברקע מושבתת על ידי מדיניות"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"הגישה ברקע מופעלת על ידי מדיניות"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"הגישה במצב פעיל מופעלת על ידי מדיניות"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"בשליטת מנהל מערכת"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"הגישה ברקע מושבתת על ידי מנהל מערכת"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"הגישה ברקע מופעלת על ידי מנהל מערכת"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"הגישה במצב פעיל מופעלת על ידי מנהל מערכת"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"ההרשאה הוגדרה על ידי המערכת"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"תמיד"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"רק בזמן השימוש באפליקציה"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"אף פעם"</string>
+ <string name="loading" msgid="323483393167148377">"טוען…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"כל ההרשאות"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"הרשאות אחרות של האפליקציה"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"בקשת הרשאה"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"זוהתה שכבת-על במסך"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"כדי לשנות את הגדרת ההרשאה הזו, ראשית עליך לכבות את שכבת העל במסך ב\'הגדרות\' > \'אפליקציות\'"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"פתיחת ההגדרות"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"פעולות התקנה/הסרת התקנה אינן נתמכות ב-Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"בחירה בהרשאות הגישה שברצונך לתת לאפליקציה <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> עודכנה. יש לבחור בהרשאות הגישה לאפליקציה זו."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"ביטול"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"המשך"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"הרשאות חדשות"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"הרשאות קיימות"</string>
+ <string name="message_staging" msgid="641286607664721291">"מכין אפליקציה להתקנה…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"לא ידוע"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"מרכז שליטה"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="two">גישה אחרונה: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> קבלות גישה (<xliff:g id="NUM_5">%3$s</xliff:g> ברקע)</item>
+ <item quantity="many">גישה אחרונה: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> קבלות גישה (<xliff:g id="NUM_5">%3$s</xliff:g> ברקע)</item>
+ <item quantity="other">גישה אחרונה: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> קבלות גישה (<xliff:g id="NUM_5">%3$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>, <xliff:g id="NUM_2">%3$s</xliff:g> ברקע)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="two">גישה אחרונה: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> קבלות גישה\nמשך הזמן: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="many">גישה אחרונה: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> קבלות גישה\nמשך הזמן: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">גישה אחרונה: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> קבלות גישה\nמשך הזמן: <xliff:g id="TIME_5">%3$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>)\nמשך הזמן: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="two">גישה אחרונה: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> קבלות גישה (<xliff:g id="NUM_6">%3$s</xliff:g> ברקע)\nמשך הזמן: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="many">גישה אחרונה: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> קבלות גישה (<xliff:g id="NUM_6">%3$s</xliff:g> ברקע)\nמשך הזמן: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">גישה אחרונה: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> קבלות גישה (<xliff:g id="NUM_6">%3$s</xliff:g> ברקע)\nמשך הזמן: <xliff:g id="TIME_7">%3$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>, <xliff:g id="NUM_2">%3$s</xliff:g> ברקע)\nמשך הזמן: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"כל הרשאה שהיא"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"בכל עת"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"7 הימים האחרונים"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"ב-24 השעות החולפות"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"בשעה האחרונה"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"15 הדקות האחרונות"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"הדקה האחרונה"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"אין שימוש בהרשאות"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"קבלת גישה בכל זמן שהוא"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"קבלת גישה במהלך 7 הימים האחרונים"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"קבלת גישה במהלך 24 השעות האחרונות"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"קבלת גישה במהלך השעה האחרונה"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"קבלת גישה במהלך 15 הדקות האחרונות"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"קבלת גישה במהלך הדקה האחרונה"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"השימוש המוביל בהרשאות בכל זמן שהוא"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"השימוש המוביל בהרשאות במהלך 7 הימים האחרונים"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"השימוש המוביל בהרשאות במהלך 24 השעות האחרונות"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"השימוש המוביל בהרשאות במהלך השעה האחרונה"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"השימוש המוביל בהרשאות במהלך 15 הדקות האחרונות"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"השימוש המוביל בהרשאות בדקה האחרונה"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"אפליקציות"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"סינון לפי: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"הסרת המסנן"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"סינון לפי"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"סינון לפי הרשאות"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"הכי הרבה הרשאות"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"הכי הרבה קבלות גישה"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"מהזמן האחרון"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"רענון"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"שימוש בהרשאות האפליקציה"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"גישה: <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="4040424337831328212">"גישה: <xliff:g id="NUM">%1$s</xliff:g> פעמים. שימוש אחרון לפני <xliff:g id="TIME">%2$s</xliff:g>."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"לאישור"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"לאישור כל הזמן"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"לאישור רק בזמן שהאפליקציה בשימוש"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"אני לא מרשה"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"הרשאה ל<xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"גישה ל<xliff:g id="PERM">%1$s</xliff:g> עבור <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"נעשתה גישה ל<xliff:g id="PERM">%2$s</xliff:g> על ידי <xliff:g id="APP">%1$s</xliff:g> לפני <xliff:g id="TIME">%3$s</xliff:g>."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"לאפליקציה <xliff:g id="APP">%1$s</xliff:g> לא הייתה גישה אל <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"הצגת שימוש מפורט בהרשאות"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"גישה אחרונה: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"אף פעם לא בוצעה גישה"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"יש הרשאה"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"מורשית רק בזמן שימוש"</string>
+ <string name="denied_header" msgid="2277998574238617699">"אין הרשאה"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"הצגת נתוני שימוש מפורטים בהרשאות"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <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="seconds" formatted="false" msgid="1632909606956324957">
+ <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="role_request_message_add" msgid="1977772335648650272">"האם להשתמש באפליקציה <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> בתור <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"האם להשתמש באפליקציה <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> בתור <xliff:g id="ROLE_NAME">%2$s</xliff:g> במקום <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"תזכורות להרשאות"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"נעשה שימוש במיקום שלך על ידי <xliff:g id="APP_NAME">%s</xliff:g>"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"האפליקציה הזו יכולה תמיד לגשת למיקום שלך. יש להקיש כדי לשנות הגדרה זו."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"רק בזמן שהאפליקציה בשימוש"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"לא ניתנו הרשאות"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"אין הרשאות שנדחו"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"אין אפליקציות מורשות"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"אין אפליקציות ללא ההרשאה"</string>
+ <string name="launch_app" msgid="5641437562665039291">"פתיחה"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"הסרת התקנה"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"סגירה ידנית"</string>
+ <string name="settings" msgid="2884124136779508907">"הגדרות"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"לשירות <xliff:g id="SERVICE_NAME">%s</xliff:g> יש גישה מלאה למכשיר שלך"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"ל-<xliff:g id="NUM_SERVICES">%s</xliff:g> שירותי נגישות יש גישה מלאה למכשיר שלך"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"השירות <xliff:g id="SERVICE_NAME">%s</xliff:g> יכול להציג את המסך, הפעולות ופריטי הפלט שלך, וכן לבצע פעולות ולשלוט בתצוגה."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"השירותים האלה יכולים להציג את המסך, הפעולות ופריטי הפלט שלך, וכן לבצע פעולות ולשלוט בתצוגה."</string>
+ <string name="default_apps" msgid="8554530939151957828">"אפליקציות ברירת מחדל"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"אין אפליקציות ברירת מחדל"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"ברירת מחדל לעבודה"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"ללא"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"אין אפליקציות"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"גישה מיוחדת לאפליקציה"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"אין גישה מיוחדת לאפליקציה"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"אין אפליקציות"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"אפליקציית עזרה"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"אפליקציית דפדפן"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"אפליקציית \'טלפון\'"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"אפליקציית SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"אפליקציה לשעת חירום"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"אפליקציית דף הבית"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"אפליקציית מוזיקה"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"גלריית האפליקציות"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"אפליקציית \'טלפון\' במצב נהיגה"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"אפליקציה להפניית שיחות"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"אפליקציה לסינון שיחות"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"אפליקציה נלווית לשיחות"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"אפליקציית ההקרנה של הרכב"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"לא תומכת בפרופיל עבודה"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"הערה: אם ביצעת הפעלה מחדש למכשיר ונעילת המסך מוגדרת, ניתן יהיה להפעיל את האפליקציה הזו רק לאחר ביטול נעילת המכשיר."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"ה-Assistant יוכל לקרוא מידע על אפליקציות שבהן נעשה שימוש במערכת שלך, כולל מידע המופיע במסך או שניתן לגשת אליו באפליקציות."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"שיתוף נתונים של ניפוי באגים"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"לשתף נתונים מפורטים של ניפוי באגים?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"האפליקציה <xliff:g id="APP_NAME">%1$s</xliff:g> מבקשת להעלות נתונים של ניפוי באגים."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"שיתוף נתונים של ניפוי באגים"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> מבקשת להעלות דוח על באגים ממכשיר זה, שנוצר בתאריך <xliff:g id="DATE">%2$s</xliff:g> בשעה <xliff:g id="TIME">%3$s</xliff:g>. דוחות על באגים כוללים מידע אישי על המכשיר או מידע אישי שנשמר באמצעות אפליקציות. למשל, שמות משתמשים, נתוני מיקום, מזהי מכשיר ופרטי רשת. יש לשתף דוחות על באגים רק עם אנשים ואפליקציות מהימנים. לאפשר לאפליקציה <xliff:g id="APP_NAME_1">%4$s</xliff:g> להעלות דוח על באגים?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"כן, זה בסדר"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"אני לא מרשה"</string>
</resources>
diff --git a/res/values-ja-television/strings.xml b/res/values-ja-television/strings.xml
index 9f31829..654cc4a 100644
--- a/res/values-ja-television/strings.xml
+++ b/res/values-ja-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"許可しない(次回から表示しない)"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"これは後から[設定]>[アプリ]で変更できます"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"システムアプリの表示"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"アプリの権限"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"アプリの権限"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g>の権限"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"その他の権限"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g>の権限"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"許可しない(今後表示しない)"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"これは後から [設定] > [アプリ] で変更できます"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"システムアプリの表示"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"アプリの権限"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"アプリの権限"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g>の権限"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"その他の権限"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g>の権限"</string>
</resources>
diff --git a/res/values-ja-watch/strings.xml b/res/values-ja-watch/strings.xml
index 735b908..745e4e7 100644
--- a/res/values-ja-watch/strings.xml
+++ b/res/values-ja-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"許可しない(今後表示しない)"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"システムアプリの表示"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"変更不可"</string>
- <string name="generic_yes" msgid="3394094077553763689">"はい"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"キャンセル"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"許可しない(今後表示しない)"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"システムアプリの表示"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"変更不可"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"はい"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"キャンセル"</string>
</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 3701f84..1826158 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"パッケージインストーラ"</string>
- <string name="next" msgid="3057143178373252333">"次へ"</string>
- <string name="install" msgid="5896438203900042068">"インストール"</string>
- <string name="done" msgid="3889387558374211719">"完了"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"このアプリに許可する権限:"</string>
- <string name="cancel" msgid="8360346460165114585">"キャンセル"</string>
- <string name="unknown" msgid="4742479012767208045">"不明"</string>
- <string name="installing" msgid="8613631001631998372">"インストール中..."</string>
- <string name="installing_app" msgid="4097935682329028894">"「<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>」をインストールしています…"</string>
- <string name="install_done" msgid="3682715442154357097">"アプリをインストールしました。"</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"このアプリケーションをインストールしてもよろしいですか?このアプリケーションは下記にアクセスする場合があります:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"このアプリケーションをインストールしてもよろしいですか?このアプリケーションは特別なアクセス許可を必要としません。"</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"この既存のアプリケーションへのアップデートをインストールしてもよろしいですか?既存のデータは失われません。アップデート後のアプリケーションは下記にアクセスする場合があります:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"この内蔵アプリケーションへのアップデートをインストールしてもよろしいですか?既存のデータは失われません。アップデート後のアプリケーションは下記にアクセスする場合があります:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"この既存のアプリにアップデートをインストールしますか?既存のデータが失われることはありません。特別なアクセス権も必要ありません。"</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"この内蔵アプリにアップデートをインストールしますか?既存のデータが失われることはありません。特別なアクセス権も必要ありません。"</string>
- <string name="install_failed" msgid="6579998651498970899">"アプリはインストールされていません。"</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"パッケージのインストールはブロックされています。"</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"パッケージが既存のパッケージと競合するため、アプリをインストールできませんでした。"</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"お使いのタブレットに対応していないため、アプリをインストールできませんでした。"</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"このアプリはお使いのテレビに対応していません。"</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"お使いのスマートフォンに対応していないため、アプリをインストールできませんでした。"</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"パッケージが無効の可能性があるため、アプリをインストールできませんでした。"</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g>をタブレットにインストールできませんでした。"</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g>をテレビにインストールできませんでした。"</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g>を端末にインストールできませんでした。"</string>
- <string name="launch" msgid="4826921505917605463">"開く"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"提供元不明のアプリをインストールすることは、管理者により禁止されています"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"このユーザーは不明なアプリをインストールできません"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"このユーザーはアプリをインストールできません"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"設定"</string>
- <string name="manage_applications" msgid="4033876279091996596">"アプリを管理"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"アプリを更新しますか?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"このアプリは既存のアプリを上書きします。\n\n過去のユーザーデータはすべて保存されます。"</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"これはシステムアプリです。\n\n過去のユーザーデータはすべて保存されます。"</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"容量不足です"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g>をインストールできませんでした。空き容量を増やしてもう一度お試しください。"</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"アプリが見つかりません"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"インストール済みアプリのリストに、このアプリはありません。"</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"許可されていません"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"このアンインストール操作は現在のユーザーには許可されていません。"</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"エラー"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"アプリをアンインストールできませんでした。"</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"アプリをアンインストール"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"アップデートをアンインストール"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g>は次のアプリの一部です:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"このアプリをアンインストールしますか?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"このアプリを"<b>"すべての"</b>"ユーザーからアンインストールしますか?このアプリとそのデータは端末の"<b>"すべての"</b>"ユーザーから削除されます。"</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"<xliff:g id="USERNAME">%1$s</xliff:g>さんのアプリをアンインストールしますか?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"このアプリを出荷時の状態に戻しますか?データがすべて削除されます。"</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"このアプリを出荷時の状態に戻しますか?データがすべて削除されます。これは、仕事用プロファイルを設定しているユーザーも含めて、この端末を使用するすべてのユーザーが対象となります。"</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"実行中のアンインストール"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"エラーになったアンインストール"</string>
- <string name="uninstalling" msgid="5556217435895938250">"アンインストール中..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"「<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>」をアンインストールしています…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"アンインストールが完了しました。"</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"「<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>」をアンインストールしました"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"アンインストールできませんでした。"</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"「<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>」をアンインストールできませんでした。"</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"有効な端末管理アプリをアンインストールできません"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"<xliff:g id="USERNAME">%1$s</xliff:g> さんの有効な端末管理アプリをアンインストールできません"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"このアプリは一部のユーザーやプロファイルに必要なため、アンインストールできませんでした"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"このアプリはプロファイルに必要なため、アンインストールできません。"</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"このアプリは端末管理者が必要としているため、アンインストールできません。"</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"端末管理アプリを管理"</string>
- <string name="manage_users" msgid="3125018886835668847">"ユーザーを管理"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g>をアンインストールできませんでした。"</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"パッケージの解析中に問題が発生しました。"</string>
- <string name="newPerms" msgid="6039428254474104210">"New"</string>
- <string name="allPerms" msgid="1024385515840703981">"すべて"</string>
- <string name="privacyPerms" msgid="1850527049572617">"プライバシー"</string>
- <string name="devicePerms" msgid="6733560207731294504">"端末アクセス"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"このアップデートでは新たな許可は必要ありません。"</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"次の権限を許可してもよろしいですか?許可すると、次にアクセスされます:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"許可しない"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"詳細"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"許可しない"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> に<xliff:g id="ACTION">%2$s</xliff:g>を許可しますか?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> 件無効"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"すべて無効"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"無効な権限なし"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"許可"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"アプリ"</string>
- <string name="app_permissions" msgid="3146758905824597178">"アプリの権限"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"今後表示しない"</string>
- <string name="no_permissions" msgid="3210542466245591574">"権限がありません"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"その他の権限"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
- <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>
+ <string name="app_name" msgid="2792757108872430971">"アクセス権限の管理"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"権限"</string>
+ <string name="cancel" msgid="7279939269964834974">"キャンセル"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"アプリが見つかりません"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"許可しない"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"許可しない(次回から表示しない)"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"詳細"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"許可しない"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> に「<xliff:g id="ACTION">%2$s</xliff:g>」を許可しますか?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"「<xliff:g id="ACTION">%2$s</xliff:g>」を <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> に常に許可しますか?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"アプリの使用中のみ"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"常時"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"許可しない(今後表示しない)"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> 件無効"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"すべて無効"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"無効な権限なし"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"許可"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"常に許可"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"アプリが使用中の場合のみ許可"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"アプリ"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"アプリの権限"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"権限マネージャ"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"今後表示しない"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"権限がありません"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"その他の権限"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"アプリ情報を開く"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
+ <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="old_sdk_deny_warning" msgid="3872277112584842615">"このアプリはAndroidの以前のバージョンを対象としています。権限を許可しないと、意図されたとおりに動作しなくなる可能性があります。"</string>
- <string name="default_permission_description" msgid="4992892207044156668">"不明な操作の実行"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"システムを表示"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"システムを表示しない"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g>の権限"</string>
- <string name="no_apps" msgid="1965493419005012569">"アプリなし"</string>
- <string name="location_settings" msgid="1774875730854491297">"位置情報の設定"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g>はこの端末の位置情報サービスのプロバイダです。位置情報アクセスは位置情報の設定から変更できます。"</string>
- <string name="system_warning" msgid="7103819124542305179">"この権限を許可しないと、お使いの端末の基本的な機能が意図されたとおりに動作しなくなる可能性があります。"</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"ポリシーにより適用"</string>
- <string name="loading" msgid="7811651799620593731">"読み込んでいます…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"すべての権限"</string>
- <string name="other_permissions" msgid="2016192512386091933">"その他のアプリ機能"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"権限のリクエスト"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"画面オーバーレイを検出"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"この権限設定を変更するには、まず[設定]>[アプリ]から画面オーバーレイをOFFにします"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"設定を開く"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Wear ではインストールやアンインストールができません"</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> が更新されました。<xliff:g id="APP_NAME_1">%1$s</xliff:g> に次の権限を許可しますか?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"「<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>」に許可する権限の選択"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"「<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>」が更新されました。このアプリに許可する権限を選択してください。"</string>
- <string name="review_button_cancel" msgid="957906817733578877">"キャンセル"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"続行"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"新しい権限"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"現在の権限"</string>
- <string name="message_staging" msgid="6151794817691100003">"アプリを準備しています…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"不明"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"セキュリティ上の理由から、お使いのタブレットではこの提供元からの不明なアプリをインストールすることはできません。"</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"セキュリティ上の理由から、お使いのテレビではこの提供元からの不明なアプリをインストールすることはできません。"</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"セキュリティ上の理由から、お使いのスマートフォンではこの提供元からの不明なアプリをインストールすることはできません。"</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"不明なアプリをインストールするとスマートフォンや個人データが攻撃を受ける可能性が高くなります。このアプリをインストールすることにより、アプリの使用により生じる可能性があるスマートフォンへの損害やデータの損失について、ユーザーご自身が単独で責任を負うことに同意するものとします。"</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"不明なアプリをインストールするとタブレットや個人データが攻撃を受ける可能性が高くなります。このアプリをインストールすることにより、アプリの使用により生じる可能性があるタブレットへの損害やデータの損失について、ユーザーご自身が単独で責任を負うことに同意するものとします。"</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"不明なアプリをインストールすると TV や個人データが攻撃を受ける可能性が高くなります。このアプリをインストールすることにより、アプリの使用により生じる可能性がある TV への損害やデータの損失について、ユーザーご自身が単独で責任を負うことに同意するものとします。"</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"続行"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"設定"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Wear アプリのインストールとアンインストール"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"このアプリは Android の以前のバージョンを対象としています。権限を許可しないと、意図されたとおりに動作しなくなる可能性があります。"</string>
+ <string name="default_permission_description" msgid="692254823411049573">"不明な操作の実行"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> 個のアプリを許可"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"最近の使用状況"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"権限ダッシュボードを表示"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"システムを表示"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"システムを表示しない"</string>
+ <string name="no_apps" msgid="2377153782338039463">"アプリがありません"</string>
+ <string name="location_settings" msgid="547378321761364906">"位置情報の設定"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g>はこの端末の位置情報サービスのプロバイダです。位置情報へのアクセスは位置情報の設定から変更できます。"</string>
+ <string name="system_warning" msgid="6868290533389195836">"この権限を許可しないと、お使いの端末の基本的な機能が意図されたとおりに動作しなくなる可能性があります。"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"ポリシーにより適用"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"バックグラウンドでのアクセスはポリシーによって無効です"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"バックグラウンドでのアクセスはポリシーによって有効です"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"フォアグラウンドでのアクセスはポリシーによって有効です"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"管理者により管理されています"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"バックグラウンドでのアクセスは管理者が無効に設定しています"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"バックグラウンドでのアクセスは管理者が有効に設定しています"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"フォアグラウンドでのアクセスは管理者が有効に設定しています"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"システムによって設定された権限"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"常時"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"アプリの使用中のみ"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"なし"</string>
+ <string name="loading" msgid="323483393167148377">"読み込んでいます…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"すべての権限"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"その他のアプリ機能"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"権限のリクエスト"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"画面オーバーレイを検出"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"この権限設定を変更するには、まず [設定] > [アプリ] から画面オーバーレイを OFF にします"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"設定を開く"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Wear ではインストールやアンインストールはできません。"</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> に許可する権限の選択"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> が更新されました。このアプリに許可する権限を選択してください。"</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"キャンセル"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"次へ"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"新しい権限"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"現在の権限"</string>
+ <string name="message_staging" msgid="641286607664721291">"アプリを準備しています…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"不明"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"ダッシュボード"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">前回のアクセス: <xliff:g id="TIME_3">%1$s</xliff:g>\nアクセス数: <xliff:g id="NUM_4">%2$s</xliff:g> 回(バックグラウンドで <xliff:g id="NUM_5">%3$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> 回(バックグラウンドで <xliff:g id="NUM_2">%3$s</xliff:g> 回)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">前回のアクセス: <xliff:g id="TIME_3">%1$s</xliff:g>\nアクセス回数: <xliff:g id="NUM_4">%2$s</xliff:g> 回\n時間: <xliff:g id="TIME_5">%3$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> 回\n時間: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">前回のアクセス: <xliff:g id="TIME_4">%1$s</xliff:g>\nアクセス回数: <xliff:g id="NUM_5">%2$s</xliff:g> 回(バックグラウンドで <xliff:g id="NUM_6">%3$s</xliff:g> 回)\n時間: <xliff:g id="TIME_7">%3$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> 回(バックグラウンドで <xliff:g id="NUM_2">%3$s</xliff:g> 回)\n時間: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"すべての権限"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"全期間"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"過去 7 日間"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"過去 24 時間"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"過去 1 時間"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"過去 15 分間"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"過去 1 分間"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"権限の使用はなし"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"アクセス(常時)"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"アクセス(過去 7 日間)"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"アクセス(過去 24 時間)"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"アクセス(過去 1 時間)"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"アクセス(過去 15 分間)"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"アクセス(過去 1 分間)"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"使用頻度の高い権限(常時)"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"使用頻度の高い権限(過去 7 日間)"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"使用頻度の高い権限(過去 24 時間)"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"使用頻度の高い権限(過去 1 時間)"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"使用頻度の高い権限(過去 15 分間)"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"使用頻度の高い権限(過去 1 分間)"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"アプリ"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"フィルタ: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"フィルタを削除"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"フィルタ条件"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"権限で絞り込む"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"権限数の多い順"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"アクセス数の多い順"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"最近"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"更新"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"アプリの権限の使用"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"アクセス: <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="4040424337831328212">"アクセス: <xliff:g id="NUM">%1$s</xliff:g> 回。前回の使用: <xliff:g id="TIME">%2$s</xliff:g>前。"</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"許可"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"常に許可"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"アプリが使用中の場合のみ許可"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"許可しない"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g>の権限"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="APP">%2$s</xliff:g>の<xliff:g id="PERM">%1$s</xliff:g>へのアクセス権"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g>が <xliff:g id="TIME">%3$s</xliff:g>前に<xliff:g id="PERM">%2$s</xliff:g>にアクセスしました。"</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> はユーザーの<xliff:g id="PERM">%2$s</xliff:g>にはアクセスしていません。"</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"権限の使用に関する詳細を表示"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"前回のアクセス: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"未アクセス"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"許可"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"使用中のみ許可"</string>
+ <string name="denied_header" msgid="2277998574238617699">"拒否"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"詳細な使用状況を表示"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>日</item>
+ <item quantity="one">1日</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>時間</item>
+ <item quantity="one">1時間</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>分</item>
+ <item quantity="one">1分</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>秒</item>
+ <item quantity="one">1秒</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> を <xliff:g id="ROLE_NAME">%2$s</xliff:g>として使用しますか?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"<b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> の代わりに、<b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> を <xliff:g id="ROLE_NAME">%2$s</xliff:g>として使用しますか?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"権限のリマインダー"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> は位置情報を使用しています"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"このアプリは常に位置情報にアクセスできます。設定を変更するにはタップしてください。"</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"アプリが使用中の場合のみ"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"許可されている権限はありません"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"許可されていない権限はありません"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"許可されているアプリはありません"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"許可されていないアプリはありません"</string>
+ <string name="launch_app" msgid="5641437562665039291">"開く"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"アンインストール"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"強制停止"</string>
+ <string name="settings" msgid="2884124136779508907">"設定"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> にデバイスへのフルアクセスを許可"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> 件のユーザー補助サービスにデバイスへのフルアクセスを許可"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> に、画面、アクション、入力の読み取り、アクションの実行、ディスプレイの操作を許可しています。"</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"これらのサービスに、画面、アクション、入力の読み取り、アクションの実行、ディスプレイの操作を許可しています。"</string>
+ <string name="default_apps" msgid="8554530939151957828">"デフォルトのアプリ"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"デフォルトのアプリはありません"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"デフォルトの仕事用アプリ"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"なし"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"アプリなし"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"特別なアプリアクセス"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"特別なアプリアクセスなし"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"アプリなし"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"アシストアプリ"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"ブラウザアプリ"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"電話アプリ"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS アプリ"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"緊急アプリ"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"ホームアプリ"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"音楽アプリ"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"ギャラリー アプリ"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"運転モード電話アプリ"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"通話転送アプリ"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"通話スクリーニング アプリ"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"通話コンパニオン アプリ"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"車での投影アプリ"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"仕事用プロファイルをサポートしていません"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"注: デバイスを再起動したときに画面ロックが設定されている場合は、デバイスのロックを解除するまでこのアプリを起動できません。"</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"アシスタントはシステムで使用中のアプリに関する情報(画面に表示される情報、アプリ内でアクセス可能な情報など)を読み取れるようになります。"</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"デバッグデータの共有"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"詳細なデバッグデータを共有しますか?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> がデバッグ情報のアップロードをリクエストしています。"</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"デバッグデータの共有"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> が、<xliff:g id="DATE">%2$s</xliff:g>、<xliff:g id="TIME">%3$s</xliff:g>にこのデバイスから取得したバグレポートのアップロードをリクエストしています。バグレポートには、ユーザー名、位置情報、デバイスの識別情報、ネットワーク情報など、デバイスに関する個人情報やアプリで記録された個人情報が含まれます。この情報を含むバグレポートは、信頼できる人やアプリとのみ共有してください。<xliff:g id="APP_NAME_1">%4$s</xliff:g> にバグレポートのアップロードを許可しますか?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"許可"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"許可しない"</string>
</resources>
diff --git a/res/values-ka-television/strings.xml b/res/values-ka-television/strings.xml
index b7d03b0..25c1f1f 100644
--- a/res/values-ka-television/strings.xml
+++ b/res/values-ka-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"უარყავი და აღარ მკითხო"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"ამის შეცვლა მოგვიანებით შეგიძლიათ სექციაში პარამეტრები > აპები"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"სისტემის აპების ჩვენება"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"აპის ნებართვები"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"აპის ნებართვები"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"ნებართვები (<xliff:g id="PERMISSION">%1$s</xliff:g>)"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"დამატებითი ნებართვები"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"ნებართვები (<xliff:g id="PERMISSION">%1$s</xliff:g>)"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"უარყავი და აღარ მკითხო"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"ამის შეცვლა მოგვიანებით შეგიძლიათ სექციაში პარამეტრები > აპები"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"სისტემის აპების ჩვენება"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"აპის ნებართვები"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"აპის ნებართვები"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"ნებართვები (<xliff:g id="PERMISSION">%1$s</xliff:g>)"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"დამატებითი ნებართვები"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"ნებართვები (<xliff:g id="PERMISSION">%1$s</xliff:g>)"</string>
</resources>
diff --git a/res/values-ka-watch/strings.xml b/res/values-ka-watch/strings.xml
index 1574912..c7b8dad 100644
--- a/res/values-ka-watch/strings.xml
+++ b/res/values-ka-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"უარყავი და აღარ მკითხო"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"სისტემის აპების ჩვენება"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ვერ შეიცვლება"</string>
- <string name="generic_yes" msgid="3394094077553763689">"დიახ"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"გაუქმება"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"უარყავი და აღარ მკითხო"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"სისტემის აპების ჩვენება"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"ვერ შეიცვლება"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"დიახ"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"გაუქმება"</string>
</resources>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index 756ad0e..80548a2 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,137 +16,215 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"პაკეტის ინსტალერი"</string>
- <string name="next" msgid="3057143178373252333">"შემდეგი"</string>
- <string name="install" msgid="5896438203900042068">"დაყენება"</string>
- <string name="done" msgid="3889387558374211719">"დასრულდა"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"აპის ნებართვების სია:"</string>
- <string name="cancel" msgid="8360346460165114585">"გაუქმება"</string>
- <string name="unknown" msgid="4742479012767208045">"უცნობი"</string>
- <string name="installing" msgid="8613631001631998372">"მიმდინარეობს ინსტალაცია…"</string>
- <string name="installing_app" msgid="4097935682329028894">"მიმდინარეობს <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>-ის ინსტალაცია…"</string>
- <string name="install_done" msgid="3682715442154357097">"აპი დაყენებულია."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"გსურთ, ამ აპლიკაციის დაყენება? მას ექნება წვდომა:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"გსურთ ამ აპლიკაციის დაყენება? ის არ მოითხოვს რაიმე განსაკუთრებულ ნებართვას."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"გსურთ განახლების დაყენება ამ არსებული აპლიკაციისთვის? არსებული მონაცემები არ დაიკარგება. განახლებულ აპლიკაციას წვდომა ექნება:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"გსურთ განახლების დაყენება ამ ჩაშენებული აპლიკაციისთვის? არსებული მონაცემები არ დაიკარგება. განახლენულ აპლიკაციას წვდომა ექნება:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"გსურთ განახლების დაყენება ამ არსებული აპლიკაციისთვის? არსებული მონაცემები არ დაიკარგება. ის არ საჭიროებს რაიმე განსაკუთრებულ წვდომას:"</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"გსურთ განახლების დაყენება ამ ჩაშენებული აპლიკაციისთვის? არსებული მონაცემები არ დაიკარგება. ის არ საჭიროებს რაიმე განსაკუთრებულ წვდომას:"</string>
- <string name="install_failed" msgid="6579998651498970899">"აპი არ არის დაყენებული."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"ამ პაკეტის ინსტალაცია დაბლოკილია."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"აპი ვერ დაინსტალირდა, რადგან პაკეტი კონფლიქტშია არსებულ პაკეტთან."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"აპი ვერ დაინსტალირდა, რადგან ის არ არის თავსებადი თქვენს ტაბლეტთან."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"ეს აპი არ არის თავსებადი თქვენს ტელევიზორთან."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"აპი ვერ დაინსტალირდა, რადგან ის არ არის თავსებადი თქვენს ტელეფონთან."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"აპი ვერ დაინსტალირდა, რადგან პაკეტი, სავარაუდოდ, არასწორია."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ის დაყენება თქვენს ტაბლეტზე ვერ მოხერხდა."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> ვერ დაინსტალირდება თქვენს ტელევიზორში."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ის დაყენება თქვენს ტელეფონზე ვერ მოხერხდა."</string>
- <string name="launch" msgid="4826921505917605463">"გახსნა"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"უცნობი წყაროებიდან ჩამოტვირთული აპების ინსტალაცია თქვენი ადმინისტრატორის მიერ ნებადართული არ არის"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"ამ მომხმარებელს უცნობი აპების ინსტალაცია არ შეუძლია"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"ამ მომხმარებელს აპების დაინსტალირების უფლება არ აქვს"</string>
- <string name="ok" msgid="3468756155452870475">"კარგი"</string>
- <string name="settings" msgid="6743583734099755409">"პარამეტრები"</string>
- <string name="manage_applications" msgid="4033876279091996596">"აპების მართვა"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"ჩავანაცვლოთ აპი?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"აპი, რომელსაც აყენებთ, ჩაანაცვლებს სხვა აპს.\n\nმომხმარებლის ყველა წინა მონაცემი შეინახება."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"ეს არის სისტემური აპი.\n\nმომხმარებლის ყველა წინა მონაცემი შეინახება."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"სივრცე შეივსო"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ის დაყენება შეუძლებელია. გაათავისუფლეთ მეხსიერება და სცადეთ ხელახლა."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"კარგი"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"აპი ვერ მოიძებნა."</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"დაყენებული აპების სიაში ეს აპი ვერ მოიძებნა."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"დაუშვებელია"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"მიმდინარე მომხმარებელს არ აქვს დეინსტალაციის განხორციელების უფლება."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"შეცდომა"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"აპის დეინსტალაცია ვერ მოხერხდა."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"აპის დეინსტალაცია"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"განახლების დეინსტალაცია"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> არის შემდეგი აპის ნაწილი:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"გსურთ, ამ აპის დეინსტალაცია?"</string>
- <!-- syntax error in translation for uninstall_application_text_all_users (5574704453233525222) org.xmlpull.v1.XmlPullParserException: expected: /string read: b (position:END_TAG </b>@1:122 in <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"გსურთ ამ აპის დეინსტალაცია ყველა"</b>" მომხმარებილის "<b>"-თვის? აპლიკაცია და მისი მონაცემენბი წაიშლება ყველა"</b>" მომხმარებლის "<b>"-თვის მოწყობილობაზე."</string>
-) -->
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"გსურთ <xliff:g id="USERNAME">%1$s</xliff:g> მომხმარებლისათვის ამ აპის დეინსტალაცია?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"გსურთ ამ აპის ქარხნული ვერსიით ჩანაცვლება? მონაცემები მთლიანად ამოიშლება."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"გსურთ ამ აპის ქარხნული ვერსიით ჩანაცვლება? მონაცემები მთლიანად ამოიშლება. ეს მოქმედება გავლენას იქონიებს ამ მოწყობილობის ყველა მომხმარებელზე, მათ შორის, სამსახურის პროფილებით მოსარგებლეებზეც."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"გაშვებული დეინსტალაციები"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"შეუსრულებელი დეინსტალაციები"</string>
- <string name="uninstalling" msgid="5556217435895938250">"დეინსტალაცია…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"მიმდინარეობს <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>-ის დეინსტალაცია…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"დეინსტალაცია დასრულდა."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> დეინსტალირებულია"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"დეინსტალაცია წარუმატებელია."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>-ის დეინსტალაცია ვერ მოხერხდა."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"მოწყობილობის ადმინისტრატორის აქტიური აპის დეინსტალაცია ვერ მოხერხდება"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"<xliff:g id="USERNAME">%1$s</xliff:g>-სთვის მოწყობილობის ადმინისტრატორის აქტიური აპის დეინსტალაცია ვერ მოხერხდება"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"ამ აპს მომხმარებლების/პროფილების ნაწილი იყენებს. სხვებისთვის ის დეინსტალირებულია."</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"ეს აპი საჭიროა თქვენი პროფილისთვის. მისი დეინსტალაცია ვერ მოხერხდება."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"ეს აპი საჭიროა თქვენი მოწყ. ადმინისტრატორისათვის და დეინსტალაცია ვერ გამოვა."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"მოწყობილობის ადმინისტრატორების აპების მართვა"</string>
- <string name="manage_users" msgid="3125018886835668847">"მომხმარებლების მართვა"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> -ის დეინსტალაცია ვერ მოხერხდა."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"პაკეტის ანალიზისას წარმოიშვა პრობლემა."</string>
- <string name="newPerms" msgid="6039428254474104210">"ახალი"</string>
- <string name="allPerms" msgid="1024385515840703981">"ყველა"</string>
- <string name="privacyPerms" msgid="1850527049572617">"კონფიდენციალურობა"</string>
- <string name="devicePerms" msgid="6733560207731294504">"მოწყობილობის წვდომა"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"ეს განახლება არ საჭიროებს ახალ ნებართვებს."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"გსურთ, მიანიჭოთ შემდეგი ნებართვები? წვდომა ექნება შემდეგზე:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"უარყოფა"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"დამატებითი ინფორმაცია"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"მაინც უარყოფა"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"გსურთ, დაუშვათ, რომ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>-მ შეასრულოს <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"გათიშულია <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"გათიშულია ყველა"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"არაფერია გათიშული"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"დაშვება"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"აპები"</string>
- <string name="app_permissions" msgid="3146758905824597178">"აპის უფლებები"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"აღარ მკითხოთ"</string>
- <string name="no_permissions" msgid="3210542466245591574">"ნებართვები არ არის"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"დამატებითი ნებართვები"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"ნებართვების კონტროლერი"</string>
+ <string name="ok" msgid="4417794827535157922">"კარგი"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"ნებართვები"</string>
+ <string name="cancel" msgid="7279939269964834974">"გაუქმება"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"აპი ვერ მოიძებნა."</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"უარყოფა"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"უარყოფა და აღარასოდეს შემოთავაზება"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"მეტი ინფორმაცია"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"მაინც უარყოფა"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"გსურთ, დაუშვათ, რომ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>-მა შეასრულოს <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"გსურთ, ყოველთვის შესრულდეს <xliff:g id="ACTION">%2$s</xliff:g> <b><xliff:g id="APP_NAME">%1$s</xliff:g>-ის</b> მიერ?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"მხოლოდ აპის გამოყენებისას"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"ყოველთვის"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"უარყავი და აღარ მკითხო"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"გათიშულია <xliff:g id="COUNT">%1$d</xliff:g>"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"გათიშულია ყველა"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"არაფერია გათიშული"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"დაშვება"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"ყოველთვის დაშვება"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"მხოლოდ აპის გამოყენებისას დაშვება"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"აპები"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"აპის ნებართვები"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"ნებართვების მმართველი"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"აღარ მკითხო"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"ნებართვები არ არის"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"დამატებითი ნებართვები"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"აპის ინფორმაციის გახსნა"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"ეს აპი Android-ის ძველი ვერსიისთვის შეიქმნა. ნებართვის უარყოფამ შესაძლოა მისი არასათანადო ფუნქციონირება გამოიწვიოს."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"უცნობი ქმედების შესრულება"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"დაშვებულია <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="6773743421743728921">"სისტემის ჩვენება"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"სისტემური პროცესების დამალვა"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g>-ის ნებართვები"</string>
- <string name="no_apps" msgid="1965493419005012569">"აპები არ არის"</string>
- <string name="location_settings" msgid="1774875730854491297">"მდებარეობის პარამეტრები"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> არის მდებარეობის სერვისების მომწოდებელი ამ მოწყობილობისთვის. მდებარეობაზე წვდომის შეცვლა შესაძლებელია მდებარეობის პარამეტრებიდან."</string>
- <string name="system_warning" msgid="7103819124542305179">"ამ ნებართვის უარყოფის შემთხვევაში, თქვენი მოწყობილობის ძირითადმა ფუნქციებმა შესაძლოა სათანადოდ აღარ იმუშაოს."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"შეესაბამება წესს"</string>
- <string name="loading" msgid="7811651799620593731">"იტვირთება..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"ყველა ნებართვა"</string>
- <string name="other_permissions" msgid="2016192512386091933">"აპის სხვა შესაძლებლობები"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"ნებართვის მოთხოვნა"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"ეკრანის გადაფარვა გამოვლინდა"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"ამ ნებართვის პარამეტრის შესაცვლელად, ჯერ უნდა გამორთოთ ეკრანის გადაფარვა პარამეტრებიდან > აპებიდან"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"პარამეტრების გახსნა"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"ინსტალაციის/დეინსტალაციის მოქმედებები არ არის მხარდაჭერილი Wear-ზე."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> განახლდა. გსურთ, <xliff:g id="APP_NAME_1">%1$s</xliff:g>-ს ჰქონდეს წვდომა შემდეგზე?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"აირჩიეთ, რაზე ჰქონდეს წვდომა <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>-ს"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> განახლდა. აირჩიეთ, რაზე ჰქონდეს წვდომა ამ აპს."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"გაუქმება"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"გაგრძელება"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"ახალი ნებართვები"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"ამჟამინდელი ნებართვები"</string>
- <string name="message_staging" msgid="6151794817691100003">"მიმდინარეობს აპის შუალედური შენახვა…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"უცნობი"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"თქვენივე უსაფრთხოებისთვის, ტაბლეტს ამ წყაროდან უცნობი აპების ინსტალაციის უფლება არ აქვს."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"თქვენივე უსაფრთხოებისთვის, ტელევიზორს ამ წყაროდან უცნობი აპების ინსტალაციის უფლება არ აქვს."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"თქვენივე უსაფრთხოებისთვის, ტელეფონს ამ წყაროდან უცნობი აპების ინსტალაციის უფლება არ აქვს."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"თქვენი ტელეფონი და პირადი მონაცემები უცნობი აპების შემოტევების წინაშე მეტად დაუცველია. ამ აპის ინსტალაციის შემთხვევაში, თქვენ თანახმა ხართ, პასუხისმგებელი იყოთ მისი გამოყენების შედეგად ტელეფონისთვის მიყენებულ ზიანსა და მონაცემების დაკარგვაზე."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"თქვენი ტელეფონი და პირადი მონაცემები უცნობი აპების შემოტევების წინაშე მეტად დაუცველია. ამ აპის ინსტალაციის შემთხვევაში, თქვენ თანახმა ხართ, პასუხისმგებელი იყოთ მისი გამოყენების შედეგად ტაბლეტისთვის მიყენებულ ზიანსა და მონაცემების დაკარგვაზე."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"თქვენი ტელევიზორი და პირადი მონაცემები უცნობი აპების შემოტევების წინაშე მეტად დაუცველია. ამ აპის ინსტალაციის შემთხვევაში, თქვენ თანახმა ხართ, პასუხისმგებელი იყოთ მისი გამოყენების შედეგად ტელევიზორისთვის მიყენებულ ზიანსა და მონაცემების დაკარგვაზე."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"გაგრძელება"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"პარამეტრები"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Wear აპების ინსტალაცია/დეინსტალაცია"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"ეს აპი Android-ის ძველი ვერსიისთვის შეიქმნა. ნებართვის უარყოფამ შესაძლოა მისი არასათანადო ფუნქციონირება გამოიწვიოს."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"უცნობი ქმედების შესრულება"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"დაშვებულია <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> აპიდან"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"ბოლოდროინდელი გამოყენება"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"ნებართვის საინფ. დაფის ნახვა"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"სისტემის ჩვენება"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"სისტემური პროცესების დამალვა"</string>
+ <string name="no_apps" msgid="2377153782338039463">"აპები არ არის"</string>
+ <string name="location_settings" msgid="547378321761364906">"მდებარეობის პარამეტრები"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> არის მდებარეობის სერვისების მომწოდებელი ამ მოწყობილობისთვის. მდებარეობაზე წვდომის შეცვლა შესაძლებელია მდებარეობის პარამეტრებიდან."</string>
+ <string name="system_warning" msgid="6868290533389195836">"ამ ნებართვის უარყოფის შემთხვევაში, თქვენი მოწყობილობის ძირითადმა ფუნქციებმა შესაძლოა სათანადოდ აღარ იმუშაოს."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"შეესაბამება წესს"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"ფონზე წვდომა დებულებით გათიშულია"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"ფონზე წვდომა დებულებით დაშვებულია"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"წინა პლანზე წვდომა დებულებით დაშვებულია"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"იმართება ადმინისტრატორის მიერ"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"ფონზე წვდომა გათიშულია ადმინისტრატორის მიერ"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"ფონზე წვდომა დაშვებულია ადმინისტრატორის მიერ"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"წინა პლანზე წვდომა დაშვებულია ადმინისტრატორის მიერ"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"სისტემის მიერ დაყენებული ნებართვა"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"ყოველთვის"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"მხოლოდ აპის გამოყენებისას"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"არასდროს"</string>
+ <string name="loading" msgid="323483393167148377">"იტვირთება…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"ყველა ნებართვა"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"აპის სხვა შესაძლებლობები"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"ნებართვის მოთხოვნა"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"ეკრანის გადაფარვა გამოვლინდა"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"ამ ნებართვის პარამეტრის შესაცვლელად, ჯერ უნდა გამორთოთ ეკრანის გადაფარვა პარამეტრებიდან > აპებიდან"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"პარამეტრების გახსნა"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"ინსტალაციის/დეინსტალაციის მოქმედებები არ არის მხარდაჭერილი Wear-ზე."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"აირჩიეთ, რაზე ჰქონდეს წვდომა <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>-ს"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> განახლდა. აირჩიეთ, რაზე ჰქონდეს წვდომა ამ აპს."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"გაუქმება"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"გაგრძელება"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"ახალი ნებართვები"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"ამჟამინდელი ნებართვები"</string>
+ <string name="message_staging" msgid="641286607664721291">"მიმდინარეობს აპის შუალედური შენახვა…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"უცნობი"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"საინფორმაციო დაფა"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">ბოლო წვდომა: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> წვდომა (<xliff:g id="NUM_5">%3$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> წვდომა (<xliff:g id="NUM_2">%3$s</xliff:g> ფონურ რეჟიმში)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">ბოლო წვდომა: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> წვდომა\nხანგრძლივობა: <xliff:g id="TIME_5">%3$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> წვდომა\nხანგრძლივობა: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">ბოლო წვდომა: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> წვდომა (<xliff:g id="NUM_6">%3$s</xliff:g> ფონურ რეჟიმში)\nხანგრძლივობა: <xliff:g id="TIME_7">%3$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> წვდომა (<xliff:g id="NUM_2">%3$s</xliff:g> ფონურ რეჟიმში)\nხანგრძლივობა: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"ნებისმიერი ნებართვა"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"ნებისმიერი დრო"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"ბოლო 7 დღე"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"ბოლო 24 საათი"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"ბოლო 1 საათი"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"ბოლო 15 წუთი"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"ბოლო 1 წუთი"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"ამ ნებართვებს აპები არ იყენებს"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"წვდომა ნებისმიერ დროს"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"წვდომა ბოლო 7 დღეში"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"წვდომა ბოლო 24 საათში"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"წვდომა ბოლო საათში"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"წვდომა ბოლო 15 წუთში"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"წვდომა ბოლო 1 წუთში"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"ხშირად გამოყენებული ნებართვები ნებისმიერ დროს"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"ხშირად გამოყენებული ნებართვები ბოლო 7 დღეში"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"ხშირად გამოყენებული ნებართვები ბოლო 24 საათში"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"ხშირად გამოყენებული ნებართვები ბოლო 1 საათში"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"ხშირად გამოყენებული ნებართვები ბოლო 15 წუთში"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"ხშირად გამოყენებული ნებართვები ბოლო 1 წუთში"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"აპები"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"გაფილტვრის კრიტერიუმი: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"ფილტრის გაუქმება"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"გაფილტვრა კრიტერიუმით:"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"გაფილტვრა ნებართვების მიხედვით"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"ყველაზე მეტი ნებართვა"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"ყველაზე მეტი წვდომა"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"ბოლოდროინდელი"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"განახლება"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"აპის ნებართვებით სარგებლობა"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"წვდომა: <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="4040424337831328212">"წვდომა: <xliff:g id="NUM">%1$s</xliff:g>-ჯერ. ბოლო გამოყენებიდან გავიდა <xliff:g id="TIME">%2$s</xliff:g>."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"დაშვება"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"ყოველთვის დაშვება"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"მხოლოდ აპის გამოყენებისას დაშვება"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"უარყოფა"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"ნებართვა: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="PERM">%1$s</xliff:g>: წვდომა <xliff:g id="APP">%2$s</xliff:g>-ისთვის"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g>-მა გამოიყენა თქვენი <xliff:g id="PERM">%2$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g>ს წინ."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g>-ს არ გამოუყენებია თქვენი <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"ნებართვების გამოყენების დეტალურად ნახვა"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"ბოლო წვდომა: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"არ ჰქონია წვდომა"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"დაშვებულია"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"დაშვებულია მხოლოდ გამოყენებისას"</string>
+ <string name="denied_header" msgid="2277998574238617699">"უარყოფილია"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"დეტალური გამოყენების ნახვა"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> დღე</item>
+ <item quantity="one">1 დღე</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> საათი</item>
+ <item quantity="one">1 საათი</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> წუთი</item>
+ <item quantity="one">1 წუთი</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> წამი</item>
+ <item quantity="one">1 წამი</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"გსურთ, გამოიყენოთ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>, როგორც <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"გსურთ, გამოიყენოთ <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> (<b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b>-ის ნაცვლად), როგორც <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"შეხსენებები ნებართვის შესახებ"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> იყენებს თქვენს მდებარეობას"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"ამ აპს ყოველთვის შეუძლია თქვენს მდებარეობაზე წვდომა. შეეხეთ შესაცვლელად."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"მხოლოდ აპის გამოყენებისას"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"დაშვებული ნებართვები არ არის"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"უარყოფილი ნებართვები არ არის"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"დაშვებული აპები არ არის"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"უარყოფილი აპები არ არის"</string>
+ <string name="launch_app" msgid="5641437562665039291">"გახსნა"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"დეინსტალაცია"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"იძულებით შეწყვეტა"</string>
+ <!-- no translation found for settings (2884124136779508907) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_title_single (1613456964930225277) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_title_multiple (1262608280562255761) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_bottom_text_single (6932810943462703517) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_bottom_text_multiple (817809209968536329) -->
+ <skip />
+ <string name="default_apps" msgid="8554530939151957828">"ნაგულისხმევი აპები"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"ნაგულისხმევი აპები არ არის"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"ნაგულისხმევი სამსახურისთვის"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"არცერთი"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"აპები არ არის"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"აპების სპეციალური წვდომა"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"აპების სპეციალური წვდომა არაა"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"აპები არ არის"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"დამხმარე აპი"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"ბრაუზერის აპი"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"ტელეფონის აპი"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS აპი"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"საგანგებო აპი"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"მთავარი აპი"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"მუსიკის აპი"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"გალერეის აპი"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"მანქანის რეჟიმის სატელეფ. აპი"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"ზარების გადამისამართების აპი"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"ზარების გაფილტვრის აპი"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"დარეკვის კომპანიონი აპი"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"მანქანაში პროეცირების აპი"</string>
+ <!-- no translation found for home_missing_work_profile_support (1439466272746259937) -->
+ <skip />
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"შენიშვნა: თუ ეკრანის დაბლოკვის მეთოდს იყენებთ, მოწყობილობის გადატვირთვის შემდეგ ეს აპი ვერ გაეშვება, სანამ მოწყობილობას არ განბლოკავთ"</string>
+ <!-- no translation found for assistant_confirmation_message (4529925223796676824) -->
+ <skip />
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"გამართვის მონაცემების გაზიარება"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"გსურთ გამართვის დეტალური მონაცემების გაზიარება?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> ითხოვს გამართვის ინფორმაციის ატვირთვას."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"გამართვის მონაცემების გაზიარება"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ითხოვს ამ მოწყობილობიდან ხარვეზების ანგარიშის ატვირთვას, რომლის შექმნის თარიღია <xliff:g id="DATE">%2$s</xliff:g>, <xliff:g id="TIME">%3$s</xliff:g>. ხარვეზების ანგარიშები მოიცავს პერსონალურ ინფორმაციას თქვენი მოწყობილობის შესახებ ან აპების ჟურნალებში დაფიქსირებულ მონაცემებს, მაგალითად, მომხმარებლის სახელებს, მდებარეობის მონაცემებს, მოწყობილობების იდენტიფიკატორებსა და ქსელის ინფორმაციას. გირჩევთ, ხარვეზების ანგარიშები გაუზიაროთ მხოლოდ იმ ადამიანებსა და აპებს, რომლებსაც შეგიძლიათ ანდოთ ეს ინფორმაცია. გსურთ, <xliff:g id="APP_NAME_1">%4$s</xliff:g>-მა ატვირთოს ხარვეზების ანგარიში?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"დაშვება"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"უარყოფა"</string>
</resources>
diff --git a/res/values-kk-television/strings.xml b/res/values-kk-television/strings.xml
index 2d0ff43..a808cd5 100644
--- a/res/values-kk-television/strings.xml
+++ b/res/values-kk-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Тыйым салу және қайтадан сұрамау"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Мұны кейінірек \"Параметрлер\" және \"Қолданбалар\" ішінен өзгертуге болады"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Жүйелік қолданбаларды көрсету"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Қолданба рұқсаттары"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Қолданба рұқсаттары"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> рұқсаттары"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Қосымша рұқсаттар"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> рұқсаттары"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Тыйым салу және қайта сұрамау"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Мұны кейінірек \"Параметрлер\" және \"Қолданбалар\" бөлімінен өзгертуге болады"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Жүйелік қолданбаларды көрсету"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Қолданба рұқсаттары"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Қолданба рұқсаттары"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> рұқсаттары"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Қосымша рұқсаттар"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> рұқсаттары"</string>
</resources>
diff --git a/res/values-kk-watch/strings.xml b/res/values-kk-watch/strings.xml
index 8996bcb..ac22dbe 100644
--- a/res/values-kk-watch/strings.xml
+++ b/res/values-kk-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Тыйым салу, қайтадан сұрамау"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Жүйелік қолданбаларды көрсету"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Өзгерту мүмкін емес"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Иә"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Бас тарту"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Тыйым салу, қайта сұрамау"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Жүйелік қолданбаларды көрсету"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Өзгерту мүмкін емес"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Иә"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Бас тарту"</string>
</resources>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index c636576..7ca889f 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,286 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Бума орнатқыш"</string>
- <string name="next" msgid="3057143178373252333">"Келесі"</string>
- <string name="install" msgid="5896438203900042068">"Орнату"</string>
- <string name="done" msgid="3889387558374211719">"Дайын"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Бұл қолданбаға келесі нәрселереге рұқсат беріңіз:"</string>
- <string name="cancel" msgid="8360346460165114585">"Бас тарту"</string>
- <string name="unknown" msgid="4742479012767208045">"Белгісіз"</string>
- <string name="installing" msgid="8613631001631998372">"Орнатуда…"</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> орнатылуда…"</string>
- <string name="install_done" msgid="3682715442154357097">"Қолданба орнатылды."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Бұл қолданбаны орнатуды қалайсыз ба? Оның келесі нәрселерге қол жетімділігі болады:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Бұл қолданбаны орнатуды қалайсыз ба? Ол ерекше қол жетімділікті қажет етпейді."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Бұл қолданбаның жаңартылған нұсқасын орнатуды қалайсыз ба? Деректеріңіз жоғалмайды. Жаңартылған қолданбаның келесі нәрселерге қол жетімділігі болады:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Бұл орнатылған қолданбаның жаңартылған нұсқасын орнатуды қалайсыз ба? Деректеріңіз жоғалмайды. Жаңартылған қолданбаның келесі нәрселерге қол жетімділігі болады:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Бұл қолданбаның жаңартылған нұсқасын орнатуды қалайсыз ба? Деректеріңіз жоғалмайды. Ол ерекше қол жетімділікті қажет етпейді."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Бұл орнатылған қолданбаның жаңартылған нұсқасын орнатуды қалайсыз ба? Деректеріңіз жоғалмайды. Ол ерекше қол жетімділікті қажет етпейді."</string>
- <string name="install_failed" msgid="6579998651498970899">"Қолданба орнатылмады."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Буманы орнатуға тыйым салынды."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Пакет түрінде орнатылмаған қолданба мен бұрыннан бар пакеттің арасында қайшылық туындайды."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Қолданба түрінде орнатылмаған қолданба, планшетіңізбен үйлесімді емес."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Бұл қолданба теледидарыңызбен үйлесімді емес."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Қолданба түрінде орнатылмаған қолданба, телефоныңызбен үйлесімді емес."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Пакет түрінде орнатылмаған қолданба жарамсыз болып табылады."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасын планшетіңізге орнату мүмкін емес"</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> теледидарыңызда орнату мүмкін емес."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасын телефоныңызға орнату мүмкін емес."</string>
- <string name="launch" msgid="4826921505917605463">"Ашу"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Әкімші белгісіз көздерден алынған қолданбаларды орнатуға рұқсат етпейді"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Бұл пайдаланушы белгісіз қолданбаларды орната алмайды"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Бұл пайдаланушының қолданбаларды орнату рұқсаты жоқ"</string>
- <string name="ok" msgid="3468756155452870475">"Жарайды"</string>
- <string name="settings" msgid="6743583734099755409">"Параметрлер"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Қолданбаларды басқару"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Қолданбаны алмастырсын ба?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Сіз орнатып жатқан қолданба басқа қолданбаны алмастырады.\n\nСіздің бұрынғы пайдаланушы деректеріңіз сақталады."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Бұл - жүйе қолданбасы.\n\nСіздің бұрынғы пайдаланушы деректеріңіз сақталады."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Орнында емес"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасын орнату мүмкін болмады. Орын босатып, қайта әрекеттеніп көріңіз."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"Жарайды"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Қолданба табылмады"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Қолданба орнатылған қолданбалар тізімінен табылмады."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Рұқсат етілмеген"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Ағымдағы пайдаланушыға бұл жою әрекетіне рұқсат берілмеген."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Қате"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Қолданба жойылмады."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Қолданбаны алып тастау"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Жаңартуды алып тастау"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> келесі қолданбаның бөлігі:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Бұл қолданбаны алып тастауды қалайсыз ба?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Бұл қолданбаны "<b>"барлық"</b>" пайдаланушылар үшін алып тастауды қалайсыз ба? Қолданба және оның деректері құрылғыдағы "<b>"барлық"</b>" пайдаланушылардан алынады."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Пайдаланушы <xliff:g id="USERNAME">%1$s</xliff:g> үшін осы қолданбаны жою керек пе?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Осы қолданбаны зауыттық нұсқамен ауыстыру керек пе? Бүкіл деректер жойылады."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Осы қолданбаны зауыттық нұсқамен ауыстыру керек пе? Бүкіл деректер жойылады. Бұл осы құрылғының барлық пайдаланушыларына, соның ішінде жұмыс профильдері бар пайдаланушыларға әсер етеді."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Жұмыс істеп тұрған жою әрекеттері"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Сәтсіз жою әрекеттері"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Алып тастау орындалуда..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> жойылуда…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Алып тастау аяқталды."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> жойылды"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Алып тастау сәтсіздікке ұшырады."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> жою сәтсіз аяқталды."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Белсенді құрылғының әкімші қолданбасын жою мүмкін емес"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"<xliff:g id="USERNAME">%1$s</xliff:g> үшін белсенді құрылғының әкімші қолданбасын жою мүмкін емес"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Бұл қолданба кейбір пайдаланушылар немесе профильдер үшін қажет және басқалар үшін жойылды"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Бұл қолданба профиліңіз үшін қажет және оны жою мүмкін емес."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Әкімші осы қолданбаны талап етеді және оны жою мүмкін емес."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Құрылғы әкімшісі қолданбаларын басқару"</string>
- <string name="manage_users" msgid="3125018886835668847">"Пайдаланушыларды басқару"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасын алып тастау мүмкін емес."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Жинақты сараптау кезінде мәселе орын алды."</string>
- <string name="newPerms" msgid="6039428254474104210">"Жаңа"</string>
- <string name="allPerms" msgid="1024385515840703981">"Барлық"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Құпиялылық"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Құралға кіру"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Бұл қолданба жаңа рұқсаттарды қажет етпейді."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Келесі нәрселерге рұқсат бересіз бе? Мыналар қол жетіміді болады:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Қабылдамау"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Қосымша ақпарат"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Бәрібір рұқсат бермеу"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> қолданбасына <xliff:g id="ACTION">%2$s</xliff:g> рұқсатын беру керек пе?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> рұқсат өшірілді"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"барлық рұқсаттар өшірілді"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"рұқсаттардың ешқайсысы өшірілмеді"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Рұқсат беру"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Қолданбалар"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Қолданба рұқсаттары"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Қайта сұралмасын"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Рұқсат жоқ"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Қосымша рұқсаттар"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Рұқсат контроллері"</string>
+ <string name="ok" msgid="4417794827535157922">"Жарайды"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"рұқсаттар"</string>
+ <string name="cancel" msgid="7279939269964834974">"Бас тарту"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Қолданба табылмады"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Келіспеу"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Тыйым салу және қайта сұрамау"</string>
+ <!-- no translation found for grant_dialog_button_deny_background (5378693207810841555) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_deny_background_and_dont_ask_again (1032019626928637454) -->
+ <skip />
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Толығырақ"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Бәрібір рұқсат бермеу"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> қолданбасына <xliff:g id="ACTION">%2$s</xliff:g> рұқсатын беру керек пе?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> қолданбасы үшін <xliff:g id="ACTION">%2$s</xliff:g> әрекетіне әрқашан рұқсат етілсін бе?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Қолданба пайдаланылғанда ғана"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Әрқашан"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Тыйым салу және қайта сұрамау"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> рұқсат өшірілді"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"барлық рұқсаттар өшірілді"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"ешқандай рұқсат өшірілмеді"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Рұқсат беру"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Әрқашан рұқсат беру"</string>
+ <!-- no translation found for grant_dialog_button_allow_foreground (8090382319222429427) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_allow_background (3190568549032350790) -->
+ <skip />
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Қолданбалар"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Қолданба рұқсаттары"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Рұқсат басқарушысы"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Қайта сұралмасын"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Рұқсат жоқ"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Қосымша рұқсаттар"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Қолданба ақпаратын ашу"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"Бұл қолданба Android жүйесінің ескі нұсқасына арналған. Рұқсаттан бас тартсаңыз, бұдан былай тиісінше жұмыс істемеуі мүмкін."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"белгісіз әрекетті орындау"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"Жүйені көрсету"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Жүйені жасыру"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> рұқсаттары"</string>
- <string name="no_apps" msgid="1965493419005012569">"Қолданбалар жоқ"</string>
- <string name="location_settings" msgid="1774875730854491297">"Орынды анықтау параметрлері"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> — осы құрылғыға орынды анықтау қызметтерін көрсететін қолданба. Орынды пайдалану мүмкіндігін орынды анықтау параметрлерінде өзгертуге болады."</string>
- <string name="system_warning" msgid="7103819124542305179">"Бұл рұқсатты бермесеңіз, құрылғының негізгі функциялары енді көзделгендей жұмыс істемеуі мүмкін."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Саясат арқылы қолданылған"</string>
- <string name="loading" msgid="7811651799620593731">"Жүктелуде…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Барлық рұқсаттар"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Басқа қолданба мүмкіндіктері"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Рұқсат сұрау"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Экранды қабаттастыру анықталды"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Бұл рұқсат параметрін өзгерту үшін алдымен «Параметрлер» > «Қолданбалар» тармағында экранды қабаттастыруды өшіру керек"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Параметрлерді ашу"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Wear құрылғысында \"Орнату\"/\"Жою\" әрекеттері қолданылмайды."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> жаңартылды. <xliff:g id="APP_NAME_1">%1$s</xliff:g> келесілерге қатынасуға рұқсат ету керек пе?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасы қайда кіре алатынын таңдаңыз"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасы жаңартылды. Бұл қолданбаның қайда кіре алатынын таңдаңыз."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Бас тарту"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Жалғастыру"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Жаңа рұқсаттар"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Ағымдағы рұқсаттар"</string>
- <string name="message_staging" msgid="6151794817691100003">"Қолданба реттелуде…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Белгісіз"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Қауіпсіздікті сақтау үшін планшетке бұл дереккөзден белгісіз қолданбаларды орнатуға рұқсат берілмейді."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Қауіпсіздікті сақтау үшін теледидарға бұл дереккөзден белгісіз қолданбаларды орнатуға рұқсат берілмейді."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Қауіпсіздікті сақтау үшін телефонға бұл дереккөзден белгісіз қолданбаларды орнатуға рұқсат берілмейді."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Телефон және жеке деректер белгісіз қолданбалардың шабуылына ұшырауы мүмкін. Бұл қолданбаны орнату арқылы оны пайдалану нәтижесіндегі телефонға келетін залалға немесе деректердің жоғалуына өзіңіз ғана жауапты болатыныңызға келісесіз."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Планшет және жеке деректер белгісіз қолданбалардың шабуылына ұшырауы мүмкін. Бұл қолданбаны орнату арқылы оны пайдалану нәтижесіндегі планшетке келетін залалға немесе деректердің жоғалуына өзіңіз ғана жауапты болатыныңызға келісесіз."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Теледидар және жеке деректер белгісіз қолданбалардың шабуылына ұшырауы мүмкін. Бұл қолданбаны орнату арқылы оны пайдалану нәтижесіндегі теледидарға келетін қандай да бір залалға немесе деректердің жоғалуына өзіңіз ғана жауапты болатыныңызға келісесіз."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Жалғастыру"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Параметрлер"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Wear қолданбасын орнату/жою"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Бұл қолданба Android жүйесінің ескі нұсқасына арналған. Рұқсаттан бас тартсаңыз, бұдан былай тиісінше жұмыс істемеуі мүмкін."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"белгісіз әрекетті орындау"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<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="7623002570829860709">"Жүйені көрсету"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Жүйені жасыру"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Қолданбалар жоқ"</string>
+ <string name="location_settings" msgid="547378321761364906">"Орынды анықтау параметрлері"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> – осы құрылғыға орынды анықтау қызметтерін көрсететін қолданба. Орынды пайдалану мүмкіндігін орынды анықтау параметрлерінде өзгертуге болады."</string>
+ <string name="system_warning" msgid="6868290533389195836">"Бұл рұқсатты бермесеңіз, құрылғының негізгі функциялары енді көзделгендей жұмыс істемеуі мүмкін."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Саясат арқылы қолданылған"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Саясат бойынша фондық режимде кіруге рұқсат етілмеген"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Саясат бойынша фондық режимде кіруге рұқсат етілген"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Саясат бойынша экрандық режимде кіруге рұқсат етілген"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Әкімші басқарады"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Әкімші фондық режимде кіруге тыйым салған"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Әкімші фондық режимде кіруге рұқсат еткен"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Әкімші экрандық режимде кіруге рұқсат еткен"</string>
+ <!-- no translation found for permission_summary_enabled_system_fixed (5463084832974856683) -->
+ <skip />
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <!-- no translation found for permission_access_always (5419580764084361573) -->
+ <skip />
+ <!-- no translation found for permission_access_only_foreground (2857031150724321567) -->
+ <skip />
+ <!-- no translation found for permission_access_never (425385910378172045) -->
+ <skip />
+ <string name="loading" msgid="323483393167148377">"Жүктелуде…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Барлық рұқсаттар"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Басқа қолданба мүмкіндіктері"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Рұқсат сұрау"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Экран үстін жабу анықталды"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Бұл рұқсат параметрін өзгерту үшін алдымен \"Параметрлер\" > \"Қолданбалар\" тармағында экран үстін жабуды өшіру керек"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Параметрлерді ашу"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Wear жүйесінде \"Орнату\"/\"Жою\" әрекеттері қолданылмайды."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> қолданбасы қайда кіре алатынын таңдаңыз"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> қолданбасы жаңартылды. Бұл қолданбаның қайда кіре алатынын таңдаңыз."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Бас тарту"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Жалғастыру"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Жаңа рұқсаттар"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Ағымдағы рұқсаттар"</string>
+ <string name="message_staging" msgid="641286607664721291">"Қолданба реттелуде…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Белгісіз"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Бақылау тақтасы"</string>
+ <!-- no translation found for permission_usage_summary_foreground (3203419920107457274) -->
+ <skip />
+ <!-- no translation found for permission_usage_summary_background (5719598203265078254) -->
+ <skip />
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Кез келген рұқсат"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Кез келген уақытта"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Соңғы 7 күн"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Соңғы 24 сағат"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Соңғы 1 сағат"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Соңғы 15 минут"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Соңғы 1 минут"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Рұқсаттар пайдаланылмаған"</string>
+ <!-- no translation found for permission_usage_list_title_any_time (5641676869304328239) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_7_days (2972289322203714509) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_day (6298662604046093174) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_hour (7224982939487774388) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_15_minutes (49045607172810502) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_minute (7716966405942817635) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_any_time (862654449303514044) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_7_days (5393381637937213483) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_day (7202567658282481259) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_hour (4672313408976666479) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_15_minutes (1776918144361651860) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_minute (236300476767668315) -->
+ <skip />
+ <!-- no translation found for app_permission_usage_bar_label (7261634017833698654) -->
+ <!-- no translation found for permission_usage_view_details (4728049344017619500) -->
+ <skip />
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Сүзгі шарты: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Сүзгіні өшіру"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Сүзгі параметрі:"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Рұқсаттар бойынша сүзу"</string>
+ <!-- no translation found for filter_by_time (1763143592970195407) -->
+ <skip />
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Ең көп пайдаланылған рұқсаттар"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Ең көп пайдаланылған кіру рұқсаттары"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Соңғы"</string>
+ <!-- no translation found for sort_by_app (1912228966803416485) -->
+ <skip />
+ <!-- no translation found for sort_by_time (8280378662234104410) -->
+ <skip />
+ <!-- no translation found for item_separator (8266062815210378175) -->
+ <skip />
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Жаңарту"</string>
+ <!-- no translation found for permission_usage_permission_filter_subtitle (5539392196389332769) -->
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Қолданба рұқсаттарын пайдалану"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"Кіру рұқсаты сұралды: <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="4040424337831328212">"Кіру рұқсаты сұралды: <xliff:g id="NUM">%1$s</xliff:g> рет. Соңғы рет <xliff:g id="TIME">%2$s</xliff:g> бұрын пайдаланылған."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Рұқсат беру"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Әрдайым рұқсат беру"</string>
+ <!-- no translation found for app_permission_button_allow_foreground (2303741829613210541) -->
+ <skip />
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Келіспеу"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> рұқсаты"</string>
+ <!-- no translation found for app_permission_header (228974007660007656) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_usage_summary (1034436308858219976) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_no_usages (4444374134047275841) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_app_permissions_link (8033278634020892918) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_permission_apps_link (8759141212929298774) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_generic (5479202003136667039) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_activity_recognition (2022880340017289990) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_calendar (2846128908236787586) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_call_log (2429916962093948340) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_camera (6699611334403400091) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_contacts (5169995707720233126) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_location (687820658574645201) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_aural (2102206495149326019) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_visual (3105938942794669520) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_microphone (2300290217308759293) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_phone (3773977614654088578) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sensors (6733606479604624853) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sms (8850213022386508528) -->
+ <skip />
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Соңғы рет пайдаланылған уақыт: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Ешқашан пайдаланылмады"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Берілген рұқсаттар"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Қолданылып жатқанда ғана рұқсат етіледі"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Тыйым салынғандар"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Пайдалану туралы толығырақ көру"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> күн</item>
+ <item quantity="one">1 күн</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> сағат</item>
+ <item quantity="one">1 сағат</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> минут</item>
+ <item quantity="one">1 минут</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> секунд</item>
+ <item quantity="one">1 секунд</item>
+ </plurals>
+ <string name="permission_reminders" msgid="8040710767178843151">"Рұқсат туралы еске салғыштар"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> қолданбасы геодерегіңізді пайдаланып келді"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Бұл қолданба геодерегіңізді кез келген уақытта пайдалана алады. Өзгерту үшін түртіңіз."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Қолданба пайдаланып жатқанда ғана"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Ешқандай рұқсат берілмеді"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Ешқандай рұқсатқа тыйым салынбады"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Ешқандай қолданбаға рұқсат берілмеді"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Ешқандай қолданбаға тыйым салынбады"</string>
+ <string name="settings" msgid="2884124136779508907">"Параметрлер"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> қызметі құрылғыңызды толықтай пайдалана алады"</string>
+ <!-- no translation found for accessibility_service_dialog_title_multiple (8129325613496173909) -->
+ <skip />
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> сіздің экраныңызды, әрекеттеріңізді және енгізген деректеріңізді көре алады, әрекеттерді орындап, дисплейді басқара алады."</string>
+ <!-- no translation found for accessibility_service_dialog_bottom_text_multiple (1387803460488775887) -->
+ <skip />
+ <!-- no translation found for request_role_title (3611734134669430568) -->
+ <skip />
+ <!-- no translation found for request_role_current_default (7512045433655289638) -->
+ <skip />
+ <!-- no translation found for request_role_set_as_default (5706081295230541240) -->
+ <skip />
+ <!-- no translation found for default_app_search_keyword (6938709626391437391) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_ok (3007005536659549573) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_open_settings (3368892579319881043) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_title (7173961211414061803) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_separator (9008030412869423988) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_last_separator (7455459775266515801) -->
+ <skip />
+ <string name="default_apps" msgid="8554530939151957828">"Әдепкі қолданбалар"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Әдепкі қолданбалар жоқ"</string>
+ <!-- no translation found for default_apps_manage_domain_urls (3146379064445013719) -->
+ <skip />
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Жұмыс үшін әдепкі қолданба"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Жоқ"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Қолданбалар жоқ"</string>
+ <!-- no translation found for special_app_access_search_keyword (462008045110320714) -->
+ <skip />
+ <string name="special_app_access" msgid="2561673957499408877">"Арнайы кіру"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Арнайы кіру мүмкіндігі жоқ"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Қолданбалар жоқ"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Көмекші қолданба"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Браузер қолданбасы"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Телефон қолданбасы"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS қолданбасы"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Төтенше жағдай қолданбасы"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Home қолданбасы"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Музыка қолданбасы"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Галерея қолданбасы"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Көлік режиміндегі қоңырауларға арналған қолданба"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Қоңырау бағытын ауыстыру"</string>
+ <!-- no translation found for role_label_call_screening (1089966334646538858) -->
+ <skip />
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Қоңырауға арналған қосымша қолданба"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Жұмыс профиліне қолдау көрсетпейді."</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Ескертпе: Құрылғыңызды қайта қоссаңыз және экран құлыпталса, құрылғының құлпы ашылмайынша, қолданба іске қосылмайды."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Көмекші қолданба жүйеде пайдаланылып жатқан қолданбалар туралы ақпаратты, соның ішінде экранға шығатын немесе қолданбалардағы деректерді оқи алады."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Түзету туралы деректерді бөлісу"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Түзету туралы толығырақ деректер бөлісілсін бе?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасы түзету туралы ақпаратты жүктеп салғысы келеді."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Түзету туралы деректерді бөлісу"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> қолданбасы осы құрылғыдан <xliff:g id="DATE">%2$s</xliff:g> күні <xliff:g id="TIME">%3$s</xliff:g> кезінде алынған қате туралы есепті жүктеп салуды сұрауда. Мұндай есептерге құрылғыңыз туралы немесе қолданбалар арқылы тіркелген жеке ақпарат (пайдаланушы аттары, геодерек, құрылғы идентификаторлары және желі туралы ақпарат) кіреді. Қате туралы есептерді тек сенімді адамдармен және қолданбалармен бөлісіңіз. <xliff:g id="APP_NAME_1">%4$s</xliff:g> қолданбасына қате туралы есепті жүктеп салуға рұқсат етілсін бе?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Рұқсат беру"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Келіспеу"</string>
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_title (5699953608028268176) -->
+ <skip />
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_content (6960592986228883592) -->
+ <skip />
+ <!-- no translation found for dismiss_with_acknowledgment (2879819713128822468) -->
+ <skip />
</resources>
diff --git a/res/values-km-television/strings.xml b/res/values-km-television/strings.xml
index 1797380..7658a05 100644
--- a/res/values-km-television/strings.xml
+++ b/res/values-km-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"បដិសេធ ហើយកុំសួរម្តងទៀត"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"អ្នកអាចប្តូរវាពេលក្រោយនៅក្នុងការកំណត់ > កម្មវិធី"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"បង្ហាញកម្មវិធីប្រព័ន្ធ"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"សិទ្ធិអនុញ្ញាតកម្មវិធី"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"សិទ្ធិអនុញ្ញាតកម្មវិធី"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"សិទ្ធិអនុញ្ញាត <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"សិទ្ធិអនុញ្ញាតបន្ថែម"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"សិទ្ធិអនុញ្ញាត <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"បដិសេធ ហើយកុំសួរម្តងទៀត"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"អ្នកអាចប្តូរវាពេលក្រោយនៅក្នុងការកំណត់ > កម្មវិធី"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"បង្ហាញកម្មវិធីប្រព័ន្ធ"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"ការអនុញ្ញាតកម្មវិធី"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"ការអនុញ្ញាតកម្មវិធី"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"ការអនុញ្ញាត <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"ការអនុញ្ញាតបន្ថែម"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"ការអនុញ្ញាត <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-km-watch/strings.xml b/res/values-km-watch/strings.xml
index c5f49c5..c22cfb6 100644
--- a/res/values-km-watch/strings.xml
+++ b/res/values-km-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"បដិសេធ សូមកុំសួរម្តងទៀត"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"បង្ហាញកម្មវិធីប្រព័ន្ធ"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"មិនអាចប្តូរបានទេ"</string>
- <string name="generic_yes" msgid="3394094077553763689">"បាទ/ចាស"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"បោះបង់"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"បដិសេធ សូមកុំសួរម្តងទៀត"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"បង្ហាញកម្មវិធីប្រព័ន្ធ"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"មិនអាចប្តូរបានទេ"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"បាទ/ចាស"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"បោះបង់"</string>
</resources>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index f64aec5..716712b 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"កម្មវិធីដំឡើងកញ្ចប់"</string>
- <string name="next" msgid="3057143178373252333">"បន្ទាប់"</string>
- <string name="install" msgid="5896438203900042068">"ដំឡើង"</string>
- <string name="done" msgid="3889387558374211719">"រួចរាល់"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"ឲ្យកម្មវិធីនេះ៖"</string>
- <string name="cancel" msgid="8360346460165114585">"បោះបង់"</string>
- <string name="unknown" msgid="4742479012767208045">"មិនស្គាល់"</string>
- <string name="installing" msgid="8613631001631998372">"កំពុងដំឡើង..."</string>
- <string name="installing_app" msgid="4097935682329028894">"កំពុងដំឡើង <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"បានដំឡើងកម្មវិធី។"</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"តើអ្នកចង់ដំឡើងកម្មវិធីនេះ? វានឹងមានសិទ្ធិចូល៖"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"តើអ្នកចង់ដំឡើងកម្មវិធីនេះ? វាមិនទាមទារសិទ្ធិចូលពិសេសទេ។"</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"តើអ្នកចង់ដំឡើងបច្ចុប្បន្នភាពកម្មវិធីដែលមានស្រាប់នេះ? ទិន្នន័យដែលមានស្រាប់របស់អ្នកនឹងមិនបាត់បង់ទេ។ កម្មវិធីបានធ្វើបច្ចុប្បន្នភាពនឹងចូលដំណើរការទៅ៖"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"តើអ្នកចង់ដំឡើងបច្ចុប្បន្នភាពកម្មវិធីដែលជាប់ជាមួយនេះ? ទិន្នន័យដែលមានស្រាប់របស់អ្នកនឹងមិនបាត់បង់ទេ។ កម្មវិធីបានធ្វើបច្ចុប្បន្នភាពហើយនឹងមានសិទ្ធិចូល៖"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"តើអ្នកចង់ដំឡើងបច្ចុប្បន្នភាពកម្មវិធីដែលមានស្រាប់នេះ? ទិន្នន័យដែលមានស្រាប់របស់អ្នកនឹងមិនបាត់បង់ទេ។ វាមិនទាមទារការចូលដំណើរការពិសេសណាមួយទេ។"</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"តើអ្នកចង់ដំឡើងបច្ចុប្បន្នភាពកម្មវិធីដែលជាប់ជាមួយ? ទិន្នន័យដែលមានស្រាប់របស់អ្នកនឹងមិនបាត់បង់ទេ។ វាមិនទាមទារការចូលដំណើរការពិសេសណាមួយទេ។"</string>
- <string name="install_failed" msgid="6579998651498970899">"មិនបានដំឡើងកម្មវិធី។"</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"កញ្ចប់នេះត្រូវបានរារាំងមិនឲ្យដំឡើង"</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"កម្មវិធីមិនបានដំឡើងទេ ដោយសារកញ្ចប់កម្មវិធីមិនត្រូវគ្នាជាមួយកញ្ចប់ដែលមានស្រាប់។"</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"កម្មវិធីមិនបានដំឡើងទេ ដោយសារកម្មវិធីមិនត្រូវគ្នាជាមួយថេប្លេតរបស់អ្នក។"</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"កម្មវិធីនេះមិនត្រូវគ្នាជាមួយទូរទស្សន៍របស់អ្នកទេ"</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"កម្មវិធីមិនបានដំឡើងទេ ដោយសារកម្មវិធីមិនត្រូវគ្នាជាមួយទូរសព្ទរបស់អ្នក។"</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"កម្មវិធីមិនបានដំឡើងទេ ដោយសារកញ្ចប់គ្មានសុពលភាព។"</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"មិនអាចដំឡើង <xliff:g id="APP_NAME">%1$s</xliff:g> ក្នុងកុំព្យូទ័របន្ទះរបស់អ្នក។"</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> មិនអាចដំឡើងនៅលើទូរទស្សន៍របស់អ្នកទេ។"</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"មិនអាចដំឡើង <xliff:g id="APP_NAME">%1$s</xliff:g> ក្នុងទូរស័ព្ទរបស់អ្នក។"</string>
- <string name="launch" msgid="4826921505917605463">"បើក"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"អ្នកគ្រប់គ្រងរបស់អ្នកមិនអនុញ្ញាតឲ្យដំឡើងកម្មវិធីដែលបានមកពីប្រភពដែលមិនស្គាល់ទេ"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"កម្មវិធីដែលមិនស្គាល់មិនអាចដំឡើងដោយអ្នកប្រើប្រាស់នេះបានទេ"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"អ្នកប្រើប្រាស់នេះមិនត្រូវបានអនុញ្ញាតឲ្យដំឡើងកម្មវិធីទេ"</string>
- <string name="ok" msgid="3468756155452870475">"យល់ព្រម"</string>
- <string name="settings" msgid="6743583734099755409">"ការកំណត់"</string>
- <string name="manage_applications" msgid="4033876279091996596">"គ្រប់គ្រងកម្មវិធី"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"ជំនួសកម្មវិធី?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"កម្មវិធីដែលអ្នកកំពុងដំឡើងនឹងជំនួយកម្មវិធីផ្សេង។\n\nទិន្នន័យអ្នកពីមុនរបស់អ្នកទាំងអស់នឹងត្រូវបានរក្សាទុក។"</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"នេះជាកម្មវិធីប្រព័ន្ធ។\n\nទិន្នន័យអ្នកប្រើពីមុនរបស់អ្នកទាំងអស់នឹងត្រូវបានរក្សាទុក។"</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"អស់ទំហំ"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"មិនអាចដំឡើង <xliff:g id="APP_NAME">%1$s</xliff:g> ។ លុបឯកសារខ្លះ ហើយព្យាយាមម្ដងទៀត។"</string>
- <string name="dlg_ok" msgid="6944357727705699232">"យល់ព្រម"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"រកមិនឃើញកម្មវិធី"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"រកមិនឃើញកម្មវិធីក្នុងបញ្ជីកម្មវិធីបានដំឡើង។"</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"មិនបានអនុញ្ញាត"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"អ្នកប្រើបច្ចុប្បន្នមិនមានការអនុញ្ញាតឱ្យធ្វើការលុបនេះទេ។"</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"បញ្ហា"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"មិនអាចលុបកម្មវិធីនេះបានទេ។"</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"លុបកម្មវិធី"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"លុបបច្ចុប្បន្នភាព"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> ជាផ្នែកមួយនៃកម្មវិធីដូចខាងក្រោមនេះ៖"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"តើអ្នកចង់លុបកម្មវិធីនេះឬ?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"តើអ្នកចង់លុបកម្មវិធីនេះសម្រាប់អ្នកប្រើ "<b>"ទាំងអស់"</b>"? កម្មវិធី និងទិន្នន័យរបស់វានឹងត្រូវបានលុបចេញពីអ្នកប្រើ "<b>"ទាំងអស់"</b>" ក្នុងឧបករណ៍នេះ។"</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"តើអ្នកចង់លុបកម្មវិធីនេះសម្រាប់អ្នកប្រើ <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"ជំនួសកម្មវិធីនេះដោយកំណែរោងចក្រឬ? ទិន្នន័យទាំងអស់នឹងត្រូវបានលុបចេញ។"</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"ជំនួយកម្មវិធីនេះដោយកំណែរោងចក្រឬ? ទិន្នន័យទាំងអស់នឹងត្រូវបានលុបចេញ។ វាប៉ះពាល់ដល់អ្នកប្រើឧបករណ៍នេះទាំងអស់ ដោយរាប់បញ្ចូលទាំងអ្នកប្រើដែលមានប្រវត្តិរូបការងារផងដែរ។"</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"កំពុងដំណើរការការលុប"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"មិនអាចធ្វើការលុបបានទេ"</string>
- <string name="uninstalling" msgid="5556217435895938250">"កំពុងលុប..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"កំពុងលុប <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"បានបញ្ចប់ការលុប។"</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"បានលុប <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"ការលុបបរាជ័យ។"</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"មិនអាចលុប <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> បាន។"</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"មិនអាចលុបកម្មវិធីអ្នកគ្រប់គ្រងឧបករណ៍ដែលបានដំណើរការបានទេ"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"មិនអាចលុបកម្មវិធីអ្នកគ្រប់គ្រងឧបករណ៍សម្រាប់ <xliff:g id="USERNAME">%1$s</xliff:g> ដែលបានដំណើរការបានទេ"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"កម្មវិធីនេះតម្រូវឲ្យមានសម្រាប់អ្នកប្រើ ឬប្រវត្តិរូបមួយចំនួន និងត្រូវបានលុបសម្រាប់អ្នកប្រើផ្សេងទៀត"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"កម្មវិធីនេះចាំបាច់សម្រាប់ប្រវតិ្តការងាររបស់អ្នក ហើយវាមិនអាចលុបបានទេ។"</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"កម្មវិធីនេះត្រូវបានទាមទារដោយអ្នកគ្រប់គ្រងឧបករណ៍របស់អ្នក ហើយមិនអាចលុបចេញបានទេ។"</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"គ្រប់គ្រងកម្មវិធីអ្នកគ្រប់គ្រងឧបករណ៍"</string>
- <string name="manage_users" msgid="3125018886835668847">"គ្រប់គ្រងអ្នកប្រើ"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"មិនអាចលុប <xliff:g id="APP_NAME">%1$s</xliff:g> ។"</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"មានបញ្ហាក្នុងការញែកកញ្ចប់។"</string>
- <string name="newPerms" msgid="6039428254474104210">"ថ្មី"</string>
- <string name="allPerms" msgid="1024385515840703981">"ទាំងអស់"</string>
- <string name="privacyPerms" msgid="1850527049572617">"ភាពឯកជន"</string>
- <string name="devicePerms" msgid="6733560207731294504">"ការចូលដំណើរការឧបករណ៍"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"បច្ចុប្បន្នភាពនេះមិនទាមទារសិទ្ធិថ្មីទេ។"</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"តើអ្នកចង់ផ្ដល់សិទ្ធិដូចខាងក្រោម? វានឹងចូលទៅ៖"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"បដិសេធ"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"ព័ត៌មានបន្ថែម"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"បដិសេធទោះយ៉ាងណាក៏ដោយ"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"អនុញ្ញាតឲ្យ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"បានបិទ <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"បានបិទទាំងអស់"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"មិនបានបិទអ្វីទាំងអស់"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"អនុញ្ញាត"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"កម្មវិធី"</string>
- <string name="app_permissions" msgid="3146758905824597178">"ការអនុញ្ញាតកម្មវិធី"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"កុំសួរទៀត"</string>
- <string name="no_permissions" msgid="3210542466245591574">"គ្មានសិទ្ធិអនុញ្ញាត"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"សិទ្ធិអនុញ្ញាតបន្ថែម"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"កម្មវិធីគ្រប់គ្រងការអនុញ្ញាត"</string>
+ <string name="ok" msgid="4417794827535157922">"យល់ព្រម"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"ការអនុញ្ញាត"</string>
+ <string name="cancel" msgid="7279939269964834974">"បោះបង់"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"រកមិនឃើញកម្មវិធីទេ"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"បដិសេធ"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"បដិសេធ ហើយកុំសួរម្តងទៀត"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"ព័ត៌មានបន្ថែម"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"បដិសេធចុះមិនអីទេ"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"អនុញ្ញាតឱ្យ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g> មែនទេ?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"អនុញ្ញាតឱ្យ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g> ជានិច្ចមែនទេ?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"ខណៈពេលប្រើកម្មវិធីតែប៉ុណ្ណោះ"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"ជានិច្ច"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"បដិសេធ ហើយកុំសួរម្តងទៀត"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"បានបិទ <xliff:g id="COUNT">%1$d</xliff:g>"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"បានបិទទាំងអស់"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"មិនបានបិទអ្វីទាំងអស់"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"អនុញ្ញាត"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"អនុញ្ញាតគ្រប់ពេល"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"អនុញ្ញាតពេលកំពុងប្រើប្រាស់កម្មវិធីតែប៉ុណ្ណោះ"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"កម្មវិធី"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"ការអនុញ្ញាតកម្មវិធី"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"កម្មវិធីគ្រប់គ្រងការអនុញ្ញាត"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"កុំសួរម្ដងទៀត"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"គ្មានការអនុញ្ញាតទេ"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"ការអនុញ្ញាតបន្ថែម"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"បើកព័ត៌មានកម្មវិធី"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"កម្មវិធីនេះត្រូវបានរចនាឡើងសម្រាប់កំណែចាស់របស់ Android។ ការបដិសេធសិទ្ធិអនុញ្ញាតអាចបណ្តាលឲ្យវាបំពេញមុខងារមិនដូចអ្វីដែលគេរំពឹងទុកតទៅទៀតទេ។"</string>
- <string name="default_permission_description" msgid="4992892207044156668">"ប្រតិបត្តិការសកម្មភាពមិនស្គាល់"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"បានអនុញ្ញាតកម្មវិធី <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="6773743421743728921">"បង្ហាញប្រព័ន្ធ"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"លាក់ប្រព័ន្ធ"</string>
- <string name="permission_title" msgid="6495415273398916381">"ការអនុញ្ញាត <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"គ្មានកម្មវិធី"</string>
- <string name="location_settings" msgid="1774875730854491297">"ការកំណត់ទីតាំង"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> គឺជាអ្នកផ្តល់សេវាកម្មទីតាំងសម្រាប់ឧបករណ៍នេះ។ ការចូលដំណើរការទីតាំងអាចកែសម្រួលបានចេញពីការកំណត់ទីតាំង។"</string>
- <string name="system_warning" msgid="7103819124542305179">"ប្រសិនបើអ្នកបដិសេធសិទ្ធិអនុញ្ញាតនេះ លក្ខណៈពិសេសគោលនៃឧបករណ៍របស់អ្នកអាចមិនដំណើរការដូចដែលអ្នកចង់បានតទៅទៀតទេ។"</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"អនុវត្តតាមគោលការណ៍"</string>
- <string name="loading" msgid="7811651799620593731">"កំពុងដំណើរការ..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"សិទ្ធិអនុញ្ញាតទាំងអស់"</string>
- <string name="other_permissions" msgid="2016192512386091933">"សមត្ថភាពកម្មវិធីផ្សេងទៀត"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"សំណើសុំសិទ្ធិអនុញ្ញាត"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"បានរកឃើញអេក្រង់ត្រួតគ្នា"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"ដើម្បីប្តូរការកំណត់សិទ្ធិអនុញ្ញាតនេះ ជាដំបូងអ្នកត្រូវបិទអេក្រង់ត្រួតគ្នានៅក្នុង ការកំណត់ > កម្មវិធី"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"បើកការកំណត់"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"សកម្មភាពដំឡើង/លុបការដំឡើងមិនគាំទ្រនៅលើ Wear ទេ"</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ត្រូវបានអាប់ដេតហើយ។ អនុញ្ញាតឲ្យ <xliff:g id="APP_NAME_1">%1$s</xliff:g> ចូលដំណើរការធាតុខាងក្រោមឬ?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"ជ្រើសរើសអ្វីដែលត្រូវអនុញ្ញាតឲ្យ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ចូលដំណើរការ"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ត្រូវបានអាប់ដេត។ ជ្រើសរើសអ្វីដែលត្រូវអនុញ្ញាតឲ្យកម្មវិធីនេះចូលដំណើរការ។"</string>
- <string name="review_button_cancel" msgid="957906817733578877">"បោះបង់"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"បន្ត"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"សិទ្ធិអនុញ្ញាតថ្មី"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"សិទ្ធិអនុញ្ញាតបច្ចុប្បន្ន"</string>
- <string name="message_staging" msgid="6151794817691100003">"កំពុងសាកល្បងកម្មវិធី…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"មិនស្គាល់"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"ដើម្បីការពារសុវតិ្ថភាពរបស់អ្នក ថេប្លេតរបស់អ្នកមិនត្រូវបានអនុញ្ញាតឲ្យដំឡើងកម្មវិធីដែលមិនស្គាល់ពីប្រភពនេះទេ។"</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"ដើម្បីការពារសុវតិ្ថភាពរបស់អ្នក ទូរទស្សន៍របស់អ្នកមិនត្រូវបានអនុញ្ញាតឲ្យដំឡើងកម្មវិធីដែលមិនស្គាល់ពីប្រភពនេះទេ។"</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"ដើម្បីការពារសុវតិ្ថភាពរបស់អ្នក ទូរសព្ទរបស់អ្នកមិនត្រូវបានអនុញ្ញាតឲ្យដំឡើងកម្មវិធីដែលមិនស្គាល់ពីប្រភពនេះទេ។"</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"ទូរសព្ទ និងទិន្នន័យផ្ទាល់ខ្លួនរបស់អ្នកងាយនឹងរងគ្រោះពីការវាយប្រហារពីកម្មវិធីដែលមិនស្គាល់។ ប្រសិនបើដំឡើងកម្មវិធីនេះ មានន័យថាអ្នកទទួលខុសត្រូវលើការខូចខាតណាមួយចំពោះទូរសព្ទ ឬការបាត់បង់ទិន្នន័យរបស់អ្នក ដែលអាចបណ្តាលមកពីការប្រើប្រាស់កម្មវិធីនោះ។"</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"ថេប្លេត និងទិន្នន័យផ្ទាល់ខ្លួនរបស់អ្នកងាយនឹងរងគ្រោះពីការវាយប្រហារពីកម្មវិធីដែលមិនស្គាល់។ ប្រសិនបើដំឡើងកម្មវិធីនេះ មានន័យថាអ្នកទទួលខុសត្រូវលើការខូចខាតណាមួយចំពោះថេប្លេត ឬការបាត់បង់ទិន្នន័យរបស់អ្នក ដែលអាចបណ្តាលមកពីការប្រើប្រាស់កម្មវិធីនោះ។"</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"ទូរទស្សន៍ និងទិន្នន័យផ្ទាល់ខ្លួនរបស់អ្នកងាយនឹងរងគ្រោះពីការវាយប្រហារពីកម្មវិធីដែលមិនស្គាល់។ ប្រសិនបើដំឡើងកម្មវិធីនេះ មានន័យថាអ្នកទទួលខុសត្រូវលើការខូចខាតណាមួយចំពោះទូរទស្សន៍ ឬការបាត់បង់ទិន្នន័យរបស់អ្នក ដែលអាចបណ្តាលមកពីការប្រើប្រាស់កម្មវិធីនោះ។"</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"បន្ត"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"ការកំណត់"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"ការដំឡើង/ការលុបកម្មវិធីឧបករណ៍ពាក់"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"កម្មវិធីនេះត្រូវបានរចនាឡើងសម្រាប់កំណែចាស់ជាងនេះរបស់ Android ។ ការបដិសេធការអនុញ្ញាតអាចបណ្តាលឱ្យវាបំពេញមុខងារមិនដូចការគ្រោងទុកតទៅទៀតទេ។"</string>
+ <string name="default_permission_description" msgid="692254823411049573">"ប្រតិបត្តិការសកម្មភាពមិនស្គាល់"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"បានអនុញ្ញាតកម្មវិធី <xliff:g id="COUNT_0">%1$d</xliff:g> ក្នុងចំណោម <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"ការប្រើប្រាស់ថ្មីៗ"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"មើលផ្ទាំងគ្រប់គ្រងការអនុញ្ញាត"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"បង្ហាញប្រព័ន្ធ"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"លាក់ប្រព័ន្ធ"</string>
+ <string name="no_apps" msgid="2377153782338039463">"គ្មានកម្មវិធី"</string>
+ <string name="location_settings" msgid="547378321761364906">"ការកំណត់ទីតាំង"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> គឺជាកម្មវិធីផ្តល់សេវាកម្មទីតាំងសម្រាប់ឧបករណ៍នេះ។ ការចូលប្រើទីតាំងអាចកែសម្រួលបានពីការកំណត់ទីតាំង។"</string>
+ <string name="system_warning" msgid="6868290533389195836">"ប្រសិនបើអ្នកបដិសេធការអនុញ្ញាតនេះ មុខងារសំខាន់ៗនៃឧបករណ៍របស់អ្នកប្រហែលជាមិនដំណើរការដូចការគ្រោងទុកតទៅទៀតទេ។"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"អនុវត្តតាមគោលការណ៍"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"ការចូលប្រើផ្ទៃខាងក្រោយត្រូវបានបិទដោយគោលការណ៍"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"ការចូលប្រើផ្ទៃខាងក្រោយត្រូវបានបើកដោយគោលការណ៍"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"ការចូលប្រើផ្ទៃខាងមុខត្រូវបានបើកដោយគោលការណ៍"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"គ្រប់គ្រងដោយអ្នកគ្រប់គ្រង"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"ការចូលប្រើផ្ទៃខាងក្រោយត្រូវបានបិទដោយអ្នកគ្រប់គ្រង"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"ការចូលប្រើផ្ទៃខាងក្រោយត្រូវបានបើកដោយអ្នកគ្រប់គ្រង"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"ការចូលប្រើផ្ទៃខាងមុខត្រូវបានបើកដោយអ្នកគ្រប់គ្រង"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"ការអនុញ្ញាតដែលបានកំណត់ដោយប្រព័ន្ធ"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"ជានិច្ច"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"ខណៈពេលប្រើកម្មវិធីតែប៉ុណ្ណោះ"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"កុំឱ្យសោះ"</string>
+ <string name="loading" msgid="323483393167148377">"កំពុងផ្ទុក…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"ការអនុញ្ញាតទាំងអស់"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"សមត្ថភាពកម្មវិធីផ្សេងទៀត"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"សំណើសុំការអនុញ្ញាត"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"បានរកឃើញការត្រួតគ្នាលើអេក្រង់"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"ដើម្បីប្តូរការកំណត់ការអនុញ្ញាតនេះ មុនដំបូងអ្នកត្រូវបិទការត្រួតគ្នាលើអេក្រង់នៅក្នុង ការកំណត់ > កម្មវិធី"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"បើកការកំណត់"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"សកម្មភាពដំឡើង/លុបចេញមិនអាចប្រើនៅលើ Wear បានទេ។"</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"ជ្រើសរើសអ្វីដែលត្រូវអនុញ្ញាតឱ្យ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ចូលប្រើ"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ត្រូវបានដំឡើងជំនាន់។ ជ្រើសរើសអ្វីដែលត្រូវអនុញ្ញាតឱ្យកម្មវិធីនេះចូលប្រើ។"</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"បោះបង់"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"បន្ត"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"ការអនុញ្ញាតថ្មី"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"ការអនុញ្ញាតបច្ចុប្បន្ន"</string>
+ <string name="message_staging" msgid="641286607664721291">"កំពុងសាកល្បងកម្មវិធី…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"មិនស្គាល់"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"ផ្ទាំងគ្រប់គ្រង"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">ការចូលប្រើចុងក្រោយ៖ <xliff:g id="TIME_3">%1$s</xliff:g>\nការចូលប្រើ <xliff:g id="NUM_4">%2$s</xliff:g> ដង (<xliff:g id="NUM_5">%3$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> ដង (<xliff:g id="NUM_2">%3$s</xliff:g> ដងនៅផ្ទៃខាងក្រោយ)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">ការចូលប្រើចុងក្រោយ៖ <xliff:g id="TIME_3">%1$s</xliff:g>\nការចូលប្រើ <xliff:g id="NUM_4">%2$s</xliff:g> ដង\nរយៈពេល៖ <xliff:g id="TIME_5">%3$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> ដង\nរយៈពេល៖ <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">ការចូលប្រើចុងក្រោយ៖ <xliff:g id="TIME_4">%1$s</xliff:g>\nការចូលប្រើ <xliff:g id="NUM_5">%2$s</xliff:g> ដង (<xliff:g id="NUM_6">%3$s</xliff:g> ដងនៅផ្ទៃខាងក្រោយ)\nរយៈពេល៖ <xliff:g id="TIME_7">%3$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> ដង (<xliff:g id="NUM_2">%3$s</xliff:g> ដងនៅផ្ទៃខាងក្រោយ)\nរយៈពេល៖ <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"ការអនុញ្ញាតណាមួយ"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"ពេលណាក៏បាន"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"7 ថ្ងៃចុងក្រោយ"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"24 ម៉ោងចុងក្រោយ"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"1 ម៉ោងចុងក្រោយ"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"15 នាទីចុងក្រោយ"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"1 នាទីចុងក្រោយ"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"គ្មានការប្រើប្រាស់ការអនុញ្ញាតទេ"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"ចូលប្រើបានគ្រប់ពេល"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"ការចូលប្រើក្នុងរយៈពេល 7 ថ្ងៃចុងក្រោយ"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"ការចូលប្រើក្នុងរយៈពេល 24 ម៉ោងចុងក្រោយ"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"ការចូលប្រើនៅម៉ោងចុងក្រោយ"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"ការចូលប្រើក្នុងរយៈពេល 15 នាទីចុងក្រោយ"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"ការចូលប្រើក្នុងរយៈពេល 1 នាទីចុងក្រោយ"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"ការប្រើប្រាស់ការអនុញ្ញាតច្រើនបំផុតគ្រប់ពេល"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"ការប្រើប្រាស់ការអនុញ្ញាតច្រើនបំផុតក្នុងរយៈពេល 7 ថ្ងៃចុងក្រោយ"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"ការប្រើប្រាស់ការអនុញ្ញាតច្រើនបំផុតក្នុងរយៈពេល 24 ម៉ោងចុងក្រោយ"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"ការប្រើប្រាស់ការអនុញ្ញាតច្រើនបំផុតក្នុងរយៈពេល 1 ម៉ោងចុងក្រោយ"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"ការប្រើប្រាស់ការអនុញ្ញាតច្រើនបំផុតក្នុងរយៈពេល 15 នាទីចុងក្រោយ"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"ការប្រើការអនុញ្ញាតច្រើនបំផុតរយៈពេល 1 នាទីចុងក្រោយ"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"កម្មវិធី"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"ត្រងតាម៖ <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"លុបតម្រង"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"ត្រងតាម"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"ត្រងតាមការអនុញ្ញាត"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"ការអនុញ្ញាតច្រើនបំផុត"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"ការចូលប្រើច្រើនបំផុត"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"ថ្មីៗ"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"ផ្ទុកឡើងវិញ"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"ការប្រើប្រាស់ការអនុញ្ញាតកម្មវិធី"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"ចូលប្រើ៖ <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="4040424337831328212">"ចូលប្រើ៖ <xliff:g id="NUM">%1$s</xliff:g> ដង។ បានប្រើចុងក្រោយ <xliff:g id="TIME">%2$s</xliff:g> មុន។"</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"អនុញ្ញាត"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"អនុញ្ញាតគ្រប់ពេល"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"អនុញ្ញាតពេលកំពុងប្រើប្រាស់កម្មវិធីតែប៉ុណ្ណោះ"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"បដិសេធ"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"ការអនុញ្ញាត <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"ការចូលប្រើ <xliff:g id="PERM">%1$s</xliff:g> សម្រាប់ <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> បានចូលប្រើ <xliff:g id="PERM">%2$s</xliff:g> របស់អ្នកកាលពី <xliff:g id="TIME">%3$s</xliff:g> មុន។"</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> មិនបានចូលប្រើ <xliff:g id="PERM">%2$s</xliff:g> របស់អ្នកទេ។"</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"មើលការប្រើប្រាស់ការអនុញ្ញាតលម្អិត"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"ការចូលប្រើចុងក្រោយ៖ <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"មិនធ្លាប់ចូលប្រើ"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"បានអនុញ្ញាត"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"អនុញ្ញាតខណៈពេលប្រើប្រាស់តែប៉ុណ្ណោះ"</string>
+ <string name="denied_header" msgid="2277998574238617699">"បានបដិសេធ"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"មើលការប្រើប្រាស់លម្អិត"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ថ្ងៃ</item>
+ <item quantity="one">1 ថ្ងៃ</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ម៉ោង</item>
+ <item quantity="one">1 ម៉ោង</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> នាទី</item>
+ <item quantity="one">1 នាទី</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> វិនាទី</item>
+ <item quantity="one">1 វិនាទី</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"ប្រើ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ជា <xliff:g id="ROLE_NAME">%2$s</xliff:g> របស់អ្នក?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"ប្រើ <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> ជំនួសឱ្យ <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> ជា <xliff:g id="ROLE_NAME">%2$s</xliff:g> របស់អ្នក?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"ការរំលឹកអំពីការអនុញ្ញាត"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> បានប្រើប្រាស់ទីតាំងរបស់អ្នក"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"កម្មវិធីនេះអាចចូលប្រើប្រាស់ទីតាំងរបស់អ្នកបានជានិច្ច។ សូមចុចដើម្បីប្ដូរ។"</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"ពេលកំពុងប្រើប្រាស់កម្មវិធីតែប៉ុណ្ណោះ"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"មិនបានផ្ដល់ការអនុញ្ញាតទេ"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"មិនបានបដិសេធការអនុញ្ញាតទេ"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"មិនបានផ្ដល់ការអនុញ្ញាតឱ្យកម្មវិធីទេ"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"មិនបានបដិសេធកម្មវិធីទេ"</string>
+ <string name="launch_app" msgid="5641437562665039291">"បើក"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"លុប"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"បង្ខំឱ្យបញ្ឈប់"</string>
+ <string name="settings" msgid="2884124136779508907">"ការកំណត់"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> មានសិទ្ធិពេញលេញក្នុងការចូលប្រើឧបករណ៍របស់អ្នក"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"សេវាកម្មភាពងាយស្រួល <xliff:g id="NUM_SERVICES">%s</xliff:g> មានសិទ្ធិពេញលេញក្នុងការចូលប្រើឧបករណ៍របស់អ្នក"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> អាចមើលអេក្រង់ សកម្មភាព និងការវាយបញ្ចូលរបស់អ្នក ធ្វើសកម្មភាព និងគ្រប់គ្រងផ្ទាំងអេក្រង់បាន។"</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"សេវាកម្មទាំងនេះអាចមើលអេក្រង់ សកម្មភាព និងការវាយបញ្ចូលរបស់អ្នក ធ្វើសកម្មភាព និងគ្រប់គ្រងផ្ទាំងអេក្រង់បាន។"</string>
+ <string name="default_apps" msgid="8554530939151957828">"កម្មវិធីលំនាំដើម"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"គ្មានកម្មវិធីលំនាំដើមទេ"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"លំនាំដើមសម្រាប់ការងារ"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"គ្មាន"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"គ្មានកម្មវិធីទេ"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"ការចូលប្រើកម្មវិធីពិសេស"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"គ្មានការចូលប្រើកម្មវិធីពិសេសទេ"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"គ្មានកម្មវិធីទេ"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"កម្មវិធីជំនួយ"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"កម្មវិធីរុករកតាមអ៊ីនធឺណិត"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"កម្មវិធីទូរសព្ទ"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"កម្មវិធីផ្ញើសារ SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"កម្មវិធីអាសន្ន"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"កម្មវិធីទំព័រដើម"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"កម្មវិធីតន្រី្ត"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"កម្មវិធីសាលរូបភាព"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"កម្មវិធីទូរសព្ទនៃមុខងាររថយន្ត"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"កម្មវិធីបញ្ជូនបន្តការហៅទូរសព្ទ"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"កម្មវិធីត្រួតពិនិត្យការហៅទូរសព្ទ"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"កម្មវិធីដៃគូសម្រាប់ហៅទូរសព្ទ"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"កម្មវិធីបញ្ចាំងរបស់រថយន្ត"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"មិនស្គាល់កម្រងព័ត៌មានការងារទេ"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"ចំណាំ៖ ប្រសិនបើអ្នកចាប់ផ្ដើមឧបករណ៍របស់អ្នកឡើងវិញ និងបានកំណត់ការចាក់សោអេក្រង់ កម្មវិធីនេះមិនអាចចាប់ផ្តើមបានទេ រហូតទាល់តែអ្នកដោះសោឧបករណ៍របស់អ្នក។"</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"ជំនួយការនឹងអាចអានព័ត៌មានអំពីកម្មវិធីដែលកំពុងប្រើនៅក្នុងប្រព័ន្ធរបស់អ្នក រួមទាំងព័ត៌មានដែលអាចមើលឃើញនៅលើអេក្រង់របស់អ្នក ឬព័ត៌មានដែលអាចចូលប្រើនៅក្នុងកម្មវិធីនោះផងដែរ។"</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"ចែករំលែកទិន្នន័យនៃការជួសជុល"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"ចែករំលែកទិន្នន័យលម្អិតនៃការជួសជុល?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> ចង់បង្ហោះព័ត៌មាននៃការជួសជុល។"</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"ចែករំលែកទិន្នន័យនៃការជួសជុល"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> កំពុងស្នើសុំបង្ហោះរបាយការណ៍អំពីបញ្ហាពីឧបករណ៍នេះ ដែលបានធ្វើឡើងនៅថ្ងៃទី <xliff:g id="DATE">%2$s</xliff:g> ម៉ោង <xliff:g id="TIME">%3$s</xliff:g>។ របាយការណ៍អំពីបញ្ហារួមមានព័ត៌មានអំពីឧបករណ៍របស់អ្នក ឬព័ត៌មានដែលបានកត់ត្រាដោយកម្មវិធីដូចជា ឈ្មោះអ្នកប្រើប្រាស់ ទិន្នន័យទីតាំង ព័ត៌មានសម្គាល់ឧបករណ៍ និងព័ត៌មានបណ្ដាញជាដើម។ ចែករំលែករបាយការណ៍អំពីបញ្ហាជាមួយកម្មវិធី និងមនុស្សដែលអ្នកទុកចិត្តប៉ុណ្ណោះ ពាក់ព័ន្ធនឹងព័ត៌មាននេះ។ អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_1">%4$s</xliff:g> បង្ហោះរបាយការណ៍អំពីបញ្ហា?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"អនុញ្ញាត"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"បដិសេធ"</string>
</resources>
diff --git a/res/values-kn-television/strings.xml b/res/values-kn-television/strings.xml
index 2af5a4b..51629d8 100644
--- a/res/values-kn-television/strings.xml
+++ b/res/values-kn-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"ನಿರಾಕರಿಸಿ ಹಾಗೂ ಮತ್ತೊಮ್ಮೆ ಕೇಳಬೇಡ"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"ನೀವು ಇದನ್ನು ನಂತರದಲ್ಲಿ ಸೆಟ್ಟಿಂಗ್ಗಳು > ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿ ಬದಲಾಯಿಸಬಹುದು"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"ಸಿಸ್ಟಂ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ತೋರಿಸು"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"ಅಪ್ಲಿಕೇಶನ್ ಅನುಮತಿಗಳು"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"ಅಪ್ಲಿಕೇಶನ್ ಅನುಮತಿಗಳು"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> ಅನುಮತಿಗಳು"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"ಹೆಚ್ಚುವರಿ ಅನುಮತಿಗಳು"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> ಅನುಮತಿಗಳು"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"ನಿರಾಕರಿಸಿ ಹಾಗೂ ಮತ್ತೊಮ್ಮೆ ಕೇಳಬೇಡಿ"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"ನೀವು ಇದನ್ನು ನಂತರದಲ್ಲಿ ಸೆಟ್ಟಿಂಗ್ಗಳು > ಆ್ಯಪ್ಗಳಲ್ಲಿ ಬದಲಾಯಿಸಬಹುದು"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"ಸಿಸ್ಟಂ ಆ್ಯಪ್ಗಳನ್ನು ತೋರಿಸಿ"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"ಆ್ಯಪ್ ಅನುಮತಿಗಳು"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"ಆ್ಯಪ್ ಅನುಮತಿಗಳು"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> ಅನುಮತಿಗಳು"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"ಹೆಚ್ಚುವರಿ ಅನುಮತಿಗಳು"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> ಅನುಮತಿಗಳು"</string>
</resources>
diff --git a/res/values-kn-watch/strings.xml b/res/values-kn-watch/strings.xml
index 1a9a993..088e8d4 100644
--- a/res/values-kn-watch/strings.xml
+++ b/res/values-kn-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"ನಿರಾಕರಿಸಿ, ಮತ್ತೆ ಕೇಳಬೇಡಿ"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"ಸಿಸ್ಟಂ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ತೋರಿಸು"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
- <string name="generic_yes" msgid="3394094077553763689">"ಹೌದು"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"ರದ್ದುಮಾಡಿ"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"ನಿರಾಕರಿಸು, ಮತ್ತೆ ಕೇಳಬೇಡ"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"ಸಿಸ್ಟಂ ಆ್ಯಪ್ಗಳನ್ನು ತೋರಿಸಿ"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"ಬದಲಿಸಲಾಗುವುದಿಲ್ಲ"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"ಹೌದು"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"ರದ್ದುಮಾಡಿ"</string>
</resources>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index eb5bb64..1e09252 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,286 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"ಪ್ಯಾಕೇಜ್ ಸ್ಥಾಪಕ"</string>
- <string name="next" msgid="3057143178373252333">"ಮುಂದೆ"</string>
- <string name="install" msgid="5896438203900042068">"ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿ"</string>
- <string name="done" msgid="3889387558374211719">"ಮುಗಿದಿದೆ"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"ಇದಕ್ಕಾಗಿ ಈ ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸಿ:"</string>
- <string name="cancel" msgid="8360346460165114585">"ರದ್ದುಮಾಡಿ"</string>
- <string name="unknown" msgid="4742479012767208045">"ಅಪರಿಚಿತ"</string>
- <string name="installing" msgid="8613631001631998372">"ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ…"</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ಅನ್ನು ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ…"</string>
- <string name="install_done" msgid="3682715442154357097">"ಅಪ್ಲಿಕೇಶನ್ ಸ್ಥಾಪಿಸಲಾಗಿದೆ."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"ನೀವು ಈ ಅಪ್ಲಿಕೇಶನ್ ಸ್ಥಾಪಿಸಲು ಬಯಸುವಿರಾ? ಇದು ಇಲ್ಲಿಗೆ ಪ್ರವೇಶ ಪಡೆದುಕೊಳ್ಳುತ್ತದೆ:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"ನೀವು ಈ ಅಪ್ಲಿಕೇಶನ್ ಸ್ಥಾಪಿಸಲು ಬಯಸುವಿರಾ? ಇದಕ್ಕೆ ಯಾವುದೇ ವಿಶೇಷ ಪ್ರವೇಶದ ಅಗತ್ಯವಿಲ್ಲ."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"ನೀವು ಈ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಅಪ್ಲಿಕೇಶನ್ನ ಅಪ್ಡೇಟ್ ಆದ ಅಪ್ಲಿಕೇಶನ್ ಸ್ಥಾಪಿಸಲು ಬಯಸುವಿರಾ? ಈಗಿರುವ ನಿಮ್ಮ ಡೇಟಾ ಕಳೆದು ಹೋಗುವುದಿಲ್ಲ. ಅಪ್ಡೇಟ್ ಆದ ಅಪ್ಲಿಕೇಶನ್ ಇಲ್ಲಿಗೆ ಪ್ರವೇಶ ಪಡೆದುಕೊಳ್ಳುತ್ತದೆ:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"ನೀವು ಈ ಬಿಲ್ಟ್-ಇನ್-ಅಪ್ಲಿಕೇಶನ್ನ ಅಪ್ಡೇಟ್ ಆದ ಅಪ್ಲಿಕೇಶನ್ ಸ್ಥಾಪಿಸಿಕೊಳ್ಳಲು ಬಯಸುವಿರಾ? ಈಗಿರುವ ನಿಮ್ಮ ಡೇಟಾ ಕಳೆದು ಹೋಗುವುದಿಲ್ಲ. ಅಪ್ಡೇಟ್ ಆದ ಅಪ್ಲಿಕೇಶನ್ ಇಲ್ಲಿಗೆ ಪ್ರವೇಶ ಪಡೆದುಕೊಳ್ಳುತ್ತದೆ:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"ನೀವು ಈ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಅಪ್ಲಿಕೇಶನ್ನ ಅಪ್ಡೇಟ್ ಆದ ಅಪ್ಲಿಕೇಶನ್ ಸ್ಥಾಪಿಸಲು ಬಯಸುವಿರಾ? ಈಗಿರುವ ನಿಮ್ಮ ಡೇಟಾ ಕಳೆದು ಹೋಗುವುದಿಲ್ಲ. ಇದಕ್ಕೆ ಯಾವುದೇ ವಿಶೇಷ ಪ್ರವೇಶದ ಅಗತ್ಯವಿಲ್ಲ."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"ನೀವು ಈ ಬಿಲ್ಟ್-ಇನ್-ಅಪ್ಲಿಕೇಶನ್ನ ಅಪ್ಡೇಟ್ ಆದ ಅಪ್ಲಿಕೇಶನ್ ಸ್ಥಾಪಿಸಿಕೊಳ್ಳಲು ಬಯಸುವಿರಾ? ಈಗಿರುವ ನಿಮ್ಮ ಡೇಟಾ ಕಳೆದು ಹೋಗುವುದಿಲ್ಲ. ಇದಕ್ಕೆ ಯಾವುದೇ ವಿಶೇಷ ಪ್ರವೇಶದ ಅಗತ್ಯವಿಲ್ಲ."</string>
- <string name="install_failed" msgid="6579998651498970899">"ಅಪ್ಲಿಕೇಶನ್ ಸ್ಥಾಪಿಸಲಾಗಿಲ್ಲ."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"ಸ್ಥಾಪಿಸುವಿಕೆಯಿಂದ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"ಪ್ಯಾಕೇಜ್ನಂತೆ ಸ್ಥಾಪಿತವಾಗದಿರುವ ಅಪ್ಲಿಕೇಶನ್ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಪ್ಯಾಕೇಜ್ ಜೊತೆಗೆ ಸಂಘರ್ಷವಾಗುತ್ತದೆ."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"ಅಪ್ಲಿಕೇಶನ್ನಂತೆ ಸ್ಥಾಪಿತವಾಗದಿರುವ ಅಪ್ಲಿಕೇಶನ್ ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ ಜೊತೆಗೆ ಹೊಂದಾಣಿಕೆಯಾಗುವುದಿಲ್ಲ."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"ಈ ಅಪ್ಲಿಕೇಶನ್ ನಿಮ್ಮ ಟಿವಿ ಜೊತೆ ಹೊಂದಾಣಿಕೆಯಾಗುವುದಿಲ್ಲ."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"ಅಪ್ಲಿಕೇಶನ್ನಂತೆ ಸ್ಥಾಪಿತವಾಗದಿರುವ ಅಪ್ಲಿಕೇಶನ್ ನಿಮ್ಮ ಫೋನ್ ಜೊತೆಗೆ ಹೊಂದಾಣಿಕೆಯಾಗುವುದಿಲ್ಲ."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"ಪ್ಯಾಕೇಜ್ನಂತೆ ಸ್ಥಾಪಿತವಾಗದಿರುವ ಅಪ್ಲಿಕೇಶನ್ ಅಮಾನ್ಯವಾಗಿರುವಂತೆ ತೋರುತ್ತದೆ."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ನಲ್ಲಿ <xliff:g id="APP_NAME">%1$s</xliff:g> ಸ್ಥಾಪಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಅನ್ನು ನಿಮ್ಮ ಟಿವಿಗೆ ಸ್ಥಾಪಿಸಲಾಗುವುದಿಲ್ಲ."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"ನಿಮ್ಮ ಫೋನ್ನಲ್ಲಿ <xliff:g id="APP_NAME">%1$s</xliff:g> ಸ್ಥಾಪಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ."</string>
- <string name="launch" msgid="4826921505917605463">"ತೆರೆ"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ಅಪರಿಚಿತ ಮೂಲಗಳ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಸ್ಥಾಪನೆಯನ್ನು ಅನುಮತಿಸುವುದಿಲ್ಲ"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"ಈ ಬಳಕೆದಾರರು ಅಪರಿಚಿತ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ಈ ಬಳಕೆದಾರರನ್ನು ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ"</string>
- <string name="ok" msgid="3468756155452870475">"ಸರಿ"</string>
- <string name="settings" msgid="6743583734099755409">"ಸೆಟ್ಟಿಂಗ್ಗಳು"</string>
- <string name="manage_applications" msgid="4033876279091996596">"ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ನಿರ್ವಹಿಸಿ"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"ಅಪ್ಲಿಕೇಶನ್ ಬದಲಿಸುವುದೇ?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"ನೀವು ಸ್ಥಾಪಿಸುತ್ತಿರುವ ಅಪ್ಲಿಕೇಶನ್ ಮತ್ತೊಂದು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಬದಲಾಯಿಸುತ್ತದೆ.\n\nನಿಮ್ಮ ಹಿಂದಿನ ಎಲ್ಲಾ ಬಳಕೆದಾರ ಡೇಟಾವನ್ನು ಉಳಿಸಲಾಗುತ್ತದೆ."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"ಇದು ಸಿಸ್ಟಂ ಅಪ್ಲಿಕೇಶನ್ ಆಗಿದೆ.\n\nನಿಮ್ಮ ಹಿಂದಿನ ಎಲ್ಲಾ ಬಳಕೆದಾರ ಡೇಟಾವನ್ನು ಉಳಿಸಲಾಗುತ್ತದೆ."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"ಖಾಲಿ ಇಲ್ಲ"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಅನ್ನು ಸ್ಥಾಪಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಕೊಂಚ ಸ್ಥಳವನ್ನು ಖಾಲಿ ಮಾಡಿ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"ಸರಿ"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"ಅಪ್ಲಿಕೇಶನ್ ಕಂಡುಬಂದಿಲ್ಲ"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"ಸ್ಥಾಪಿಸಲಾಗಿರುವ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಪಟ್ಟಿಯಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್ ಕಂಡುಬಂದಿಲ್ಲ."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"ಈ ಅಸ್ಥಾಪಿಸುವಿಕೆಯನ್ನು ಪ್ರಸ್ತುತ ಬಳಕೆದಾರರಿಗೆ ನಿರ್ವಹಿಸಲು ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"ದೋಷ"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"ಅಪ್ಲಿಕೇಶನ್ ಅಸ್ಥಾಪಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"ಅಪ್ಲಿಕೇಶನ್ ಅನ್ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿ"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"ನವೀಕರಣವನ್ನು ಅನ್ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿ"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> ಎಂಬುದು ಕೆಳಗಿನ ಅಪ್ಲಿಕೇಶನ್ನ ಭಾಗವಾಗಿದೆ:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"ನೀವು ಈ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಅಸ್ಥಾಪಿಸಲು ಬಯಸುವಿರಾ?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"ನೀವು "<b>"ಎಲ್ಲಾ"</b>" ಬಳಕೆದಾರರಿಗೂ ಈ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಅಸ್ಥಾಪಿಸಲು ಬಯಸುವಿರಾ? ಸಾಧನದಲ್ಲಿನ "<b>"ಎಲ್ಲಾ"</b>" ಬಳಕೆದಾರರಿಂದ ಅಪ್ಲಿಕೇಶನ್ ಮತ್ತು ಅದರ ಡೇಟಾವನ್ನು ತೆಗೆದುಹಾಕಲಾಗುವುದು."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"<xliff:g id="USERNAME">%1$s</xliff:g> ಬಳಕೆದಾರರಿಗೆ ಈ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಅಸ್ಥಾಪಿಸಲು ನೀವು ಬಯಸುವಿರಾ?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"ಈ ಅಪ್ಲಿಕೇಶನ್ ಬದಲಿಗೆ ಫ್ಯಾಕ್ಟರಿ ಆವೃತ್ತಿಯನ್ನು ಬದಲಾಯಿಸುವುದೇ? ಎಲ್ಲಾ ಡೇಟಾ ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"ಈ ಅಪ್ಲಿಕೇಶನ್ ಬದಲಿಗೆ ಫ್ಯಾಕ್ಟರಿ ಆವೃತ್ತಿಯನ್ನು ಬದಲಾಯಿಸುವುದೇ? ಎಲ್ಲಾ ಡೇಟಾ ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ. ಕೆಲಸದ ಪ್ರೊಫೈಲ್ಗಳನ್ನು ಹೊಂದಿರುವವುಗಳನ್ನು ಒಳಗೊಂಡಂತೆ ಈ ಸಾಧನದ ಎಲ್ಲಾ ಬಳಕೆದಾರರಿಗೆ ಇದು ಪರಿಣಾಮ ಬೀರುತ್ತದೆ."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"ಚಾಲನೆಯಲ್ಲಿರುವ ಅಸ್ಥಾಪನೆಗಳು"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"ವಿಫಲಗೊಂಡ ಅಸ್ಥಾಪನೆಗಳು"</string>
- <string name="uninstalling" msgid="5556217435895938250">"ಅಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ಅಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"ಅನ್ಇನ್ಸ್ಟಾಲ್ ಪೂರ್ಣಗೊಂಡಿದೆ."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ಅಸ್ಥಾಪಿಸಲಾಗಿದೆ"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"ಅನ್ಇನ್ಸ್ಟಾಲ್ ವಿಫಲವಾಗಿದೆ."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ಅಸ್ಥಾಪಿಸುವಿಕೆ ಯಶಸ್ವಿಯಾಗಲಿಲ್ಲ."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"ಸಕ್ರಿಯ ಸಾಧನ ನಿರ್ವಹಣೆ ಅಪ್ಲಿಕೇಶನ್ ಅಸ್ಥಾಪಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"<xliff:g id="USERNAME">%1$s</xliff:g> ಗಾಗಿ ಸಕ್ರಿಯ ಸಾಧನ ನಿರ್ವಹಣೆ ಅಪ್ಲಿಕೇಶನ್ ಅಸ್ಥಾಪಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"ಕೆಲವು ಬಳಕೆದಾರರು ಅಥವಾ ಪ್ರೊಫೈಲ್ಗಳಿಗೆ ಈ ಅಪ್ಲಿಕೇಶನ್ ಅಗತ್ಯವಿರುತ್ತದೆ ಮತ್ತು ಇತರರಿಗೆ ಅಸ್ಥಾಪಿಸಲಾಗಿದೆ"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"ಈ ಅಪ್ಲಿಕೇಶನ್ಗೆ ನಿಮ್ಮ ಪ್ರೊಫೈಲ್ನ ಅಗತ್ಯವಿದೆ ಮತ್ತು ಅಸ್ಥಾಪಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"ಈ ಅಪ್ಲಿಕೇಶನ್ ನಿಮ್ಮ ಸಾಧನ ನಿರ್ವಾಹಕರಿಗೆ ಅಗತ್ಯವಿದೆ ಮತ್ತು ಅಸ್ಥಾಪಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"ಸಾಧನದ ನಿರ್ವಹಣೆ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ನಿರ್ವಹಿಸಿ"</string>
- <string name="manage_users" msgid="3125018886835668847">"ಬಳಕೆದಾರರನ್ನು ನಿರ್ವಹಿಸಿ"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಅನ್ನು ಅಸ್ಥಾಪಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"ಪ್ಯಾಕೇಜ್ ಪಾರ್ಸ್ ಮಾಡುವಲ್ಲಿ ಸಮಸ್ಯೆ ಕಂಡುಬಂದಿದೆ."</string>
- <string name="newPerms" msgid="6039428254474104210">"ಹೊಸತು"</string>
- <string name="allPerms" msgid="1024385515840703981">"ಎಲ್ಲಾ"</string>
- <string name="privacyPerms" msgid="1850527049572617">"ಗೌಪ್ಯತೆ"</string>
- <string name="devicePerms" msgid="6733560207731294504">"ಸಾಧನ ಪ್ರವೇಶ"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"ಈ ನವೀಕರಣಕ್ಕೆ ಯಾವುದೇ ಹೊಸ ಅನುಮತಿಗಳ ಅಗತ್ಯವಿಲ್ಲ."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"ನೀವು ಕೆಳಗಿನ ಅನುಮತಿಗಳನ್ನು ನೀಡ ಬಯಸುತ್ತೀರಾ? ಇದು ಇಲ್ಲಿ ಪ್ರವೇಶ ಪಡೆದುಕೊಳ್ಳಬಹುದು:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"ನಿರಾಕರಿಸಿ"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"ಇನ್ನಷ್ಟು ಮಾಹಿತಿ"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"ಹೇಗಾದರೂ ನಿರಾಕರಿಸಿ"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"<xliff:g id="ACTION">%2$s</xliff:g> <xliff:g id="APP_NAME">%1$s</xliff:g> ಅನ್ನು ಅನುಮತಿಸುವುದೇ?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"ಎಲ್ಲಾ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"ಯಾವುದನ್ನೂ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿಲ್ಲ"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"ಅನುಮತಿಸಿ"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"ಅಪ್ಲಿಕೇಶನ್ಗಳು"</string>
- <string name="app_permissions" msgid="3146758905824597178">"ಅಪ್ಲಿಕೇಶನ್ ಅನುಮತಿಗಳು"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"ಮತ್ತೆ ಕೇಳಬೇಡಿ"</string>
- <string name="no_permissions" msgid="3210542466245591574">"ಯಾವುದೇ ಅನುಮತಿಗಳಿಲ್ಲ"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"ಹೆಚ್ಚುವರಿ ಅನುಮತಿಗಳು"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"ಅನುಮತಿ ನಿಯಂತ್ರಕ"</string>
+ <string name="ok" msgid="4417794827535157922">"ಸರಿ"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"ಅನುಮತಿಗಳು"</string>
+ <string name="cancel" msgid="7279939269964834974">"ರದ್ದುಮಾಡಿ"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"ಆ್ಯಪ್ ಕಂಡುಬಂದಿಲ್ಲ"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"ನಿರಾಕರಿಸಿ"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"ನಿರಾಕರಿಸಿ & ಮತ್ತೊಮ್ಮೆ ಕೇಳಬೇಡಿ"</string>
+ <!-- no translation found for grant_dialog_button_deny_background (5378693207810841555) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_deny_background_and_dont_ask_again (1032019626928637454) -->
+ <skip />
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"ಹೆಚ್ಚಿನ ಮಾಹಿತಿ"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"ನಿರಾಕರಿಸಿ"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ಆ್ಯಪ್ಗೆ <xliff:g id="ACTION">%2$s</xliff:g> ಕ್ರಿಯೆಯನ್ನು ಮಾಡಲು ಅನುಮತಿಸುವುದೇ?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ಆ್ಯಪ್ಗೆ <xliff:g id="ACTION">%2$s</xliff:g> ಕ್ರಿಯೆಯನ್ನು ಮಾಡಲು ಯಾವಾಗಲೂ ಅನುಮತಿಸುವುದೇ?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"ಆ್ಯಪ್ ಬಳಸುವಾಗ ಮಾತ್ರ"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"ಯಾವಾಗಲೂ"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"ನಿರಾಕರಿಸಿ ಹಾಗೂ ಮತ್ತೊಮ್ಮೆ ಕೇಳಬೇಡಿ"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"ಎಲ್ಲಾ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"ಯಾವುದನ್ನೂ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿಲ್ಲ"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"ಅನುಮತಿಸಿ"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"ಎಲ್ಲಾ ಸಮಯದಲ್ಲೂ ಅನುಮತಿಸಿ"</string>
+ <!-- no translation found for grant_dialog_button_allow_foreground (8090382319222429427) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_allow_background (3190568549032350790) -->
+ <skip />
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"ಆ್ಯಪ್ಗಳು"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"ಆ್ಯಪ್ ಅನುಮತಿಗಳು"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"ಅನುಮತಿ ನಿರ್ವಾಹಕರು"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"ಮತ್ತೆ ಕೇಳಬೇಡಿ"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"ಯಾವುದೇ ಅನುಮತಿಗಳಿಲ್ಲ"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"ಹೆಚ್ಚುವರಿ ಅನುಮತಿಗಳು"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"ಆ್ಯಪ್ ಮಾಹಿತಿಯನ್ನು ತೆರೆಯಿರಿ"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"ಈ ಅಪ್ಲಿಕೇಶನ್ Android ನ ಹಳೆಯ ಆವೃತ್ತಿಗೆ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿತ್ತು. ಅನುಮತಿ ನಿರಾಕರಿಸುವಿಕೆ ಇನ್ನು ಮುಂದೆ ಉದ್ದೇಶಿಸಲ್ಪಟ್ಟಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸದೆ ಇರುವುದಕ್ಕೆ ಇದು ಕಾರಣವಾಗಬಹುದು."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"ಅಪರಿಚಿತ ಕ್ರಿಯೆಯನ್ನು ಮಾಡಿ"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"ಸಿಸ್ಟಂ ತೋರಿಸು"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"ಸಿಸ್ಟಂ ಮರೆಮಾಡು"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> ಅನುಮತಿಗಳು"</string>
- <string name="no_apps" msgid="1965493419005012569">"ಅಪ್ಲಿಕೇಶನ್ಗಳು ಇಲ್ಲ"</string>
- <string name="location_settings" msgid="1774875730854491297">"ಸ್ಥಳ ಸೆಟ್ಟಿಂಗ್ಗಳು"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಅಪ್ಲಿಕೇಶನ್ ಈ ಸಾಧನಕ್ಕೆ ಸ್ಥಳ ಸೇವೆಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. ಸ್ಥಳ ಪ್ರವೇಶವನ್ನು ಸ್ಥಳ ಸೆಟ್ಟಿಂಗ್ಗಳಿಂದ ಮಾರ್ಪಡಿಸಬಹುದು."</string>
- <string name="system_warning" msgid="7103819124542305179">"ನೀವು ಈ ಅನುಮತಿಯನ್ನು ನಿರಾಕರಿಸಿದರೆ, ಇನ್ನು ಮುಂದೆ ನಿಮ್ಮ ಸಾಧನದ ಮೂಲ ವೈಶಿಷ್ಟ್ಯಗಳು ಉದ್ದೇಶಿದಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸದಿರಬಹುದು."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"ನೀತಿಯ ಮೂಲಕ ಜಾರಿಗೊಳಿಸಲಾಗಿದೆ"</string>
- <string name="loading" msgid="7811651799620593731">"ಲೋಡ್ ಆಗುತ್ತಿದೆ..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"ಎಲ್ಲ ಅನುಮತಿಗಳು"</string>
- <string name="other_permissions" msgid="2016192512386091933">"ಇತರ ಅಪ್ಲಿಕೇಶನ್ ಸಾಮರ್ಥ್ಯಗಳು"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"ಅನುಮತಿ ವಿನಂತಿ"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"ಪರದೆ ಆವರಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ಪತ್ತೆಹಚ್ಚಲಾಗಿದೆ"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"ಈ ಅನುಮತಿ ಸೆಟ್ಟಿಂಗ್ ಬದಲಾಯಿಸಲು, ನೀವು ಮೊದಲು ಸೆಟ್ಟಿಂಗ್ಗಳು > ಅಪ್ಲಿಕೇಶನ್ಗಳಿಂದ ಪರದೆ ಆವರಿಸಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ಆಫ್ ಮಾಡಬೇಕು"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ತೆರೆಯಿರಿ"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Wear ನಲ್ಲಿ ಸ್ಥಾಪಿಸುವಿಕೆ/ಅಸ್ಥಾಪಿಸುವಿಕೆ ಕ್ರಿಯೆಗಳು ಬೆಂಬಲಿತವಾಗಿಲ್ಲ."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ಅಪ್ಡೇಟ್ ಮಾಡಲಾಗಿದೆ. ಇದನ್ನು ಪ್ರವೇಶಿಸಲು <xliff:g id="APP_NAME_1">%1$s</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ಗೆ ಪ್ರವೇಶಿಸಲು ಯಾವುದನ್ನು ಅನುಮತಿಸಬೇಕು ಎಂಬುದನ್ನು ಆರಿಸಿಕೊಳ್ಳಿ"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ಅನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಲಾಗಿದೆ. ಈ ಅಪ್ಲಿಕೇಶನ್ಗೆ ಪ್ರವೇಶಿಸಲು ಯಾವುದನ್ನು ಅನುಮತಿಸಬೇಕು ಎಂಬುದನ್ನು ಆರಿಸಿಕೊಳ್ಳಿ."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"ರದ್ದುಮಾಡಿ"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"ಮುಂದುವರಿಸು"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"ಹೊಸ ಅನುಮತಿಗಳು"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"ಪ್ರಸ್ತುತ ಅನುಮತಿಗಳು"</string>
- <string name="message_staging" msgid="6151794817691100003">"ಸ್ಥಾಪಿಸಲು ಸಿದ್ಧವಿರುವ ಅಪ್ಲಿಕೇಶನ್…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"ಅಪರಿಚಿತ"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"ನಿಮ್ಮ ಸುರಕ್ಷತೆಯ ದೃಷ್ಟಿಯಿಂದ, ಈ ಮೂಲದಿಂದ ಬಂದಿರುವ ಅಪರಿಚಿತ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ಗೆ ಅನುಮತಿಯಿಲ್ಲ."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"ನಿಮ್ಮ ಸುರಕ್ಷತೆಯ ದೃಷ್ಟಿಯಿಂದ, ಅಪರಿಚಿತ ಮೂಲಗಳಿಂದ ಪಡೆದುಕೊಳ್ಳುವ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ನಿಮ್ಮ ಟಿವಿಯು ಸ್ಥಾಪಿಸದಂತೆ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"ನಿಮ್ಮ ಸುರಕ್ಷತೆಯ ದೃಷ್ಟಿಯಿಂದ, ಈ ಮೂಲದಿಂದ ಬಂದಿರುವ ಅಪರಿಚಿತ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ನಿಮ್ಮ ಫೋನ್ಗೆ ಅನುಮತಿಯಿಲ್ಲ."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"ನಿಮ್ಮ ಫೋನ್ ಹಾಗೂ ವೈಯಕ್ತಿಕ ಡೇಟಾ, ಅಪರಿಚಿತ ಅಪ್ಲಿಕೇಶನ್ಗಳ ದಾಳಿಗೆ ತುತ್ತಾಗುವ ಸಾಧ್ಯತೆ ಹೆಚ್ಚಾಗಿದೆ. ಈ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಸ್ಥಾಪಿಸುವ ಮೂಲಕ, ನಿಮ್ಮ ಫೋನ್ಗೆ ಯಾವುದೇ ಹಾನಿ ಉಂಟಾದರೆ ಅಥವಾ ಅದರ ಬಳಕೆಯಿಂದ ಡೇಟಾ ನಷ್ಟವಾದರೆ, ಅದಕ್ಕೆ ನೀವೇ ಜವಾಬ್ದಾರರು ಎನ್ನುವುದನ್ನು ಒಪ್ಪಿಕೊಳ್ಳುತ್ತೀರಿ."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ ಹಾಗೂ ವೈಯಕ್ತಿಕ ಡೇಟಾ, ಅಪರಿಚಿತ ಅಪ್ಲಿಕೇಶನ್ಗಳ ದಾಳಿಗೆ ತುತ್ತಾಗುವ ಸಾಧ್ಯತೆ ಹೆಚ್ಚಾಗಿದೆ. ಈ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಸ್ಥಾಪಿಸುವ ಮೂಲಕ, ನಿಮ್ಮ ಫೋನ್ಗೆ ಯಾವುದೇ ಹಾನಿ ಉಂಟಾದರೆ ಅಥವಾ ಅದರ ಬಳಕೆಯಿಂದ ಡೇಟಾ ನಷ್ಟವಾದರೆ, ಅದಕ್ಕೆ ನೀವೇ ಜವಾಬ್ದಾರರು ಎನ್ನುವುದನ್ನು ಒಪ್ಪಿಕೊಳ್ಳುತ್ತೀರಿ."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"ನಿಮ್ಮ ಟಿವಿ ಹಾಗೂ ವೈಯಕ್ತಿಕ ಡೇಟಾ, ಅಪರಿಚಿತ ಅಪ್ಲಿಕೇಶನ್ಗಳ ದಾಳಿಗೆ ತುತ್ತಾಗುವ ಸಾಧ್ಯತೆ ಹೆಚ್ಚಾಗಿದೆ. ಈ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಸ್ಥಾಪಿಸುವ ಮೂಲಕ, ನಿಮ್ಮ ಟಿವಿಗೆ ಯಾವುದೇ ಹಾನಿ ಉಂಟಾದರೆ ಅಥವಾ ಅದರ ಬಳಕೆಯಿಂದ ಡೇಟಾ ನಷ್ಟವಾದರೆ, ಅದಕ್ಕೆ ನೀವೇ ಜವಾಬ್ದಾರರು ಎನ್ನುವುದನ್ನು ಒಪ್ಪಿಕೊಳ್ಳುತ್ತೀರಿ."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"ಮುಂದುವರಿಸಿ"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"ಸೆಟ್ಟಿಂಗ್ಗಳು"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"wear ಅಪ್ಲಿಕೇಶನ್ ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ/ಅಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"ಈ ಆ್ಯಪ್ Android ನ ಹಳೆಯ ಆವೃತ್ತಿಗೆ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿತ್ತು. ಅನುಮತಿ ನಿರಾಕರಿಸುವಿಕೆ ಇನ್ನು ಮುಂದೆ ಉದ್ದೇಶಿಸಿದಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸದೆ ಇರುವುದಕ್ಕೆ ಇದು ಕಾರಣವಾಗಬಹುದು."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"ಅಪರಿಚಿತ ಕ್ರಿಯೆಯನ್ನು ಮಾಡಿ"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<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="7623002570829860709">"ಸಿಸ್ಟಂ ತೋರಿಸಿ"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"ಸಿಸ್ಟಂ ಮರೆಮಾಡಿ"</string>
+ <string name="no_apps" msgid="2377153782338039463">"ಯಾವುದೇ ಆ್ಯಪ್ಗಳು ಇಲ್ಲ"</string>
+ <string name="location_settings" msgid="547378321761364906">"ಸ್ಥಳ ಸೆಟ್ಟಿಂಗ್ಗಳು"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಆ್ಯಪ್ ಈ ಸಾಧನಕ್ಕೆ ಸ್ಥಳ ಸೇವೆಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. ಸ್ಥಳ ಪ್ರವೇಶವನ್ನು ಸ್ಥಳ ಸೆಟ್ಟಿಂಗ್ಗಳಿಂದ ಮಾರ್ಪಡಿಸಬಹುದು."</string>
+ <string name="system_warning" msgid="6868290533389195836">"ನೀವು ಈ ಅನುಮತಿಯನ್ನು ನಿರಾಕರಿಸಿದರೆ, ಇನ್ನು ಮುಂದೆ ನಿಮ್ಮ ಸಾಧನದ ಮೂಲ ವೈಶಿಷ್ಟ್ಯಗಳು ಉದ್ದೇಶಿಸಿದಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸದಿರಬಹುದು."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"ನೀತಿಯ ಮೂಲಕ ಜಾರಿಗೊಳಿಸಲಾಗಿದೆ"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"ನೀತಿಯ ಮೂಲಕ ಹಿನ್ನೆಲೆ ಪ್ರವೇಶವನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"ನೀತಿ ಮೂಲಕ ಹಿನ್ನೆಲೆ ಪ್ರವೇಶವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"ನೀತಿ ಮೂಲಕ ಮುನ್ನೆಲೆ ಪ್ರವೇಶವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"ನಿರ್ವಾಹಕರ ಮೂಲಕ ನಿಯಂತ್ರಿಸಲಾಗುತ್ತದೆ"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"ಹಿನ್ನೆಲೆ ಪ್ರವೇಶವನ್ನು ನಿರ್ವಾಹಕರು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ್ದಾರೆ"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"ಹಿನ್ನೆಲೆ ಪ್ರವೇಶವನ್ನು ನಿರ್ವಾಹಕರು ಸಕ್ರಿಯಗೊಳಿಸಿದ್ದಾರೆ"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"ಮುನ್ನೆಲೆ ಪ್ರವೇಶವನ್ನು ನಿರ್ವಾಹಕರು ಸಕ್ರಿಯಗೊಳಿಸಿದ್ದಾರೆ"</string>
+ <!-- no translation found for permission_summary_enabled_system_fixed (5463084832974856683) -->
+ <skip />
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <!-- no translation found for permission_access_always (5419580764084361573) -->
+ <skip />
+ <!-- no translation found for permission_access_only_foreground (2857031150724321567) -->
+ <skip />
+ <!-- no translation found for permission_access_never (425385910378172045) -->
+ <skip />
+ <string name="loading" msgid="323483393167148377">"ಲೋಡ್ ಆಗುತ್ತಿದೆ..."</string>
+ <string name="all_permissions" msgid="7813580062403112957">"ಎಲ್ಲಾ ಅನುಮತಿಗಳು"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"ಇತರ ಆ್ಯಪ್ ಸಾಮರ್ಥ್ಯಗಳು"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"ಅನುಮತಿಯ ವಿನಂತಿ"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"ಸ್ಕ್ರೀನ್ ಓವರ್ಲೇ ಪತ್ತೆಹಚ್ಚಲಾಗಿದೆ"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"ಈ ಅನುಮತಿ ಸೆಟ್ಟಿಂಗ್ ಬದಲಾಯಿಸಲು, ನೀವು ಮೊದಲು ಸೆಟ್ಟಿಂಗ್ಗಳು > ಆ್ಯಪ್ಗಳಿಂದ ಸ್ಕ್ರೀನ್ ಓವರ್ಲೇ ಆಫ್ ಮಾಡಬೇಕು"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ತೆರೆಯಿರಿ"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Wear ನಲ್ಲಿ ಇನ್ಸ್ಟಾಲ್/ಅನ್ಇನ್ಸ್ಟಾಲ್ ಕ್ರಿಯೆಗಳು ಬೆಂಬಲಿತವಾಗಿಲ್ಲ."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ಆ್ಯಪ್ಗೆ ಪ್ರವೇಶಿಸಲು ಯಾವುದನ್ನು ಅನುಮತಿಸಬೇಕು ಎಂಬುದನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ಆ್ಯಪ್ ಅನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಲಾಗಿದೆ. ಈ ಆ್ಯಪ್ಗೆ ಪ್ರವೇಶಿಸಲು ಯಾವುದನ್ನು ಅನುಮತಿಸಬೇಕು ಎಂಬುದನ್ನು ಆಯ್ಕೆಮಾಡಿ."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"ರದ್ದುಮಾಡಿ"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"ಮುಂದುವರಿಸಿ"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"ಹೊಸ ಅನುಮತಿಗಳು"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"ಪ್ರಸ್ತುತ ಅನುಮತಿಗಳು"</string>
+ <string name="message_staging" msgid="641286607664721291">"ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲು ಸಿದ್ಧವಿರುವ ಆ್ಯಪ್…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"ಅಪರಿಚಿತ"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"ಡ್ಯಾಶ್ಬೋರ್ಡ್"</string>
+ <!-- no translation found for permission_usage_summary_foreground (3203419920107457274) -->
+ <skip />
+ <!-- no translation found for permission_usage_summary_background (5719598203265078254) -->
+ <skip />
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"ಯಾವುದೇ ಅನುಮತಿ"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"ಯಾವುದಾದರೂ ಸಮಯದಲ್ಲಿ"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"ಕಳೆದ 7 ದಿನಗಳು"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"ಕೊನೆಯ 24 ಗಂಟೆಗಳು"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"1 ಗಂಟೆಯ ಹಿಂದೆ"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"ಹಿಂದಿನ 15 ನಿಮಿಷಗಳು"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"ಕಳೆದ 1 ನಿಮಿಷ"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"ಅನುಮತಿಯ ಬಳಕೆಗಳು ಇಲ್ಲ"</string>
+ <!-- no translation found for permission_usage_list_title_any_time (5641676869304328239) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_7_days (2972289322203714509) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_day (6298662604046093174) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_hour (7224982939487774388) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_15_minutes (49045607172810502) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_minute (7716966405942817635) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_any_time (862654449303514044) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_7_days (5393381637937213483) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_day (7202567658282481259) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_hour (4672313408976666479) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_15_minutes (1776918144361651860) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_minute (236300476767668315) -->
+ <skip />
+ <!-- no translation found for app_permission_usage_bar_label (7261634017833698654) -->
+ <!-- no translation found for permission_usage_view_details (4728049344017619500) -->
+ <skip />
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"ಈ ಆಧಾರದ ಮೇಲೆ ಫಿಲ್ಟರ್ ಮಾಡಲಾಗಿದೆ: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"ಫಿಲ್ಟರ್ ತೆಗೆದುಹಾಕಿ"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"ಈ ಪ್ರಕಾರ ಫಿಲ್ಟರ್"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"ಅನುಮತಿಗಳ ಮೂಲಕ ಫಿಲ್ಟರ್ ಮಾಡಿ"</string>
+ <!-- no translation found for filter_by_time (1763143592970195407) -->
+ <skip />
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"ಹೆಚ್ಚಿನ ಅನುಮತಿಗಳು"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"ಹೆಚ್ಚಿನ ಪ್ರವೇಶಗಳು"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"ಇತ್ತೀಚಿನವು"</string>
+ <!-- no translation found for sort_by_app (1912228966803416485) -->
+ <skip />
+ <!-- no translation found for sort_by_time (8280378662234104410) -->
+ <skip />
+ <!-- no translation found for item_separator (8266062815210378175) -->
+ <skip />
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"ರಿಫ್ರೆಶ್ ಮಾಡಿ"</string>
+ <!-- no translation found for permission_usage_permission_filter_subtitle (5539392196389332769) -->
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"ಆ್ಯಪ್ ಅನುಮತಿಗಳ ಬಳಕೆ"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"ಪ್ರವೇಶ: <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="4040424337831328212">"ಪ್ರವೇಶ: <xliff:g id="NUM">%1$s</xliff:g> ಬಾರಿ. <xliff:g id="TIME">%2$s</xliff:g> ಸಮಯದ ಹಿಂದೆ ಕೊನೆಯದಾಗಿ ಬಳಸಲಾಗಿದೆ."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"ಅನುಮತಿಸಿ"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"ಎಲ್ಲಾ ಸಮಯದಲ್ಲೂ ಅನುಮತಿಸಿ"</string>
+ <!-- no translation found for app_permission_button_allow_foreground (2303741829613210541) -->
+ <skip />
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"ನಿರಾಕರಿಸಿ"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> ಅನುಮತಿ"</string>
+ <!-- no translation found for app_permission_header (228974007660007656) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_usage_summary (1034436308858219976) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_no_usages (4444374134047275841) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_app_permissions_link (8033278634020892918) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_permission_apps_link (8759141212929298774) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_generic (5479202003136667039) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_activity_recognition (2022880340017289990) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_calendar (2846128908236787586) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_call_log (2429916962093948340) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_camera (6699611334403400091) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_contacts (5169995707720233126) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_location (687820658574645201) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_aural (2102206495149326019) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_visual (3105938942794669520) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_microphone (2300290217308759293) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_phone (3773977614654088578) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sensors (6733606479604624853) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sms (8850213022386508528) -->
+ <skip />
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"ಕೊನೆಯ ಪ್ರವೇಶ:<xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"ಎಂದಿಗೂ ಪ್ರವೇಶಿಸಿಲ್ಲ"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"ಅನುಮತಿಸಲಾಗಿದೆ"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"ಬಳಕೆಯಲ್ಲಿದ್ದಾಗ ಮಾತ್ರ ಅನುಮತಿಸಲಾಗಿದೆ"</string>
+ <string name="denied_header" msgid="2277998574238617699">"ನಿರಾಕರಿಸಲಾಗಿದೆ"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"ವಿವರಿಸಲಾದ ಬಳಕೆಯನ್ನು ನೋಡಿ"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <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="seconds" formatted="false" msgid="1632909606956324957">
+ <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_reminders" msgid="8040710767178843151">"ಅನುಮತಿ ಜ್ಞಾಪನೆಗಳು"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> ನಿಮ್ಮ ಸ್ಥಳವನ್ನು ಬಳಸುತ್ತಿದೆ"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"ಈ ಆ್ಯಪ್ ಯಾವಾಗಲೂ ನಿಮ್ಮ ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಬಹುದು. ಬದಲಾಯಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"ಆ್ಯಪ್ ಬಳಕೆಯಲ್ಲಿದ್ದಾಗ ಮಾತ್ರ"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"ಯಾವುದೇ ಅನುಮತಿಗಳನ್ನು ಅನುಮತಿಸಲಾಗಿಲ್ಲ"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"ಯಾವುದೇ ಅನುಮತಿಗಳನ್ನು ನಿರಾಕರಿಸಲಾಗಿಲ್ಲ"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"ಯಾವುದೇ ಆ್ಯಪ್ಗಳನ್ನು ಅನುಮತಿಸಲಾಗಿಲ್ಲ"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"ಯಾವುದೇ ಆ್ಯಪ್ಗಳನ್ನು ನಿರಾಕರಿಸಲಾಗಿಲ್ಲ"</string>
+ <string name="settings" msgid="2884124136779508907">"ಸೆಟ್ಟಿಂಗ್ಗಳು"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ಸೇವೆಯು ನಿಮ್ಮ ಸಾಧನಕ್ಕೆ ಸಂಪೂರ್ಣ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿದೆ"</string>
+ <!-- no translation found for accessibility_service_dialog_title_multiple (8129325613496173909) -->
+ <skip />
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ಸೇವೆಯು ನಿಮ್ಮ ಸ್ಕ್ರೀನ್, ಕ್ರಿಯೆಗಳು ಮತ್ತು ಇನ್ಪುಟ್ಗಳು, ಕೆಲಸ ನಿರ್ವಹಣೆ ಕ್ರಿಯೆಗಳು ಮತ್ತು ಡಿಸ್ಪ್ಲೇ ನಿಯಂತ್ರಣವನ್ನು ವೀಕ್ಷಿಸಬಹುದು."</string>
+ <!-- no translation found for accessibility_service_dialog_bottom_text_multiple (1387803460488775887) -->
+ <skip />
+ <!-- no translation found for request_role_title (3611734134669430568) -->
+ <skip />
+ <!-- no translation found for request_role_current_default (7512045433655289638) -->
+ <skip />
+ <!-- no translation found for request_role_set_as_default (5706081295230541240) -->
+ <skip />
+ <!-- no translation found for default_app_search_keyword (6938709626391437391) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_ok (3007005536659549573) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_open_settings (3368892579319881043) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_title (7173961211414061803) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_separator (9008030412869423988) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_last_separator (7455459775266515801) -->
+ <skip />
+ <string name="default_apps" msgid="8554530939151957828">"ಡೀಫಾಲ್ಟ್ ಆ್ಯಪ್ಗಳು"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"ಯಾವುದೇ ಡೀಫಾಲ್ಟ್ ಆ್ಯಪ್ಗಳಿಲ್ಲ"</string>
+ <!-- no translation found for default_apps_manage_domain_urls (3146379064445013719) -->
+ <skip />
+ <string name="default_apps_for_work" msgid="8582151955372061208">"ಕೆಲಸದ ಕುರಿತಾದ ಡೀಫಾಲ್ಟ್ ಆ್ಯಪ್"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"ಯಾವುದೂ ಬೇಡ"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"ಯಾವುದೇ ಆ್ಯಪ್ಗಳು ಇಲ್ಲ"</string>
+ <!-- no translation found for special_app_access_search_keyword (462008045110320714) -->
+ <skip />
+ <string name="special_app_access" msgid="2561673957499408877">"ಆ್ಯಪ್ಗೆ ವಿಶೇಷ ಪ್ರವೇಶ"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"ಆ್ಯಪ್ಗೆ ವಿಶೇಷ ಪ್ರವೇಶವಿಲ್ಲ"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"ಯಾವುದೇ ಆ್ಯಪ್ಗಳು ಇಲ್ಲ"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"ಅಸಿಸ್ಟೆಂಟ್ ಆ್ಯಪ್"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"ಬ್ರೌಸರ್ ಆ್ಯಪ್"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"ಫೋನ್ ಆ್ಯಪ್"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"ಎಸ್ಎಂಎಸ್ ಆ್ಯಪ್"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"ತುರ್ತು ಅಪ್ಲಿಕೇಶನ್"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"ಮುಖಪುಟ ಅಪ್ಲಿಕೇಶನ್"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"ಸಂಗೀತ ಆ್ಯಪ್"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"ಗ್ಯಾಲರಿ ಆ್ಯಪ್"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"ಕಾರ್ ಮೋಡ್ ಫೋನ್ ಆ್ಯಪ್"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"ಕರೆ ಮರುನಿರ್ದೇಶನ ಆ್ಯಪ್"</string>
+ <!-- no translation found for role_label_call_screening (1089966334646538858) -->
+ <skip />
+ <string name="role_label_call_companion" msgid="7369723859682076467">"ಕರೆ ಕಂಪ್ಯಾನಿಯನ್ ಆ್ಯಪ್"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"ಗಮನಿಸಿ: ನೀವು ನಿಮ್ಮ ಸಾಧನವನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿದಲ್ಲಿ ಮತ್ತು ಪರದೆಯ ಲಾಕ್ ಹೊಂದಿದ್ದರೆ, ನಿಮ್ಮ ಸಾಧನವನ್ನು ಅನ್ಲಾಕ್ ಮಾಡುವವರೆಗೂ ಈ ಆ್ಯಪ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ನಲ್ಲಿ ಗೋಚರಿಸುವ ಅಥವಾ ಆ್ಯಪ್ಗಳಲ್ಲಿಯೇ ಪ್ರವೇಶಿಸಬಹುದಾದಂತಹ ಮಾಹಿತಿ ಸೇರಿದಂತೆ, ನಿಮ್ಮ ಸಿಸ್ಟಂನಲ್ಲಿ ಬಳಕೆಯಲ್ಲಿರುವ ಆ್ಯಪ್ಗಳ ಕುರಿತ ಮಾಹಿತಿಯನ್ನು ಓದಲು ಅಸಿಸ್ಟೆಂಟ್ಗೆ ಸಾಧ್ಯವಾಗುತ್ತದೆ."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"ಡೀಬಗ್ ಮಾಡುವಿಕೆ ಡೇಟಾವನ್ನು ಹಂಚಿಕೊಳ್ಳಿ"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"ವಿವರವಾದ ಡೀಬಗ್ ಮಾಡುವಿಕೆಯ ಡೇಟಾವನ್ನು ಹಂಚಿಕೊಳ್ಳಬೇಕೆ?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಆ್ಯಪ್, ಡೀಬಗ್ ಮಾಡುವಿಕೆಯ ಮಾಹಿತಿಯನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಲು ಬಯಸುತ್ತದೆ."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"ಡೀಬಗ್ ಮಾಡುವಿಕೆ ಡೇಟಾವನ್ನು ಹಂಚಿಕೊಳ್ಳಿ"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="DATE">%2$s</xliff:g> ದಿನಾಂಕದಂದು <xliff:g id="TIME">%3$s</xliff:g> ಸಮಯಕ್ಕೆ ತೆಗೆದುಕೊಂಡ ಬಗ್ ವರದಿಯನ್ನು ಈ ಸಾಧನದಿಂದ ಅಪ್ಲೋಡ್ ಮಾಡುವಂತೆ <xliff:g id="APP_NAME_0">%1$s</xliff:g> ಆ್ಯಪ್ ವಿನಂತಿಸುತ್ತಿದೆ. ಬಗ್ ವರದಿಗಳು, ನಿಮ್ಮ ಸಾಧನ ಅಥವಾ ಆ್ಯಪ್ಗಳ ಮೂಲಕ ಲಾಗ್ ಮಾಡಿದ ವೈಯಕ್ತಿಕ ಮಾಹಿತಿಯನ್ನು, ಉದಾಹರಣೆಗೆ ಬಳಕೆದಾರರ ಹೆಸರುಗಳು, ಸ್ಥಳದ ಡೇಟಾ, ಸಾಧನ ಗುರುತಿಸುವಿಕೆಗಳು ಮತ್ತು ನೆಟ್ವರ್ಕ್ ಮಾಹಿತಿಯನ್ನು ಒಳಗೊಂಡಿದೆ. ಈ ಮಾಹಿತಿ ಒಳಗೊಂಡಂತೆ, ನೀವು ನಂಬುವ ಜನರು ಮತ್ತು ಆ್ಯಪ್ಗಳ ಜೊತೆಗೆ ಮಾತ್ರ ಬಗ್ ವರದಿಗಳನ್ನು ಹಂಚಿಕೊಳ್ಳಿ. ಬಗ್ ವರದಿಯನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಲು <xliff:g id="APP_NAME_1">%4$s</xliff:g> ಆ್ಯಪ್ಗೆ ಅನುಮತಿಸುವುದೇ?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"ಅನುಮತಿಸಿ"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"ನಿರಾಕರಿಸಿ"</string>
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_title (5699953608028268176) -->
+ <skip />
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_content (6960592986228883592) -->
+ <skip />
+ <!-- no translation found for dismiss_with_acknowledgment (2879819713128822468) -->
+ <skip />
</resources>
diff --git a/res/values-ko-television/strings.xml b/res/values-ko-television/strings.xml
index 6ad2ed6..40b1f1d 100644
--- a/res/values-ko-television/strings.xml
+++ b/res/values-ko-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"거부 및 다시 묻지 않음"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"설정 > 앱에서 나중에 변경할 수 있습니다."</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>개 중 <xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>"</string>
- <string name="preference_show_system_apps" msgid="7330308025768596149">"시스템 앱 보기"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"앱 권한"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"앱 권한"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> 권한"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"추가 권한"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> 권한"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"거부 및 다시 묻지 않음"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"설정 > 앱에서 나중에 변경할 수 있습니다."</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"시스템 앱 보기"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"앱 권한"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"앱 권한"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> 권한"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"추가 권한"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> 권한"</string>
</resources>
diff --git a/res/values-ko-watch/strings.xml b/res/values-ko-watch/strings.xml
index 6cce6f9..62720cc 100644
--- a/res/values-ko-watch/strings.xml
+++ b/res/values-ko-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"거부 및 다시 묻지 않음"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"시스템 앱 보기"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"변경할 수 없음"</string>
- <string name="generic_yes" msgid="3394094077553763689">"예"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"취소"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"거부 및 다시 묻지 않음"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"시스템 앱 보기"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"변경할 수 없음"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"예"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"취소"</string>
</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 6d78300..ea7daa1 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,215 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"패키지 설치 프로그램"</string>
- <string name="next" msgid="3057143178373252333">"다음"</string>
- <string name="install" msgid="5896438203900042068">"설치"</string>
- <string name="done" msgid="3889387558374211719">"완료"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"앱에 허용할 작업:"</string>
- <string name="cancel" msgid="8360346460165114585">"취소"</string>
- <string name="unknown" msgid="4742479012767208045">"알 수 없음"</string>
- <string name="installing" msgid="8613631001631998372">"설치 중..."</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> 설치 중…"</string>
- <string name="install_done" msgid="3682715442154357097">"앱이 설치되었습니다."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"이 애플리케이션을 설치하시겠습니까? 애플리케이션이 다음에 액세스할 수 있습니다."</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"이 애플리케이션을 설치하시겠습니까? 특별한 액세스 권한이 필요하지 않습니다."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"기존 애플리케이션에 업데이트를 설치하시겠습니까? 기존 데이터는 손실되지 않습니다. 업데이트된 애플리케이션이 다음에 액세스할 수 있습니다."</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"내장 애플리케이션에 업데이트를 설치하시겠습니까? 기존 데이터는 손실되지 않습니다. 업데이트된 애플리케이션이 다음에 액세스할 수 있습니다."</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"기존의 애플리케이션 업데이트를 설치하시겠습니까? 기존의 데이터는 손실되지 않으며 특별한 액세스 권한이 필요하지 않습니다."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"내장 애플리케이션 업데이트를 설치하시겠습니까? 기존의 데이터는 손실되지 않으며 특별한 액세스 권한이 필요하지 않습니다."</string>
- <string name="install_failed" msgid="6579998651498970899">"앱이 설치되지 않았습니다."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"패키지 설치가 차단되었습니다."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"패키지가 기존 패키지와 충돌하여 앱이 설치되지 않았습니다."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"앱이 태블릿과 호환되지 않아서 설치되지 않았습니다."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"앱이 사용 중인 TV와 호환되지 않습니다."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"앱이 휴대전화와 호환되지 않아서 설치되지 않았습니다."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"패키지가 잘못되어 앱이 설치되지 않았습니다."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"태블릿에 <xliff:g id="APP_NAME">%1$s</xliff:g> 앱을 설치할 수 없습니다."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g>을(를) TV에 설치할 수 없습니다."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"휴대전화에 <xliff:g id="APP_NAME">%1$s</xliff:g> 앱을 설치할 수 없습니다."</string>
- <string name="launch" msgid="4826921505917605463">"열기"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"관리자가 알 수 없는 출처의 앱 설치를 허용하지 않습니다."</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"이 사용자는 알 수 없는 앱을 설치할 수 없습니다."</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"이 사용자는 앱을 설치할 권한이 없습니다."</string>
- <string name="ok" msgid="3468756155452870475">"확인"</string>
- <string name="settings" msgid="6743583734099755409">"설정"</string>
- <string name="manage_applications" msgid="4033876279091996596">"앱 관리"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"앱을 바꾸시겠습니까?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"설치 중인 앱이 다른 앱을 대체합니다.\n\n이전의 사용자 데이터는 모두 저장됩니다."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"시스템 앱입니다.\n\n이전의 사용자 데이터는 모두 저장됩니다."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"여유 공간이 없음"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> 앱을 설치할 수 없습니다. 여유 공간을 늘린 후에 다시 시도하세요."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"확인"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"앱을 찾을 수 없음"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"설치된 앱 목록에 앱이 없습니다."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"허용되지 않음"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"현재 사용자는 이 제거를 수행할 수 없습니다."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"오류"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"앱을 제거할 수 없습니다."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"앱 제거"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"업데이트 제거"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g>은(는) 다음 앱의 일부입니다."</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"이 앱을 제거하시겠습니까?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222"><b>"모든"</b>" 사용자에 대해 이 앱을 제거하시겠습니까? 기기를 사용하는 "<b>"모든"</b>" 사용자에 대해 애플리케이션 및 데이터가 삭제됩니다."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"<xliff:g id="USERNAME">%1$s</xliff:g>님의 기기에 설치된 앱을 제거하시겠습니까?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"이 앱을 초기 버전으로 바꾸시겠습니까? 모든 데이터가 삭제됩니다."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"이 앱을 초기 버전으로 바꾸시겠습니까? 모든 데이터가 삭제되며 직장 프로필 사용자를 포함해 이 기기의 모든 사용자에게 영향을 미칩니다."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"실행 중인 제거 작업"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"실패한 제거 작업"</string>
- <string name="uninstalling" msgid="5556217435895938250">"제거 중..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> 제거 중…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"제거를 완료했습니다."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>을(를) 제거했습니다."</string>
- <string name="uninstall_failed" msgid="631122574306299512">"제거하지 못했습니다."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>을(를) 제거하지 못했습니다."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"활성 상태의 기기 관리자 앱을 제거할 수 없습니다."</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"<xliff:g id="USERNAME">%1$s</xliff:g>의 활성 상태의 기기 관리자 앱을 제거할 수 없습니다."</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"이 앱은 일부 사용자 또는 프로필에 필요하며 다른 사용자에 대해서는 제거되었습니다."</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"이 앱은 프로필에 필요하므로 삭제할 수 없습니다."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"이 앱은 기기 관리자에게 필요하므로 제거할 수 없습니다."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"기기 관리자 앱 관리"</string>
- <string name="manage_users" msgid="3125018886835668847">"사용자 관리"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> 앱을 제거할 수 없습니다."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"패키지를 파싱하는 중 문제가 발생했습니다."</string>
- <string name="newPerms" msgid="6039428254474104210">"새 권한"</string>
- <string name="allPerms" msgid="1024385515840703981">"전체"</string>
- <string name="privacyPerms" msgid="1850527049572617">"개인정보 보호"</string>
- <string name="devicePerms" msgid="6733560207731294504">"기기 액세스"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"이 업데이트에는 새로운 권한이 필요하지 않습니다."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"다음 권한을 부여하시겠습니까? 권한이 부여되면 다음에 액세스할 수 있습니다."</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"거부"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"추가 정보"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"거부"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>의 다음 작업을 허용하시겠습니까? <xliff:g id="ACTION">%2$s</xliff:g>"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g>개 중지됨"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"모두 중지됨"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"아무것도 중지되지 않음"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"허용"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"앱"</string>
- <string name="app_permissions" msgid="3146758905824597178">"앱 권한"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"다시 묻지 않음"</string>
- <string name="no_permissions" msgid="3210542466245591574">"권한이 없음"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"추가 권한"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
- <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>
+ <string name="app_name" msgid="2792757108872430971">"권한 관리자"</string>
+ <string name="ok" msgid="4417794827535157922">"확인"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"권한"</string>
+ <string name="cancel" msgid="7279939269964834974">"취소"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"앱을 찾을 수 없음"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"거부"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"거부 및 다시 묻지 않음"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"추가 정보"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"거부"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>에서 <xliff:g id="ACTION">%2$s</xliff:g>하도록 허용하시겠습니까?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>에서 <xliff:g id="ACTION">%2$s</xliff:g>하도록 항상 허용하시겠습니까?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"앱 사용 중에만"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"항상"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"거부 및 다시 묻지 않음"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g>개 사용 중지됨"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"모두 사용 중지됨"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"사용 중지된 권한 없음"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"허용"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"항상 허용"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"앱 사용 중에만 허용"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"앱"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"앱 권한"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"권한 관리자"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"다시 묻지 않음"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"권한 없음"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"추가 권한"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"앱 정보 열기"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
+ <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="old_sdk_deny_warning" msgid="3872277112584842615">"이 앱은 Android 이전 버전에 맞게 설계되었습니다. 권한을 거부하면 정상적으로 작동하지 않을 수 있습니다."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"알 수 없는 작업 수행"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"시스템 표시"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"시스템 숨기기"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> 권한"</string>
- <string name="no_apps" msgid="1965493419005012569">"앱 없음"</string>
- <string name="location_settings" msgid="1774875730854491297">"위치 설정"</string>
- <string name="location_warning" msgid="8778701356292735971">"이 기기의 위치 서비스 제공업체는 <xliff:g id="APP_NAME">%1$s</xliff:g>입니다. 위치 정보 액세스는 위치 설정에서 수정할 수 있습니다."</string>
- <string name="system_warning" msgid="7103819124542305179">"이 권한을 거부하는 경우 기기의 기본 기능이 제대로 작동하지 않을 수 있습니다."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"정책에 의해 시행됨"</string>
- <string name="loading" msgid="7811651799620593731">"로드 중..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"모든 권한"</string>
- <string name="other_permissions" msgid="2016192512386091933">"다른 앱 기능"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"권한 요청"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"화면 오버레이 감지됨"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"이 권한 설정을 변경하려면 먼저 설정 > 앱에서 화면 오버레이를 사용하지 않도록 설정해야 합니다."</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"설정 열기"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Wear에서 지원하지 않는 설치/제거 작업입니다."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g>이(가) 업데이트되었습니다. <xliff:g id="APP_NAME_1">%1$s</xliff:g>이(가) 다음에 액세스하도록 허용하시겠습니까?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>에서 액세스하도록 허용할 항목을 선택하세요."</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>이(가) 업데이트되었습니다. 이 앱에서 액세스하도록 허용할 항목을 선택하세요."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"취소"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"계속"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"새로운 권한"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"기존 권한"</string>
- <string name="message_staging" msgid="6151794817691100003">"앱 준비 중…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"알 수 없음"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"보안상의 이유로 이 경로를 통한 알 수 없는 앱을 태블릿에 설치할 수 없습니다."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"보안상의 이유로 이 경로를 통한 알 수 없는 앱을 TV에 설치할 수 없습니다."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"보안상의 이유로 이 경로를 통한 알 수 없는 앱을 휴대전화에 설치할 수 없습니다."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"휴대전화와 개인 데이터는 알 수 없는 앱의 공격에 더욱 취약합니다. 이 앱을 설치하면 앱 사용으로 인해 발생할 수 있는 모든 휴대전화 손상이나 데이터 손실에 사용자가 책임을 진다는 것에 동의하게 됩니다."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"태블릿과 개인 데이터는 알 수 없는 앱의 공격에 더욱 취약합니다. 이 앱을 설치하면 앱 사용으로 인해 발생할 수 있는 모든 태블릿 손상이나 데이터 손실에 사용자가 책임을 진다는 것에 동의하게 됩니다."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"TV와 개인 데이터는 알 수 없는 앱의 공격에 더욱 취약합니다. 이 앱을 설치하면 앱 사용으로 인해 발생할 수 있는 모든 TV 손상이나 데이터 손실에 사용자가 책임을 진다는 것에 동의하게 됩니다."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"계속"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"설정"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Wear 앱 설치/제거"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"이 앱은 Android 이전 버전에 맞게 설계되었습니다. 권한을 거부하면 정상적으로 작동하지 않을 수 있습니다."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"알 수 없는 작업 실행"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g>개 앱 허용됨"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"최근 사용량"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"권한 대시보드 보기"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"시스템 표시"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"시스템 숨기기"</string>
+ <string name="no_apps" msgid="2377153782338039463">"앱 없음"</string>
+ <string name="location_settings" msgid="547378321761364906">"위치 설정"</string>
+ <string name="location_warning" msgid="4687406043150343369">"이 기기의 위치 서비스 제공업체는 <xliff:g id="APP_NAME">%1$s</xliff:g>입니다. 위치 정보 액세스는 위치 설정에서 수정할 수 있습니다."</string>
+ <string name="system_warning" msgid="6868290533389195836">"이 권한을 거부하면 기기의 기본 기능이 정상적으로 작동하지 않을 수 있습니다."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"정책에 의해 시행됨"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"정책에 따라 백그라운드 액세스가 사용 중지됨"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"정책에 따라 백그라운드 액세스가 사용 설정됨"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"정책에 따라 포그라운드 액세스가 사용 설정됨"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"관리자가 제어"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"관리자가 백그라운드 액세스를 사용 중지함"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"관리자가 백그라운드 액세스를 사용 설정함"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"관리자가 포그라운드 액세스를 사용 설정함"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"시스템에서 설정된 권한"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"항상"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"앱 사용 중에만"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"사용 안함"</string>
+ <string name="loading" msgid="323483393167148377">"로드 중…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"모든 권한"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"다른 앱 기능"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"권한 요청"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"화면 오버레이 감지됨"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"이 권한 설정을 변경하려면 먼저 설정 > 앱에서 화면 오버레이를 사용 중지해야 합니다."</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"설정 열기"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Wear에서는 설치/제거 작업이 지원되지 않습니다"</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>에서 액세스하도록 허용할 항목 선택"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>이(가) 업데이트되었습니다. 이 앱에서 액세스하도록 허용할 항목을 선택하세요."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"취소"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"계속"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"새로운 권한"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"현재 권한"</string>
+ <string name="message_staging" msgid="641286607664721291">"앱 준비 중…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"알 수 없음"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"대시보드"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">마지막 액세스: <xliff:g id="TIME_3">%1$s</xliff:g>\n액세스 <xliff:g id="NUM_4">%2$s</xliff:g>회(백그라운드에서 <xliff:g id="NUM_5">%3$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>회(백그라운드에서 <xliff:g id="NUM_2">%3$s</xliff:g>회)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">마지막 액세스: <xliff:g id="TIME_3">%1$s</xliff:g>\n액세스 <xliff:g id="NUM_4">%2$s</xliff:g>회\n시간: <xliff:g id="TIME_5">%3$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>회\n시간: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">마지막 액세스: <xliff:g id="TIME_4">%1$s</xliff:g>\n액세스 <xliff:g id="NUM_5">%2$s</xliff:g>회(백그라운드에서 <xliff:g id="NUM_6">%3$s</xliff:g>회)\n시간: <xliff:g id="TIME_7">%3$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>회(백그라운드에서 <xliff:g id="NUM_2">%3$s</xliff:g>회)\n시간: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"모든 권한"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"전체 기간"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"지난 7일"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"최근 24시간"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"최근 1시간"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"지난 15분"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"마지막 1분"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"사용 권한 없음"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"전체 기간 동안의 액세스"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"지난 7일 동안의 액세스"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"지난 24시간 동안의 액세스"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"지난 1시간 동안의 액세스"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"지난 15분 동안의 액세스"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"지난 1분 동안의 액세스"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"전체 기간 동안 가장 많이 사용된 권한"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"지난 7일 동안 가장 많이 사용된 권한"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"지난 24시간 동안 가장 많이 사용된 권한"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"지난 1시간 동안 가장 많이 사용된 권한"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"지난 15분 동안 가장 많이 사용된 권한"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"지난 1분 동안 가장 많이 사용된 권한"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"앱"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"필터링 기준: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"필터 삭제"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"필터링 기준"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"권한별로 필터링"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"사용된 권한 수"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"액세스 횟수"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"최근"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"새로고침"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"앱 권한 사용"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"액세스: <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="4040424337831328212">"액세스: <xliff:g id="NUM">%1$s</xliff:g>회, 마지막 사용: <xliff:g id="TIME">%2$s</xliff:g> 전"</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"허용"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"항상 허용"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"앱 사용 중에만 허용"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"거부"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> 권한"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="APP">%2$s</xliff:g>의 <xliff:g id="PERM">%1$s</xliff:g> 액세스 권한"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="TIME">%3$s</xliff:g> 전에 <xliff:g id="APP">%1$s</xliff:g> 앱이 <xliff:g id="PERM">%2$s</xliff:g>에 액세스했습니다."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> 앱이 <xliff:g id="PERM">%2$s</xliff:g>에 액세스하지 않았습니다."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"자세한 권한 사용 내역 보기"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"마지막 액세스: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"액세스하지 않음"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"허용됨"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"사용 중에만 허용됨"</string>
+ <string name="denied_header" msgid="2277998574238617699">"거부됨"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"자세한 사용량 보기"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>일</item>
+ <item quantity="one">1일</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>시간</item>
+ <item quantity="one">1시간</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>분</item>
+ <item quantity="one">1분</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>초</item>
+ <item quantity="one">1초</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>을(를) <xliff:g id="ROLE_NAME">%2$s</xliff:g>(으)로 사용하시겠습니까?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"<b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> 대신 <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b>을(를) <xliff:g id="ROLE_NAME">%2$s</xliff:g>(으)로 사용하시겠습니까?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"권한 알림"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g>에서 내 위치를 사용함"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"이 앱에서 내 위치에 항상 액세스할 수 있습니다. 변경하려면 탭하세요."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"앱 사용 중에만"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"허용된 권한 없음"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"거부된 권한 없음"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"허용된 앱 없음"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"거부된 앱 없음"</string>
+ <string name="launch_app" msgid="5641437562665039291">"열기"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"제거"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"강제 종료"</string>
+ <!-- no translation found for settings (2884124136779508907) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_title_single (1613456964930225277) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_title_multiple (1262608280562255761) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_bottom_text_single (6932810943462703517) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_bottom_text_multiple (817809209968536329) -->
+ <skip />
+ <string name="default_apps" msgid="8554530939151957828">"기본 앱"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"기본 앱 없음"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"직장용 기본 앱"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"없음"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"앱 없음"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"특수 앱 액세스 권한"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"특수 앱 액세스 권한 없음"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"앱 없음"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"지원 앱"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"브라우저 앱"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"전화 앱"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS 앱"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"긴급 앱"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"홈 앱"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"음악 앱"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"갤러리 앱"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"자동차 모드 전화 앱"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"통화 리디렉션 앱"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"통화 선택 앱"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"통화 호환 앱"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"차량 프로젝션 앱"</string>
+ <!-- no translation found for home_missing_work_profile_support (1439466272746259937) -->
+ <skip />
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"참고: 화면 잠금이 설정되어 있다면 기기를 다시 시작한 후 이 앱을 시작하려면 기기를 잠금 해제해야 합니다."</string>
+ <!-- no translation found for assistant_confirmation_message (4529925223796676824) -->
+ <skip />
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"디버깅 데이터 공유"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"상세한 디버깅 데이터를 공유하시겠습니까?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g>에서 디버깅 정보를 업로드하려고 합니다."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"디버깅 데이터 공유"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g>이(가) 이 기기에서 <xliff:g id="DATE">%2$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g>에 만들어진 버그 신고를 업로드하려고 합니다. 버그 신고에는 기기에 관한 개인정보나 앱이 기록한 개인정보(예: 사용자 이름, 위치 데이터, 기기 식별자, 네트워크 정보)가 포함됩니다. 이 정보는 신뢰할 수 있는 사람 또는 앱에 한해 공유해야 합니다. <xliff:g id="APP_NAME_1">%4$s</xliff:g>에서 버그 신고를 업로드하도록 허용할까요?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"허용"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"거부"</string>
</resources>
diff --git a/res/values-ky-television/strings.xml b/res/values-ky-television/strings.xml
index 20994ff..3d0afea 100644
--- a/res/values-ky-television/strings.xml
+++ b/res/values-ky-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Баш тартам жана экинчи суралбасын"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Муну кийин Жөндөөлөр > Колдонмолордон өзгөртө аласыз"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Тутум колдонмолорун көрсөтүү"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Колдонмонун уруксаттары"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Колдонмонун уруксаттары"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> уруксаттары"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Кошумча уруксаттар"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> уруксаттары"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Баш тартам жана экинчи суралбасын"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Муну кийин Жөндөөлөр > Колдонмолордон өзгөртө аласыз"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Тутум колдонмолорун көрсөтүү"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Колдонмонун уруксаттары"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Колдонмонун уруксаттары"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> уруксаттары"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Кошумча уруксаттар"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> уруксаттары"</string>
</resources>
diff --git a/res/values-ky-watch/strings.xml b/res/values-ky-watch/strings.xml
index aadb7c4..0550382 100644
--- a/res/values-ky-watch/strings.xml
+++ b/res/values-ky-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Баш тарам, экинчи суралбасын"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Тутум колдонмолорун көрсөтүү"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Өзгөртүүгө болбойт"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Ооба"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Жокко чыгаруу"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Баш тарам, экинчи суралбасын"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Тутум колдонмолорун көрсөтүү"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Өзгөртүүгө болбойт"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Ооба"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Жок"</string>
</resources>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index f959147..0ffe8c9 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Топтом орноткуч"</string>
- <string name="next" msgid="3057143178373252333">"Кийинки"</string>
- <string name="install" msgid="5896438203900042068">"Орнотуу"</string>
- <string name="done" msgid="3889387558374211719">"Даяр"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Бул колдонмого кийинки уруксаттар берилсин:"</string>
- <string name="cancel" msgid="8360346460165114585">"Жокко чыгаруу"</string>
- <string name="unknown" msgid="4742479012767208045">"Белгисиз"</string>
- <string name="installing" msgid="8613631001631998372">"Орнотулууда…"</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> орнотулууда…"</string>
- <string name="install_done" msgid="3682715442154357097">"Колдонмо орнотулду."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Бул колдонмону орнотоюн дегениңиз аныкпы? Ал кийинкилерге жетки алат:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Бул колдонмону орнотоюн дегениңиз аныкпы? Ал эч бир атайын жетки уруксаттарын талап кылбайт."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Учурда иштеп турган бул колдонмого жаңыртуу орнотоюн дегениңиз аныкпы? Сиздин сакталган берилиштериңиз өчүрүлбөйт. Жаңыртылган колдонмо кийинкилерге жетки алат:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Бул камтылган колдонмого жаңыртуу орнотоюн дегениңиз аныкпы? Сиздин сакталган берилиштериңиз өчүрүлбөйт. Жаңыртылган колдонмо кийинкилерге жетки алат:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Учурда иштпе турган бул колдонмого жаңыртуу орнотоюн дегениңиз аныкпы? Сиздин сакталган берилиштериңиз өчүрүлбөйт. Ал эч бир атайын жетки уруксаттарын талап кылбайт."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Бул камтылган колдонмого жаңыртуу орнотоюн дегениңиз аныкпы? Сиздин сакталган берилиштериңиз өчүрүлбөйт. Ал эч бир атайын жетки уруксаттарын талап кылбайт."</string>
- <string name="install_failed" msgid="6579998651498970899">"Колдонмо орнотулган жок."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Топтом орнотуудан бөгөттөлгөн."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Башка топтом менен дал келбегендиктен колдонмо орнотулган жок."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Бул колдонмо планшетиңизге шайкеш эмес болгондуктан колдонмо орнотулган жок."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Бул колдонмо сыналгыңызга шайкеш келбейт."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Бул колдонмо телефонуңузга шайкеш эмес болгондуктан колдонмо орнотулган жок."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Топтом катары орнотулбай калган колдонмо жараксыз окшойт."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосун планшетиңизге орнотуу мүмкүн эмес."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> сыналгыңызга орнотулбай койду."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосун телефонуңузга орнотуу мүмкүн эмес."</string>
- <string name="launch" msgid="4826921505917605463">"Ачуу"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Администраторуңуз белгисиз булактардан алынган колдонмолордун орнотулушуна жол бербейт"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Бул колдонуучу белгисиз колдонмолорду орното албайт"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Бул колдонуучу колдонмолорду орното албайт"</string>
- <string name="ok" msgid="3468756155452870475">"Жарайт"</string>
- <string name="settings" msgid="6743583734099755409">"Жөндөөлөр"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Колдонмолорду башкаруу"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Колдонмо алмаштырылсынбы?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Сиз орнотуп жаткан колдонмо башка колдонмону жок кылат.\n\nМурунку колдонуучу берилиштериңиздин бардыгы сакталат."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Бул системалык колдонмо.\n\nМурунку колдонуучу берилиштериңиздин бардыгы сакталат."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Бош орун жок"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосун телефонуңузга орнотуу мүмкүн эмес. Орун бошотуп, кайталап орнотуп көрүңүз."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"Жарайт"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Колдонмо табылган жок"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Колдонмо орнотулган колдонмолор тизмегинен табылган жок."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Тыюу салынган"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Учурдагы колдонуучу колдонмону чыгарып сала албайт."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Ката"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Колдонмону чыгарып салуу мүмкүн болбой жатат."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Колдонмону чечип салуу"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Жаңыртууну чечип салуу"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> кийинки колдонмонун бөлүгү:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Бул колдонмону чечип салгыңыз келеби?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Бул колдонмо "<b>"бардык"</b>" колдонуучулардан алынып салынсынбы? Бул колдонмо жана анын берилиштери бул түзмөктүн "<b>"бардык"</b>" колдонуучуларынан алынат."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Бул колдонмону <xliff:g id="USERNAME">%1$s</xliff:g> колдонуучусу үчүн орнотуудан чыгаргыңыз келеби?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Бул колдонмонун баштапкы версиясы орнотулсунбу? Бардык дайындар өчүп калат."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Бул колдонмонун баштапкы версиясы орнотулсунбу? Түзмөктөгү бардык профилдердин, ошондой эле жумушчу профилдин дайындары өчүп калат."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Чыгарылып салынууда"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Чыгарылып салынбай калгандар"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Чыгарылып салынууда…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> колдонмосу чыгарылууда…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Чечилип бүттү."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> колдонмосу чыгарылды"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Чечүү ийгиликсиз болду."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> колдонмосун чыгарып салуу ишке ашкан жок."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Түзмөктү башкарган колдонмо иштеп жатканда аны чыгарып салууга болбойт"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"<xliff:g id="USERNAME">%1$s</xliff:g> колдонуучусунун түзмөктү башкарган колдонмосу иштеп жатканда, аны чыгарып салууга болбойт"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Колдонмо айрым колдонуучулар же профилдерге керек."</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Бул колдонмо профилиңизге керек жана аны чыгарып салуу мүмкүн эмес."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Бул колдонмо түзмөк администраторуңузга керектелет жана орнотуудан чыгаруу мүмкүн эмес."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Түзмөктү башкарган колдонмолорду көзөмөлдөө"</string>
- <string name="manage_users" msgid="3125018886835668847">"Колдонуучуларды башкаруу"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосун чечип салуу мүмкүн эмес."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Таңгакты окууда маселе пайда болду."</string>
- <string name="newPerms" msgid="6039428254474104210">"Жаңы"</string>
- <string name="allPerms" msgid="1024385515840703981">"Бардыгы"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Купуялуулук"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Жетүү уруксаттары"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Бул жаңыртуу жаңы уруксаттарды талап кылбайт."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Кийинки уруксаттарды берейин дегениңиз аныкпы? Ал кийинкилерге жетки алат:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Жок"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Көбүрөөк маалымат"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Баш тартуу"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> колдонмосуна <xliff:g id="ACTION">%2$s</xliff:g> уруксат берилсинби?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> өчүрүлгөн"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"баары өчүрүлгөн"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"эч бири өчүрүлгөн жок"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Уруксат берүү"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Колдонмолор"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Колдонмо уруксаттары"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Экинчи суралбасын"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Уруксаттар жок"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Кошумча уруксаттар"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Уруксаттарды көзөмөлдөгүч"</string>
+ <string name="ok" msgid="4417794827535157922">"ЖАРАЙТ"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"уруксаттар"</string>
+ <string name="cancel" msgid="7279939269964834974">"Жокко чыгаруу"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Колдонмо табылган жок"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Баш тартуу"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Баш тартам жана экинчи суралбасын"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Дагы маалымат"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Баары бир баш тартуу"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> колдонмосуна <xliff:g id="ACTION">%2$s</xliff:g> уруксат берилсинби?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> колдонмосуна <xliff:g id="ACTION">%2$s</xliff:g> аракетине ар дайым уруксат берилсинби?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Ушул колдонмодо иштегенде гана"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Ар дайым"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Баш тартам жана экинчи суралбасын"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> өчүрүлгөн"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"баары өчүрүлгөн"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"эч бири өчүрүлгөн жок"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Уруксат берүү"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Бардык учурда уруксат берүү"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Колдонмо пайдаланылып жаткан учурда гана уруксат берүү"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Колдонмолор"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Колдонмонун уруксаттары"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Уруксаттарды башкаргыч"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Экинчи суралбасын"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Уруксаттар жок"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Кошумча уруксаттар"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Колдонмо тууралуу маалыматты ачуу"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"Бул колдонмо эски Android версиясы үчүн түзүлгөн. Уруксат берилбесе, ал туура эмес иштеп калышы мүмкүн."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"белгисиз аракеттерди жасайт"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"Тутумду көрсөтүү"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Тутумдагы процесстерди жашыруу"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> уруксат"</string>
- <string name="no_apps" msgid="1965493419005012569">"Бир дагы колдонмо жок"</string>
- <string name="location_settings" msgid="1774875730854491297">"Геолокация параметрлери"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> - бул түзмөктөгү жайгашкан жерди аныктоо кызматынын камсыздоочусу. Жайгашкан жерди көрүү мүмкүнчүлүгүн жайгашкан жерди аныктоо жөндөөлөрүнөн өзгөртсө болот."</string>
- <string name="system_warning" msgid="7103819124542305179">"Эгер бул уруксатты четке каксаңыз, түзмөгүңүздүн негизги функциялары талаптагыдай иштебей калышы мүмкүн."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Саясат тарабынан күчүнө киргизилген"</string>
- <string name="loading" msgid="7811651799620593731">"Жүктөлүүдө…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Бардык уруксаттар"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Колдонмонун башка жөндөмдөрү"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Уруксат суроо"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Экран кабатталышы аныкталды"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Бул уруксаттын жөндөөсүн өзгөртүү үчүн, адегенде Жөндөөлөр > Колдонмолордон экрандын кабатталышын өчүрүңүз"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Жөндөөлөрдү ачуу"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Тагынма"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Орнотуу/чыгарып салуу аракеттери Android Wear\'де колдоого алынбайт."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> жаңыртылды. <xliff:g id="APP_NAME_1">%1$s</xliff:g> төмөнкү аракеттерге уруксат берилсинби?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> колдонмосу үчүн уруксаттарды тандаңыз"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> жаңыртылды. Ал үчүн уруксаттарды тандаңыз."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Жок"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Улантуу"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Жаңы уруксаттар"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Учурдагы уруксаттар"</string>
- <string name="message_staging" msgid="6151794817691100003">"Күтө туруңуз…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Белгисиз"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Коопсуздукту сактоо максатында, планшетиңизге бул булактан колдонмолорду орнотууга уруксат жок."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Коопсуздукту сактоо максатында, сыналгыңызга бул булактан колдонмолорду орнотууга уруксат жок."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Коопсуздукту сактоо максатында, телефонуңузга бул булактан колдонмолорду орнотууга уруксат жок."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Телефонуңуз жана жеке дайындарыңыз белгисиз колдонмолордон зыян тартып калышы мүмкүн. Бул колдонмону орнотуп, аны пайдалануудан улам телефонуңузга кандайдыр бир зыян келтирилсе же дайындарыңызды жоготуп алсаңыз, өзүңүз жооптуу болосуз."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Планшетиңиз жана жеке дайындарыңыз белгисиз колдонмолордон зыян тартып калышы мүмкүн. Бул колдонмону орнотуп, аны пайдалануудан улам планшетиңизге кандайдыр бир зыян келтирилсе же дайындарыңызды жоготуп алсаңыз, өзүңүз жооптуу болосуз."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"TV жана жеке дайындарыңыз белгисиз колдонмолордон зыян тартып калышы мүмкүн. Бул колдонмону орнотуп, аны пайдалануудан улам TV\'ңизге кандайдыр бир зыян келтирилсе же дайындарыңызды жоготуп алсаңыз, өзүңүз жооптуу болосуз."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Улантуу"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Жөндөөлөр"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Тагынма колдонмолорду орнотуу/чыгаруу"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Бул колдонмо эски Android версиясы үчүн түзүлгөн. Уруксат берилбесе, ал туура эмес иштеп калышы мүмкүн."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"белгисиз аракеттерди жасайт"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_1">%2$d</xliff:g> колдонмонун ичинен <xliff:g id="COUNT_0">%1$d</xliff:g> уруксат берилген"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Акыркы уруксаттардын колдонулушун көрүү"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Уруксаттардын тактасын көрүү"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Тутумдагы процесстерди көрсөтүү"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Тутумдагы процесстерди жашыруу"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Бир да колдонмо жок"</string>
+ <string name="location_settings" msgid="547378321761364906">"Жайгашкан жерди аныктоо жөндөөлөрү"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> - бул түзмөктөгү жайгашкан жерди аныктоо кызматынын жабдуучусу. Жайгашкан жерди көрүү мүмкүнчүлүгүн жайгашкан жерди аныктоо жөндөөлөрүнөн өзгөртсө болот."</string>
+ <string name="system_warning" msgid="6868290533389195836">"Эгер бул уруксатты четке каксаңыз, түзмөгүңүздүн негизги функциялары талаптагыдай иштебей калышы мүмкүн."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Саясат тарабынан күчүнө киргизилген"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Фондук режимде дайындарга мүмкүнчүлүк алуу саясат тарабынан өчүрүлгөн"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Фондук режимде дайындарга мүмкүнчүлүк алуу саясат тарабынан иштетилген"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Активдүү режимде мүмкүнчүлүк алуу саясат аркылуу иштетилген"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Администратор тарабынан көзөмөлдөнөт"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Фондук режимде дайындарга мүмкүнчүлүк алуу админ тарабынан өчүрүлгөн"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Фондук режимде дайындарга мүмкүнчүлүк алуу админ тарабынан иштетилген"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Активдүү режимде мүмкүнчүлүк алуу админ тарабынан иштетилген"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Тутум аркылуу жөндөлгөн уруксаттар"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Ар дайым"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Ушул колдонмодо иштегенде гана"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Эч качан"</string>
+ <string name="loading" msgid="323483393167148377">"Жүктөлүүдө…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Бардык уруксаттар"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Колдонмонун башка мүмкүнчүлүктөрү"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Уруксат суроо"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Колдонмонун үстүнө коюу күйүк"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Бул уруксаттын жөндөөсүн өзгөртүү үчүн, адегенде Жөндөөлөр > Колдонмолор бөлүмүнөн колдонмонун үстүнө коюуну өчүрүңүз"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Жөндөөлөрдү ачуу"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Орнотуу/чыгарып салуу аракеттери Android Wear\'де колдоого алынбайт."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> колдонмосу үчүн уруксаттарды тандаңыз"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> жаңыртылды. Ал үчүн уруксаттарды тандаңыз."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Жок"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Улантуу"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Жаңы уруксаттар"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Учурдагы уруксаттар"</string>
+ <string name="message_staging" msgid="641286607664721291">"Күтө туруңуз…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Белгисиз"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Куралдар тактасы"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Акыркы жолу колдонулушу: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> жолу колдонулду (<xliff:g id="NUM_5">%3$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> жолу колдонулду (<xliff:g id="NUM_2">%3$s</xliff:g> фондук режимде)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Акыркы жолу колдонулушу: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> жолу колдонулду\nУзактыгы: <xliff:g id="TIME_5">%3$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> жолу колдонулду\nУзактыгы: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Акыркы жолу колдонулушу: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> жолу колдонулду (<xliff:g id="NUM_6">%3$s</xliff:g> фондук режимде)\nУзактыгы: <xliff:g id="TIME_7">%3$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> жолу колдонулду (<xliff:g id="NUM_2">%3$s</xliff:g> фондук режимде)\nУзактыгы: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Бардык уруксаттар"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Каалаган убакта"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Акыркы 7 күндө"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Акыркы 24 саатта"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Акыркы 1 саатта"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Акыркы 15 мүнөттө"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Акыркы 1 мүнөт"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Уруксаттар колдонулган жок"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Уруксаттардын колдонулушу"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Акыркы 7 күндүн ичинде колдонулган уруксаттар"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Акыркы 24 сатта колдонулган уруксаттар"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Акыркы сатта колдонулган уруксаттар"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Акыркы 15 мүнөттүн ичинде колдонулган уруксаттар"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Акыркы 1 мүнөттө колдонулган уруксаттар"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Эң көп колдонулган уруксаттар"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Акыркы 7 күндө эң көп колдонулган уруксаттар"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Акыркы 24 саатта эң көп колдонулган уруксаттар"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Акыркы 1 саатта эң көп колдонулган уруксаттар"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Акыркы 15 мүнөттө эң көп колдонулган уруксаттар"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Акыркы 1 мүнөттө эң көп колдонулган уруксаттар"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Колдонмолор"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Төмөнкү боюнча чыпкаланды: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Чыпканы алып салуу"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Төмөнкү боюнча чыпкалоо:"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Уруксаттар боюнча чыпкалоо"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Эң көп колдонулган уруксаттар"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Эң көп колдонулган уруксаттар"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Акыркылар"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Жаңыртуу"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Колдонмонун уруксаттарын пайдалануу"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"Кирүү: <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="4040424337831328212">"Кирүү: <xliff:g id="NUM">%1$s</xliff:g> жолу. Акыркы жолу <xliff:g id="TIME">%2$s</xliff:g> колдонулган."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Уруксат берүү"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Бардык учурда уруксат берүү"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Колдонмо пайдаланылып жаткан учурда гана уруксат берүү"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Жок"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> дайындарына уруксаттар"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="APP">%2$s</xliff:g> үчүн <xliff:g id="PERM">%1$s</xliff:g> дайындарына кирүү"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> <xliff:g id="PERM">%2$s</xliff:g> дайындарыңызга <xliff:g id="TIME">%3$s</xliff:g> мурун кирген."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> <xliff:g id="PERM">%2$s</xliff:g> уруксаттарыңызга кирген жок."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Уруксаттардын колдонулушун чоо-жайы менен көрүү"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Акыркы жолу колдонулушу: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Эч качан колдонулган эмес"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Уруксат берилген"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Колдонулган кезде гана уруксат"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Четке кагылды"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Бардык уруксаттардын колдонулушун көрүү"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> күн</item>
+ <item quantity="one">1 күн</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> саат</item>
+ <item quantity="one">1 саат</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> мүнөт</item>
+ <item quantity="one">1 мүнөт</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> секунд</item>
+ <item quantity="one">1 секунд</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> колдонмосу <xliff:g id="ROLE_NAME">%2$s</xliff:g> катары пайдаланылсынбы?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"<b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> колдонмосунун ордуна <xliff:g id="ROLE_NAME">%2$s</xliff:g> катары пайдаланылсынбы?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Уруксат жөнүндө эстеткичтер"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> кайда жүргөнүңүз тууралуу маалыматты колдонуп жатат"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Бул колдонмо кайда жүргөнүңүздү ар дайым билип турат. Аны өзгөртүү үчүн таптап коюңуз."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Колдонмо пайдаланылып жаткан учурда гана"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Колдонмого уруксаттар берилген жок"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Колдонмого бардык уруксаттар берилди"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Бир да колдонмого уруксат берилген жок"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Бардык колдонмолорго уруксат берилди"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Ачуу"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Чыгарып салуу"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Мажбурлап токтотуу"</string>
+ <string name="settings" msgid="2884124136779508907">"Жөндөөлөр"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> кызматынын түзмөгүңүзгө кирүүгө толук мүмкүнчүлүгү бар"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> атайын мүмкүнчүлүктөр кызматынын түзмөгүңүзгө кирүүгө толук мүмкүнчүлүгү бар"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> экраныңыздагы маалыматты, аракеттерди жана киргизүүлөрдү көрүп, аракеттерди аткарып, дисплейди көзөмөлдөйт."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Бул кызматтар экраныңыздагы маалыматты, аракеттерди жана киргизүүлөрдү көрүп, аракеттерди аткарып, дисплейди көзөмөлдөйт."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Демейки колдонмолор"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Демейки колдонмолор жок"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Жумуш үчүн демейки жөндөөлөр"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Жок"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Бир да колдонмо жок"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Колдонмонун атайын уруксаты"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Колднмнун атайын уруксаты жок"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Бир да колдонмо жок"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Көмөкчү колдонмо"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"\"Серепчи\" колдонмосу"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"¨Телефон\" колдонмосу"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"\"SMS\" колдонмосу"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Өзгөчө кырдаал колдонмосу"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Home колдонмосу"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Музыка колдонмосу"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Галерея колдонмосу"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Унаа режиминдеги \"Телефон\" колдонмосу"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Чалууну багытточу колдонмо"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Чалууларды башкаруу колдонмосу"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Чалууга коштомо колдонмо"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Унааны долбоорлоо колдонмосу"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Жумуш профили колдоого алынбайт"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Эскертүү: Эгер түзмөгүңүздү өчүрүп күйгүзгөндө экранды бөгөттөө жөндөлгөн болсо, түзмөктү бөгөттөн чыгармайынча бул колдонмо ачылбайт."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Жардамчы тутумуңузда иштеп жаткан колдонмолор тууралуу маалыматтарды, анын ичинде экраныңызда көрүнүп турган же колдонмолордо жеткиликтүү болгон маалыматты окуй алат."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Мүчүлүштүктөрдү оңдоо дайындарын бөлүшүү"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Мүчүлүштүктөрдү оңдоо дайындары бөлүшүлсүнбү?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> мүчүлүштүктөрдү оңдоо маалыматын жүктөп бергиси келет."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Мүчүлүштүктөрдү оңдоо дайындарын бөлүшүү"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> бул түзмөктөн <xliff:g id="DATE">%2$s</xliff:g> саат <xliff:g id="TIME">%3$s</xliff:g> алынган мүчүлүштүк тууралуу кабарды жүктөп берүүнү суранды. Мүчүлүштүк тууралуу кабарларда түзмөгүңүз тууралуу маалымат, ошондой эле колдонуучу аттары, жайгашкан жер дайындары, түзмөктүн идентификаторлору жана тармак маалыматтары сыяктуу колдонмолор аркылуу киргизилген дайындар камтылат. Мүчүлүштүк тууралуу кабарларды өзүңүз ишенген адамдар жана колдонмолор менен гана бөлүшүңүз. <xliff:g id="APP_NAME_1">%4$s</xliff:g> колдонмосуна мүчүлүштүк тууралуу кабарды жүктөп берүүгө уруксат бересизби?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Уруксат берүү"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Жок"</string>
</resources>
diff --git a/res/values-lo-television/strings.xml b/res/values-lo-television/strings.xml
index a6f4e49..0780907 100644
--- a/res/values-lo-television/strings.xml
+++ b/res/values-lo-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"ປະຕິເສດ ແລະຢ່າຖາມອີກ"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"ທ່ານສາມາດປ່ຽນແປງສິ່ງນີ້ໃນພາຍຫຼັງໄດ້ໃນການຕັ້ງຄ່າ > ແອັບ"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"ສະແດງແອັບລະບົບ"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"ການອະນຸຍາດແອັບ"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"ການອະນຸຍາດແອັບ"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> ການອະນຸຍາດ"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"ການອະນຸຍາດເພີ່ມເຕີມ"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> ການອະນຸຍາດ"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"ປະຕິເສດ ແລະ ຢ່າຖາມອີກ"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"ທ່ານສາມາດປ່ຽນແປງສິ່ງນີ້ໃນພາຍຫຼັງໄດ້ໃນການຕັ້ງຄ່າ > ແອັບ"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"ສະແດງແອັບລະບົບ"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"ສິດອະນຸຍາດແອັບ"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"ສິດອະນຸຍາດແອັບ"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> ການອະນຸຍາດ"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"ການອະນຸຍາດເພີ່ມເຕີມ"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> ການອະນຸຍາດ"</string>
</resources>
diff --git a/res/values-lo-watch/strings.xml b/res/values-lo-watch/strings.xml
index 4fae329..3476684 100644
--- a/res/values-lo-watch/strings.xml
+++ b/res/values-lo-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"ປະຕິເສດ, ຢ່າຖາມອີກ"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"ສະແດງແອັບລະບົບ"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ບໍ່ສາມາດປ່ຽນແປງໄດ້"</string>
- <string name="generic_yes" msgid="3394094077553763689">"ແມ່ນແລ້ວ"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"ຍົກເລີກ"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"ປະຕິເສດ, ຢ່າຖາມອີກ"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"ສະແດງແອັບລະບົບ"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"ບໍ່ສາມາດປ່ຽນແປງໄດ້"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"ໄປ"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"ຍົກເລີກ"</string>
</resources>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 3715ac5..ed1d552 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"ໂຕຕິດຕັ້ງແພັກເກດ"</string>
- <string name="next" msgid="3057143178373252333">"ຕໍ່ໄປ"</string>
- <string name="install" msgid="5896438203900042068">"ຕິດຕັ້ງ"</string>
- <string name="done" msgid="3889387558374211719">"ແລ້ວໆ"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"ອະນຸຍາດໃຫ້ແອັບຯນີ້:"</string>
- <string name="cancel" msgid="8360346460165114585">"ຍົກເລີກ"</string>
- <string name="unknown" msgid="4742479012767208045">"ບໍ່ຮູ້ຈັກ"</string>
- <string name="installing" msgid="8613631001631998372">"ກຳລັງຕິດຕັ້ງ…"</string>
- <string name="installing_app" msgid="4097935682329028894">"ກຳລັງຕິດຕັ້ງ <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"ຕິດຕັ້ງແອັບຯແລ້ວ."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"ທ່ານຕ້ອງການຕິດຕັ້ງແອັບພລິເຄຊັນນີ້ບໍ່? ມັນຈະໄດ້ສິດການເຂົ້າເຖິງ:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"ທ່ານຕ້ອງການຕິດຕັ້ງແອັບພລິເຄຊັນນີ້ບໍ່? ມັນບໍ່ຕ້ອງໃຊ້ສິດທິການເຂົ້າເຖິງພິເສດໃດໆ."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"ທ່ານຕ້ອງການຕິດຕັ້ງອັບເດດໃສ່ແອັບພລິເຄຊັນນີ້ບໍ່? ຂໍ້ມູນຂອງທ່ານທີ່ມີຢູ່ກ່ອນແລ້ວຈະຍັງຄົງຢູ່ຄືເກົ່າ. ແອັບພລິເຄຊັນທີ່ຜ່ານການອັບເດດຈະສາມາດເຂົ້າເຖິງ:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"ທ່ານຕ້ອງການທີ່ຈະຕິດຕັ້ງຊຸດອັບເດດສຳລັບແອັບຯນີ້ບໍ່? ຂໍ້ມູນທີ່ທ່ານມີຢູ່ຈະບໍ່ສູນຫາຍ. ການອັບເດດແອັບພລິເຄຊັນນີ້ຈະສາມາດເຂົ້າເຖິງ:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"ທ່ານຕ້ອງການຕິດຕັ້ງອັບເດດໃສ່ແອັບພລິເຄຊັນນີ້ບໍ່? ຂໍ້ມູນຂອງທ່ານທີ່ມີຢູ່ກ່ອນແລ້ວຈະຍັງຄົງຢູ່ຄືເກົ່າ. ມັນບໍ່ຕ້ອງການສິດເຂົ້າເຖິງພິເສດໃດໆ."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"ທ່ານຕ້ອງການຕິດຕັ້ງອັບເດດໃສ່ແອັບພລິເຄຊັນທີ່ມີມານຳນີ້ບໍ່? ຂໍ້ມູນຂອງທ່ານທີ່ມີຢູ່ກ່ອນແລ້ວຈະຍັງຄົງຢູ່ຄືເກົ່າ. ມັນບໍ່ຕ້ອງການສິດເຂົ້າເຖິງພິເສດໃດໆເລີຍ."</string>
- <string name="install_failed" msgid="6579998651498970899">"ບໍ່ໄດ້ຕິດຕັ້ງແອັບຯເທື່ອ."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"ແພັກເກດຖືກບລັອກບໍ່ໃຫ້ໄດ້ຮັບການຕິດຕັ້ງ"</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"App not installed as package conflicts with an existing package."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"App not installed as app isn\'t compatible with your tablet."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"ແອັບນີ້ບໍ່ເຂົ້າກັນໄດ້ກັບໂທລະພາບຂອງທ່ານ."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"App not installed as app isn\'t compatible with your phone."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"App not installed as package appears to be invalid."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"ບໍ່ສາມາດຕິດຕັ້ງ <xliff:g id="APP_NAME">%1$s</xliff:g> ໃສ່ແທັບເລັດຂອງທ່ານໄດ້."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> ບໍ່ສາມາດຕິດຕັ້ງໃສ່ໂທລະພາບຂອງທ່ານໄດ້."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"ບໍ່ສາມາດຕິດຕັ້ງ <xliff:g id="APP_NAME">%1$s</xliff:g> ໃນໂທລະສັບຂອງທ່ານໄດ້."</string>
- <string name="launch" msgid="4826921505917605463">"ເປີດ"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"ຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານບໍ່ອະນຸຍາດໃຫ້ຕິດຕັ້ງແອັບທີ່ໄດ້ມາຈາກແຫຼ່ງທີ່ບໍ່ຮູ້ຈັກ"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"ຜູ້ໃຊ້ນີ້ບໍ່ສາມາດຕິດຕັ້ງແອັບທີ່ບໍ່ຮູ້ຈັກໄດ້"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"ຜູ້ໃຊ້ນີ້ບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ຕິດຕັ້ງແອັບໄດ້"</string>
- <string name="ok" msgid="3468756155452870475">"ຕົກລົງ"</string>
- <string name="settings" msgid="6743583734099755409">"ການຕັ້ງຄ່າ"</string>
- <string name="manage_applications" msgid="4033876279091996596">"ຈັດການແອັບຯ"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"ແທນທີ່ແອັບຯບໍ່?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"ແອັບຯທີ່ທ່ານກຳລັງຕິດຕັ້ງຈະທັບແອັບຯອື່ນ.\n\nຂໍ້ມູນຜູ່ໃຊ້ທັງໝົດກ່ອນໜ້ານີ້ຂອງທ່ານຈະຖືກບັນທຶໄວ້."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"ນີ້ແມ່ນແອັບຯຂອງລະບົບ.\n\nຂໍ້ມູນຜູ່ໃຊ້ທັງໝົດກ່ອນໜ້ານີ້ຂອງທ່ານຈະຖືກບັນທຶໄວ້."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"ພື້ນທີ່ຫວ່າງບໍ່ພຽງພໍ"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"ບໍ່ສາມາດຕິດຕັ້ງ <xliff:g id="APP_NAME">%1$s</xliff:g> ໄດ້. ກະລຸນາລຶບຂໍ້ມູນທີ່ບໍ່ຈຳເປັນອອກ ເພື່ອໃຫ້ມີບ່ອນຈັດເກັບຂໍ້ມູນຫວ່າງເພີ່ມຂຶ້ນ ແລ້ວລອງໃໝ່ອີກຄັ້ງ."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"ຕົກລົງ"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"ບໍ່ພົບເຫັນແອັບຯ"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"ບໍ່ພົບແອັບຯໃນລາຍການຂອງແອັບຯທີ່ຕິດຕັ້ງແລ້ວ."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"ບໍ່ອະນຸຍາດແລ້ວ"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"ຜູ້ໃຊ້ປັດຈຸບັນບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ຖອນການຕິດຕັ້ງນີ້ໄດ້."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"ຜິດພາດ"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"ບໍ່ສາມາດຖອນການຕິດຕັ້ງແອັບໄດ້."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"ຖອນການຕິດຕັ້ງແອັບຯ"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"ຖອນການຕິດຕັ້ງອັບເດດ"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> ແມ່ນສ່ວນນຶ່ງຂອງແອັບຯຂ້າງລຸ່ມ:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"ທ່ານຕ້ອງການຖອນການຕິດຕັ້ງແອັບຯນີ້ບໍ່?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"ທ່ານຕ້ອງການທີ່ຈະຖອນການຕິດຕັ້ງແອັບຯນີ້ ສຳລັງຜູ່ໃຊ້"<b>"ທຸກຄົນ"</b>"ບໍ່? ແອັບພລິເຄຊັນ ແລະຂໍ້ມູນຂອງມັນຈະຖືກລຶບອອກ ຈາກຜູ່ໃຊ້"<b>"ທັງໝົດ"</b>"ໃນອຸປະກອນນີ້."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"ທ່ານຕ້ອງການຖອນການຕິດຕັ້ງແອັບຯນີ້ສຳລັບຜູ່ໃຊ້ <xliff:g id="USERNAME">%1$s</xliff:g> ບໍ່?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"ແທນທີ່ແອັບນີ້ດ້ວຍເວີຊັນທີ່ມາຈາກໂຮງງານບໍ? ຂໍ້ມູນທັງໝົດຈະຖືກລຶບອອກ."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"ແທນທີ່ແອັບນີ້ດ້ວຍເວີຊັນທີ່ມາຈາກໂຮງງານບໍ? ຂໍ້ມູນທັງໝົດຈະຖືກລຶບອອກ ເຊິ່ງມີຜົນກັບຜູ້ໃຊ້ອຸປະກອນນີ້ທຸກຄົນ ຮວມທັງຄົນທີ່ມີໂປຣໄຟລ໌ບ່ອນເຮັດວຽກນຳ."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"ກຳລັງຖອນການຕິດຕັ້ງ"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"ຖອນການຕິດຕັ້ງບໍ່ສຳເລັດ"</string>
- <string name="uninstalling" msgid="5556217435895938250">"ກຳລັງຖອນການຕິດຕັ້ງ..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"ກຳລັງຖອນການຕິດຕັ້ງ <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"ຖອນການຕິດຕັ້ງສຳເລັດແລ້ວ."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"ຖອນການຕິດຕັ້ງ <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ແລ້ວ"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"ການຖອນການຕິດຕັ້ງບໍ່ສຳເລັດ."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"ຖອນການຕິດຕັ້ງ <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ບໍ່ສຳເລັດ."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"ບໍ່ສາມາດຖອນການຕິດຕັ້ງແອັບອຸປະກອນທີ່ເຮັດວຽກຢູ່ໄດ້"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"ບໍ່ສາມາດຖອນການຕິດຕັ້ງແອັບຜູ້ເບິ່ງແຍງລະບົບທີ່ເຮັດວຽກຢູ່ສຳລັບ <xliff:g id="USERNAME">%1$s</xliff:g> ໄດ້"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"ແອັບນີ້ຈຳເປັນສຳລັບບາງຜູ້ໃຊ້ ຫຼື ບາງໂປຣໄຟລ໌ ແລະ ຖືກຖອນການຕິດຕັ້ງສຳລັບຄົນອື່ນແລ້ວ"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"ແອັບນີ້ຈຳເປັນຕ້ອງໃຊ້ກັບໂປຣໄຟລ໌ຂອງທ່ານ ແລະ ບໍ່ສາມາດຖອນການຕິດຕັ້ງໄດ້."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"ແອັບຯນີ້ຕ້ອງໃຊ້ໂດຍຜູ່ເບິ່ງແຍງລະບົບຂອງທ່ານ ແລະບໍ່ສາມາດຖອນການຕິດຕັ້ງໄດ້."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"ຈັດການແອັບຜູ້ເບິ່ງແຍງອຸປະກອນ"</string>
- <string name="manage_users" msgid="3125018886835668847">"ຈັດການຜູ້ໃຊ້"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> ບໍ່ສາມາດຖອນອອກໄດ້."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"ເກີດບັນຫາໃນການວິເຄາະແພັກເກດ."</string>
- <string name="newPerms" msgid="6039428254474104210">"ໃໝ່"</string>
- <string name="allPerms" msgid="1024385515840703981">"ທັງໝົດ"</string>
- <string name="privacyPerms" msgid="1850527049572617">"ຄວາມເປັນສ່ວນຕົວ"</string>
- <string name="devicePerms" msgid="6733560207731294504">"ການເຂົ້າເຖິງອຸປະກອນ"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"ອັບເດດນີ້ບໍ່ຕ້ອງການການອະນຸຍາດໃໝ່."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"ທ່ານຕ້ອງການອະນຸມັດສິ່ງຕໍ່ໄປນີ້ຫຼືບໍ່? ມັນຈະສາມາດເຂົ້າເຖິງ:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"ປະຕິເສດ"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"ຂໍ້ມູນເພີ່ມເຕີມ"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"ຢືນຢັນປະຕິເສດ"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"ອະນຸຍາດໃຫ້ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ສາມາດ <xliff:g id="ACTION">%2$s</xliff:g> ບໍ?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"ປິດໄວ້ <xliff:g id="COUNT">%1$d</xliff:g> ສິດອະນຸຍາດແລ້ວ"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"ປິດໄວ້ທັງໝົດແລ້ວ"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"ບໍ່ມີອັນໃດປິດການນຳໃຊ້ໄວ້"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"ອະນຸຍາດ"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"ແອັບ"</string>
- <string name="app_permissions" msgid="3146758905824597178">"ການອະນຸຍາດແອັບ"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"ບໍ່ຕ້ອງຖາມອີກ"</string>
- <string name="no_permissions" msgid="3210542466245591574">"ບໍ່ມີການອະນຸຍາດ"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"ການອະນຸຍາດເພີ່ມເຕີມ"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
- <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>
+ <string name="app_name" msgid="2792757108872430971">"ຕົວຄວບຄຸມສິດອະນຸຍາດ"</string>
+ <string name="ok" msgid="4417794827535157922">"ຕົກລົງ"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"ສິດອະນຸຍາດ"</string>
+ <string name="cancel" msgid="7279939269964834974">"ຍົກເລີກ"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"ບໍ່ພົບແອັບ"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"ປະຕິເສດ"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"ປະຕິເສດ ແລະ ຢ່າຖາມອີກ"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"ຂໍ້ມູນເພີ່ມເຕີມ"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"ຢືນຢັນປະຕິເສດ"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"ອະນຸຍາດໃຫ້ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ສາມາດ <xliff:g id="ACTION">%2$s</xliff:g> ບໍ?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"ອະນຸຍາດ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ໃຫ້ໃຊ້ <xliff:g id="ACTION">%2$s</xliff:g> ໄດ້ທຸກເທື່ອບໍ?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"ໃນເວລາໃຊ້ແອັບເທົ່ານັ້ນ"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"ທຸກເທື່ອ"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"ປະຕິເສດ ແລະ ຢ່າຖາມອີກ"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"ປິດໄວ້ <xliff:g id="COUNT">%1$d</xliff:g> ສິດອະນຸຍາດແລ້ວ"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"ປິດໄວ້ທັງໝົດແລ້ວ"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"ບໍ່ມີອັນໃດປິດການນຳໃຊ້ໄວ້"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"ອະນຸຍາດ"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"ອະນຸຍາດຕະຫຼອດເວລາ"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"ອະນຸຍາດສະເພາະເມື່ອມີການໃຊ້ແອັບ"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"ແອັບ"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"ສິດອະນຸຍາດແອັບ"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"ຕົວຈັດການສິດອະນຸຍາດ"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"ບໍ່ຕ້ອງຖາມອີກ"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"ບໍ່ມີສິດອະນຸຍາດ"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"ການອະນຸຍາດເພີ່ມເຕີມ"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"ເປີດຂໍ້ມູນແອັບ"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
+ <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="old_sdk_deny_warning" msgid="3872277112584842615">"ແອັບນີ້ຖືກອອກແບບມາສຳລັບ Android ເວີຊັນເກົ່າ. ການປະຕິເສດການອະນຸຍາດອາດຈະເຮັດໃຫ້ມັນບໍ່ເຮັດວຽກຕາມຕ້ອງການໄດ້ອີກ."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"ເຮັດການດຳເນີນການທີ່ບໍ່ຮູ້ຈັກ"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"ສະແດງລະບົບ"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"ເຊື່ອງລະບົບ"</string>
- <string name="permission_title" msgid="6495415273398916381">"ການອະນຸຍາດ <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"ບໍ່ມີແອັບ"</string>
- <string name="location_settings" msgid="1774875730854491297">"ການຕັ້ງຄ່າທີ່ຕັ້ງ"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> ແມ່ນຜູ້ໃຫ້ບໍລິການເລື່ອງການບໍລິການທີ່ຕັ້ງສຳລັບອຸປະກອນນີ້. ການເຂົ້າເຖິງທີ່ຕັ້ງແມ່ນສາມາດດັດແປງໄດ້ຈາກການຕັ້ງຄ່າທີ່ຕັ້ງ."</string>
- <string name="system_warning" msgid="7103819124542305179">"ຖ້າທ່ານປະຕິເສດການອະນຸຍາດນີ້, ຄຸນສົມບັດໃຊ້ງານພື້ນຖານຂອງອຸປະກອນຂອງທ່ານອາດຈະບໍ່ເຮັດໜ້າທີ່ຕາມທີ່ກຳນົດໄວ້."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"ບັງຄັບໃຊ້ຕາມນະໂຍບາຍແລ້ວ"</string>
- <string name="loading" msgid="7811651799620593731">"ກຳລັງໂຫລດ..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"ທຸກການອະນຸຍາດ"</string>
- <string name="other_permissions" msgid="2016192512386091933">"ຄວາມສາມາດອື່ນຂອງແອັບ"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"ການຮ້ອງຂໍການອະນຸຍາດ"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"ກວດພົບການວາງຊ້ອນໜ້າຈໍແລ້ວ"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"ເພື່ອປ່ຽນແປງການຕັ້ງຄ່າການອະນຸຍາດນີ້, ກ່ອນອື່ນໝົດທ່ານຕ້ອງປິດການວາງຊ້ອນໜ້າຈໍຈາກແອັບການຕັ້ງຄ່າ"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"ເປີດການຕັ້ງຄ່າ"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"ຕິດຕັ້ງ/ຖອນຕິດຕັ້ງ ຄຳສັ່ງທີ່ບໍ່ຮອງຮັບຢູ່ໃນ Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"ອັບເດດ <xliff:g id="APP_NAME_0">%1$s</xliff:g> ແລ້ວ. ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_1">%1$s</xliff:g> ເຂົ້າເຖິງສິ່ງຕໍ່ໄປນີ້ບໍ?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"ເລືອກວ່າຈະອະນຸຍາດໃຫ້ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ເຂົ້າເຖິງຫຍັງໄດ້ແດ່"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"ອັບເດດ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ແລ້ວ. ກະລຸນາເລືອກວ່າຈະໃຫ້ແອັບນີ້ເຂົ້າເຖິງຫຍັງໄດ້ແດ່."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"ຍົກເລີກ"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"ສືບຕໍ່"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"ການອະນຸຍາດໃໝ່"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"ການອະນຸຍາດປັດຈຸບັນ"</string>
- <string name="message_staging" msgid="6151794817691100003">"ກຳລັງຮຽງແອັບ…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"ບໍ່ຮູ້ຈັກ"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"ເພື່ອຄວາມປອດໄພຂອງທ່ານ, ແທັບເລັດຂອງທ່ານບໍ່ສາມາດຕິດຕັ້ງແອັບຈາກແຫລ່ງຂໍ້ມູນນີ້ໄດ້."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"ເພື່ອຄວາມປອດໄພຂອງທ່ານ, ໂທລະທັດຂອງທ່ານບໍ່ສາມາດຕິດຕັ້ງແອັບຈາກແຫລ່ງຂໍ້ມູນນີ້ໄດ້."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"ເພື່ອຄວາມປອດໄພຂອງທ່ານ, ໂທລະສັບຂອງທ່ານບໍ່ສາມາດຕິດຕັ້ງແອັບຈາກແຫລ່ງຂໍ້ມູນນີ້ໄດ້."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"ໂທລະສັບ ແລະ ຂໍ້ມູນສ່ວນຕົວຂອງທ່ານອາດຖືກໂຈມຕີໄດ້ໂດຍແອັບທີ່ບໍ່ຮູ້ຈັກ. ໂດຍການຕິດຕັ້ງແອັບນີ້, ແມ່ນທ່ານຍອມຮັບວ່າທ່ານຈະຮັບຜິດຊອບຕໍ່ຄວາມເສຍຫາຍໃດໆກໍຕາມທີ່ເກີດຂຶ້ນຕໍ່ໂທລະທັດຂອງທ່ານ ຫຼື ການສູນເສຍຂໍ້ມູນທີ່ອາດເກີດຈາກການນຳໃຊ້ມັນ."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"ແທັບເລັດ ແລະ ຂໍ້ມູນສ່ວນຕົວຂອງທ່ານອາດຖືກໂຈມຕີໄດ້ໂດຍແອັບທີ່ບໍ່ຮູ້ຈັກ. ໂດຍການຕິດຕັ້ງແອັບນີ້, ແມ່ນທ່ານຍອມຮັບວ່າທ່ານຈະຮັບຜິດຊອບຕໍ່ຄວາມເສຍຫາຍໃດໆກໍຕາມທີ່ເກີດຂຶ້ນຕໍ່ໂທລະທັດຂອງທ່ານ ຫຼື ການສູນເສຍຂໍ້ມູນທີ່ອາດເກີດຈາກການນຳໃຊ້ມັນ."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"ໂທລະທັດ ແລະ ຂໍ້ມູນສ່ວນຕົວຂອງທ່ານອາດຖືກໂຈມຕີໄດ້ໂດຍແອັບທີ່ບໍ່ຮູ້ຈັກ. ໂດຍການຕິດຕັ້ງແອັບນີ້, ແມ່ນທ່ານຍອມຮັບວ່າທ່ານຈະຮັບຜິດຊອບຕໍ່ຄວາມເສຍຫາຍໃດໆກໍຕາມທີ່ເກີດຂຶ້ນຕໍ່ໂທລະທັດຂອງທ່ານ ຫຼື ການສູນເສຍຂໍ້ມູນທີ່ອາດເກີດຈາກການນຳໃຊ້ມັນ."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"ດຳເນີນການຕໍ່"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"ການຕັ້ງຄ່າ"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"ກຳລັງຕິດຕັ້ງ/ຖອດຖອນແອັບ Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"ແອັບນີ້ຖືກອອກແບບມາສຳລັບ Android ເວີຊັນເກົ່າ. ການປະຕິເສດການອະນຸຍາດອາດຈະເຮັດໃຫ້ມັນບໍ່ເຮັດວຽກຕາມຕ້ອງການໄດ້ອີກ."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"ເຮັດການດຳເນີນການທີ່ບໍ່ຮູ້ຈັກ"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"ອະນຸຍາດແອັບ <xliff:g id="COUNT_0">%1$d</xliff:g> ຈາກທັງໝົດ <xliff:g id="COUNT_1">%2$d</xliff:g> ແອັບແລ້ວ"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"ການນຳໃຊ້ຫຼ້າສຸດ"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"ເບິ່ງແຜງໜ້າປັດສິດອະນຸຍາດ"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"ສະແດງລະບົບ"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"ເຊື່ອງລະບົບ"</string>
+ <string name="no_apps" msgid="2377153782338039463">"ບໍ່ມີແອັບ"</string>
+ <string name="location_settings" msgid="547378321761364906">"ການຕັ້ງຄ່າສະຖານທີ່"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> ເປັນຜູ້ໃຫ້ບໍລິການເລື່ອງການບໍລິການສະຖານທີ່ສຳລັບອຸປະກອນນີ້. ການເຂົ້າເຖິງສະຖານທີ່ແມ່ນສາມາດແກ້ໄຂໄດ້ຈາກການຕັ້ງຄ່າສະຖານທີ່."</string>
+ <string name="system_warning" msgid="6868290533389195836">"ຖ້າທ່ານປະຕິເສດສິດອະນຸຍາດນີ້, ຄຸນສົມບັດພື້ນຖານຂອງອຸປະກອນຂອງທ່ານອາດຈະບໍ່ເຮັດໜ້າທີ່ຕາມທີ່ກຳນົດໄວ້."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"ບັງຄັບໃຊ້ຕາມນະໂຍບາຍແລ້ວ"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"ປິດນຳໃຊ້ການເຂົ້າເຖິງໃນພື້ນຫຼັງຕາມນະໂຍບາຍແລ້ວ"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"ເປີດນຳໃຊ້ການເຂົ້າເຖິງໃນພື້ນຫຼັງຕາມນະໂຍບາຍແລ້ວ"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"ເປີດນຳໃຊ້ການເຂົ້າເຖິງໃນພື້ນໜ້າຕາມນະໂຍບາຍແລ້ວ"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"ຄວບຄຸມໂດຍຜູ້ເບິ່ງແຍງລະບົບແລ້ວ"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"ຜູ້ເບິ່ງແຍງລະບົບໄດ້ປິດການເຂົ້າເຖິງພື້ນຫຼັງໄວ້ແລ້ວ"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"ຜູ້ເບິ່ງແຍງລະບົບໄດ້ເປີດການເຂົ້າເຖິງພື້ນຫຼັງໄວ້ແລ້ວ"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"ຜູ້ເບິ່ງແຍງລະບົບໄດ້ເປີດການເຂົ້າເຖິງພື້ນໜ້າໄວ້ແລ້ວ"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"ລະບົບກຳນົດສິດອະນຸຍາດໄວ້ແລ້ວ"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"ທຸກເທື່ອ"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"ໃນເວລາໃຊ້ແອັບເທົ່ານັ້ນ"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"ບໍ່"</string>
+ <string name="loading" msgid="323483393167148377">"ກຳລັງໂຫລດ…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"ທຸກການອະນຸຍາດ"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"ຄວາມສາມາດອື່ນຂອງແອັບ"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"ການຮ້ອງຂໍການອະນຸຍາດ"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"ກວດພົບການວາງຊ້ອນໜ້າຈໍ"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"ເພື່ອປ່ຽນການຕັ້ງຄ່າສິດອະນຸຍາດນີ້, ກ່ອນອື່ນທ່ານຕ້ອງປິດການວາງຊ້ອນໜ້າຈໍຈາກການຕັ້ງຄ່າ > ແອັບ"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"ເປີດການຕັ້ງຄ່າ"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"ຕິດຕັ້ງ/ຖອນການຕິດຕັ້ງ ຄຳສັ່ງທີ່ບໍ່ຮອງຮັບຢູ່ Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"ເລືອກວ່າຈະອະນຸຍາດໃຫ້ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ເຂົ້າເຖິງຫຍັງໄດ້ແດ່"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"ອັບເດດ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ແລ້ວ. ກະລຸນາເລືອກວ່າຈະໃຫ້ແອັບນີ້ເຂົ້າເຖິງຫຍັງໄດ້ແດ່."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"ຍົກເລີກ"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"ສືບຕໍ່"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"ການອະນຸຍາດໃໝ່"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"ສິດອະນຸຍາດປັດຈຸບັນ"</string>
+ <string name="message_staging" msgid="641286607664721291">"ກຳລັງຮຽງແອັບ…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"ບໍ່ຮູ້ຈັກ"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"ແຜງໜ້າປັດ"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">ການເຂົ້າເຖິງຫຼ້າສຸດ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> ການເຂົ້າເຖິງ (<xliff:g id="NUM_5">%3$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> ການເຂົ້າເຖິງ (<xliff:g id="NUM_2">%3$s</xliff:g> ໃນພື້ນຫຼັງ)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">ການເຂົ້າເຖິງຫຼ້າສຸດ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> ການເຂົ້າເຖິງ\nໄລຍະເວລາ: <xliff:g id="TIME_5">%3$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> ການເຂົ້າເຖິງ\nໄລຍະເວລາ: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">ການເຂົ້າເຖິງຫຼ້າສຸດ: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> ການເຂົ້າເຖິງ (<xliff:g id="NUM_6">%3$s</xliff:g> ໃນພື້ນຫຼັງ)\nໄລຍະເວລາ: <xliff:g id="TIME_7">%3$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> ການເຂົ້າເຖິງ (<xliff:g id="NUM_2">%3$s</xliff:g> ໃນພື້ນຫຼັງ)\nໄລຍະເວລາ: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"ສິດອະນຸຍາດໃດກໍໄດ້"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"ເວລາໃດກໍໄດ້"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"7 ມື້ທີ່ຜ່ານມາ"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"24 ຊົ່ວໂມງທີ່ຜ່ານມາ"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"1 ຊົ່ວໂມງທີ່ຜ່ານມາ"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"15 ນາທີຜ່ານມາ"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"1 ນາທີທີ່ຜ່ານມາ"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"ບໍ່ມີການນຳໃຊ້ສິດອະນຸຍາດ"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"ເຂົ້າເຖິງໄດ້ທຸກເວລາ"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"ການເຂົ້າເຖິງໃນ 7 ມື້ທີ່ຜ່ານມາ"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"ການເຂົ້າເຖິງໃນ 24 ຊົ່ວໂມງທີ່ຜ່ານມາ"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"ການເຂົ້າເຖິງໃນຊົ່ວໂມງທີ່ຜ່ານມາ"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"ເຂົ້າເຖິງໃນ 15 ນາທີທີ່ຜ່ານມາ"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"ການເຂົ້າເຖິງໃນ 1 ນາທີທີ່ຜ່ານມາ"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"ການນຳໃຊ້ສິດອະນຸຍາດສູງສຸດທຸກເວລາ"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"ການນຳໃຊ້ສິດອະນຸຍາດສູງສຸດໃນ 7 ມື້ທີ່ຜ່ານມາ"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"ການນຳໃຊ້ສິດອະນຸຍາດສູງສຸດໃນ 24 ຊົ່ວໂມງທີ່ຜ່ານມາ"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"ການນຳໃຊ້ສິດອະນຸຍາດສູງສຸດໃນ 1 ຊົ່ວໂມງທີ່ຜ່ານມາ"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"ການນຳໃຊ້ສິດອະນຸຍາດສູງສຸດໃນ 24 ນາທີທີ່ຜ່ານມາ"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"ການນຳໃຊ້ສິດອະນຸຍາດສູງສຸດໃນ 1 ນາທີທີ່ຜ່ານມາ"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"ແອັບ"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"ກັ່ນຕອງແລ້ວໂດຍ: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"ລຶບຕົວກັ່ນຕອງອອກ"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"ກັ່ນຕອງຕາມ"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"ກັ່ງຕອງຕາມສິດອະນຸຍາດ"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"ສິດອະນຸຍາດຫຼາຍທີ່ສຸດ"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"ການເຂົ້າເຖິງທີ່ຫຼາຍທີ່ສຸດ"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"ຫຼ້າສຸດ"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"ໂຫຼດຄືນໃໝ່"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"ການໃຊ້ສິດອະນຸຍາດແອັບ"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"ເຂົ້າເຖິງ: <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="4040424337831328212">"ເຂົ້າເຖິງ: <xliff:g id="NUM">%1$s</xliff:g> ເທື່ອ. ໃຊ້ຫຼ້າສຸດ <xliff:g id="TIME">%2$s</xliff:g> ກ່ອນ."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"ອະນຸຍາດ"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"ອະນຸຍາດຕະຫຼອດເວລາ"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"ອະນຸຍາດສະເພາະເມື່ອມີການໃຊ້ແອັບ"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"ປະຕິເສດ"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"ສິດອະນຸຍາດ <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"ການເຂົ້າເຖິງ <xliff:g id="PERM">%1$s</xliff:g> ສຳລັບ <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> ເຂົ້າເຖິງ <xliff:g id="PERM">%2$s</xliff:g> ຂອງທ່ານເມື່ອ <xliff:g id="TIME">%3$s</xliff:g>ກ່ອນ."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> ບໍ່ໄດ້ເຂົ້າເຖິງ <xliff:g id="PERM">%2$s</xliff:g> ຂອງທ່ານ."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"ເບິ່ງການໃຊ້ສິດອະນຸຍາດແບບລະອຽດ"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"ເຂົ້າເຖິງຫຼ້າສຸດ: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"ບໍ່ເຄີຍເຂົ້າເຖິງ"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"ອະນຸຍາດແລ້ວ"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"ອະນຸຍາດສະເພາະໃນຕອນໃຊ້ຢູ່ເທົ່ານັ້ນ"</string>
+ <string name="denied_header" msgid="2277998574238617699">"ຖືກປະຕິເສດ"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"ເບິ່ງການນຳໃຊ້ແບບລະອຽດ"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ມື້</item>
+ <item quantity="one">1 ມື້</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ຊົ່ວໂມງ</item>
+ <item quantity="one">1 ຊົ່ວໂມງ</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ນາທີ</item>
+ <item quantity="one">1 ນາທີ</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ວິນາທີ</item>
+ <item quantity="one">1 ວິນາທີ</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"ໃຊ້ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ເປັນ <xliff:g id="ROLE_NAME">%2$s</xliff:g> ຂອງທ່ານບໍ?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"ໃຊ້ <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> ແທນ <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> ເປັນ <xliff:g id="ROLE_NAME">%2$s</xliff:g> ຂອງທ່ານບໍ?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"ການແຈ້ງເຕືອນການອະນຸຍາດ"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> ໄດ້ໃຊ້ສະຖານທີ່ຂອງທ່ານແລ້ວ"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"ແອັບນີ້ສາມາດເຂົ້າເຖິງສະຖານທີ່ຂອງທ່ານໄດ້ຕະຫຼອດເວລາ. ແຕະເພື່ອປ່ຽນແປງ."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"ສະເພາະເມື່ອມີການໃຊ້ແອັບ"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"ບໍ່ມີສິດທີ່ອະນຸຍາດ"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"ບໍ່ມີສິດອະນຸຍາດຖືກປະຕິເສດ"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"ບໍ່ມີແອັບທີ່ອະນຸຍາດ"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"ບໍ່ມີແອັບທີ່ຖືກປະຕິເສດ"</string>
+ <string name="launch_app" msgid="5641437562665039291">"ເປີດ"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"ຖອນການຕິດຕັ້ງ"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"ບັງຄັບຢຸດ"</string>
+ <string name="settings" msgid="2884124136779508907">"ການຕັ້ງຄ່າ"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ມີສິດເຂົ້າເຖິງອຸປະກອນຂອງທ່ານເຕັມຮູບແບບ"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> ບໍລິການຊ່ວຍເຂົ້າເຖິງມີສິດເຂົ້າເຖິງອຸປະກອນຂອງທ່ານເຕັມຮູບແບບ"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ສາມາດເບິ່ງໜ້າຈໍ, ຄຳສັ່ງ ແລະ ການປ້ອນຂໍ້ມູນຂອງທ່ານ, ໃຊ້ຄຳສັ່ງ ແລະ ຄວບຄຸມການສະແດງຜົນໄດ້."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"ບໍລິການເຫຼົ່ານີ້ສາມາດເບິ່ງໜ້າຈໍ, ຄຳສັ່ງ ແລະ ການປ້ອນຂໍ້ມູນຂອງທ່ານ, ໃຊ້ຄຳສັ່ງ ແລະ ຄວບຄຸມການສະແດງຜົນໄດ້."</string>
+ <string name="default_apps" msgid="8554530939151957828">"ແອັບເລີ່ມຕົ້ນ"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"ບໍ່ມີແອັບເລີ່ມຕົ້ນ"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"ຄ່າເລີ່ມຕົ້ນສຳລັບບ່ອນເຮັດວຽກ"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"ບໍ່ມີ"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"ບໍ່ມີແອັບ"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"ສິດການເຂົ້າເຖິງແອັບພິເສດ"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"ບໍ່ມີສິດການເຂົ້າເຖິງແອັບພິເສດ"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"ບໍ່ມີແອັບ"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"ແອັບຜູ້ຊ່ວຍ"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"ແອັບໂປຣແກຣມທ່ອງເວັບ"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"ແອັບໂທລະສັບ"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"ແອັບ SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"ແອັບສຸກເສີນ"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"ແອັບໜ້າຫຼັກ"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"ແອັບເພງ"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"ແອັບຄັງ"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"ແອັບໂທລະສັບໂໝດລົດ"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"ແອັບການປ່ຽນເສັ້ນທາງສາຍ"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"ແອັບກວດສອບການໂທ"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"ແອັບແຖມການໂທ"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"ແອັບ Car Projection"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"ບໍ່ຮອງຮັບໂປຣໄຟລ໌ບ່ອນເຮັດວຽກ"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"ໝາຍເຫດ: ຫາກທ່ານຣີສະຕາດອຸປະກອນຂອງທ່ານ ແລະ ຕັ້ງການລັອກໜ້າຈໍໄວ້, ແອັບນີ້ຈະບໍ່ສາມາດໃຊ້ໄດ້ຈົນກວ່າທ່ານຈະປົດລັອກອຸປະກອນຂອງທ່ານ."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"ຜູ້ຊ່ວຍຈະສາມາດອ່ານຂໍ້ມູນກ່ຽວກັບແອັບທີ່ໃຊ້ໃນລະບົບຂອງທ່ານ ຮວມທັງຂໍ້ມູນທີ່ເບິ່ງເຫັນໄດ້ໃນໜ້າຈໍຂອງທ່ານ ຫຼື ເຂົ້າເຖິງໄດ້ພາຍໃນແອັບນັ້ນ."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"ແບ່ງປັນຂໍ້ມູນການດີບັກ"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"ແບ່ງປັນຂໍ້ມູນການດີບັກແບບລະອຽດບໍ?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> ຕ້ອງການອັບໂຫລດຂໍ້ມູນການດີບັກ."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"ແບ່ງປັນຂໍ້ມູນການດີບັກ"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ກຳລັງຮ້ອງຂໍໃຫ້ອັບໂຫລດລາຍງານຂໍ້ຜິດພາດຈາກອຸປະກອນນີ້ຖືກບັນທຶກມາເມື່ອ <xliff:g id="DATE">%2$s</xliff:g> ເວລາ <xliff:g id="TIME">%3$s</xliff:g>. ລາຍງານຂໍ້ຜິດພາດຕ່າງໆຈະຮວມເອົາຂໍ້ມູນສ່ວນຕົວກ່ຽວກັບອຸປະກອນຂອງທ່ານ ຫຼື ຂໍ້ມູນທີ່ຈັດເກັບໄວ້ໂດຍແອັບ, ຕົວຢ່າງ ເຊັ່ນ: ຊື່ຜູ້ໃຊ້, ຂໍ້ມູນສະຖານທີ່, ຕົວລະບຸອຸປະກອນ ແລະ ຂໍ້ມູນເຄືອຂ່າຍ. ກະລຸນາແບ່ງປັນລາຍງານຂໍ້ຜິດພາດໃຫ້ສະເພາະຄົນ ແລະ ແອັບທີ່ທ່ານເຊື່ອຖືໃຫ້ເຂົ້າເຖິງຂໍ້ມູນນີ້ໄດ້ເທົ່ານັ້ນ. ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_1">%4$s</xliff:g> ອັບໂຫລດລາຍງານຂໍ້ຜິດພາດບໍ?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"ອະນຸຍາດ"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"ປະຕິເສດ"</string>
</resources>
diff --git a/res/values-lt-television/strings.xml b/res/values-lt-television/strings.xml
index dee6de7..58dc7b4 100644
--- a/res/values-lt-television/strings.xml
+++ b/res/values-lt-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Atmesti ir daugiau neklausti"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Tai vėliau galėsite pakeisti skiltyje „Nustatymai > Programos“"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Rodyti sistemos programas"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Programos leidimai"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Programos leidimai"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> leidimai"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Papildomi leidimai"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> leidimai"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Atmesti ir daugiau neklausti"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Tai vėliau galėsite pakeisti skiltyje „Nustatymai“ > „Programos“"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Rodyti sistemos programas"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Programų leidimai"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Programų leidimai"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> leidimai"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Papildomi leidimai"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> leidimai"</string>
</resources>
diff --git a/res/values-lt-watch/strings.xml b/res/values-lt-watch/strings.xml
index 85eebcf..0f1024f 100644
--- a/res/values-lt-watch/strings.xml
+++ b/res/values-lt-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Atmesti, daugiau neklausti"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Rodyti sistemos programas"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Negalima pakeisti"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Taip"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Atšaukti"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Atmesti, daugiau neklausti"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Rodyti sistemos programas"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Negalima pakeisti"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Taip"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Atšaukti"</string>
</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 33a4f5f..25faa83 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,138 +16,226 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Paketo įdiegimo programa"</string>
- <string name="next" msgid="3057143178373252333">"Kitas"</string>
- <string name="install" msgid="5896438203900042068">"Įdiegti"</string>
- <string name="done" msgid="3889387558374211719">"Atlikta"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Leisti šiai programai:"</string>
- <string name="cancel" msgid="8360346460165114585">"Atšaukti"</string>
- <string name="unknown" msgid="4742479012767208045">"Nežinomas"</string>
- <string name="installing" msgid="8613631001631998372">"Diegiama..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Įdiegiama „<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>“…"</string>
- <string name="install_done" msgid="3682715442154357097">"Programa įdiegta."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Ar norite įdiegti šią programą? Jai bus suteikta prieiga prie:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Ar norite įdiegti šią programą? Jai nereikalinga jokia speciali prieiga."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Ar norite įdiegti šios esamos programos naujinį? Neprarasite esamų duomenų. Atnaujinus programą bus suteikta prieiga prie:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Ar norite įdiegti šios integruotos programos naujinį? Neprarasite esamų duomenų. Atnaujinus programą bus suteikta prieiga prie:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Ar norite įdiegti šios esamos programos naujinį? Neprarasite esamų duomenų. Nereikia jokios specialios prieigos."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Ar norite įdiegti šios integruotos programos naujinį? Neprarasite esamų duomenų. Nereikia jokios specialios prieigos."</string>
- <string name="install_failed" msgid="6579998651498970899">"Programa neįdiegta."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Paketas užblokuotas ir negali būti įdiegtas."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Programa neįdiegta, nes paketas nesuderinamas su esamu paketu."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Programa neįdiegta, nes ji nesuderinama su planšetiniu kompiuteriu."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Ši programa nesuderinama su jūsų TV."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Programa neįdiegta, nes ji nesuderinama su telefonu."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Programa neįdiegta, nes panašu, kad paketas netinkamas."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Jūsų planšetiniame kompiuteryje nepavyko įdiegti „<xliff:g id="APP_NAME">%1$s</xliff:g>“."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Nepavyko programos „<xliff:g id="APP_NAME">%1$s</xliff:g>“ įdiegti jūsų TV."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Jūsų telefone nepavyko įdiegti „<xliff:g id="APP_NAME">%1$s</xliff:g>“."</string>
- <string name="launch" msgid="4826921505917605463">"Atidaryti"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Jūsų administratorius neleidžia diegti programų, gautų iš nežinomų šaltinių"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Šis naudotojas negali diegti nežinomų programų"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Šiam naudotojui neleidžiama diegti programų"</string>
- <string name="ok" msgid="3468756155452870475">"Gerai"</string>
- <string name="settings" msgid="6743583734099755409">"Nustatymai"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Tvarkyti programas"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Pakeisti programą?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Diegiama programa pakeis kitą programą.\n\nBus išsaugoti visi ankstesni naudotojo duomenys."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Tai sistemos programa.\n\nBus išsaugoti visi ankstesni naudotojo duomenys."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Nėra vietos"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Nepavyko įdiegti „<xliff:g id="APP_NAME">%1$s</xliff:g>“. Atlaisvinkite vietos ir bandykite dar kartą."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"Gerai"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Programa nerasta"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Programa nerasta įdiegtų programų sąraše."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Neleidžiama"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Dabartiniam naudotojui neleidžiama atlikti šio pašalinimo veiksmo."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Klaida"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Nepavyko įdiegti programos."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Pašalinti programą"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Pašalinti naujinį"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"„<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g>“ yra šios programos dalis:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Ar norite pašalinti šią programą?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Ar norite pašalinti šią programą "<b>"visiems"</b>" naudotojams? Programa ir jos duomenys bus pašalinti iš "<b>"visų"</b>" naudotojų įrenginyje."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Ar norite pašalinti šią naudotojo <xliff:g id="USERNAME">%1$s</xliff:g> programą?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Pakeisti šios programos versiją į gamyklinę? Visi duomenys bus pašalinti."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Pakeisti šios programos versiją į gamyklinę? Visi duomenys bus pašalinti. Tai paveiks visus šio įrenginio naudotojus, įskaitant turinčius darbo profilius."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Vykdomi įdiegimai"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Nepavykę įdiegimai"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Pašalinama..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Pašalinama „<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>“…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Pašalinimas baigtas."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Paketas „<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>“ pašalintas"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Nepavyko pašalinti."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"„<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>“ pašalinimo veiksmas nesėkmingas."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Negalima pašalinti aktyvios įrenginio administravimo programos"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Negalima pašalinti aktyvios naudotojo <xliff:g id="USERNAME">%1$s</xliff:g> įrenginio administravimo programos"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Ši programa reikalinga kai kuriems naudotojams ar kai kuriuose profiliuose ir buvo pašalinta kitur"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Ši programa reikalinga jūsų profilyje ir jos negalima pašalinti."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Ši programa reikalinga jūsų įrenginio administratoriui ir jos negalima pašalinti."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Tvarkyti įrenginio administravimo programas"</string>
- <string name="manage_users" msgid="3125018886835668847">"Valdyti naudotojus"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Nepavyko pašalinti „<xliff:g id="APP_NAME">%1$s</xliff:g>“."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Analizuojant paketą iškilo problema."</string>
- <string name="newPerms" msgid="6039428254474104210">"Naujiena"</string>
- <string name="allPerms" msgid="1024385515840703981">"Visi"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privatumas"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Prieiga prie įreng."</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Šiam naujiniui nereikalingi nauji leidimai."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Ar norite suteikti šiuos leidimus? Bus suteikta prieiga prie:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Atmesti"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Daugiau informacijos"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Vis tiek atmesti"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Leisti programai <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"Išjungta leidimų: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"visi leidimai išjungti"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"nė vienas leidimas neišjungtas"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Leisti"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Programos"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Programos leidimai"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Daugiau neklausti"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Nėra jokių leidimų"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Papildomi leidimai"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Leidimų valdiklis"</string>
+ <string name="ok" msgid="4417794827535157922">"Gerai"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"leidimai"</string>
+ <string name="cancel" msgid="7279939269964834974">"Atšaukti"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Programa nerasta"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Atmesti"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Atmesti ir daugiau neklausti"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Daugiau inform."</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Vis tiek atm."</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Leisti programai <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Visada leisti programai <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Tik naudojant programą"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Visada"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Atmesti ir daugiau neklausti"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"Išjungta leidimų: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"visi leidimai išjungti"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"nė vienas leidimas neišjungtas"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Leisti"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Leisti visą laiką"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Leisti, tik kai programa naudojama"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Programos"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Programų leidimai"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Leidimų tvarkytuvė"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Daugiau neklausti"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Nėra jokių leidimų"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Papildomi leidimai"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Atidaryti programos informaciją"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="one">Dar <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="few">Dar <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="many">Dar <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="other">Dar <xliff:g id="COUNT_1">%1$d</xliff:g></item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Ši programa skirta senesnės versijos „Android“. Uždraudus leidimą ji gali nebeveikti kaip numatyta."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"atlieka nežinomą veiksmą"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"Leidžiama programų: <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="6773743421743728921">"Rodyti sistemą"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Slėpti sistemą"</string>
- <string name="permission_title" msgid="6495415273398916381">"Leidimai: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Nėra jokių programų"</string>
- <string name="location_settings" msgid="1774875730854491297">"Vietovės nustatymai"</string>
- <string name="location_warning" msgid="8778701356292735971">"„<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="7103819124542305179">"Jei uždrausite šį leidimą, pagrindinės įrenginio funkcijos gali nebeveikti, kaip numatyta."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Reikalaujama pagal politikos nuostatas"</string>
- <string name="loading" msgid="7811651799620593731">"Įkeliama..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"Visi leidimai"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Kitos programos galimybės"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Leidimo užklausa"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Aptikta ekrano perdanga"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Jei norite pakeisti šį leidimo nustatymą, pirmiausia turite išjungti ekrano perdangą skiltyje „Nustatymai > Programos“"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Atidaryti nustatymus"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Diegimo / pašalinimo veiksmai nepalaikomi sistemoje „Wear“."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"Programa „<xliff:g id="APP_NAME_0">%1$s</xliff:g>“ buvo atnaujinta. Leisti programai „<xliff:g id="APP_NAME_1">%1$s</xliff:g>“ pasiekti toliau nurodytus dalykus?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Pasirinkite, ką norite leisti programai <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> pasiekti"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"Programa <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> buvo atnaujinta. Pasirinkite, ką norite leisti šiai programai pasiekti."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Atšaukti"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Tęsti"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Nauji leidimai"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Dabartiniai leidimai"</string>
- <string name="message_staging" msgid="6151794817691100003">"Programa pateikiama etapais…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Nežinoma"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Saugos sumetimais planšetiniame kompiuteryje neleidžiama diegti nežinomų programų iš šio šaltinio."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Saugos sumetimais TV neleidžiama diegti nežinomų programų iš šio šaltinio."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Saugos sumetimais telefone neleidžiama diegti nežinomų programų iš šio šaltinio."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Telefonas ir asmeniniai duomenys labiau pažeidžiami įdiegus nežinomų programų. Įdiegdami šią programą sutinkate, kad patys esate atsakingi už žalą telefonui arba prarastus duomenis dėl šios programos naudojimo."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Planšetinis kompiuteris ir asmeniniai duomenys labiau pažeidžiami įdiegus nežinomų programų. Įdiegdami šią programą sutinkate, kad patys esate atsakingi už žalą planšetiniam kompiuteriui arba prarastus duomenis dėl šios programos naudojimo."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"TV ir asmeniniai duomenys labiau pažeidžiami įdiegus nežinomų programų. Įdiegdami šią programą sutinkate, kad patys esate atsakingi už žalą TV arba prarastus duomenis dėl šios programos naudojimo."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Tęsti"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Nustatymai"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Įdiegiamos / pašalinamos „Wear“ program."</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Ši programa skirta senesnės versijos „Android“. Uždraudus leidimą ji gali nebeveikti, kaip numatyta."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"atlieka nežinomą veiksmą"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"Leidžiama programų: <xliff:g id="COUNT_0">%1$d</xliff:g> iš <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Pastarasis naudojimas"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Žr. leidimų inform. suvestinę"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Rodyti sistemą"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Slėpti sistemą"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Nėra jokių programų"</string>
+ <string name="location_settings" msgid="547378321761364906">"Vietovės nustatymai"</string>
+ <string name="location_warning" msgid="4687406043150343369">"„<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="6868290533389195836">"Jei uždrausite šį leidimą, pagrindinės įrenginio funkcijos gali nebeveikti, kaip numatyta."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Laikomasi politikos"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Prieiga fone išjungta pagal politiką"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Prieiga fone įgalinta pagal politiką"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Prieiga priekiniame plane įgalinta pagal politiką"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Valdo administratorius"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Prieigą fone išjungė administratorius"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Prieigą fone įgalino administratorius"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Prieigą priekiniame plane įgalino administratorius"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Leidimą nustatė sistemą"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Visada"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Tik naudojant programą"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Niekada"</string>
+ <string name="loading" msgid="323483393167148377">"Įkeliama…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Visi leidimai"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Kitos programos galimybės"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Leidimo užklausa"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Aptikta ekrano perdanga"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Jei norite pakeisti šį leidimo nustatymą, pirmiausia turite išjungti ekrano perdangą skiltyje „Nustatymai“ > „Programos“"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Atidaryti nustatymus"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Diegimo / pašalinimo veiksmai nepalaikomi sistemoje „Wear“."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Pasirinkite, ką norite leisti programai <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> pasiekti"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"Programa <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> buvo atnaujinta. Pasirinkite, ką norite leisti šiai programai pasiekti."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Atšaukti"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Tęsti"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Nauji leidimai"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Dabartiniai leidimai"</string>
+ <string name="message_staging" msgid="641286607664721291">"Programa pateikiama etapais…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Nežinoma"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Informacijos suvestinė"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ <item quantity="many">Paskutinį kartą pasiekta: <xliff:g id="TIME_2">%1$s</xliff:g>\nPasiekta <xliff:g id="NUM_3">%2$s</xliff:g> karto</item>
+ <item quantity="other">Paskutinį kartą pasiekta: <xliff:g id="TIME_2">%1$s</xliff:g>\nPasiekta <xliff:g id="NUM_3">%2$s</xliff:g> kartų</item>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">Paskutinį kartą pasiekta: <xliff:g id="TIME_3">%1$s</xliff:g>\nPasiekta <xliff:g id="NUM_4">%2$s</xliff:g> kartą (<xliff:g id="NUM_5">%3$s</xliff:g> fone)</item>
+ <item quantity="few">Paskutinį kartą pasiekta: <xliff:g id="TIME_3">%1$s</xliff:g>\nPasiekta <xliff:g id="NUM_4">%2$s</xliff:g> kartus (<xliff:g id="NUM_5">%3$s</xliff:g> fone)</item>
+ <item quantity="many">Paskutinį kartą pasiekta: <xliff:g id="TIME_3">%1$s</xliff:g>\nPasiekta <xliff:g id="NUM_4">%2$s</xliff:g> karto (<xliff:g id="NUM_5">%3$s</xliff:g> fone)</item>
+ <item quantity="other">Paskutinį kartą pasiekta: <xliff:g id="TIME_3">%1$s</xliff:g>\nPasiekta <xliff:g id="NUM_4">%2$s</xliff:g> kartų (<xliff:g id="NUM_5">%3$s</xliff:g> fone)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">Paskutinį kartą pasiekta: <xliff:g id="TIME_3">%1$s</xliff:g>\nPasiekta <xliff:g id="NUM_4">%2$s</xliff:g> kartą\nTrukmė: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="few">Paskutinį kartą pasiekta: <xliff:g id="TIME_3">%1$s</xliff:g>\nPasiekta <xliff:g id="NUM_4">%2$s</xliff:g> kartus\nTrukmė: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="many">Paskutinį kartą pasiekta: <xliff:g id="TIME_3">%1$s</xliff:g>\nPasiekta <xliff:g id="NUM_4">%2$s</xliff:g> karto\nTrukmė: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">Paskutinį kartą pasiekta: <xliff:g id="TIME_3">%1$s</xliff:g>\nPasiekta <xliff:g id="NUM_4">%2$s</xliff:g> kartų\nTrukmė: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">Paskutinį kartą pasiekta: <xliff:g id="TIME_4">%1$s</xliff:g>\nPasiekta <xliff:g id="NUM_5">%2$s</xliff:g> kartą (<xliff:g id="NUM_6">%3$s</xliff:g> fone)\nTrukmė: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="few">Paskutinį kartą pasiekta: <xliff:g id="TIME_4">%1$s</xliff:g>\nPasiekta <xliff:g id="NUM_5">%2$s</xliff:g> kartus (<xliff:g id="NUM_6">%3$s</xliff:g> fone)\nTrukmė: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="many">Paskutinį kartą pasiekta: <xliff:g id="TIME_4">%1$s</xliff:g>\nPasiekta <xliff:g id="NUM_5">%2$s</xliff:g> karto (<xliff:g id="NUM_6">%3$s</xliff:g> fone)\nTrukmė: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">Paskutinį kartą pasiekta: <xliff:g id="TIME_4">%1$s</xliff:g>\nPasiekta <xliff:g id="NUM_5">%2$s</xliff:g> kartų (<xliff:g id="NUM_6">%3$s</xliff:g> fone)\nTrukmė: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Bet koks leidimas"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Bet koks laikas"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Pastarosios 7 dienos"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Pastarosios 24 valandos"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Pastaroji 1 valanda"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Pastarosios 15 minučių"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Pastaroji minutė"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Leidimai nenaudoti"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Pasiekta bet kuriuo metu"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Pasiekta per pastarąsias 7 dienas"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Pasiekta per pastarąsias 24 val."</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Pasiekta per pastarąją valandą"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Pasiekta per pastarąsias 15 minučių"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Pasiekta per pastarąją minutę"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Populiariausių leidimų naudojimas bet kuriuo metu"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Populiar. leidimų naudojimas per pastarąsias 7 d."</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Populiar. leidimų naudoj. per pastarąsias 24 val."</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Populiar. leidimų naudojimas per pastarąją valandą"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Populiar. leidimų naudoj. per pastarąsias 15 min."</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Populiar. leidimų naudojimas per pastarąją minutę"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Programos"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtruota pagal: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Pašalinti filtrą"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtruoti pagal"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtruoti pagal leidimus"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Daugiausia leidimų"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Daugiausia kartų pasiekta"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Naujausi"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Atnaujinti"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Programos leidimų naudojimas"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Prieiga: Kartų: <xliff:g id="NUM">%1$s</xliff:g>. Paskutinį kartą naudota prieš <xliff:g id="TIME">%2$s</xliff:g>."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Leisti"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Leisti visą laiką"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Leisti, tik kai programa naudojama"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Atmesti"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Leidimas: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Programos „<xliff:g id="APP">%2$s</xliff:g>“ prieiga prie <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"Programa „<xliff:g id="APP">%1$s</xliff:g>“ prieš <xliff:g id="TIME">%3$s</xliff:g> pasiekė: <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"Programa „<xliff:g id="APP">%1$s</xliff:g>“ neturėjo prieigos prie: <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Žiūrėti išsamią leidimų naudojimo informaciją"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Paskutinį kartą pasiekta: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Niekada nebuvo pasiekta"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Leidžiama"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Leidžiama, tik kol naudojama"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Atmesta"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Žr. išsamią naudojimo informaciją"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <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="seconds" formatted="false" msgid="1632909606956324957">
+ <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="role_request_message_add" msgid="1977772335648650272">"Naudoti programą <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> kaip <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Naudoti programą <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> vietoj <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> kaip <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Leidimų priminimai"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"Programa „<xliff:g id="APP_NAME">%s</xliff:g>“ naudojo jūsų vietovę"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Ši programa visada gali pasiekti jūsų vietovę. Palieskite, kad pakeistumėte."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Tik tada, kai programa naudojama"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Nesuteikta jokių leidimų"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Neatmesta jokių leidimų"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Neleidžiamos jokios programos"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Neatmesta jokių programų"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Atidaryti"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Pašalinti"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Priverstinai sustabdyti"</string>
+ <string name="settings" msgid="2884124136779508907">"Nustatymai"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"„<xliff:g id="SERVICE_NAME">%s</xliff:g>“ suteikta visateisė prieiga prie jūsų įrenginio"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> pritaikymo neįgaliesiems pasl. suteikta visateisė prieiga prie jūsų įrenginio"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"„<xliff:g id="SERVICE_NAME">%s</xliff:g>“ gali peržiūrėti jūsų ekraną, veiksmus ir įvestis, atlikti veiksmus ir valdyti ekraną."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Šios paslaugos gali peržiūrėti jūsų ekraną, veiksmus ir įvestis, atlikti veiksmus ir valdyti ekraną."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Numatytosios programos"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Nėra jokių numatytųjų programų"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Numatytosios darbo programos"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Nėra"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Nėra programų"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Speciali prieiga prie programų"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Nėra spec. prieig. prie progr."</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Nėra jokių programų"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Pagalbinė programa"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Naršyklės programa"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Telefono programa"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS programa"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Kritinės padėties programa"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Namų programa"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Muzikos programa"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Galerijos programa"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Automob. režimo tel. programa"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Skambučių peradres. programa"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Skambučių stebėjimo programa"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Papild. programos iškvietimas"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Automob. projekcijos programa"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Nepalaikomas darbo profilis"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Pastaba. Jei esate nustatę ekrano užraktą ir iš naujo paleisite įrenginį, nebus galima atidaryti programos, kol neatrakinsite įrenginio."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Padėjėjas galės skaityti informaciją apie sistemoje naudojamas programas, įskaitant ekrane matomą ar programose pasiekiamą informaciją."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Derinimo duomenų bendrinimas"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Bendrinti išsamius derinimo duomenis?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"Programa „<xliff:g id="APP_NAME">%1$s</xliff:g>“ norėtų įkelti derinimo informaciją."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Derinimo duomenų bendrinimas"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"Programa „<xliff:g id="APP_NAME_0">%1$s</xliff:g>“ prašo iš šio įrenginio įkelti pranešimą apie riktą, užfiksuotą <xliff:g id="DATE">%2$s</xliff:g>, <xliff:g id="TIME">%3$s</xliff:g>. Į pranešimus apie riktus įtraukiama asmens informacija apie įrenginį arba programų į žurnalą įrašyta informacija, pavyzdžiui, naudotojų vardai, vietovių duomenys, įrenginių identifikatoriai ir tinklo informacija. Pranešimus apie riktus bendrinkite tik su tais žmonėmis ir programomis, kuriais pasitikite ir kuriems galite patikėti šią informaciją. Leisti programai „<xliff:g id="APP_NAME_1">%4$s</xliff:g>“ įkelti pranešimą apie riktą?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Leisti"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Atmesti"</string>
</resources>
diff --git a/res/values-lv-television/strings.xml b/res/values-lv-television/strings.xml
index f01dfd2..ae35251 100644
--- a/res/values-lv-television/strings.xml
+++ b/res/values-lv-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Noraidīt un vairs nejautāt"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Vēlāk varat veikt izmaiņas sadaļā Iestatījumi > Lietotnes."</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>. no <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
- <string name="preference_show_system_apps" msgid="7330308025768596149">"Rādīt sistēmas lietotnes"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Lietotņu atļaujas"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Lietotņu atļaujas"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Lietotnes <xliff:g id="PERMISSION">%1$s</xliff:g> atļaujas"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Papildu atļaujas"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Lietotnes <xliff:g id="PERMISSION">%1$s</xliff:g> atļaujas"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Neatļaut un vairs nejautāt"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Vēlāk varat veikt izmaiņas sadaļā Iestatījumi > Lietotnes."</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>. no <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
+ <string name="preference_show_system_apps" msgid="4678781389736017160">"Rādīt sistēmas lietotnes"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Lietotņu atļaujas"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Lietotņu atļaujas"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Lietotnes <xliff:g id="PERMISSION">%1$s</xliff:g> atļaujas"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Papildu atļaujas"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Lietotnes <xliff:g id="PERMISSION">%1$s</xliff:g> atļaujas"</string>
</resources>
diff --git a/res/values-lv-watch/strings.xml b/res/values-lv-watch/strings.xml
index 29aef48..c28a58e 100644
--- a/res/values-lv-watch/strings.xml
+++ b/res/values-lv-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Neatļaut un vairs nejautāt"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>. no <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
- <string name="preference_show_system_apps" msgid="7042886929865431207">"Rādīt sistēmas lietotnes"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Nevar mainīt"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Jā"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Atcelt"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Neatļaut un vairs nejautāt"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>. no <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
+ <string name="preference_show_system_apps" msgid="4294454268471039411">"Rādīt sistēmas lietotnes"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Nevar mainīt"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Jā"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Atcelt"</string>
</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index bfd3ddb..e7edc71 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,137 +16,217 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Pakotnes instalēšanas programma"</string>
- <string name="next" msgid="3057143178373252333">"Tālāk"</string>
- <string name="install" msgid="5896438203900042068">"Instalēt"</string>
- <string name="done" msgid="3889387558374211719">"Gatavs"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Atļaut šai lietotnei:"</string>
- <string name="cancel" msgid="8360346460165114585">"Atcelt"</string>
- <string name="unknown" msgid="4742479012767208045">"Nezināms"</string>
- <string name="installing" msgid="8613631001631998372">"Notiek instalēšana..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Notiek pakotnes <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> instalēšana…"</string>
- <string name="install_done" msgid="3682715442154357097">"Lietotne ir instalēta."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Vai vēlaties instalēt šo lietojumprogrammu? Tā iegūs piekļuvi:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Vai vēlaties instalēt šo lietojumprogrammu? Tai nav nepieciešamas īpašas piekļuves atļaujas."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Vai vēlaties instalēt šīs lietojumprogrammas atjauninājumu? Esošie dati netiks zaudēti. Atjauninātajai lietojumprogrammai būs piekļuve:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Vai vēlaties instalēt šīs iebūvētās lietojumprogrammas atjauninājumu? Esošie dati netiks zaudēti. Atjauninātajai lietojumprogrammai būs piekļuve:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Vai vēlaties instalēt šīs lietojumprogrammas atjauninājumu? Esošie dati netiks zaudēti. Tam nav nepieciešama īpaša piekļuves atļauja."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Vai vēlaties instalēt šīs iebūvētās lietojumprogrammas atjauninājumu? Esošie dati netiks zaudēti. Tam nav nepieciešama īpaša piekļuves atļauja."</string>
- <string name="install_failed" msgid="6579998651498970899">"Lietotne nav instalēta."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Pakotnes instalēšana tika bloķēta."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Lietotne netika instalēta, jo rodas pakotnes konflikts ar esošo pakotni."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Lietotne netika instalēta, jo tā nav saderīga ar jūsu planšetdatoru."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Šī lietotne nav saderīga ar jūsu televizoru."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Lietotne netika instalēta, jo tā nav saderīga ar jūsu tālruni."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Lietotne netika instalēta, jo šķiet, ka pakotne nav derīga."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Lietotni <xliff:g id="APP_NAME">%1$s</xliff:g> nevarēja instalēt planšetdatorā."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Lietotni <xliff:g id="APP_NAME">%1$s</xliff:g> nevarēja instalēt jūsu televizorā."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Lietotni <xliff:g id="APP_NAME">%1$s</xliff:g> nevarēja instalēt tālrunī."</string>
- <string name="launch" msgid="4826921505917605463">"Atvērt"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Jūsu administrators neļauj instalēt lietotnes, kas iegūtas no nezināmiem avotiem."</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Šis lietotājs nevar instalēt lietotnes, kas iegūtas no nezināmiem avotiem."</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Šim lietotājam nav atļauts instalēt lietotnes"</string>
- <string name="ok" msgid="3468756155452870475">"Labi"</string>
- <string name="settings" msgid="6743583734099755409">"Iestatījumi"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Pārvaldīt lietotnes"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Vai aizstāt lietotni?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Ar instalējamo lietotni tiks aizstāta cita lietotne.\n\nVisi jūsu iepriekšējie lietotāja dati tiks saglabāti."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Šī ir sistēmas lietotne.\n\nVisi jūsu iepriekšējie lietotāja dati tiks saglabāti."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Nav brīvas vietas"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Lietotni <xliff:g id="APP_NAME">%1$s</xliff:g> nevarēja instalēt. Atbrīvojiet vietu un mēģiniet vēlreiz."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"Labi"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Lietotne nav atrasta"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Šī lietotne netika atrasta instalēto lietotņu sarakstā."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Nav atļauts"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Pašreizējam lietotājam nav atļauts veikt atinstalēšanu."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Kļūda"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Nevarēja atinstalēt lietotni."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Atinstalēt lietotni"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Atinstalēt atjauninājumu"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> ir daļa no šādas lietotnes:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Vai vēlaties atinstalēt šo lietotni?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Vai vēlaties atinstalēt šo lietotni "<b>"visiem"</b>" lietotājiem? Šī lietojumprogramma un tās dati tiks noņemti no "<b>"visiem"</b>" ierīces lietotāju kontiem."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Vai vēlaties atinstalēt šo lietotni lietotājam <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Vai aizstāt šo lietotni ar rūpnīcas versiju? Visi dati tiks noņemti."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Vai aizstāt šo lietotni ar rūpnīcas versiju? Visi dati tiks noņemti. Tas ietekmēs visu šīs ierīces lietotāju (arī to lietotāju, kuriem ir darba profili) datus."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Pašlaik veiktie atinstalēšanas gadījumi"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Neizdevušies atinstalēšanas gadījumi"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Notiek atinstalēšana..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Notiek lietotnes <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> atinstalēšana…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Atinstalēšana ir pabeigta."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Lietotne <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ir atinstalēta"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Atinstalēšana neizdevās."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Lietotnes <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> atinstalēšana nebija sekmīga."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Neizdevās atinstalēt aktīvas ierīces administratora lietotnes."</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Neizdevās atinstalēt aktīvas ierīces administratora lietotni <xliff:g id="USERNAME">%1$s</xliff:g>."</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Šī lietotne ir nepieciešama dažiem lietotājiem vai profiliem un tika atinstalēta citiem"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Šī lietotne ir nepieciešama jūsu profilam, tāpēc to nevar atinstalēt."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Ierīces administrators ir noteicis, ka lietotne ir obligāta un to nevar atinstalēt."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Pārvaldīt ierīces administratora lietotnes"</string>
- <string name="manage_users" msgid="3125018886835668847">"Pārvaldīt lietotājus"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Lietotni <xliff:g id="APP_NAME">%1$s</xliff:g> nevarēja atinstalēt."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Parsējot pakotni, radās problēma."</string>
- <string name="newPerms" msgid="6039428254474104210">"Jauna!"</string>
- <string name="allPerms" msgid="1024385515840703981">"Visas"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Konfidencialitāte"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Piekļuve ierīcei"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Šim atjauninājumam nav nepieciešamas jaunas atļaujas."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Vai vēlaties piešķirt tālāk norādītās atļaujas? Tiks piešķirta šāda piekļuve:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Neatļaut"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Plašāka informācija"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Tomēr noraidīt"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Vai atļaut lietotnei <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> atspējotas"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"visas atspējotas"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"neviena nav atspējota"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Atļaut"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Lietotnes"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Lietotnes atļaujas"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Turpmāk vairs nejautāt"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Nav atļauju"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Papildu atļaujas"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Atļauju vadība"</string>
+ <string name="ok" msgid="4417794827535157922">"Labi"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"atļaujas"</string>
+ <string name="cancel" msgid="7279939269964834974">"Atcelt"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Lietotne netika atrasta"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Neatļaut"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Neatļaut un vairs nejautāt"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Informācija"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Tomēr neatļaut"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Vai atļaut lietotnei <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Vai vienmēr atļaut lietotnei <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Tikai izmantojot lietotni"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Vienmēr"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Neatļaut un vairs nejautāt"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> atspējotas"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"visas atspējotas"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"neviena nav atspējota"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Atļaut"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Vienmēr atļaut"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Atļaut tikai lietotnes izmantošanas laikā"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Lietotnes"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Lietotņu atļaujas"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Atļauju pārvaldnieks"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Vairs nejautāt"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Nav atļauju"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Papildu atļaujas"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Atvērt lietotnes informāciju"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="zero">Vēl <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="one">Vēl <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="other">Vēl <xliff:g id="COUNT_1">%1$d</xliff:g></item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Šī lietotne ir paredzēta vecākai Android versijai. Ja noraidīsiet atļauju, iespējams, netiks nodrošināta paredzētā lietotnes darbība."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"veikt nezināmu darbību"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"Atļautas <xliff:g id="COUNT_0">%1$d</xliff:g> lietotnes no <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Rādīt sistēmas lietotnes"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Slēpt sistēmas lietotnes"</string>
- <string name="permission_title" msgid="6495415273398916381">"Lietotnes <xliff:g id="PERMISSION">%1$s</xliff:g> atļaujas"</string>
- <string name="no_apps" msgid="1965493419005012569">"Nav lietotņu"</string>
- <string name="location_settings" msgid="1774875730854491297">"Atrašanās vietas iestatījumi"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Ja nepiešķirsiet šo atļauju, ierīces pamatfunkcijas, iespējams, vairs nedarbosies, kā paredzēts."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Īstenota saskaņā ar politiku"</string>
- <string name="loading" msgid="7811651799620593731">"Notiek ielāde..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"Visas atļaujas"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Citas lietotnes atļaujas"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Atļaujas pieprasījums"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Konstatēts ekrāna pārklājums"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Lai mainītu šo atļaujas iestatījumu, vispirms sadaļā “Iestatījumi un lietotnes” izslēdziet ekrāna pārklājumu."</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Atvērt iestatījumus"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Wear ierīcē netiek atbalstīta instalēšana/atinstalēšana"</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"Lietotne <xliff:g id="APP_NAME_0">%1$s</xliff:g> ir atjaunināta. Vai atļaut lietotnei <xliff:g id="APP_NAME_1">%1$s</xliff:g> piekļūt tālāk norādītajiem vienumiem?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Izvēlieties, kādas piekļuves atļaujas piešķirt lietotnei <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"Lietotne <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ir atjaunināta. Izvēlieties, kādas piekļuves atļaujas tai piešķirt."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Atcelt"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Turpināt"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Jaunas atļaujas"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Pašreizējās atļaujas"</string>
- <string name="message_staging" msgid="6151794817691100003">"Lietotne tiek izstādīta…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Nezināms"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Drošības nolūkos jūsu planšetdatorā nedrīkst instalēt no šī avota iegūtas nezināmas lietotnes."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Drošības nolūkos jūsu televizorā nedrīkst instalēt no šī avota iegūtas nezināmas lietotnes."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Drošības nolūkos jūsu tālrunī nedrīkst instalēt no šī avota iegūtas nezināmas lietotnes."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Jūsu tālruņa un personas dati ir neaizsargātāki pret uzbrukumiem no nezināmām lietotnēm. Instalējot šo lietotni, jūs piekrītat, ka esat atbildīgs par tālruņa bojājumiem vai datu zudumu, kas var rasties lietotnes dēļ."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Jūsu planšetdatora un personas dati ir neaizsargātāki pret uzbrukumiem no nezināmām lietotnēm. Instalējot šo lietotni, jūs piekrītat, ka esat atbildīgs par planšetdatora bojājumiem vai datu zudumu, kas var rasties lietotnes dēļ."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Jūsu televizora un personas dati ir neaizsargātāki pret uzbrukumiem no nezināmām lietotnēm. Instalējot šo lietotni, jūs piekrītat, ka esat atbildīgs par televizora bojājumiem vai datu zudumu, kas var rasties lietotnes dēļ."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Turpināt"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Iestatījumi"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Wear lietotņu instalēšana/atinstalēšana"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Šī lietotne ir paredzēta vecākai Android versijai. Ja noraidīsiet atļauju, iespējams, netiks nodrošināta paredzētā lietotnes darbība."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"veikt nezināmu darbību"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"Atļautas <xliff:g id="COUNT_0">%1$d</xliff:g> lietotnes no <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Nesens lietojums"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Skatīt atļauju inform. paneli"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Rādīt sistēmas lietotnes"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Slēpt sistēmas lietotnes"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Nav lietotņu"</string>
+ <string name="location_settings" msgid="547378321761364906">"Atrašanās vietas iestatījumi"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Ja nepiešķirsiet šo atļauju, iespējams, ierīces pamatfunkcijas vairs nedarbosies, kā paredzēts."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Īstenota saskaņā ar politiku"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Piekļuve fonā atspējota saskaņā ar politiku"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Piekļuve fonā iespējota saskaņā ar politiku"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Piekļuve priekšplānā iespējota saskaņā ar politiku"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Kontrolē administrators"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Administrators atspējoja piekļuvi fonā"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Administrators iespējoja piekļuvi fonā"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Administrators iespējoja piekļuvi priekšplānā"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Sistēmas iestatīta atļauja"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Vienmēr"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Tikai izmantojot lietotni"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Nekad"</string>
+ <string name="loading" msgid="323483393167148377">"Notiek ielāde…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Visas atļaujas"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Citas lietotnes atļaujas"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Atļaujas pieprasījums"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Konstatēts ekrāna pārklājums"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Lai mainītu šo atļaujas iestatījumu, vispirms sadaļā Iestatījumi > Lietotnes izslēdziet ekrāna pārklājumu."</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Atvērt iestatījumus"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Wear ierīcē netiek atbalstīta instalēšana/atinstalēšana"</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Izvēlieties, kādas piekļuves atļaujas piešķirt lietotnei <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"Lietotne <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ir atjaunināta. Izvēlieties, kādas piekļuves atļaujas tai piešķirt."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Atcelt"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Turpināt"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Jaunas atļaujas"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Pašreizējās atļaujas"</string>
+ <string name="message_staging" msgid="641286607664721291">"Lietotne tiek izstādīta…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Nezināma"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Informācijas panelis"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ <item quantity="other">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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="zero">Pēdējā piekļuve: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> piekļuves gadījumi (<xliff:g id="NUM_5">%3$s</xliff:g> fonā)</item>
+ <item quantity="one">Pēdējā piekļuve: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> piekļuves gadījums (<xliff:g id="NUM_5">%3$s</xliff:g> fonā)</item>
+ <item quantity="other">Pēdējā piekļuve: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> piekļuves gadījumi (<xliff:g id="NUM_5">%3$s</xliff:g> fonā)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="zero">Pēdējā piekļuve: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> piekļuves gadījumi\nIlgums: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="one">Pēdējā piekļuve: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> piekļuves gadījums\nIlgums: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">Pēdējā piekļuve: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> piekļuves gadījumi\nIlgums: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="zero">Pēdējā piekļuve: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> piekļuves gadījumi (<xliff:g id="NUM_6">%3$s</xliff:g> fonā)\nIlgums: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="one">Pēdējā piekļuve: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> piekļuves gadījums (<xliff:g id="NUM_6">%3$s</xliff:g> fonā)\nIlgums: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">Pēdējā piekļuve: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> piekļuves gadījumi (<xliff:g id="NUM_6">%3$s</xliff:g> fonā)\nIlgums: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Jebkura atļauja"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Jebkurā laikā"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Pēdējās 7 dienās"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Pēdējās 24 stundās"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Pēdējā stundā"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Pēdējās 15 minūtēs"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Pēdējā minūtē"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Nav lietota neviena atļauja"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Piekļuve jebkurā laikā"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Piekļuve pēdējo 7 dienu laikā"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Piekļuve pēdējo 24 stundu laikā"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Piekļuve pēdējās stundas laikā"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Piekļuve pēdējo 15 minūšu laikā"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Piekļuve pēdējās minūtes laikā"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Biežāk izmantoto atļauju lietojums jebkurā laikā"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Biežāk izmantoto atļauju lietojums pēdējās 7 d."</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Biežāk izmantoto atļauju lietojums pēdējās 24 h"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Biežāk izmantoto atļauju lietojums pēdējā stundā"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Biežāk izmantoto atļauju lietojums pēdējās 15 min"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Biežāk izmantoto atļauju lietojums pēdējā minūtē"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Lietotnes"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtrēts pēc: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Noņemt filtru"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtrēt pēc"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtrēt pēc atļaujām"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Lielākā daļa atļauju"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Lielākais piekļuvju skaits"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Jaunākās"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Atsvaidzināt"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Lietotņu atļauju lietojums"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"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>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Atļaut"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Vienmēr atļaut"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Atļaut tikai lietotnes izmantošanas laikā"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Neatļaut"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Atļauja: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="PERM">%1$s</xliff:g>: lietotnes <xliff:g id="APP">%2$s</xliff:g> piekļuve"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> piekļuva jūsu atļaujai <xliff:g id="PERM">%2$s</xliff:g> pirms: <xliff:g id="TIME">%3$s</xliff:g>."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"Lietotnei <xliff:g id="APP">%1$s</xliff:g> nav piekļuves <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Skatīt detalizētu informāciju par atļauju lietojumu"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Pēdējā piekļuve: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Nekad nav piekļūts"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Atļauts"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Atļauts tikai izmantošanas laikā"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Noraidīts"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Skatīt detalizētu lietojuma informāciju"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="zero"><xliff:g id="NUMBER">%s</xliff:g> minūšu</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="seconds" formatted="false" msgid="1632909606956324957">
+ <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="role_request_message_add" msgid="1977772335648650272">"Vai lietotni <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> izmantot kā jūsu lietotni <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Vai lietotni <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> izmantot kā jūsu lietotni <xliff:g id="ROLE_NAME">%2$s</xliff:g> (lietotnes <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> vietā)?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Atgādinājumi par atļauju"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"Lietotne <xliff:g id="APP_NAME">%s</xliff:g> jau kādu laiku izmanto jūsu atrašanās vietu"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Šī lietotne jebkurā laikā var piekļūt jūsu atrašanās vietai. Pieskarieties, lai mainītu šo iestatījumu."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Tikai lietotnes izmantošanas laikā"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Nav piešķirta neviena atļauja"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Nav noraidīta neviena atļauja"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Nav atļauta neviena lietotne"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Nav noraidīta neviena lietotne"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Atvērt"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Atinstalēt"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Apturēt piespiedu kārtā"</string>
+ <string name="settings" msgid="2884124136779508907">"Iestatījumi"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"Pakalpojumam <xliff:g id="SERVICE_NAME">%s</xliff:g> ir pilna piekļuve jūsu ierīcei"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> pieejamības pakalpojumiem ir pilna piekļuve jūsu ierīcei"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"Pakalpojums <xliff:g id="SERVICE_NAME">%s</xliff:g> var skatīt jūsu ekrānu, darbības un ievadīto informāciju, kā arī veikt darbības un kontrolēt attēlojumu displejā."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Šie pakalpojumi var skatīt jūsu ekrānu, darbības un ievadīto informāciju, kā arī veikt darbības un kontrolēt attēlojumu displejā."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Noklusējuma lietotnes"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Nav noklusējuma lietotņu"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Noklusējuma iestatījums darbam"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Nav"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Nav lietotņu"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Īpaša piekļuve lietotnēm"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Nav īpašas piekļuves lietotnēm"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Nav lietotņu"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Palīga lietotne"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Pārlūkprogrammas lietotne"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Lietotne Tālrunis"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Īsziņu lietotne"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Ārkārtas izsaukumu lietotne"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Galvenā lietotne"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Mūzikas lietotne"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Galerijas lietotne"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Auto režīma tālruņu lietotne"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Zvanu novirzīšanas lietotne"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Zvanu pārvaldības lietotne"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Zvanu palīglietotne"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Projicēš. automašīnā lietotne"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Darba profils netiek atbalstīts"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Piezīme. Ja esat iestatījis ekrāna bloķēšanu un restartēsiet ierīci, šo lietotni varēs startēt tikai pēc ierīces atbloķēšanas."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Asistents varēs lasīt informāciju par jūsu sistēmā izmantotajām lietotnēm, tostarp jūsu ekrānā redzamo informāciju vai lietotnēs pieejamo informāciju."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Atkļūdošanas datu kopīgošana"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Vai kopīgot detalizētus atkļūdošanas datus?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> vēlas augšupielādēt atkļūdošanas informāciju."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Atkļūdošanas datu kopīgošana"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> pieprasa augšupielādēt kļūdas pārskatu no šīs ierīces, kas veikts: <xliff:g id="DATE">%2$s</xliff:g> plkst. <xliff:g id="TIME">%3$s</xliff:g>. Kļūdu pārskatos ir ietverta personas informācija par jūsu ierīci vai lietotnēs reģistrēta informācija, piemēram, lietotājvārdi, atrašanās vietas dati, ierīču identifikatori un tīkla informācija. Kopīgojiet kļūdu pārskatus tikai ar lietotājiem un lietotnēm, kuriem uzticat šo informāciju. Vai atļaut lietotnei <xliff:g id="APP_NAME_1">%4$s</xliff:g> augšupielādēt kļūdas pārskatu?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Atļaut"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Neatļaut"</string>
</resources>
diff --git a/res/values-mk-television/strings.xml b/res/values-mk-television/strings.xml
index bb3ea92..f4ad4ed 100644
--- a/res/values-mk-television/strings.xml
+++ b/res/values-mk-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Одбиј и не прашувај повторно"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Може да го промените ова подоцна во Поставки > Апликации"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Прикажи ги системските апликации"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Дозволи за апликацијата"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Дозволи за апликацијата"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Дозволи за <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Дополнителни дозволи"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Дозволи за <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Одбиј и не прашувај повторно"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Може да го промените ова подоцна во „Поставки > Апликации“"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Прикажи ги системските апликации"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Дозволи за апликацијата"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Дозволи за апликацијата"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Дозволи за <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Дополнителни дозволи"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Дозволи за <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-mk-watch/strings.xml b/res/values-mk-watch/strings.xml
index 5906f56..a7f2467 100644
--- a/res/values-mk-watch/strings.xml
+++ b/res/values-mk-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Одбиј, не прашувај повторно"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Прикажи ги системските апликации"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Не може да се смени"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Да"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Откажи"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Одбиј, не прашувај повторно"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Прикажи ги системските апликации"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Не може да се смени"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Да"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Откажи"</string>
</resources>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index e66b3f3..440d9d9 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Инсталатор на пакет"</string>
- <string name="next" msgid="3057143178373252333">"Следно"</string>
- <string name="install" msgid="5896438203900042068">"Инсталирај"</string>
- <string name="done" msgid="3889387558374211719">"Готово"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Овозможи оваа апликација да:"</string>
- <string name="cancel" msgid="8360346460165114585">"Откажи"</string>
- <string name="unknown" msgid="4742479012767208045">"Непознато"</string>
- <string name="installing" msgid="8613631001631998372">"Се инсталира..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Се инсталира <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Апликацијата е инсталирана."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Дали сакате да ја инсталирате оваа апликација? Ќе добие пристап до:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Дали сакате да ја инсталирате оваа апликација? Не бара никаков посебен пристап."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Дали сакате да инсталирате надградба на оваа постоечка апликација? Вашите постоечки податоци нема да се изгубат. Ажурираната апликација ќе добие пристап до:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Дали сакате да инсталирате надградба на оваа вградена апликација? Вашите постоечки податоци нема да се изгубат. Ажурираната апликација ќе добие пристап до:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Дали сакате да инсталирате надградба на оваа постоечка апликација? Вашите постоечки податоци нема да се изгубат. Таа не бара никаков посебен пристап."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Дали сакате да инсталирате надградба на оваа вградена апликација? Вашите постоечки податоци нема да се изгубат. Таа не бара никаков посебен пристап."</string>
- <string name="install_failed" msgid="6579998651498970899">"Апликацијата не е инсталирана."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Инсталирањето на пакетот е блокирано."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Апликација што не е инсталирана како пакет е во конфликт со постоен пакет."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Апликација што не е инсталирана како апликација не е компатибилна со вашиот таблет."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Оваа апликација не е компатибилна со вашиот телевизор."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Апликација што не е инсталирана како апликација не е компатибилна со вашиот телефон."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Апликација што не е инсталирана како пакет се чини дека е неважечка."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> не можеше да се инсталира на вашиот таблет."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> не може да се инсталира на вашиот телевизор."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> не можеше да се инсталира на вашиот телефон."</string>
- <string name="launch" msgid="4826921505917605463">"Отвори"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Вашиот администратор не дозволува инсталација на апликации добиени од непознати извори"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Корисников не може да инсталира непознати апликации"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"На корисников не му е дозволено да инсталира апликации"</string>
- <string name="ok" msgid="3468756155452870475">"Во ред"</string>
- <string name="settings" msgid="6743583734099755409">"Поставки"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Управувај со апликации"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Замени апликација?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Апликацијата што ја инсталирате ќе замени друга апликација.\n\nСите ваши претходни податоци за корисникот ќе се зачуваат."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Ова е системска апликација.\n\nСите ваши претходни податоци за корисникот ќе се зачуваат."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Нема простор"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> не можеше да се инсталира. Ослободете простор и обидете се повторно."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"Во ред"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Апликацијата не е пронајдена"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Апликацијата не е пронајдена во списокот инсталирани апликации."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Не е дозволено"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Тековниот корисник нема дозвола да ја изведе деинсталацијава."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Грешка"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Не можеше да се деинсталира апликацијата."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Деинсталирај апликација"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Деинсталирај ажурирање"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> е дел од следната апликација:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Дали сакате да ја деинсталирате оваа апликација?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Дали сакате да ја деинсталирате оваа апликација за "<b>"сите"</b>" корисници? Апликацијата и нејзините податоци ќе се отстранат од "<b>"сите"</b>" корисници на уредот."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Дали сакате да ја деинсталирате апликацијава за корисникот <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Сакате да ја замените оваа апликација со фабричката верзија? Сите податоци ќе се отстранат."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Сакате да ја замените оваа апликација со фабричката верзија? Сите податоци ќе се отстранат. Тоа важи за сите корисници на овој уред, вклучувајќи ги и тие со работни профили."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Деинсталации во тек"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Неуспешни деинсталации"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Се деинсталира..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Се деинсталира <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Деинсталирањето заврши."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> е деинсталиран"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Деинсталирањето е неуспешно."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Деинсталирањето на <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> е неуспешно."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Не може да се деинсталира активна апликација на администраторот на уредот"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Не може да се деинсталира активна апликација на администраторот на уредот за <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Апликацијата е неопходна за некои корисници или профили, а за другите е деинсталирана"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Апликацијата е потребна за вашиот профил и не може да се деинсталира."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Апликацијата ја бара администраторот на вашиот уред и не може да се деинсталира."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Управувај со аплик. за администраторот на уредот"</string>
- <string name="manage_users" msgid="3125018886835668847">"Управувај со корисници"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> не може да се деинсталира."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Настана проблем при разложување на пакетот."</string>
- <string name="newPerms" msgid="6039428254474104210">"Ново"</string>
- <string name="allPerms" msgid="1024385515840703981">"Сè"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Приватност"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Пристап кон уредот"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Ова ажурирање не бара нови дозволи."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Дали сакате да ги доделите следниве дозволи? Тоа ќе овозможи пристап кон:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Одбиј"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Повеќе информации"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Сепак одбиј"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Дозволете <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> да <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"Оневозможени се <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"сите се оневозможени"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"ниедна не е оневозможена"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Овозможи"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Апликации"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Дозволи за апликацијата"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Не прашувај повторно"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Нема дозволи"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Дополнителни дозволи"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Permission controller"</string>
+ <string name="ok" msgid="4417794827535157922">"Во ред"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"дозволи"</string>
+ <string name="cancel" msgid="7279939269964834974">"Откажи"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Апликацијата не е најдена"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Одбиј"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Одбиј и не прашувај повторно"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Уште информации"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Сепак одбиј"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Да се дозволи <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> да <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Дали секогаш да се дозволи <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> да <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Само додека се користи апликацијата"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Секогаш"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Одбиј и не прашувај повторно"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"оневозможени се <xliff:g id="COUNT">%1$d</xliff:g>"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"сите се оневозможени"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"ниедна не е оневозможена"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Дозволи"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Дозволи цело време"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Дозволи само додека се користи апликацијата"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Апликации"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Дозволи за апликацијата"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Управник со дозволи"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Не прашувај повторно"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Нема дозволи"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Дополнителни дозволи"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Отвори информации за апликацијата"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"Оваа апликација е дизајнирана за постара верзија на Android. Одбивањето на дозволата може да предизвика веќе да не функционира како што треба."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"изврши непознато дејство"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"Дозволени се <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="6773743421743728921">"Прикажи систем"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Сокриј систем"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> дозволи"</string>
- <string name="no_apps" msgid="1965493419005012569">"Нема апликации"</string>
- <string name="location_settings" msgid="1774875730854491297">"Поставки за локација"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> е давател на услуги според локација за овој уред. Пристапот до локацијата може да се смени од Поставките за локација."</string>
- <string name="system_warning" msgid="7103819124542305179">"Ако ја одбиете оваа дозвола, основните функции на вашиот уред можеби веќе нема да функционираат како што треба."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Наложено од политиката"</string>
- <string name="loading" msgid="7811651799620593731">"Се вчитува..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"Сите дозволи"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Други можности на апликацијата"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Барање дозвола"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Откривме преклопување на екранот"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"За да ја измените оваа поставка за дозвола, прво мора да го исклучите преклопувањето на екранот од Поставки > Апликации"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Отвори поставки"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Дејствата инсталирај/деинсталирај не се поддржани на Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> е ажурирана. Овозможете ѝ на <xliff:g id="APP_NAME_1">%1$s</xliff:g> пристап до следново?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Изберете што да ѝ се овозможи на <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> за пристап"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> е ажурирана. Изберете што да ѝ се овозможи на оваа апликација за пристап."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Откажи"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Продолжи"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Нови дозволи"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Тековни дозволи"</string>
- <string name="message_staging" msgid="6151794817691100003">"Апликацијата се поставува…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Непознато"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"За ваша безбедност, таблетот нема дозвола за инсталирање непознати апликации од изворов."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"За ваша безбедност, телевизорот нема дозвола за инсталирање непознати апликации од изворов."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"За ваша безбедност, телефонот нема дозвола за инсталирање непознати апликации од изворов."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Телефонот и личните податоци се поподложни на напади од непознати апликации. Ако ја инсталирате апликацијава, се согласувате дека сте одговорни за каква било штета на телефонот или губењето податоци што може да произлезат од нејзиното користење."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Таблетот и личните податоци се поподложни на напади од непознати апликации. Ако ја инсталирате апликацијава, се согласувате дека сте одговорни за каква било штета на таблетот или губењето податоци што може да произлезат од нејзиното користење."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Телевизорот и личните податоци се поподложни на напади од непознати апликации. Ако ја инсталирате апликацијава, се согласувате дека сте одговорни за каква било штета на телевизорот или губењето податоци што може да произлезат од нејзиното користење."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Продолжи"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Поставки"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Се инсталираат/деинсталираат аплик. Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Оваа апликација е дизајнирана за постара верзија на Android. Одбивањето на дозволата може да предизвика веќе да не функционира како што треба."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"изврши непознато дејство"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"Дозволени се <xliff:g id="COUNT_0">%1$d</xliff:g> од <xliff:g id="COUNT_1">%2$d</xliff:g> апликации"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Неодамнешно користење"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Контролна табла со дозволи"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Прикажи го системот"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Сокриј го системот"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Нема апликации"</string>
+ <string name="location_settings" msgid="547378321761364906">"Поставки за локација"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> е давател на услуги според локација за овој уред. Пристапот до локацијата може да се смени од поставките за локација."</string>
+ <string name="system_warning" msgid="6868290533389195836">"Ако ја одбиете дозволава, основните функции на уредот можеби веќе нема да функционираат како што треба."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Наметнато со правило"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Пристапот во заднина е оневозможен со правило"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Пристапот во заднина е овозможен со правило"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Пристапот во преден план е овозможен со правило"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Контролирано од администраторот"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Пристапот во заднина е оневозможен од администраторот"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Пристапот во заднина е овозможен од администраторот"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Пристапот во преден план е овозможен од администраторот"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Дозвола поставена од системот"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Секогаш"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Само додека се користи аплик."</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Никогаш"</string>
+ <string name="loading" msgid="323483393167148377">"Се вчитува…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Сите дозволи"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Други можности на апликацијата"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Барање за дозвола"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Откривме преклопување на екранот"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"За да ја измените оваа поставка за дозвола, прво мора да го исклучите преклопувањето на екранот од „Поставки > Апликации“"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Отвори ги поставките"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Дејствата „Инсталирај/деинсталирај“ не се поддржани на Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Изберете до што може да пристапува <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> е ажурирана. Изберете до што може да пристапува апликацијава."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Откажи"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Продолжи"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Нови дозволи"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Тековни дозволи"</string>
+ <string name="message_staging" msgid="641286607664721291">"Апликацијата се поставува…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Непознатo"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Контролна табла"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">Последен пристап: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> пристап (<xliff:g id="NUM_5">%3$s</xliff:g> во заднина)</item>
+ <item quantity="other">Последен пристап: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> пристапи (<xliff:g id="NUM_5">%3$s</xliff:g> во заднина)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">Последен пристап: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> пристап\nВреметраење: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">Последен пристап: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> пристапи\nВреметраење: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">Последен пристап: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> пристап (<xliff:g id="NUM_6">%3$s</xliff:g> во заднина)\nВреметраење: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">Последен пристап: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> пристапи (<xliff:g id="NUM_6">%3$s</xliff:g> во заднина)\nВреметраење: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Која било дозвола"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Кога било"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Последните 7 дена"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Последните 24 часа"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Последниов час"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Последните 15 минути"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Последна 1 минута"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Не се користени дозволи"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Пристап во секое време"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Пристап во последните 7 дена"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Пристап во последните 24 часа"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Пристап во последниот час"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Пристап во последните 15 минути"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Пристап во последната 1 минута"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Користење најчести дозволи во секое време"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Користење најчести дозволи во последните 7 дена"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Користење најчести дозволи во последните 24 часа"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Користење најчести дозволи во последниот 1 час"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Користење најчести дозволи во последните 15 минути"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Користење најчести дозволи во последната 1 минута"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Апликации"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Филтрирано според: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Отстрани го филтерот"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Филтрирајте според"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Филтрирај според дозволите"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Најмногу дозволи"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Најмногу пристапи"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Неодамнешни"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Освежи"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Дозволи за апликација"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"Пристап: <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="4040424337831328212">"Пристап: <xliff:g id="NUM">%1$s</xliff:g> пати. Последно користење пред <xliff:g id="TIME">%2$s</xliff:g>."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Дозволи"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Дозволи цело време"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Дозволи само додека се користи апликацијата"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Одбиј"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Пристап до <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Пристап до <xliff:g id="PERM">%1$s</xliff:g> за <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> пристапи до <xliff:g id="PERM">%2$s</xliff:g> пред <xliff:g id="TIME">%3$s</xliff:g>."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> не пристапила до вашата <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Прегледајте го деталното користење на дозволите"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Последен пристап: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Никогаш не е пристапено"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Дозволени"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Дозволени само кога се користат"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Одбиени"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Прикажи го деталното користење"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <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="seconds" formatted="false" msgid="1632909606956324957">
+ <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="role_request_message_add" msgid="1977772335648650272">"Дали да се користи <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> како ваш <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Дали да се користи <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> наместо <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> како ваш <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Потсетници за дозволата"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> ја користи вашата локација"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Апликацијава секогаш може да пристапува до вашата локација. Допрете за да го промените тоа."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Само додека се користи апликацијата"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Нема овозможени дозволи"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Нема одбиени дозволи"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Нема дозволени апликации"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Нема одбиени апликации"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Отвори"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Деинсталирај"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Исклучи присилно"</string>
+ <string name="settings" msgid="2884124136779508907">"Поставки"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> има целосен пристап до уредот"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> услуги за пристапност имаат целосен пристап до уредот"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> може да го гледа вашиот екран, дејствата и записите, да извршува дејства и да го контролира приказот."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Овие услуги може да го гледаат вашиот екран, дејствата и записите, да извршуваат дејства и да го контролираат приказот."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Стандардни апликации"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Нема стандардни апликации"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Стандардно за работа"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Нема"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Нема апликации"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Посебен пристап за апликации"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Нема посебен пристап за аплик."</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Нема апликации"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Апликација за помош"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Прелистувач"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Апликација Телефон"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Апликација за SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Апликација за итни случаи"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Апликација Home"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Апликација за музика"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Апликација за галерија"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Телефонска апликација Car mode"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Аплик. за пренасочување повици"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Аплик. за проверка на повици"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Повикај придружна апликација"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Апликација Car Projection"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Не поддржува работен профил"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Забелешка: Ако го рестартирате уредот, а имате поставено заклучување на екранот, апликацијава нема да може да се стартува додека не го отклучите уредот."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Помошникот ќе може да чита информации за апликациите што се користат во системот, вклучувајќи ги информациите што се видливи на екранот или до коишто може се пристапи во апликациите."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Споделете податоци за отстранување грешки"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Да се споделат податоци за отстранување грешки?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> сака да прикачи информации за отстранување грешки."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Споделете податоци за отстранување грешки"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> бара да прикачи извештај за грешка од уредов снимен на <xliff:g id="DATE">%2$s</xliff:g> во <xliff:g id="TIME">%3$s</xliff:g>. Извештаите за грешки вклучуваат лични информации за вашиот уред или пак информации евидентирани од апликациите, на пр., кориснички имиња, податоци за локацијата, идентификатори на уредот и информации за мрежата. Споделувајте извештаи за грешки само со луѓе и апликации во кои имате доверба кога станува збор за овие информации. Да ѝ се дозволи на <xliff:g id="APP_NAME_1">%4$s</xliff:g> да прикачи извештај за грешка?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Дозволи"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Одбиј"</string>
</resources>
diff --git a/res/values-ml-television/strings.xml b/res/values-ml-television/strings.xml
index 5ede01f..6ba19bb 100644
--- a/res/values-ml-television/strings.xml
+++ b/res/values-ml-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"നിരസിക്കുക, വീണ്ടും ആവശ്യപ്പെടരുത്"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"പിന്നീട് നിങ്ങൾക്കിത് ക്രമീകരണവും ആപ്സും എന്നതിൽ മാറ്റാനാകും"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"സിസ്റ്റം ആപ്സ് കാണിക്കുക"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"ആപ്പ് അനുമതികൾ"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"ആപ്പ് അനുമതികൾ"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> അനുമതികൾ"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"അധിക അനുമതികൾ"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> അനുമതികൾ"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"നിരസിക്കുക, വീണ്ടും ആവശ്യപ്പെടരുത്"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"പിന്നീട് നിങ്ങൾക്കിത് \'ക്രമീകരണം > ആപ്പുകൾ\' എന്നതിൽ മാറ്റാനാകും"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"സിസ്റ്റം ആപ്പുകൾ കാണിക്കുക"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"ആപ്പ് അനുമതികൾ"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"ആപ്പ് അനുമതികൾ"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> അനുമതികൾ"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"അധിക അനുമതികൾ"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> അനുമതികൾ"</string>
</resources>
diff --git a/res/values-ml-watch/strings.xml b/res/values-ml-watch/strings.xml
index 13e3876..05872d8 100644
--- a/res/values-ml-watch/strings.xml
+++ b/res/values-ml-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"നിരസിക്കുക, വീണ്ടും ആവശ്യപ്പെടരുത്"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"സിസ്റ്റം ആപ്സ് കാണിക്കുക"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"മാറ്റാനാവില്ല"</string>
- <string name="generic_yes" msgid="3394094077553763689">"അതെ"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"റദ്ദാക്കുക"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"നിരസിക്കുക, വീണ്ടും ആവശ്യപ്പെടരുത്"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"സിസ്റ്റം ആപ്പുകൾ കാണിക്കുക"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"മാറ്റാനാവില്ല"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"അതെ"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"റദ്ദാക്കുക"</string>
</resources>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index 3d0b469..bd09ba1 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"പാക്കേജ് ഇൻസ്റ്റാളർ"</string>
- <string name="next" msgid="3057143178373252333">"അടുത്തത്"</string>
- <string name="install" msgid="5896438203900042068">"ഇൻസ്റ്റാളുചെയ്യുക"</string>
- <string name="done" msgid="3889387558374211719">"പൂർത്തിയായി"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"ഈ അപ്ലിക്കേഷന് ഇവയ്ക്കായി അനുവദിക്കുക:"</string>
- <string name="cancel" msgid="8360346460165114585">"റദ്ദാക്കുക"</string>
- <string name="unknown" msgid="4742479012767208045">"അജ്ഞാതം"</string>
- <string name="installing" msgid="8613631001631998372">"ഇൻസ്റ്റാൾ ചെയ്യുന്നു..."</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ഇൻസ്റ്റാൾ ചെയ്യുന്നു…"</string>
- <string name="install_done" msgid="3682715442154357097">"അപ്ലിക്കേഷൻ ഇൻസ്റ്റാളുചെയ്തു."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"ഈ അപ്ലിക്കേഷൻ ഇൻസ്റ്റാളുചെയ്യണോ? ഇതിന് ഇവയിലേക്ക് ആക്സസ്സ് ലഭിക്കും:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"നിങ്ങൾക്ക് ഈ അപ്ലിക്കേഷൻ ഇൻസ്റ്റാളുചെയ്യണോ? ഇത് പ്രത്യേക ആക്സസ്സൊന്നും ആവശ്യമില്ല."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"നിലവിലുള്ള ഈ അപ്ലിക്കേഷന് ഒരു അപ്ഡേറ്റ് ഇൻസ്റ്റാളുചെയ്യണോ? നിങ്ങളുടെ നിലവിലെ ഡാറ്റ നഷ്ടപ്പെടില്ല. അപ്ഡേറ്റുചെയ്ത അപ്ലിക്കേഷന് ഇവയിലേക്ക് ആക്സസ്സ് ലഭിക്കും:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"ഈ അന്തർ നിർമ്മിത അപ്ലിക്കേഷന് ഒരു അപ്ഡേറ്റ് ഇൻസ്റ്റാളുചെയ്യണോ? നിങ്ങളുടെ നിലവിലെ ഡാറ്റ നഷ്ടപ്പെടില്ല. അപ്ഡേറ്റുചെയ്ത അപ്ലിക്കേഷന് ഇവയിലേക്ക് ആക്സസ്സ് ലഭിക്കും:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"നിലവിലുള്ള ഈ അപ്ലിക്കേഷന് ഒരു അപ്ഡേറ്റ് ഇൻസ്റ്റാളുചെയ്യണോ? നിങ്ങളുടെ നിലവിലെ ഡാറ്റ നഷ്ടപ്പെടില്ല. ഇതിന് പ്രത്യേക ആക്സസ്സൊന്നും ആവശ്യമില്ല."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"ഈ അന്തർ നിർമ്മിത അപ്ലിക്കേഷന് ഒരു അപ്ഡേറ്റ് ഇൻസ്റ്റാളുചെയ്യണോ? നിങ്ങളുടെ നിലവിലെ ഡാറ്റ നഷ്ടപ്പെടില്ല. ഇതിന് പ്രത്യേക ആക്സസ്സൊന്നും ആവശ്യമില്ല."</string>
- <string name="install_failed" msgid="6579998651498970899">"അപ്ലിക്കേഷൻ ഇൻസ്റ്റാളുചെയ്തില്ല."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"ഇൻസ്റ്റാൾ ചെയ്യുന്നതിൽ നിന്നും പാക്കേജിനെ തടഞ്ഞു."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"നിലവിലുള്ള ഒരു പാക്കേജുമായി പാക്കേജിന് പൊരുത്തക്കേടുള്ളതിനാൽ ആപ്പ് ഇൻസ്റ്റാൾ ചെയ്തില്ല."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"നിങ്ങളുടെ ടാബ്ലെറ്റുമായി അനുയോജ്യത ഇല്ലാത്തതിനാൽ ആപ്പ് ഇൻസ്റ്റാൾ ചെയ്തില്ല."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"നിങ്ങളുടെ ടിവിയ്ക്ക് ഈ ആപ്പ് അനുയോജ്യമല്ല."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"നിങ്ങളുടെ ഫോണുമായി അനുയോജ്യത ഇല്ലാത്തതിനാൽ ആപ്പ് ഇൻസ്റ്റാൾ ചെയ്തില്ല."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"പാക്കേജ് അസാധുവായി കാണപ്പെടുന്നതിനാൽ ആപ്പ് ഇൻസ്റ്റാൾ ചെയ്തില്ല."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"നിങ്ങളുടെ ടാബ്ലെറ്റിൽ <xliff:g id="APP_NAME">%1$s</xliff:g> ഇൻസ്റ്റാളുചെയ്യാനായില്ല."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g>, നിങ്ങളുടെ ടിവിയിൽ ഇൻസ്റ്റാളുചെയ്യാനായില്ല."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"നിങ്ങളുടെ ഫോണിൽ <xliff:g id="APP_NAME">%1$s</xliff:g> ഇൻസ്റ്റാളുചെയ്യാനായില്ല."</string>
- <string name="launch" msgid="4826921505917605463">"തുറക്കുക"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"അജ്ഞാത ഉറവിടങ്ങളിൽ നിന്ന് സ്വന്തമാക്കിയ ആപ്പുകൾ ഇൻസ്റ്റാൾ ചെയ്യാൻ നിങ്ങളുടെ അഡ്മിനിസ്ട്രേറ്റർ അനുവദിക്കുന്നില്ല"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"ഈ ഉപയോക്താവിന്, തിരിച്ചറിയാനാകാത്ത ആപ്പുകൾ ഇൻസ്റ്റാൾ ചെയ്യാൻ കഴിയില്ല"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"ആപ്പുകൾ ഇൻസ്റ്റാൾ ചെയ്യുന്നതിന് ഈ ഉപയോക്താവിന് അനുവാദമില്ല"</string>
- <string name="ok" msgid="3468756155452870475">"ശരി"</string>
- <string name="settings" msgid="6743583734099755409">"ക്രമീകരണം"</string>
- <string name="manage_applications" msgid="4033876279091996596">"അപ്ലിക്കേഷനുകൾ നിയന്ത്രിക്കുക"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"അപ്ലിക്കേഷൻ മാറ്റിസ്ഥാപിക്കണോ?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"നിങ്ങൾ ഇൻസ്റ്റാളുചെയ്യുന്ന അപ്ലിക്കേഷൻ മറ്റൊരു അപ്ലിക്കേഷനെ മാറ്റിസ്ഥാപിക്കും.\n\nനിങ്ങളുടെ മുൻ ഉപയോക്തൃ ഡാറ്റയെല്ലാം സംരക്ഷിക്കപ്പെടും."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"ഇതൊരു സിസ്റ്റം അപ്ലിക്കേഷനാണ്.\n\nനിങ്ങളുടെ മുൻ ഉപയോക്തൃ ഡാറ്റയെല്ലാം സംരക്ഷിക്കപ്പെടും."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"പരിധി കഴിഞ്ഞു"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> ഇൻസ്റ്റാളുചെയ്യാനായില്ല. കുറച്ച് ഇടം ശൂന്യമാക്കിയതിനുശേഷം വീണ്ടും ശ്രമിക്കുക."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"ശരി"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"അപ്ലിക്കേഷൻ കണ്ടെത്തിയില്ല"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"ഇൻസ്റ്റാളുചെയ്ത അപ്ലിക്കേഷനുകളുടെ ലിസ്റ്റിൽ അപ്ലിക്കേഷൻ കണ്ടെത്തിയില്ല."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"അനുവദിച്ചിട്ടില്ല"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"ഈ അൺഇൻസ്റ്റലേഷൻ നിർവഹിക്കാൻ നിലവിലെ ഉപയോക്താവിനെ അനുവദിച്ചിട്ടില്ല."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"പിശക്"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"ആപ്പ് അൺഇൻസ്റ്റാൾ ചെയ്യാൻ കഴിഞ്ഞില്ല."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"അപ്ലിക്കേഷൻ അൺഇൻസ്റ്റാളുചെയ്യുക"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"അപ്ഡേറ്റ് അൺഇൻസ്റ്റാളുചെയ്യുക"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> എന്നത് ഇനിപ്പറയുന്ന അപ്ലിക്കേഷന്റെ ഭാഗമാണ്:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"ഈ അപ്ലിക്കേഷൻ അൺഇൻസ്റ്റാളുചെയ്യണോ?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"ഈ അപ്ലിക്കേഷൻ "<b>"എല്ലാ"</b>" ഉപയോക്താക്കൾക്കുമായി അൺഇൻസ്റ്റാളുചെയ്യണോ? ഉപകരണത്തിലെ "<b>"എല്ലാ"</b>" ഉപയോക്താക്കളിൽ നിന്നും അപ്ലിക്കേഷനും അതിന്റെ ഡാറ്റയും നീക്കംചെയ്യപ്പെടും."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"<xliff:g id="USERNAME">%1$s</xliff:g> എന്ന ഉപയോക്താവിനായി ഈ അപ്ലിക്കേഷൻ അൺഇൻസ്റ്റാളുചെയ്യണോ?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"ഫാക്ടറി പതിപ്പ് ഉപയോഗിച്ച് ഈ ആപ്പ് മാറ്റിസ്ഥാപിക്കണോ? എല്ലാ ഡാറ്റയും നീക്കംചെയ്യപ്പെടും."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"ഫാക്ടറി പതിപ്പ് ഉപയോഗിച്ച് ഈ ആപ്പ് മാറ്റിസ്ഥാപിക്കണോ? എല്ലാ ഡാറ്റയും നീക്കംചെയ്യപ്പെടും. ഔദ്യോഗിക പ്രൊഫൈലുകൾ ഉള്ളവർ ഉൾപ്പെടെ, ഈ ഉപകരണത്തിന്റെ എല്ലാ ഉപയോക്താക്കളെയും ഇത് ബാധിക്കുന്നു."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"അൺ ഇൻസ്റ്റാൾ ചെയ്തുകൊണ്ടിരിക്കുന്നവ"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"അൺ ഇൻസ്റ്റാൾ ചെയ്യാൻ കഴിയാഞ്ഞവ"</string>
- <string name="uninstalling" msgid="5556217435895938250">"അൺഇൻസ്റ്റാൾ ചെയ്യുന്നു..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> അൺഇൻസ്റ്റാൾ ചെയ്യുന്നു…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"അൺഇൻസ്റ്റാളുചെയ്യൽ പൂർത്തിയായി."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> അൺഇൻസ്റ്റാൾ ചെയ്തു"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"അൺഇൻസ്റ്റാളുചെയ്തു."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> അൺഇൻസ്റ്റാൾ ചെയ്യൽ പരാജയം."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"സജീവ ഉപകരണ അഡ്മിൻ ആപ്പ് അൺഇൻസ്റ്റാൾ ചെയ്യാൻ കഴിയില്ല"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"<xliff:g id="USERNAME">%1$s</xliff:g> എന്ന ഉപയോക്താവിന്റെ സജീവ ഉപകരണ അഡ്മിൻ ആപ്പ് അൺഇൻസ്റ്റാൾ ചെയ്യാൻ കഴിയില്ല"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"ചില ഉപയോക്താക്കൾക്കോ പ്രൊഫൈലുകൾക്കോ ഈ ആപ്പ് ആവശ്യമാണ്, മറ്റുള്ളവർക്ക് ഈ ആപ്പ് അൺഇൻസ്റ്റാൾ ചെയ്തിരിക്കുന്നു"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"നിങ്ങളുടെ ഔദ്യോഗിക പ്രൊഫൈലിന് ഈ ആപ്പ് ആവശ്യമുള്ളതിനാൽ അത് അൺഇൻസ്റ്റാൾ ചെയ്യാനാവില്ല."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"നിങ്ങളുടെ ഉപകരണ അഡ്മിനിസ്ട്രേറ്ററിന് ഈ അപ്ലിക്കേഷൻ ആവശ്യമുള്ളതിനാൽ ഇത് അൺഇൻസ്റ്റാൾ ചെയ്യാനാവില്ല."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"ഉപകരണ അഡ്മിൻ ആപ്പുകളെ മാനേജുചെയ്യുക"</string>
- <string name="manage_users" msgid="3125018886835668847">"ഉപയോക്താക്കളെ മാനേജുചെയ്യുക"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> അൺഇൻസ്റ്റാളുചെയ്യാനായില്ല."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"പാക്കേജ് പാഴ്സുചെയ്യുന്നതിൽ ഒരു പ്രശ്നമുണ്ടായിരുന്നു."</string>
- <string name="newPerms" msgid="6039428254474104210">"പുതിയത്"</string>
- <string name="allPerms" msgid="1024385515840703981">"എല്ലാം"</string>
- <string name="privacyPerms" msgid="1850527049572617">"സ്വകാര്യത"</string>
- <string name="devicePerms" msgid="6733560207731294504">"ഉപകരണ ആക്സസ്സ്"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"ഈ അപ്ഡേറ്റിന് പുതിയ അനുമതികളൊന്നും ആവശ്യമില്ല."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"ഇനിപ്പറയുന്ന അനുമതികൾ അനുവദിക്കണോ? ഇതിന് ഇവയിലേക്ക് ആക്സസ്സ് ലഭിക്കും:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"നിരസിക്കുക"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"കൂടുതൽ വിവരങ്ങള്"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"എന്തായാലും നിരസിക്കുക"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"<xliff:g id="ACTION">%2$s</xliff:g> <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ആപ്പിനെ അനുവദിക്കണോ?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> പ്രവർത്തനരഹിതമാക്കി"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"എല്ലാം പ്രവർത്തനരഹിതമാക്കി"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"ഒന്നും പ്രവർത്തനരഹിതമാക്കിയിട്ടില്ല"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"അനുവദിക്കുക"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"ആപ്സ്"</string>
- <string name="app_permissions" msgid="3146758905824597178">"ആപ്പ് അനുമതികൾ"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"വീണ്ടും ആവശ്യപ്പെടരുത്"</string>
- <string name="no_permissions" msgid="3210542466245591574">"അനുമതികൾ ഇല്ല"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"അധിക അനുമതികൾ"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"അനുമതി കൺട്രോളർ"</string>
+ <string name="ok" msgid="4417794827535157922">"ശരി"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"അനുമതികൾ"</string>
+ <string name="cancel" msgid="7279939269964834974">"റദ്ദാക്കുക"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"ആപ്പ് കണ്ടെത്തിയില്ല"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"നിരസിക്കുക"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"നിരസിക്കുക, വീണ്ടും ആവശ്യപ്പെടരുത്"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"കൂടുതൽ വിവരങ്ങൾ"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"എന്തായാലും നിരസിക്കുക"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<xliff:g id="ACTION">%2$s</xliff:g> ചെയ്യുന്നതിന് <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> എന്ന ആപ്പിനെ അനുവദിക്കണോ?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> എന്നതിനെ എല്ലായ്പ്പോഴും <xliff:g id="ACTION">%2$s</xliff:g> എന്നതിലേക്ക് അനുവദിക്കണമോ?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"ആപ്പ് ഉപയോഗിക്കുമ്പോൾ മാത്രം"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"എപ്പോഴും"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"നിരസിക്കുക, വീണ്ടും ആവശ്യപ്പെടരുത്"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> പ്രവർത്തനരഹിതമാക്കി"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"എല്ലാം പ്രവർത്തനരഹിതമാക്കി"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"ഒന്നും പ്രവർത്തനരഹിതമാക്കിയിട്ടില്ല"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"അനുവദിക്കുക"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"ഏതുസമയത്തും അനുവദിക്കുക"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"ആപ്പ് ഉപയോഗത്തിലുള്ളപ്പോൾ മാത്രം അനുവദിക്കുക"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"ആപ്പുകൾ"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"ആപ്പ് അനുമതികൾ"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"അനുമതി മാനേജർ"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"വീണ്ടും ആവശ്യപ്പെടരുത്"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"അനുമതികൾ ഇല്ല"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"അധിക അനുമതികൾ"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"ആപ്പ് വിവരം തുറക്കുക"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"ഈ ആപ്പ് Android-ന്റെ പഴയ പതിപ്പിനായാണ് രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത്. അനുമതി നിരസിക്കുന്നത് തുടർന്ന് ഉദ്ദേശിച്ചവിധം പ്രവർത്തിക്കാതിരിക്കാനിടയാക്കുന്നു."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"ഒരു അജ്ഞാതപ്രവർത്തനം നടത്തുക"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"സിസ്റ്റം കാണിക്കുക"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"സിസ്റ്റം മറയ്ക്കുക"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> അനുമതികൾ"</string>
- <string name="no_apps" msgid="1965493419005012569">"ആപ്സ് ഒന്നുമില്ല"</string>
- <string name="location_settings" msgid="1774875730854491297">"ലൊക്കേഷൻ ക്രമീകരണം"</string>
- <string name="location_warning" msgid="8778701356292735971">"ഈ ഉപകരണത്തിനായുള്ള ലൊക്കേഷൻ സേവനങ്ങളുടെ ദാതാവ് <xliff:g id="APP_NAME">%1$s</xliff:g> ആണ്. ലൊക്കേഷൻ ക്രമീകരണത്തിൽ നിന്ന് ലൊക്കേഷൻ ആക്സസ് പരിഷ്കരിക്കാവുന്നതാണ്."</string>
- <string name="system_warning" msgid="7103819124542305179">"നിങ്ങൾ ഈ അനുമതി നിഷേധിക്കുന്നുവെങ്കിൽ, നിങ്ങളുടെ ഉപകരണത്തിന്റെ അടിസ്ഥാന ഫീച്ചറുകൾ ഉദ്ദേശിച്ചത് പോലെ തുടർന്ന് പ്രവർത്തിച്ചേക്കില്ല."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"നയം മുഖേനെ നടപ്പിലാക്കിയത്"</string>
- <string name="loading" msgid="7811651799620593731">"ലോഡുചെയ്യുന്നു..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"എല്ലാ അനുമതികളും"</string>
- <string name="other_permissions" msgid="2016192512386091933">"മറ്റ് ആപ്പ് ശേഷികൾ"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"അനുമതി അഭ്യർത്ഥന"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"സ്ക്രീൻ ഓവർലേ കണ്ടെത്തി"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"ഈ അനുമതി ക്രമീകരണം മാറ്റുന്നതിന്, ക്രമീകരണം > ആപ്സ് എന്നതിൽ നിന്ന് നിങ്ങളാദ്യം സ്ക്രീൻ ഓവർലേ ഓഫാക്കേണ്ടതാണ്"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"ക്രമീകരണം തുറക്കുക"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"ഇൻസ്റ്റാളോ അൺഇൻസ്റ്റാളോ ചെയ്യുന്നതിന് Wear-ൽ പിന്തുണയില്ല"</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> അപ്ഡേറ്റ് ചെയ്തു. ഇനിപ്പറയുന്നത് ആക്സസ് ചെയ്യാൻ <xliff:g id="APP_NAME_1">%1$s</xliff:g> ആപ്പിനെ അനുവദിക്കണോ?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"എന്തൊക്കെ ആക്സസ്സ് ചെയ്യാനാണ് <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ആപ്പിനെ അനുവദിക്കേണ്ടതെന്ന് തിരഞ്ഞെടുക്കുക"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> അപ്ഡേറ്റ് ചെയ്തിരിക്കുന്നു. എന്തൊക്കെ ആക്സസ്സ് ചെയ്യാനാണ് ഈ ആപ്പിനെ അനുവദിക്കേണ്ടതെന്ന് തിരഞ്ഞെടുക്കുക."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"റദ്ദാക്കുക"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"തുടരുക"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"പുതിയ അനുമതികൾ"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"നിലവിലെ അനുമതികൾ"</string>
- <string name="message_staging" msgid="6151794817691100003">"ആപ്പ് തയ്യാറാക്കുന്നു…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"അജ്ഞാതം"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"നിങ്ങളുടെ സുരക്ഷയ്ക്ക്, ഈ ഉറവിടത്തിൽ നിന്നുള്ള, തിരിച്ചറിയാനാകാത്ത ആപ്സ് ഇൻസ്റ്റാൾ ചെയ്യാൻ നിങ്ങളുടെ ടാബ്ലെറ്റ് അനുവദിക്കപ്പെടില്ല."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"നിങ്ങളുടെ സുരക്ഷയ്ക്ക്, ഈ ഉറവിടത്തിൽ നിന്നുള്ള, തിരിച്ചറിയാനാകാത്ത ആപ്സ് ഇൻസ്റ്റാൾ ചെയ്യാൻ നിങ്ങളുടെ ടിവി അനുവദിക്കപ്പെടില്ല."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"നിങ്ങളുടെ സുരക്ഷയ്ക്ക്, ഈ ഉറവിടത്തിൽ നിന്നുള്ള, തിരിച്ചറിയാനാകാത്ത ആപ്സ് ഇൻസ്റ്റാൾ ചെയ്യാൻ നിങ്ങളുടെ ഫോൺ അനുവദിക്കപ്പെടില്ല."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"തിരിച്ചറിയാനാകാത്ത ആപ്പുകളാൽ നിങ്ങളുടെ ഫോണും വ്യക്തിഗത ഡാറ്റയും ആക്രമിക്കപ്പെടാനുള്ള സാധ്യത വളരെ കൂടുതലാണ്. ഈ ആപ്പ് ഇൻസ്റ്റാൾ ചെയ്യുന്നതിലൂടെ, ഇത് ഉപയോഗിക്കുന്നതിനാൽ നിങ്ങളുടെ ഫോണിന് സംഭവിച്ചേക്കാവുന്ന എല്ലാ നാശനഷ്ടങ്ങൾക്കും അല്ലെങ്കിൽ ഡാറ്റാ നഷ്ടങ്ങൾക്കും നിങ്ങൾക്കാണ് ഉത്തരവാദിത്തമെന്ന് നിങ്ങൾ അംഗീകരിക്കുന്നു."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"തിരിച്ചറിയാനാകാത്ത ആപ്പുകളാൽ നിങ്ങളുടെ ടാബ്ലെറ്റും വ്യക്തിഗത ഡാറ്റയും ആക്രമിക്കപ്പെടാനുള്ള സാധ്യത വളരെ കൂടുതലാണ്. ഈ ആപ്പ് ഇൻസ്റ്റാൾ ചെയ്യുന്നതിലൂടെ, ഇത് ഉപയോഗിക്കുന്നതിനാൽ നിങ്ങളുടെ ടാബ്ലെറ്റിന് സംഭവിച്ചേക്കാവുന്ന എല്ലാ നാശനഷ്ടങ്ങൾക്കും അല്ലെങ്കിൽ ഡാറ്റാ നഷ്ടങ്ങൾക്കും നിങ്ങൾക്കാണ് ഉത്തരവാദിത്തമെന്ന് നിങ്ങൾ അംഗീകരിക്കുന്നു."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"തിരിച്ചറിയാനാകാത്ത ആപ്പുകളാൽ നിങ്ങളുടെ ടിവിയും വ്യക്തിഗത ഡാറ്റയും ആക്രമിക്കപ്പെടാനുള്ള സാധ്യത വളരെ കൂടുതലാണ്. ഈ ആപ്പ് ഇൻസ്റ്റാൾ ചെയ്യുന്നതിലൂടെ, ഇത് ഉപയോഗിക്കുന്നതിനാൽ നിങ്ങളുടെ ടിവിക്ക് സംഭവിച്ചേക്കാവുന്ന എല്ലാ നാശനഷ്ടങ്ങൾക്കും അല്ലെങ്കിൽ ഡാറ്റാ നഷ്ടങ്ങൾക്കും നിങ്ങൾക്കാണ് ഉത്തരവാദിത്തമെന്ന് നിങ്ങൾ അംഗീകരിക്കുന്നു."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"തുടരുക"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"ക്രമീകരണം"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Wear ആപ്പുകൾ ഇൻസ്റ്റാൾ/അൺ ഇൻസ്റ്റാൾ ചെയ്യൽ"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"ഈ ആപ്പ് Android-ന്റെ പഴയ പതിപ്പിനായാണ് രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത്. അനുമതി നിരസിക്കുന്നത് തുടർന്ന് ഉദ്ദേശിച്ചവിധം പ്രവർത്തിക്കാതിരിക്കാനിടയാക്കുന്നു."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"ഒരു അജ്ഞാത പ്രവർത്തനം നടത്തുക"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="COUNT_1">%2$d</xliff:g> ആപ്പുകൾ അനുവദനീയം"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"അടുത്തിടെയുള്ള ഉപയോഗം"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"അനുമതി ഡാഷ്ബോർഡ് കാണുക"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"സിസ്റ്റം ദൃശ്യമാക്കുക"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"സിസ്റ്റം അദൃശ്യമാക്കുക"</string>
+ <string name="no_apps" msgid="2377153782338039463">"ആപ്പുകൾ ഒന്നുമില്ല"</string>
+ <string name="location_settings" msgid="547378321761364906">"ലൊക്കേഷൻ ക്രമീകരണം"</string>
+ <string name="location_warning" msgid="4687406043150343369">"ഈ ഉപകരണത്തിനായുള്ള ലൊക്കേഷൻ സേവനങ്ങളുടെ ദാതാവ് <xliff:g id="APP_NAME">%1$s</xliff:g> ആണ്. ലൊക്കേഷൻ ക്രമീകരണത്തിൽ നിന്ന് ലൊക്കേഷൻ ആക്സസ് പരിഷ്കരിക്കാവുന്നതാണ്."</string>
+ <string name="system_warning" msgid="6868290533389195836">"നിങ്ങൾ ഈ അനുമതി നിഷേധിക്കുന്നുവെങ്കിൽ, നിങ്ങളുടെ ഉപകരണത്തിന്റെ അടിസ്ഥാന ഫീച്ചറുകൾ ഉദ്ദേശിച്ചത് പോലെ തുടർന്ന് പ്രവർത്തിച്ചേക്കില്ല."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"നയം മുഖേനെ നടപ്പിലാക്കിയത്"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"നയം അനുസരിച്ച് പശ്ചാത്തല ആക്സസ് പ്രവർത്തനരഹിതമാക്കി"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"നയം അനുസരിച്ച് പശ്ചാത്തല ആക്സസ് പ്രവർത്തനക്ഷമമാക്കി"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"നയം അനുസരിച്ച് പൂർവ്വതല ആക്സസ് പ്രവർത്തനക്ഷമമാക്കി"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"അഡ്മിൻ നിയന്ത്രിക്കുന്നത്"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"പശ്ചാത്തല ആക്സസ് അഡ്മിൻ പ്രവർത്തനരഹിതമാക്കി"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"പശ്ചാത്തല ആക്സസ് അഡ്മിൻ പ്രവർത്തനക്ഷമമാക്കി"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"പൂർവ്വതല ആക്സസ് അഡ്മിൻ പ്രവർത്തനക്ഷമമാക്കി"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"സിസ്റ്റം, അനുമതി സജ്ജീകരിച്ചു"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"എപ്പോഴും"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"ആപ്പ് ഉപയോഗിക്കുമ്പോൾ മാത്രം"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"ഒരിക്കലും"</string>
+ <string name="loading" msgid="323483393167148377">"ലോഡ് ചെയ്യുന്നു…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"എല്ലാ അനുമതികളും"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"മറ്റ് ആപ്പ് ശേഷികൾ"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"അനുമതി അഭ്യർത്ഥന"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"സ്ക്രീൻ ഓവർലേ കണ്ടെത്തി"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"ഈ അനുമതി ക്രമീകരണം മാറ്റുന്നതിന്, ക്രമീകരണം > ആപ്പുകൾ എന്നതിൽ നിന്ന് നിങ്ങളാദ്യം സ്ക്രീൻ ഓവർലേ ഓഫാക്കേണ്ടതാണ്"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"ക്രമീകരണം തുറക്കുക"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"ഇൻസ്റ്റാൾ/അൺഇൻസ്റ്റാൾ ചെയ്യുന്നതിന് Wear-ൽ പിന്തുണയില്ല."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"എന്തൊക്കെ ആക്സസ് ചെയ്യാനാണ് <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ആപ്പിനെ അനുവദിക്കേണ്ടതെന്ന് തിരഞ്ഞെടുക്കുക"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> അപ്ഡേറ്റ് ചെയ്തിരിക്കുന്നു. എന്തൊക്കെ ആക്സസ് ചെയ്യാൻ ഈ ആപ്പിനെ അനുവദിക്കണമെന്ന് തിരഞ്ഞെടുക്കുക."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"റദ്ദാക്കുക"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"തുടരുക"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"പുതിയ അനുമതികൾ"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"നിലവിലെ അനുമതികൾ"</string>
+ <string name="message_staging" msgid="641286607664721291">"ആപ്പ് തയ്യാറാക്കുന്നു…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"അജ്ഞാതം"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"ഡാഷ്ബോർഡ്"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">അവസാനം ആക്സസ് ചെയ്തത്: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> ആക്സസുകള് (പശ്ചാത്തലത്തില് <xliff:g id="NUM_5">%3$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> ആക്സസ് (പശ്ചാത്തലത്തില്<xliff:g id="NUM_2">%3$s</xliff:g> എണ്ണം)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">അവസാനം ആക്സസ് ചെയ്തത്: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> ആക്സസുകള്\nസമയ ദൈർഘ്യം: <xliff:g id="TIME_5">%3$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> ആക്സസ്\nസമയ ദൈർഘ്യം: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">അവസാനം ആക്സസ് ചെയ്തത്: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> ആക്സസുകള് (പശ്ചാത്തലത്തിൽ <xliff:g id="NUM_6">%3$s</xliff:g> എണ്ണം)\nസമയ ദൈർഘ്യം: <xliff:g id="TIME_7">%3$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> ആക്സസ് (പശ്ചാത്തലത്തിൽ <xliff:g id="NUM_2">%3$s</xliff:g> എണ്ണം)\nസമയ ദൈർഘ്യം: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"ഏതെങ്കിലും അനുമതി"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"ഏത് സമയത്തും"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"കഴിഞ്ഞ 7 ദിവസം"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"അവസാന 24 മണിക്കൂർ"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"കഴിഞ്ഞ ഒരു മണിക്കൂര്"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"കഴിഞ്ഞ 15 മിനിറ്റ്"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"അവസാന ഒരു മിനിറ്റ്"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"അനുമതി ഉപയോഗങ്ങളൊന്നുമില്ല"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"എല്ലായ്പ്പോഴത്തെയും ആക്സസ്"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"കഴിഞ്ഞ 7 ദിവസത്തെ ആക്സസ്"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"കഴിഞ്ഞ 24 മണിക്കൂറിലെ ആക്സസ്"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"കഴിഞ്ഞ മണിക്കൂറിലെ ആക്സസ്"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"കഴിഞ്ഞ 15 മിനിറ്റിലെ ആക്സസ്"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"കഴിഞ്ഞ ഒരു മിനിറ്റിലെ ആക്സസ്"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"പൊതുവായ അനുമതിയുടെ എല്ലായ്പ്പോഴുമുള്ള ഉപയോഗം"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"പൊതുവായ അനുമതിയുടെ കഴിഞ്ഞ 7 ദിവസത്തെ ഉപയോഗം"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"പൊതുവായ അനുമതിയുടെ കഴിഞ്ഞ 24 മണിക്കൂറിലെ ഉപയോഗം"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"പൊതുവായ അനുമതിയുടെ കഴിഞ്ഞ ഒരു മണിക്കൂറിലെ ഉപയോഗം"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"പൊതുവായ അനുമതിയുടെ കഴിഞ്ഞ 15 മിനിറ്റിലെ ഉപയോഗം"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"പൊതുവായ അനുമതിയുടെ കഴിഞ്ഞ ഒരു മിനിറ്റിലെ ഉപയോഗം"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"ആപ്പുകൾ"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"ഇതുപ്രകാരം ഫിൽട്ടർ ചെയ്തു: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"ഫിൽട്ടർ നീക്കം ചെയ്യുക"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"ഇതുപ്രകാരം ഫിൽട്ടർ ചെയ്യുക"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"അനുമതികൾ പ്രകാരം ഫിൽട്ടർ ചെയ്യുക"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"ഏറ്റവുമധികം ഉപയോഗിച്ച അനുമതികൾ"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"ഏറ്റവുമധികം ആക്സസ് ചെയ്തത്"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"ഏറ്റവും പുതിയവ"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"പുതുക്കിയെടുക്കുക"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"ആപ്പ് അനുമതികളുടെ ഉപയോഗം"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"ആക്സസ്: <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="4040424337831328212">"ആക്സസ്: <xliff:g id="NUM">%1$s</xliff:g> തവണ. അവസാനം ഉപയോഗിച്ചത് <xliff:g id="TIME">%2$s</xliff:g> മുമ്പ്."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"അനുവദിക്കുക"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"ഏതുസമയത്തും അനുവദിക്കുക"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"ആപ്പ് ഉപയോഗത്തിലുള്ളപ്പോൾ മാത്രം അനുവദിക്കുക"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"നിരസിക്കുക"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> അനുമതി"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="APP">%2$s</xliff:g>-നായുള്ള <xliff:g id="PERM">%1$s</xliff:g> ആക്സസ്"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> നിങ്ങളുടെ <xliff:g id="PERM">%2$s</xliff:g>, <xliff:g id="TIME">%3$s</xliff:g> മുമ്പ് ആക്സസ് ചെയ്തു."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> നിങ്ങളുടെ <xliff:g id="PERM">%2$s</xliff:g>ആക്സസ് ചെയ്തിട്ടില്ല."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"അനുമതികളുടെ വിശദമായ ഉപയോഗം കാണുക"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"അവസാനം ആക്സസ് ചെയ്തത്: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"ഒരിക്കലും ആക്സസ് ചെയ്തിട്ടില്ല"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"അനുവദിച്ചവ"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"ഉപയോഗിക്കുമ്പോൾ മാത്രം അനുവദനീയം"</string>
+ <string name="denied_header" msgid="2277998574238617699">"നിരസിച്ചവ"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"വിശദമായ ഉപയോഗം കാണുക"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ദിവസം</item>
+ <item quantity="one">ഒരു ദിവസം</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> മണിക്കൂർ</item>
+ <item quantity="one">ഒരു മണിക്കൂർ</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> മിനിറ്റ്</item>
+ <item quantity="one">ഒരു മിനിറ്റ്</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> സെക്കൻഡ്</item>
+ <item quantity="one">ഒരു സെക്കൻഡ്</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> എന്നതിനെ നിങ്ങളുടെ <xliff:g id="ROLE_NAME">%2$s</xliff:g> ആയി ഉപയോഗിക്കണോ?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"<b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> എന്നതിന് പകരം <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> എന്നത്, നിങ്ങളുടെ <xliff:g id="ROLE_NAME">%2$s</xliff:g> ആയി ഉപയോഗിക്കണോ?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"അനുമതിയ്ക്കുള്ള റിമൈൻഡറുകൾ"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g>എന്ന ആപ്പ് നിങ്ങളുടെ ലൊക്കേഷൻ ഉപയോഗിക്കുന്നു"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"ഈ ആപ്പിന് എപ്പോഴും നിങ്ങളുടെ ലൊക്കേഷൻ ആക്സസ് ചെയ്യാനാവും. മാറ്റാൻ ടാപ്പ് ചെയ്യുക."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"ആപ്പ് ഉപയോഗത്തിലുള്ളപ്പോൾ മാത്രം"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"അനുമതികളൊന്നും നൽകിയിട്ടില്ല"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"അനുമതികളൊന്നും നിഷേധിച്ചിട്ടില്ല"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"ആപ്പുകൾക്കൊന്നും അനുമതി നൽകിയിട്ടില്ല"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"ആപ്പുകൾക്കൊന്നും അനുമതി നിഷേധിച്ചിട്ടില്ല"</string>
+ <string name="launch_app" msgid="5641437562665039291">"തുറക്കുക"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"അൺഇൻസ്റ്റാൾ ചെയ്യുക"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"നിർബന്ധിതമായി നിർത്തുക"</string>
+ <string name="settings" msgid="2884124136779508907">"ക്രമീകരണം"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"നിങ്ങളുടെ ഉപകരണത്തിലേക്ക് <xliff:g id="SERVICE_NAME">%s</xliff:g> എന്നതിന് പൂർണ്ണമായ ആക്സസുണ്ട്"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"നിങ്ങളുടെ ഉപകരണത്തിലേക്ക് <xliff:g id="NUM_SERVICES">%s</xliff:g> ഉപയോഗസഹായി സേവനങ്ങൾക്ക് പൂർണ്ണമായ ആക്സസുണ്ട്"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> എന്നതിന് നിങ്ങളുടെ സ്ക്രീൻ, പ്രവർത്തനങ്ങൾ, ഇൻപുട്ടുകൾ എന്നിവ കാണാനും പ്രവർത്തനങ്ങൾ നിർവഹിക്കാനും, ഡിസ്പ്ലേ നിയന്ത്രിക്കാനും കഴിയും."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"ഈ സേവനങ്ങൾക്ക് നിങ്ങളുടെ സ്ക്രീൻ, പ്രവർത്തനങ്ങൾ, ഇൻപുട്ടുകൾ എന്നിവ കാണാനും പ്രവർത്തനങ്ങൾ നിർവഹിക്കാനും, ഡിസ്പ്ലേ നിയന്ത്രിക്കാനും കഴിയും."</string>
+ <string name="default_apps" msgid="8554530939151957828">"ഡിഫോൾട്ട് ആപ്പുകൾ"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"ഡിഫോൾട്ട് ആപ്പുകൾ ഇല്ല"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"ജോലി ആവശ്യങ്ങൾക്ക് ഡിഫോൾട്ട്"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"ഒന്നുമില്ല"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"ആപ്പുകൾ ഒന്നുമില്ല"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"പ്രത്യേക ആപ്പ് ആക്സസ്"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"പ്രത്യേക ആപ്പ് ആക്സസില്ല"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"ആപ്പുകൾ ലഭ്യമല്ല"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"സഹായ ആപ്പ്"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"ബ്രൗസർ ആപ്പ്"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"ഫോൺ ആപ്പ്"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS ആപ്പ്"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"അടിയന്തര ആപ്പ്"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"ഹോം ആപ്പ്"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"സംഗീത ആപ്പ്"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"ഗാലറി ആപ്പ്"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"കാർ മോഡ് ഫോൺ ആപ്പ്"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"കോൾ റീഡയറക്ട് ചെയ്യുന്ന ആപ്പ്"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"കോൾ സ്ക്രീനിംഗ് ആപ്പ്"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"കോൾ സഹകാരി ആപ്പ്"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"കാർ പ്രൊജക്ഷൻ ആപ്പ്"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"ഔദ്യോഗിക പ്രൊഫൈലിനെ പിന്തുണയ്ക്കുന്നില്ല"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"ശ്രദ്ധിക്കുക: നിങ്ങളുടെ ഉപകരണം റീസ്റ്റാർട്ട് ചെയ്ത്, സ്ക്രീൻ ലോക്ക് സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ, നിങ്ങളുടെ ഉപകരണം അൺലോക്ക് ചെയ്യുന്നത് വരെ ഈ ആപ്പ് ആരംഭിക്കാനാവില്ല."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"നിങ്ങളുടെ സ്ക്രീനിൽ ദൃശ്യമാകുന്നതോ ആപ്പുകൾക്കുള്ളിൽ ആക്സസ് ചെയ്യാവുന്നതോ ആയ വിവരങ്ങൾ ഉൾപ്പെടെ, നിങ്ങളുടെ സിസ്റ്റത്തിൽ ഉപയോഗത്തിലുള്ള ആപ്പുകളെ കുറിച്ചുള്ള വിവരങ്ങൾ വായിക്കാൻ അസിസ്റ്റൻ്റിനാവും."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"ഡീബഗ്ഗ് ചെയ്യൽ ഡാറ്റ പങ്കിടുക"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"വിശദമായ ഡീബഗ്ഗ് ചെയ്യൽ വിവരങ്ങൾ പങ്കിടണോ?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"ഡീബഗ്ഗ് ചെയ്യൽ വിവരങ്ങൾ അപ്ലോഡ് ചെയ്യാൻ <xliff:g id="APP_NAME">%1$s</xliff:g> താൽപ്പര്യപ്പെടുന്നു."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"ഡീബഗ്ഗ് ചെയ്യൽ ഡാറ്റ പങ്കിടുക"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"ഈ ഉപകരണത്തിൽ നിന്ന് <xliff:g id="DATE">%2$s</xliff:g>-ന് <xliff:g id="TIME">%3$s</xliff:g>-മണിയ്ക്ക് എടുത്ത ഒരു ബഗ് റിപ്പോർട്ട് അപ്ലോഡ് ചെയ്യാൻ <xliff:g id="APP_NAME_0">%1$s</xliff:g> അഭ്യർത്ഥിക്കുന്നു. നിങ്ങളുടെ ഉപകരണത്തെക്കുറിച്ചുള്ള വ്യക്തിഗത വിവരമോ ആപ്പുകൾ ലോഗ് ചെയ്യുമ്പോൾ നൽകുന്ന വിവരമോ, ഉദാഹരണത്തിന് നെറ്റ്വർക്ക് വിവരങ്ങൾ, ഉപകരണ ഐഡന്റിഫയറുകൾ, ലൊക്കേഷൻ ഡാറ്റ, ഉപയോക്തൃനാമങ്ങൾ എന്നിവ ബഗ് റിപ്പോർട്ടുകളിൽ ഉൾപ്പെടുന്നു. ഈ വിവരം ഉപയോഗിച്ച് നിങ്ങൾ വിശ്വസിക്കുന്ന ആപ്പുകൾക്കും ആളുകൾക്കും മാത്രം ബഗ് റിപ്പോർട്ടുകൾ പങ്കിടുക. <xliff:g id="APP_NAME_1">%4$s</xliff:g> എന്നതിനെ ഒരു ബഗ് റിപ്പോർട്ട് അപ്ലോഡ് ചെയ്യാൻ അനുവദിക്കണോ?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"അനുവദിക്കുക"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"നിരസിക്കുക"</string>
</resources>
diff --git a/res/values-mn-television/strings.xml b/res/values-mn-television/strings.xml
index 39c899f..976c481 100644
--- a/res/values-mn-television/strings.xml
+++ b/res/values-mn-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Taтгалзаад дахин бүү асуугаарай"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Та дараа үүнийг Toхиргоо & Апп дотроос солих боломжтой"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Системийн аппыг харуулах"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Апп-н зөвшөөрөл"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Апп-н зөвшөөрөл"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> зөвшөөрөл"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Нэмэлт зөвшөөрөл"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> зөвшөөрөл"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Taтгалзаад дахин бүү асуу"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Та үүнийг дараа нь Тохиргоо > Аппууд хэсэгт өөрчилж болно"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Системийн аппуудыг харуулах"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Аппын зөвшөөрөл"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Аппын зөвшөөрөл"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g>-н зөвшөөрөл"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Нэмэлт зөвшөөрөл"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g>-н зөвшөөрөл"</string>
</resources>
diff --git a/res/values-mn-watch/strings.xml b/res/values-mn-watch/strings.xml
index 120c336..6d5bcf7 100644
--- a/res/values-mn-watch/strings.xml
+++ b/res/values-mn-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Татгалзах, дахин бүү асуугаарай"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Системийн аппыг харуулах"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Өөрчлөх боломжгүй"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Тийм"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Цуцлах"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Татгалзаад дахин бүү асуу"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Системийн аппуудыг харуулах"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Өөрчлөх боломжгүй"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Тийм"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Цуцлах"</string>
</resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 1190a37..5091e5f 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Багц суулгагч"</string>
- <string name="next" msgid="3057143178373252333">"Дараах"</string>
- <string name="install" msgid="5896438203900042068">"Суулгах"</string>
- <string name="done" msgid="3889387558374211719">"Дуусгах"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Энэ апп-д дараахыг зөвшөөрөх:"</string>
- <string name="cancel" msgid="8360346460165114585">"Цуцлах"</string>
- <string name="unknown" msgid="4742479012767208045">"Тодорхойгүй"</string>
- <string name="installing" msgid="8613631001631998372">"Суулгаж байна…"</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>-г суулгаж байна…"</string>
- <string name="install_done" msgid="3682715442154357097">"Апп суулгагдсан."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Та энэ аппликешныг суулгамаар байна уу? Энэ дараахад хандах болно:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Та энэ аппликешныг суулгах уу? Энэ тусгай хандалт шаардахгүй."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Та энэ аппликейшны шинэчлэлтийг суулгах уу? Таны хуучин дата устах болно. Шинэчлэгдсэн аппликейшн нь дараахад хандаж чадна:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Та энэ үндсэн аппликейшны шинэчлэлтийг суулгах уу? Таны хуучин дата устах болно. Шинэчлэгдсэн аппликейшн нь дараахад хандаж чадна:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Та энэ аппликешны шинэчлэлтийг суулгах уу? Таны хуучин дата устах болно. Энэ ямар нэгэн тусгай эрх шаардахгүй."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Та энэ үндсэн аппликешны шинэчлэлтийг суулгах уу? Таны хуучин дата устах болно. Энэ ямар нэгэн тусгай эрх шаардахгүй."</string>
- <string name="install_failed" msgid="6579998651498970899">"Апп суулгагдаагүй."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Багц суулгахыг блоклосон байна."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Багц одоогийн багцтай тохирохгүй байгаа тул апп-г суулгаж чадсангүй."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Апп таны таблеттай тохирохгүй байгаа тул үүнийг суулгасангүй."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Энэ апп нь таны ТВ-д нийцэхгүй."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Апп таны утсанд тохирохгүй байгаа тул үүнийг суулгасангүй."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Багц хүчингүй тул апп-г суулгасангүй."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> таны таблет дээр суусангүй."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> нь таны телевизэд суурилуулах боломжгүй байна."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g>-г таны утсан дээр суулгах боломжгүй."</string>
- <string name="launch" msgid="4826921505917605463">"Нээх"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Таны админ тодорхойгүй сурвалжаас татсан апп суулгахыг зөвшөөрдөггүй"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Энэ хэрэглэгч тодорхойгүй апп суулгах боломжгүй байна"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Энэ хэрэглэгч апп суулгах зөвшөөрөлгүй байна"</string>
- <string name="ok" msgid="3468756155452870475">"ОК"</string>
- <string name="settings" msgid="6743583734099755409">"Тохиргоо"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Апп удирдах"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Апп-г орлуулах уу?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Таны суулгаж байгаа апп өөр апп-г орлох болно.\n\nТаны өмнөх хэрэглэгчийн дата бүгд хадгалагдах болно."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Энэ систем апп байна.\n\nТаны өмнөх хэрэглэгчийн дата бүгд хадгалагдах болно."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Зай дутагдаж байна"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g>-г суулгаж чадсангүй. Зайг чөлөөлөөд дахин оролдоно уу."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"ОК"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Апп олдсонгүй"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Суулгасан апп-н жагсаалт дотроос апп олдсонгүй."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Зөвшөөрөөгүй"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Одоогийн хэрэглэгч үүнийг устгах боломжгүй."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Алдаа"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Апп-г устгаж чадсангүй."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Апп устгах"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Шинэчлэлийг устгах"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> нь дараах апп-н хэсэг болно:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Та энэ апп-г устгамаар байна уу?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Та энэ апп-г "<b>"бүх"</b>" хэрэглэгчээс устгах уу? Аппикешн болон доторх дата нь төхөөрөмж дээрх "<b>"бүх"</b>" хэрэглэгчээс устгагдах болно."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Та энэ апп-г <xliff:g id="USERNAME">%1$s</xliff:g> хэрэглэгчийн хувьд устгах уу?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Энэ апп-г үйлдвэрээс ирсэн хувилбараар нь солих уу? Бүх өгөгдөл устах болно."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Энэ апп-г үйлдвэрээс ирсэн хувилбараар нь солих уу? Бүх өгөгдөл устах болно. Энэ нь ажлын профайлтай хэрэглэгч зэрэг энэ төхөөрөмжийн бүх хэрэглэгчдэд үйлчлэх болно."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Устгаж байна"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Устгаж чадсангүй"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Устгаж байна…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>-г устгаж байна…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Устгаж дуусав."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>-г устгасан"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Устгалт амжилтгүй болов."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>-г устгаж чадсангүй."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Идэвхтэй төхөөрөмжийн админ аппыг устгах боломжгүй"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"<xliff:g id="USERNAME">%1$s</xliff:g>-д идэвхтэй төхөөрөмжийн админ аппыг устгах боломжгүй байна"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Энэ апп нь зарим хэрэглэгч эсвэл профайлд шаардлагатай учир үүнийг тэдгээрээс бусад хэрэглэгчдээс устгасан"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Энэ апп таны профайлд шаардлагатай бөгөөд устгах боломжгүй."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Энэ апп нь таны төхөөрөмжийн админд шаардлагатай бөгөөд устгах боломжгүй."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Төхөөрөмжийн админ аппыг удирдах"</string>
- <string name="manage_users" msgid="3125018886835668847">"Хэрэгчлэгчдийг удирдах"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g>-г устгаж чадсангүй."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Багцийг задлахад алдаа гарав."</string>
- <string name="newPerms" msgid="6039428254474104210">"Шинэ"</string>
- <string name="allPerms" msgid="1024385515840703981">"Бүгд"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Нууцлал"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Төхөөрөмжид хандах"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Энэ шинэчлэл шинэ зөвшөөрөл шаардахгүй."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Та дараах зөвшөөрлийг олгох уу? Энэ нь дараахд хандах боломжтой:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Татгалзах"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Дэлгэрэнгүй мэдээлэл"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Хэдийд ч татгалзах"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>-г <xliff:g id="ACTION">%2$s</xliff:g>-г зөвшөөрөх үү?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g>-г цуцалсан"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"бүгдийг цуцалсан"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"алийг ч цуцлаагүй"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Зөвшөөрөх"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Апп"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Апп зөвшөөрөл"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Дахиж бүү асуу"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Зөвшөөрөлгүй байна"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Нэмэлт зөвшөөрөл"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
- <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>
+ <string name="app_name" msgid="2792757108872430971">"Зөвшөөрлийн хянагч"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"зөвшөөрөл"</string>
+ <string name="cancel" msgid="7279939269964834974">"Болих"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Апп олдсонгүй"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Татгалзах"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Татгалзаад дахин бүү асуу"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Дэлгэрэнгүй мэдээлэл"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Ямар ч байсан татгалзах"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>-д <xliff:g id="ACTION">%2$s</xliff:g>-г зөвшөөрөх үү?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>-д <xliff:g id="ACTION">%2$s</xliff:g>-г тогтмол зөвшөөрөх үү?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Зөвхөн апп ашиглах үед"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Тогтмол"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Татгалзаад дахин бүү асуу"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g>-г цуцалсан"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"бүгдийг цуцалсан"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"алийг нь ч цуцлаагүй"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Зөвшөөрөх"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Ямар ч үед зөвшөөрөх"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Зөвхөн аппыг ашиглаж байх үед зөвшөөрөх"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Аппууд"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Аппын зөвшөөрөл"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Зөвшөөрлийн менежер"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Дахин бүү асуу"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Зөвшөөрөл алга"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Нэмэлт зөвшөөрөл"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Аппын мэдээллийг нээх"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
+ <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="old_sdk_deny_warning" msgid="3872277112584842615">"Энэхүү аппыг нь Android-ын хуучин хувилбарт зориулсан. Зөвшөөрлийг үгүйсгэх нь цаашид ажиллахгүй болгож болно."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"Танигдаагүй үйлдлийг гүйцэтгэх"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"Системийг харуулах"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Системийг нуух"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> зөвшөөрөл"</string>
- <string name="no_apps" msgid="1965493419005012569">"Апп байхгүй"</string>
- <string name="location_settings" msgid="1774875730854491297">"Байршлын тохиргоо"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> нь энэ төхөөрөмжийн байршлын үйлчилгээ үзүүлэгч юм. Байршилд хандалтыг байршлын тохиргоо хэсгээс өөрчилж болно."</string>
- <string name="system_warning" msgid="7103819124542305179">"Хэрэв та энэ зөвшөөрөлд татгалзсан тохиолдолд таны төхөөрөмжийн үндсэн функц нь алдаатай ажиллаж магадгүй."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Бодлогын дагуу хэрэгжсэн"</string>
- <string name="loading" msgid="7811651799620593731">"Ачаалж байна..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"Бүх зөвшөөрөл"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Бусад апп-ын боломж"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Зөвшөөрлийн хүсэлт"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Дэлгэцийн давхарга илрүүллээ"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Зөвшөөрлийн тохиргоог өөрчлөхийн тулд, эхлээд Тохиргоо ба Апп хэсгээс дэлгэцийн давхаргыг унтраана уу."</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Тохиргоог нээх"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Суулгах/Устгах үйлдлийг Wear дэмжээгүй."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g>-г шинэчилсэн. <xliff:g id="APP_NAME_1">%1$s</xliff:g>-д дараахад хандахыг зөвшөөрөх үү?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>-н хандаж болох зүйлсийг сонгоно уу"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>-г шинэчиллээ. Энэ апп-н хандаж болох зүйлсийг сонгоно уу."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Цуцлах"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Үргэлжлүүлэх"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Шинэ зөвшөөрөл"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Одоогийн зөвшөөрөл"</string>
- <string name="message_staging" msgid="6151794817691100003">"Апп-г байршуулж байна…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Тодорхойгүй"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Таны аюулгүй байдлыг хангахын тулд таны таблет энэ эх сурвалжаас тодорхойгүй апп суулгахыг зөвшөөрдөггүй."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Таны аюулгүй байдлыг хангахын тулд таны ТВ энэ эх сурвалжаас тодорхойгүй апп суулгахыг зөвшөөрдөггүй."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Таны аюулгүй байдлыг хангахын тулд таны утас энэ эх сурвалжаас тодорхойгүй апп суулгахыг зөвшөөрдөггүй."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Таны утас болон хувийн өгөгдөл тодорхойгүй апп суулгасан тохиолдолд гэмтэж болзошгүй. Энэ аппыг суулгаснаар үүнийг ашигласнаас үүдэн таны утсанд гэмтэл гарах, эсвэл өгөгдөл устах зэрэг эрсдэлийг хариуцна гэдгээ зөвшөөрч байна."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Таны таблет болон хувийн өгөгдөл тодорхойгүй апп суулгасан тохиолдолд гэмтэж болзошгүй. Энэ аппыг суулгаснаар үүнийг ашигласнаас үүдэн таны таблетад гэмтэл гарах, эсвэл өгөгдөл устах зэрэг эрсдэлийг хариуцна гэдгээ зөвшөөрч байна."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Таны ТВ болон хувийн өгөгдөл тодорхойгүй апп суулгасан тохиолдолд гэмтэж болзошгүй. Энэ аппыг суулгаснаар үүнийг ашигласнаас үүдэн таны ТВ-д гэмтэл гарах, эсвэл өгөгдөл устах зэрэг эрсдэлийг хариуцна гэдгээ зөвшөөрч байна."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Үргэлжлүүлэх"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Тохиргоо"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Зүүсгэл аппыг суулгаж/устгаж байна"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Энэ аппыг Android-н хуучин хувилбарт зориулсан тул зөвшөөрлөөс татгалзсан тохиолдолд энэ нь зохих ёсоор ажиллахаа больж болзошгүй."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"тодорхойгүй үйлдэл хийх"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_1">%2$d</xliff:g>-н <xliff:g id="COUNT_0">%1$d</xliff:g> аппыг зөвшөөрсөн"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Саяхны ашиглалт"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Зөвшөөрлийн хяналтын самбарыг харах"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Системийг харуулах"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Системийг нуух"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Апп алга"</string>
+ <string name="location_settings" msgid="547378321761364906">"Байршлын тохиргоо"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> нь энэ төхөөрөмжийн байршлын үйлчилгээ үзүүлэгч юм. Байршлын хандалтыг байршлын тохиргоонд өөрчилж болно."</string>
+ <string name="system_warning" msgid="6868290533389195836">"Та энэ зөвшөөрлөөс татгалзсан тохиолдолд таны төхөөрөмжийн үндсэн онцлогууд зохих ёсоор ажиллахаа больж болзошгүй."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Удирдамжийн дагуу хэрэгжүүлдэг"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Арын хэсгийн хандалтыг удирдамжийн дагуу идэвхгүй болгосон"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Арын хэсгийн хандалтыг удирдамжийн дагуу идэвхжүүлсэн"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Дэлгэц дээрх хандалтыг удирдамжийн дагуу идэвхжүүлсэн"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Админы хянадаг"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Админ арын хэсгийн хандалтыг идэвхгүй болгосон"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Админ арын хэсгийн хандалтыг идэвхжүүлсэн"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Админ дэлгэц дээрх хандалтыг идэвхжүүлсэн"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Системээс тохируулсан зөвшөөрөл"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Тогтмол"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Зөвхөн апп ашиглах үед"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Хэзээ ч үгүй"</string>
+ <string name="loading" msgid="323483393167148377">"Ачаалж байна…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Бүх зөвшөөрөл"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Аппын бусад чадамж"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Зөвшөөрлийн хүсэлт"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Дэлгэцэд давхарлахыг илрүүллээ"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Энэ зөвшөөрлийн тохиргоог өөрчлөхийн тулд эхлээд Тохиргоо > Аппууд хэсэгт дэлгэцэд давхарлахыг унтраах шаардлагатай."</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Тохиргоог нээх"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Андройд Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Wear-д суулгах/устгах үйлдлийг дэмждэггүй."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>-н хандаж болох зүйлсийг сонгоно уу"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>-г шинэчилсэн. Энэ аппын хандаж болох зүйлсийг сонгоно уу."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Цуцлах"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Үргэлжлүүлэх"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Шинэ зөвшөөрөл"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Одоогийн зөвшөөрөл"</string>
+ <string name="message_staging" msgid="641286607664721291">"Аппыг байршуулж байна…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Тодорхойгүй"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Хяналтын самбар"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Сүүлийн хандалт: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> хандалт (ард <xliff:g id="NUM_5">%3$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> хандалт (ард <xliff:g id="NUM_2">%3$s</xliff:g>)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Сүүлийн хандалт: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> хандалт\nХугацаа: <xliff:g id="TIME_5">%3$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> хандалт\nХугацаа: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Сүүлийн хандалт: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> хандалт (ард <xliff:g id="NUM_6">%3$s</xliff:g>)\nХугацаа: <xliff:g id="TIME_7">%3$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> хандалт (ард <xliff:g id="NUM_2">%3$s</xliff:g>)\nХугацаа: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Дурын зөвшөөрөл"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Дурын хугацаа"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Сүүлийн 7 хоног"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Сүүлийн 24 цаг"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Сүүлийн 1 цаг"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Сүүлийн 15 минут"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Сүүлийн 1 минут"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Зөвшөөрлийн хэрэглээ алга"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Аль ч үеийн хандалт"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Сүүлийн 7 хоногийн хандалт"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Сүүлийн 24 цагийн хандалт"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Сүүлийн 1 цагийн хандалт"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Сүүлийн 15 минутын хандалт"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Сүүлийн 1 минутын хандалт"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Аль ч үед хамгийн их ашиглагдсан зөвшөөрөл"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Сүүлийн 7 хоногт хамгийн их ашиглагдсан зөвшөөрөл"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Сүүлийн 24 цагт хамгийн их ашиглагдсан зөвшөөрөл"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Сүүлийн 1 цагт хамгийн их ашиглагдсан зөвшөөрөл"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Сүүлийн 15 минутад хамгийн их ашиглагдсан зөвшөөрөл"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Сүүлийн 1 минутад хамгийн их ашиглагдсан зөвшөөрөл"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Аппууд"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Шүүсэн: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Шүүлтийг устгах"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Дараахаар шүүх"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Зөвшөөрлөөр шүүх"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Хамгийн олон зөвшөөрөл"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Хамгийн олон хандалт"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Саяхны"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Сэргээх"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Аппын зөвшөөрлийн ашиглалт"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"Хандалт: <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="4040424337831328212">"Хандалт: <xliff:g id="NUM">%1$s</xliff:g> удаа. Хамгийн сүүлд <xliff:g id="TIME">%2$s</xliff:g>-н өмнө ашигласан."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Зөвшөөрөх"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Ямар ч үед зөвшөөрөх"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Зөвхөн аппыг ашиглаж байх үед зөвшөөрөх"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Татгалзах"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g>-н зөвшөөрөл"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="APP">%2$s</xliff:g>-н <xliff:g id="PERM">%1$s</xliff:g>-н хандалт"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> таны <xliff:g id="PERM">%2$s</xliff:g>-д <xliff:g id="TIME">%3$s</xliff:g>-н өмнө хандсан байна."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> таны <xliff:g id="PERM">%2$s</xliff:g>-д хандаагүй байна."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Зөвшөөрлийн дэлгэрэнгүй ашиглалтыг харах"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Хамгийн сүүлийн хандалт: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Хэзээ ч хандаагүй"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Зөвшөөрсөн"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Зөвхөн ашиглалтад байхад зөвшөөрөгдсөн"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Татгалзсан"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Дэлгэрэнгүй ашиглалтыг харах"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> өдөр</item>
+ <item quantity="one">1 өдөр</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> цаг</item>
+ <item quantity="one">1 цаг</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> минут</item>
+ <item quantity="one">1 минут</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> секунд</item>
+ <item quantity="one">1 секунд</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Та <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>-г өөрийн <xliff:g id="ROLE_NAME">%2$s</xliff:g>-р ашиглах үү?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Та <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b>-г <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b>-н оронд өөрийн <xliff:g id="ROLE_NAME">%2$s</xliff:g>-р ашиглах үү?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Зөвшөөрлийн сануулагч"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> таны байршлыг ашигласаар байна"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Энэ апп таны байршилд тогтмол хандах боломжтой байна. Өөрчлөхийн тулд товшино уу."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Зөвхөн аппыг ашиглаж байх үед"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Ямар ч зөвшөөрөл алга"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Татгалзсан зөвшөөрөл алга"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Зөвшөөрөлтэй апп алга"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Татгалзсан апп алга"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Нээх"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Устгах"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Хүчээр зогсоох"</string>
+ <string name="settings" msgid="2884124136779508907">"Тохиргоо"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> таны төхөөрөмжид хандах бүрэн эрхтэй байна"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"Таны төхөөрөмжид <xliff:g id="NUM_SERVICES">%s</xliff:g> хүртээмжийн үйлчилгээ хандах бүрэн эрхтэй байна"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> таны дэлгэц, үйлдэл, оролтыг харах, үйлдэл гүйцэтгэх болон дэлгэцийг хянах боломжтой."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Эдгээр үйлчилгээ таны дэлгэц, үйлдэл, оролтыг харах, үйлдэл гүйцэтгэх болон дэлгэцийг хянах боломжтой."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Өгөгдмөл аппууд"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Өгөгдмөл аппууд алга"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Ажлын өгөгдмөл апп"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Тохируулсан апп алга"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Апп алга"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Аппын тусгай хандалт"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Аппын тусгай хандалт алга"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Апп алга"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Туслах пп"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Хөтөч апп"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Гар утасны апп"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS апп"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Яаралтай тусламжийн апп"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Үндсэн апп"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Хөгжмийн апп"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Галерейны апп"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Машины горимын утасны апп"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Дуудлагыг дахин чиглүүлэх апп"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Дуудлага шүүх апп"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Дуудлага дэмжигч апп"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Машины үнэлгээний апп"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Ажлын профайлыг дэмждэггүй"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Санамж: Хэрвээ та төхөөрөмжөө дахин эхлүүлж, дэлгэцийн түгжээ тохируулбал энэ апп таныг төхөөрөмжийнхөө түгжээг тайлах хүртэл эхлэх боломжгүй."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Туслах таны дэлгэцэд харагддаг эсвэл аппуудаас хандах боломжтой мэдээлэл зэрэг таны системд ашигладаг аппуудын талаарх мэдээллийг унших боломжтой болно."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Алдаа засах өгөгдлийг хуваалцах"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Алдаа засах дэлгэрэнгүй өгөгдлийг хуваалцах уу?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> алдаа засах мэдээллийг байршуулах хүсэлтэй байна."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Алдаа засах өгөгдлийг хуваалцах"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> энэ төхөөрөмжөөс <xliff:g id="DATE">%2$s</xliff:g>-н <xliff:g id="TIME">%3$s</xliff:g>-д авсан алдааны мэдээг байршуулах хүсэлт тавьж байна. Алдааны мэдээнд таны төхөөрөмжийн талаарх эсвэл хэрэглэгчийн нэр, байршлын өгөгдөл, төхөөрөмжийн таниулбар болон сүлжээний мэдээлэл зэрэг аппуудын бүртгэсэн хувийн мэдээллийг агуулна. Та алдааны мэдээг зөвхөн энэ мэдээллийг хуваалцахдаа итгэлтэй байгаа хүмүүс болон аппуудтай хуваалцана уу. <xliff:g id="APP_NAME_1">%4$s</xliff:g>-д алдааны мэдээг байршуулахыг зөвшөөрөх үү?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Зөвшөөрөх"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Татгалзах"</string>
</resources>
diff --git a/res/values-mr-television/strings.xml b/res/values-mr-television/strings.xml
index 5ee42af..381a00a 100644
--- a/res/values-mr-television/strings.xml
+++ b/res/values-mr-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"नकार द्या आणि पुन्हा विचारू नका"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"आपण हे नंतर सेटिंग्ज आणि अॅप्स मध्ये बदलू शकता"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"सिस्टम अॅप्स दर्शवा"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"अॅप परवानग्या"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"अॅप परवानग्या"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> परवानग्या"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"अतिरिक्त परवानग्या"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> परवानग्या"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"नकार द्या आणि पुन्हा विचारू नका"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"तुम्ही हे नंतर सेटिंग्ज आणि अॅप्स मध्ये बदलू शकता"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"सिस्टम अॅप्स दाखवा"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"अॅप परवानग्या"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"अॅप परवानग्या"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> परवानग्या"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"अतिरिक्त परवानग्या"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> परवानग्या"</string>
</resources>
diff --git a/res/values-mr-watch/strings.xml b/res/values-mr-watch/strings.xml
index 74d32df..b807623 100644
--- a/res/values-mr-watch/strings.xml
+++ b/res/values-mr-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"नकार द्या, पुन्हा विचारू नका"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"सिस्टम अॅप्स दर्शवा"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"बदलू शकत नाही"</string>
- <string name="generic_yes" msgid="3394094077553763689">"होय"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"रद्द करा"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"नकार द्या, पुन्हा विचारू नका"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"सिस्टम अॅप्स दाखवा"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"बदलू शकत नाही"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"होय"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"रद्द करा"</string>
</resources>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 005a211..20e3f94 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,286 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"पॅकेज स्थापनकर्ता"</string>
- <string name="next" msgid="3057143178373252333">"पुढील"</string>
- <string name="install" msgid="5896438203900042068">"स्थापित करा"</string>
- <string name="done" msgid="3889387558374211719">"पूर्ण झाले"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"या अॅप ला यावर अनुमती द्या:"</string>
- <string name="cancel" msgid="8360346460165114585">"रद्द करा"</string>
- <string name="unknown" msgid="4742479012767208045">"अज्ञात"</string>
- <string name="installing" msgid="8613631001631998372">"इंस्टॉल करत आहे..."</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> इन्स्टॉल करत आहे…"</string>
- <string name="install_done" msgid="3682715442154357097">"अॅप इंस्टॉल झाला."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"आपण हा अॅप्लिकेशन इंस्टॉल करू इच्छिता? यास यावर प्रवेश मिळेल:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"आपण हा अॅप्लिकेशन इंस्टॉल करू इच्छिता? यास कोणत्याही विशेष प्रवेशाची आवश्यकता नसते."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"तुम्हाला सद्य अॅप्लिकेशनवर अपडेट इंस्टॉल करायची आहे? तुम्ही तुमचा सद्य डेटा गमावणार नाही. अपडेट केलेल्या अॅप्लिकेशनला यावर अॅक्सेस मिळेल:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"तुम्ही या बिल्ट-इन अॅप्लिकेशनवर अपडेट इंस्टॉल करायची आहे? तुम्ही तुमचा सद्य डेटा गमावणार नाही. अपडेट केलेल्या अॅप्लिकेशनला यावर अॅक्सेस मिळेल:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"तुम्हाला सद्य अॅप्लिकेशनवर अपडेट इंस्टॉल करायची आहे? तुम्ही तुमचा सद्य डेटा गमावणार नाही. यासाठी कोणताही विशेष अॅक्सेस आवश्यक नसतो."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"तुम्ही या बिल्ट-इन अॅप्लिकेशनवर अपडेट इंस्टॉल करायची आहे? तुम्ही तुमचा सद्य डेटा गमावणार नाही. यासाठी कोणताही विशेष अॅक्सेस आवश्यक नसतो."</string>
- <string name="install_failed" msgid="6579998651498970899">"अॅप इंस्टॉल झाला नाही."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"पॅकेेच इंस्टॉल होण्यास अवरोधित केलेले होते."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"पॅकेजचा विद्यमान पॅकेजशी विरोध असल्याने अॅप इंस्टॉल केला नाही."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"अॅप आपल्या टॅब्लेटशी सुसंगत नसल्याने अॅप इंस्टॉल केला नाही."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"हा अॅप आपल्या टीव्हीशी सुसंगत नाही."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"अॅप आपल्या फोनशी सुसंगत नसल्याने अॅप इंस्टॉल केला नाही."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"पॅकेज अवैध असल्याचे दिसत असल्याने अॅप इंस्टॉल केले नाही."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> आपल्या टॅब्लेटवर इंस्टॉल केला जाऊ शकला नाही."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> आपल्या टीव्हीवर इंस्टॉल केले जाऊ शकले नाही."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> आपल्या फोनवर इंस्टॉल केला जाऊ शकला नाही."</string>
- <string name="launch" msgid="4826921505917605463">"उघडा"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"अज्ञात स्रोतांकडून मिळवलेल्या अॅप्सच्या स्थापनेला आपला प्रशासक अनुमती देत नाही"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"या वापरकर्त्याद्वारे अज्ञात अॅप्स इंस्टॉल केली जाऊ शकत नाहीत"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"या वापरकर्त्याला अॅप्स इंस्टॉल करण्याची परवानगी नाही"</string>
- <string name="ok" msgid="3468756155452870475">"ठीक"</string>
- <string name="settings" msgid="6743583734099755409">"सेटिंग्ज"</string>
- <string name="manage_applications" msgid="4033876279091996596">"अॅप्स व्यवस्थापित करा"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"अॅप पुनर्स्थित करायचा?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"आपण इंस्टॉल करत असलेला अॅप दुसरा अॅप पुनर्स्थित करेल.\n\nआपला सर्व मागील वापरकर्ता डेटा जतन केला जाईल."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"हा सिस्टम अॅप आहे.\n\nआपला सर्व मागील वापरकर्ता डेटा जतन केला जाईल."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"स्थानाबाहेर"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> इंस्टॉल केला जाऊ शकला नाही. काही स्थान मोकळे करा आणि पुन्हा प्रयत्न करा."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"ठीक"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"अॅप आढळला नाही"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"इंस्टॉल केलेल्या अॅप्सच्या सूचीमध्ये अॅप आढळला नाही."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"अनुमती नाही"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"हे अनइंस्टॉल करण्याची वर्तमान वापरकर्त्यास अनुमती नाही."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"एरर"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"अॅप अनइंस्टॉल करणे शक्य झाले नाही."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"अॅप अनइंस्टॉल करा"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"अपडेट अनइंस्टॉल करा"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> खालील अॅप चा भाग आहे:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"आपण हा अॅप अनइंस्टॉल करू इच्छिता?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"आपण हा अॅप "<b>"सर्व"</b>" वापरकर्त्यांसाठी अनइंस्टॉल करू इच्छिता? अॅप्लिकेशन आणि त्याचा डेटा डिव्हाइसवरील "<b>"सर्व"</b>" वापरकर्त्यांवरून काढला जाईल."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"आपण <xliff:g id="USERNAME">%1$s</xliff:g> वापरकर्त्यासाठी हा अॅप विस्थापित करु इच्छिता?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"फॅक्टरी आवृत्तीसह हा अॅप पुनर्स्थित करायचा? सर्व डेटा काढला जाईल."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"फॅक्टरी आवृत्तीसह हा अॅप पुनर्स्थित करायचा? सर्व डेटा काढला जाईल. हे कार्य प्रोफाईल असलेल्यांसह या डिव्हाइसच्या सर्व वापरकर्त्यांना प्रभावित करते."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"अनइंस्टॉल करणे चालू आहे"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"अनइंस्टॉल करणे अयशस्वी झाले"</string>
- <string name="uninstalling" msgid="5556217435895938250">"अनइंस्टॉल करत आहे…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> अनइंस्टॉल करत आहे…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"अनइंस्टॉल करणे समाप्त."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> अनइंस्टॉल केले"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"अनइंस्टॉल करणे अयशस्वी."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> अनइंस्टॉल करणे अयशस्वी झाले."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"अॅक्टिव्हेट डिव्हाइस प्रशासक अॅप अनइंस्टॉल करू शकत नाही"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"<xliff:g id="USERNAME">%1$s</xliff:g> साठी अॅक्टिव्हेट डिव्हाइस प्रशासक अॅप अनइंस्टॉल करू शकत नाही"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"हा अॅप काही वापरकर्ते किंवा प्रोफाईलसाठी आवश्यक आहे आणि इतरांसाठी अनइंस्टॉल केला होता"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"आपल्या प्रोफाईलसाठी हा अॅप आवश्यक आहे आणि अनइंस्टॉल केला जाऊ शकत नाही."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"तुमच्या डिव्हाइस प्रशासकास हे अॅप आवश्यक आहे आणि ते अनइंस्टॉल केले जाऊ शकत नाही."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"डिव्हाइस प्रशासक अॅप्स व्यवस्थापित करा"</string>
- <string name="manage_users" msgid="3125018886835668847">"वापरकर्त्यांना व्यवस्थापित करा"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> अनइंस्टॉल केला जाऊ शकला नाही."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"पॅकेज चे विश्लेषण करताना समस्या आली."</string>
- <string name="newPerms" msgid="6039428254474104210">"नवीन"</string>
- <string name="allPerms" msgid="1024385515840703981">"सर्व"</string>
- <string name="privacyPerms" msgid="1850527049572617">"गोपनीयता"</string>
- <string name="devicePerms" msgid="6733560207731294504">"डिव्हाइस अॅक्सेस"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"या अद्यतनास कोणत्याही नवीन परवानग्यांची आवश्यकता नाही."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"आपण खालील परवानग्यांना मंजूरी देऊ इच्छिता? त्यांना यावर प्रवेश मिळेल:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"नकार द्या"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"अधिक माहिती"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"तरीही नकार द्या"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ला <xliff:g id="ACTION">%2$s</xliff:g> ची अनुमती द्यायची?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> अक्षम केल्या"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"सर्व अक्षम केल्या"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"कोणत्याही अक्षम केल्या नाहीत"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"अनुमती द्या"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"अॅप्स"</string>
- <string name="app_permissions" msgid="3146758905824597178">"अॅप परवानग्या"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"पुन्हा विचारू नका"</string>
- <string name="no_permissions" msgid="3210542466245591574">"परवानग्या नाहीत"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"अतिरिक्त परवानग्या"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
- <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>
+ <string name="app_name" msgid="2792757108872430971">"परवानगी नियंत्रक"</string>
+ <string name="ok" msgid="4417794827535157922">"ओके"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"परवानग्या"</string>
+ <string name="cancel" msgid="7279939269964834974">"रद्द करा"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"अॅप आढळले नाही"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"नकार द्या"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"नकार द्या आणि पुन्हा विचारू नका"</string>
+ <!-- no translation found for grant_dialog_button_deny_background (5378693207810841555) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_deny_background_and_dont_ask_again (1032019626928637454) -->
+ <skip />
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"अधिक माहिती"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"तरीही नकार द्या"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ला <xliff:g id="ACTION">%2$s</xliff:g> ची परवानगी द्यायची का?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ला नेहमी <xliff:g id="ACTION">%2$s</xliff:g> ची परवानगी द्यायची का?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"फक्त अॅप वापरत असताना"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"नेहमी"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"नकार द्या आणि पुन्हा विचारू नका"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> बंद केल्या"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"सर्व बंद केल्या"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"कोणत्याही बंद केल्या नाहीत"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"परवानगी द्या"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"प्रत्येक वेळी अनुमती द्या"</string>
+ <!-- no translation found for grant_dialog_button_allow_foreground (8090382319222429427) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_allow_background (3190568549032350790) -->
+ <skip />
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"अॅप्स"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"अॅप परवानग्या"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"परवानगी व्यवस्थापक"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"पुन्हा विचारू नका"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"परवानग्या नाहीत"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"अतिरिक्त परवानग्या"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"अॅप माहिती उघडा"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
+ <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="old_sdk_deny_warning" msgid="3872277112584842615">"हा अॅप Android च्या जुन्या आवृत्तीसाठी डीझाइन करण्यात आला होता. परवानगी नाकारल्यामुळे तो यापुढे उद्देशाप्रमाणे कार्य करणार नाही."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"अज्ञात क्रिया करा"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"सिस्टम दर्शवा"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"सिस्टीम लपवा"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> परवानग्या"</string>
- <string name="no_apps" msgid="1965493419005012569">"कोणतेही अॅप्स नाहीत"</string>
- <string name="location_settings" msgid="1774875730854491297">"स्थान सेटिंग्ज"</string>
- <string name="location_warning" msgid="8778701356292735971">"या डिव्हाइससाठी <xliff:g id="APP_NAME">%1$s</xliff:g> स्थान सेवांचा प्रदाता आहे. स्थान प्रवेश स्थान सेटिंग्ज वरून सुधारित केला जाऊ शकतो."</string>
- <string name="system_warning" msgid="7103819124542305179">"आपण ही परवानगी नाकारल्यास, आपल्या डिव्हाइसची मुलभूत वैशिष्ट्ये अपेक्षित असल्याप्रमाणे कदाचित कार्य करू शकणार नाहीत."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"धोरणाद्वारे सक्ती केली"</string>
- <string name="loading" msgid="7811651799620593731">"लोड करत आहे..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"सर्व परवानग्या"</string>
- <string name="other_permissions" msgid="2016192512386091933">"अन्य अॅप क्षमता"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"परवानगीची विनंती"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"स्क्रीन ओव्हरले आढळले"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"हे परवानगी सेटिंग बदलण्यासाठी, तुम्हाला सेटिंग्ज > अॅप्स मधून स्क्रीन ओव्हरले बंद करावे लागेल"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"सेटिंग्ज उघडा"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"इंस्टॉल करा/अनइंस्टॉल करा क्रिया Wear वर समर्थित नाहीत."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> अपडेट केला गेला आहे. <xliff:g id="APP_NAME_1">%1$s</xliff:g> ला खालील गोष्टींमध्ये प्रवेश करण्यासाठी अनुमती द्यायची?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ला कशामध्ये प्रवेश करण्याची अनुमती द्यावी ते निवडा"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> अपडेट केला गेला आहे. या अॅपला कशामध्ये प्रवेश करण्याची अनुमती द्यावी ते निवडा."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"रद्द करा"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"सुरू ठेवा"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"नवीन परवानग्या"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"वर्तमान परवानग्या"</string>
- <string name="message_staging" msgid="6151794817691100003">"अॅप प्रारंभाच्या स्थितीत आहे..."</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"अज्ञात"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"आपल्या सुरक्षिततेसाठी, आपल्या टॅबलेटला या स्रोताकडील अज्ञात अॅप्स इंस्टॉल करण्याची अनुमती नाही."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"आपल्या सुरक्षिततेसाठी, आपल्या टीव्हीला या स्रोताकडील अज्ञात अॅप्स इंस्टॉल करण्याची अनुमती नाही."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"आपल्या सुरक्षिततेसाठी, आपल्या फोनला या स्रोताकडील अज्ञात अॅप्स इंस्टॉल करण्याची अनुमती नाही."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"तुमचा फोन आणि वैयक्तिक डेटा अज्ञात अॅप्समुळे होणार्या अटॅकमुळे अधिक असुरक्षित आहे. हा अॅप इन्स्टॉल करून, तुम्ही सहमती देता की तो वापरल्याने होणार्या तुमच्या फोनच्या कोणत्याही प्रकारच्या नुकसान किंवा डेटा हानीसाठी तुम्ही जबाबदार आहात."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"तुमचा टॅबलेट आणि वैयक्तिक डेटा अज्ञात अॅप्समुळे होणार्या अटॅकमुळे अधिक असुरक्षित आहे. हा अॅप इन्स्टॉल करून, तुम्ही सहमती देता की तो वापरल्याने होणार्या तुमच्या टॅबलेटच्या कोणत्याही प्रकारच्या नुकसान किंवा डेटा हानीसाठी तुम्ही जबाबदार आहात."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"तुमचा टीव्ही आणि वैयक्तिक डेटा अज्ञात अॅप्समुळे होणार्या अटॅकमुळे अधिक असुरक्षित आहे. हा अॅप इन्स्टॉल करून, तुम्ही सहमती देता की तो वापरल्याने होणार्या तुमच्या टीव्हीच्या कोणत्याही प्रकारच्या नुकसान किंवा डेटा हानीसाठी तुम्ही जबाबदार आहात."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"सुरू ठेवा"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"सेटिंग्ज"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"वेअर अॅप्स इन्स्टॉल/अनइन्स्टॉल करणे"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"हे अॅप Android च्या जुन्या आवृत्तीसाठी डीझाइन करण्यात आले होते. परवानगी नाकारल्यामुळे ते यापुढे अपेक्षित असल्याप्रमाणे कार्य करणार नाही."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"अज्ञात क्रिया करा"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<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="7623002570829860709">"सिस्टम दर्शवा"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"सिस्टम लपवा"</string>
+ <string name="no_apps" msgid="2377153782338039463">"कोणतेही अॅप्स नाहीत"</string>
+ <string name="location_settings" msgid="547378321761364906">"स्थान सेटिंग्ज"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> हा या डिव्हाइससाठी स्थान सेवांचा पुरवठादार आहे. स्थान अॅक्सेस स्थान सेटिंग्ज वरून सुधारित केला जाऊ शकतो."</string>
+ <string name="system_warning" msgid="6868290533389195836">"तुम्ही ही परवानगी नाकारल्यास, तुमच्या डिव्हाइसची मुलभूत वैशिष्ट्ये अपेक्षित असल्याप्रमाणे कदाचित कार्य करू शकणार नाहीत."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"धोरणामुळे सक्ती केली"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"धोरणामुळे बॅकग्राउंड अॅक्सेस बंद केला आहे"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"धोरणामुळे बॅकग्राउंड अॅक्सेस सुरू केला आहे"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"धोरणामुळे फोरग्राउंड अॅक्सेस सुरू केला आहे"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"प्रशासकाने नियंत्रित केलेले"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"प्रशासकाने बॅकग्राउंड अॅक्सेस बंद केला आहे"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"प्रशासकाने बॅकग्राउंड अॅक्सेस सुरू केला आहे"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"प्रशासकाने फोरग्राउंड अॅक्सेस सुरू केला आहे"</string>
+ <!-- no translation found for permission_summary_enabled_system_fixed (5463084832974856683) -->
+ <skip />
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <!-- no translation found for permission_access_always (5419580764084361573) -->
+ <skip />
+ <!-- no translation found for permission_access_only_foreground (2857031150724321567) -->
+ <skip />
+ <!-- no translation found for permission_access_never (425385910378172045) -->
+ <skip />
+ <string name="loading" msgid="323483393167148377">"लोड होत आहे…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"सर्व परवानग्या"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"अन्य अॅप क्षमता"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"परवानगीची विनंती"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"स्क्रीन ओव्हरले आढळले"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"हे परवानगी सेटिंग बदलण्यासाठी, तुम्हाला सेटिंग्ज > अॅप्स मधून स्क्रीन ओव्हरले बंद करावे लागेल"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"सेटिंग्ज उघडा"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"इंस्टॉल करा/अनइंस्टॉल करा क्रिया Wear वर सपोर्ट करत नाहीत."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ला काय अॅक्सेस करण्याची परवानगी द्यावी ते निवडा"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> अपडेट केले गेले आहे. या अॅपला काय अॅक्सेस करण्याची परवानगी द्यावी ते निवडा."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"रद्द करा"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"सुरू ठेवा"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"नवीन परवानग्या"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"वर्तमान परवानग्या"</string>
+ <string name="message_staging" msgid="641286607664721291">"अॅप सुरुवातीच्या स्थितीत आहे…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"अज्ञात"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"डॅशबोर्ड"</string>
+ <!-- no translation found for permission_usage_summary_foreground (3203419920107457274) -->
+ <skip />
+ <!-- no translation found for permission_usage_summary_background (5719598203265078254) -->
+ <skip />
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"कोणतीही परवानगी"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"कधीही"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"शेवटचे सात दिवस"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"गेल्या २४ तासात"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"शेवटचा एक तास"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"शेवटची १५ मिनिटे"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"अंतिम एक मिनिट"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"वापराची परवानगी नाही"</string>
+ <!-- no translation found for permission_usage_list_title_any_time (5641676869304328239) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_7_days (2972289322203714509) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_day (6298662604046093174) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_hour (7224982939487774388) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_15_minutes (49045607172810502) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_minute (7716966405942817635) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_any_time (862654449303514044) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_7_days (5393381637937213483) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_day (7202567658282481259) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_hour (4672313408976666479) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_15_minutes (1776918144361651860) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_minute (236300476767668315) -->
+ <skip />
+ <!-- no translation found for app_permission_usage_bar_label (7261634017833698654) -->
+ <!-- no translation found for permission_usage_view_details (4728049344017619500) -->
+ <skip />
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"यानुसार फिल्टर केले: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"फिल्टर काढून टाका"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"यानुसार फिल्टर करा"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"परवानग्यांनुसार फिल्टर करा"</string>
+ <!-- no translation found for filter_by_time (1763143592970195407) -->
+ <skip />
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"सर्वाधिक परवानग्या"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"सर्वाधिक अॅक्सेस"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"नुकतेच"</string>
+ <!-- no translation found for sort_by_app (1912228966803416485) -->
+ <skip />
+ <!-- no translation found for sort_by_time (8280378662234104410) -->
+ <skip />
+ <!-- no translation found for item_separator (8266062815210378175) -->
+ <skip />
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"रिफ्रेश करा"</string>
+ <!-- no translation found for permission_usage_permission_filter_subtitle (5539392196389332769) -->
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"अॅप परवानग्यांचा वापर"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"अॅक्सेस करा: <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="4040424337831328212">"अॅक्सेस करा: <xliff:g id="NUM">%1$s</xliff:g> वेळा. <xliff:g id="TIME">%2$s</xliff:g> पूर्वी शेवटचे वापरले."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"अनुमती द्या"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"सर्व वेळी अनुमती द्या"</string>
+ <!-- no translation found for app_permission_button_allow_foreground (2303741829613210541) -->
+ <skip />
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"नकार द्या"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> परवानगी"</string>
+ <!-- no translation found for app_permission_header (228974007660007656) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_usage_summary (1034436308858219976) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_no_usages (4444374134047275841) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_app_permissions_link (8033278634020892918) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_permission_apps_link (8759141212929298774) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_generic (5479202003136667039) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_activity_recognition (2022880340017289990) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_calendar (2846128908236787586) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_call_log (2429916962093948340) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_camera (6699611334403400091) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_contacts (5169995707720233126) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_location (687820658574645201) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_aural (2102206495149326019) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_visual (3105938942794669520) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_microphone (2300290217308759293) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_phone (3773977614654088578) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sensors (6733606479604624853) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sms (8850213022386508528) -->
+ <skip />
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"शेवटचा अॅक्सेस: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"कधीही अॅक्सेस केलेले नाही"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"अनुमती असलेले"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"फक्त वापरत असताना अनुमती आहे"</string>
+ <string name="denied_header" msgid="2277998574238617699">"नाकारलेली"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"तपशीलवार वापर पाहा"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <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="seconds" formatted="false" msgid="1632909606956324957">
+ <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_reminders" msgid="8040710767178843151">"परवानगी रिमाइंडर"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> तुमचे स्थान वापरत आहे"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"हे अॅप नेहमी तुमचे स्थान अॅक्सेस करू शकते. बदलण्यासाठी टॅप करा."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"फक्त अॅप वापरत असताना"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"कोणत्याही परवानगीची अनुमती नाही"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"कोणत्याही परवानग्या नाकारल्या नाहीत"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"कोणत्याही अॅप्सला अनुमती नाही"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"कोणतीही अॅप्स नाकारली नाहीत"</string>
+ <string name="settings" msgid="2884124136779508907">"सेटिंग्ज"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ला तुमच्या डिव्हाइसचा पुर्ण अॅक्सेस आहे"</string>
+ <!-- no translation found for accessibility_service_dialog_title_multiple (8129325613496173909) -->
+ <skip />
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> तुमची स्क्रीन, क्रिया आणि इनपुट, करत असलेल्या क्रिया पाहू शकेल आणि डिस्प्ले नियंत्रित करू शकेल."</string>
+ <!-- no translation found for accessibility_service_dialog_bottom_text_multiple (1387803460488775887) -->
+ <skip />
+ <!-- no translation found for request_role_title (3611734134669430568) -->
+ <skip />
+ <!-- no translation found for request_role_current_default (7512045433655289638) -->
+ <skip />
+ <!-- no translation found for request_role_set_as_default (5706081295230541240) -->
+ <skip />
+ <!-- no translation found for default_app_search_keyword (6938709626391437391) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_ok (3007005536659549573) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_open_settings (3368892579319881043) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_title (7173961211414061803) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_separator (9008030412869423988) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_last_separator (7455459775266515801) -->
+ <skip />
+ <string name="default_apps" msgid="8554530939151957828">"डीफॉल्ट अॅप्स"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"कोणतीही डीफॉल्ट अॅप्स नाहीत"</string>
+ <!-- no translation found for default_apps_manage_domain_urls (3146379064445013719) -->
+ <skip />
+ <string name="default_apps_for_work" msgid="8582151955372061208">"कार्यासाठी डीफॉल्ट"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"काहीही नाही"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"अॅप्स नाहीत"</string>
+ <!-- no translation found for special_app_access_search_keyword (462008045110320714) -->
+ <skip />
+ <string name="special_app_access" msgid="2561673957499408877">"विशेष अॅप अॅक्सेस"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"कोणताही विशेष अॅप अॅक्सेस नाही"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"कोणतीही अॅप्स नाहीत"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"साहाय्य अॅप"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"ब्राउझर अॅप"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"फोन अॅप"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"एसएमएस अॅप"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"आणीबाणी अॅप"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"होम अॅप"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"म्युझिक अॅप"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"गॅलरी अॅप"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"कार मोड फोन अॅप"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"कॉल रीडिरेक्ट करणारे अॅप"</string>
+ <!-- no translation found for role_label_call_screening (1089966334646538858) -->
+ <skip />
+ <string name="role_label_call_companion" msgid="7369723859682076467">"सहयोगी अॅपला कॉल करा"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"कार्य प्रोफाइलला सपोर्ट नाही"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"टीप: तुम्ही तुमचे डिव्हाइस रीस्टार्ट केल्यास आणि स्क्रीन लॉक सेट केले असल्यास, तुम्ही तुमचे डिव्हाइस अनलॉक करेपर्यंत हे अॅप सुरू होऊ शकत नाही."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"तुमच्या स्क्रीनवर दृश्यमान असलेल्या माहितीच्या किंवा अॅप्समध्ये अॅक्सेस करता येणाऱ्या माहितीच्या समावेशासह असिस्टंट तुमच्या सिस्टिममध्ये वापरल्या जाणाऱ्या अॅप्सबद्दलची माहिती वाचू शकेल."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"डीबगिंग डेटा शेअर करा"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"तपशीलवार डीबगिंग डेटा शेअर करायचा?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> ला डीबगिंग माहिती अपलोड करायला आवडेल."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"डीबगिंग डेटा शेअर करा"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> <xliff:g id="DATE">%2$s</xliff:g> रोजी <xliff:g id="TIME">%3$s</xliff:g> वाजता घेतलेल्या या डिव्हाइसमधून बग रिपोर्ट अपलोड करण्याची विनंती करत आहे. बग रिपोर्टमध्ये तुमच्या डिव्हाइसविषयीच्या किंवा अॅप्सने लॉग केलेल्या वैयक्तिक माहितीचा समावेश अहे, उदाहरणार्थ वापरकर्ता नावे, स्थान डेटा, डिव्हाइस आयडेंटिफायर आणि नेटवर्क माहिती. या माहितीसह फक्त तुम्हाला विश्वास असलेल्या लोकांसह आणि अॅप्ससह बग रिपोर्ट शेअर करा. <xliff:g id="APP_NAME_1">%4$s</xliff:g> ला बग रिपोर्ट अपलोड करण्याची अनुमती द्यायची?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"अनुमती द्या"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"नकार द्या"</string>
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_title (5699953608028268176) -->
+ <skip />
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_content (6960592986228883592) -->
+ <skip />
+ <!-- no translation found for dismiss_with_acknowledgment (2879819713128822468) -->
+ <skip />
</resources>
diff --git a/res/values-ms-television/strings.xml b/res/values-ms-television/strings.xml
index 989aba7..a6bf114 100644
--- a/res/values-ms-television/strings.xml
+++ b/res/values-ms-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Tolak dan jangan tanya lagi"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Anda boleh menukar ini nanti dalam Tetapan > Apl"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Tunjukkan apl sistem"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Kebenaran apl"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Kebenaran apl"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Kebenaran <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Kebenaran tambahan"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Kebenaran <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Tolak dan jangan tanya lagi"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Anda boleh menukar tetapan ini kemudian dalam Tetapan > Apl"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Tunjukkan apl sistem"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Kebenaran apl"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Kebenaran apl"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Kebenaran <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Kebenaran tambahan"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Kebenaran <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-ms-watch/strings.xml b/res/values-ms-watch/strings.xml
index dad185f..d19ef0f 100644
--- a/res/values-ms-watch/strings.xml
+++ b/res/values-ms-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Tolak, jangan tanya lagi"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Tunjukkan apl sistem"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Tidak dpt diubah"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Ya"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Batal"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Tolak, jangan tanya lagi"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Tunjukkan apl sistem"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Tidak dpt diubah"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Ya"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Batal"</string>
</resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index fa07c59..0c16cf9 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,215 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Pemasang pakej"</string>
- <string name="next" msgid="3057143178373252333">"Seterusnya"</string>
- <string name="install" msgid="5896438203900042068">"Pasang"</string>
- <string name="done" msgid="3889387558374211719">"Selesai"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Benarkan aplikasi ini untuk:"</string>
- <string name="cancel" msgid="8360346460165114585">"Batal"</string>
- <string name="unknown" msgid="4742479012767208045">"Tidak diketahui"</string>
- <string name="installing" msgid="8613631001631998372">"Memasang..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Memasang <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Aplikasi dipasang."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Adakah anda mahu memasang aplikasi ini? Aplikasi ini akan mendapat akses kepada:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Adakah anda mahu memasang aplikasi ini? Aplikasi ini tidak memerlukan sebarang akses khas."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Adakah anda mahu memasang kemas kini kepada aplikasi sedia ada ini? Data sedia ada anda tidak akan hilang. Aplikasi yang dikemaskinikan akan mendapat akses kepada:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Adakah anda ingin memasang kemas kini kepada aplikasi terbina dalam ini? Data sedia ada anda tidak akan hilang. Aplikasi yang dikemaskinikan akan mendapat akses kepada:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Adakah anda mahu memasang kemas kini untuk aplikasi sedia ada ini? Data sedia ada anda tidak akan hilang. Hal ini tidak memerlukan sebarang akses khas."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Adakah anda mahu memasang kemas kini untuk aplikasi terbina dalam ini? Data sedia ada anda tidak akan hilang. Hal ini tidak memerlukan sebarang akses khas."</string>
- <string name="install_failed" msgid="6579998651498970899">"Aplikasi tidak dipasang."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Pakej ini telah disekat daripada dipasang."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Apl tidak dipasang kerana pakej bercanggah dengan pakej yang sedia ada."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Apl tidak dipasang kerana apl tidak serasi dengan tablet anda."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Apl ini tidak serasi dengan TV anda."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Apl tidak dipasang kerana apl tidak serasi dengan telefon anda."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Apl tidak dipasang kerana pakej tidak sah."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak dapat dipasangkan pada tablet anda."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak boleh dipasang pada TV anda."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak dapat dipasangkan pada telefon anda."</string>
- <string name="launch" msgid="4826921505917605463">"Buka"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Pentadbir anda tidak membenarkan pemasangan apl yang diperoleh daripada sumber yang tidak diketahui"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Apl yang tidak diketahui tidak boleh dipasang oleh pengguna ini"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Pengguna ini tidak dibenarkan memasang apl"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Tetapan"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Urus aplikasi"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Ganti aplikasi?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Aplikasi yang sedang anda pasang akan menggantikan aplikasi lain.\n\nSemua data pengguna anda sebelum ini akan disimpan ."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Ini satu aplikasi sistem. \n \n Semua data pengguna anda sebelumnya akan disimpan."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Kehabisan ruang"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak dapat dipasang. Kosongkan sebahagian ruang dan cuba lagi."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Aplikasi tidak ditemui"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Aplikasi tidak ditemui dalam senarai aplikasi yang dipasang."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Tidak dibenarkan"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Pengguna semasa tidak dibenarkan untuk melaksanakan penyahpasangan ini."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Ralat"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Apl tidak dapat dinyapasang."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Nyahpasang aplikasi"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Nyahpasang kemas kini"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> merupakan sebahagian daripada aplikasi berikut:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Adakah anda mahu menyahpasang aplikasi ini?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Adakah anda mahu menyahpasang apl ini untuk "<b>"semua"</b>" pengguna? Aplikasi dan datanya akan dialih keluar daripada "<b>"semua"</b>" pengguna pada peranti."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Adakah anda ingin menyahpasang apl ini untuk pengguna <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Gantikan apl ini dengan versi kilang? Semua data akan dialih keluar."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Gantikan apl ini dengan versi kilang? Semua data akan dialih keluar. Tindakan ini melibatkan semua pengguna peranti ini, termasuk mereka yang mempunyai profil kerja."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Penyahpasangan yang sedang berjalan"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Penyahpasangan yang gagal"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Menyahpasang..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Menyahpasang <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Nyahpasang selesai."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> dinyahpasang"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Nyahpasang tidak berjaya."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Tidak berjaya menyahpasang <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Tidak dapat menyahpasang apl pentadbir peranti yang aktif"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Tidak dapat menyahpasang apl pentadbir peranti yang aktif untuk <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Apl ini diperlukan untuk sesetengah pengguna atau profil dan telah dinyahpasang untuk yang lain"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Apl ini diperlukan untuk profil anda dan tidak boleh dinyahpasang."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Apl ini diperlukan oleh pentadbir peranti anda dan tidak boleh dinyahpasang."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Urus apl pentadbir peranti"</string>
- <string name="manage_users" msgid="3125018886835668847">"Urus pengguna"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak dapat dinyahpasang."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Terdapat masalah menghuraikan pakej."</string>
- <string name="newPerms" msgid="6039428254474104210">"Baharu"</string>
- <string name="allPerms" msgid="1024385515840703981">"Semua"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privasi"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Akses Peranti"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Kemas kini ini tidak memerlukan kebenaran baharu."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Adakah anda ingin memberikan kebenaran berikut? Apl akan mendapat akses ke:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Tolak"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Maklumat lanjut"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Tolak juga"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Benarkan <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> dilumpuhkan"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"semua dilumpuhkan"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"tiada apa-apa yang dilumpuhkan"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Benarkan"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Apl"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Kebenaran apl"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Jangan tanya lagi"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Tiada kebenaran"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Kebenaran tambahan"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Pengawal kebenaran"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"kebenaran"</string>
+ <string name="cancel" msgid="7279939269964834974">"Batal"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Apl tidak ditemui"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Tolak"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Tolak & jangan tanya lagi"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Lagi maklumat"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Tolak juga"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Benarkan <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Sentiasa benarkan <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Hanya semasa menggunakan apl"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Sentiasa"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Tolak dan jangan tanya lagi"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> dilumpuhkan"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"semua dilumpuhkan"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"tiada apa-apa yang dilumpuhkan"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Benarkan"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Benarkan sepanjang masa"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Benarkan hanya semasa apl sedang digunakan"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Apl"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Kebenaran apl"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Pengurus kebenaran"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Jangan tanya lagi"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Tiada kebenaran"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Kebenaran tambahan"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Buka maklumat apl"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> lagi</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> lagi</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Apl ini direka bentuk untuk versi Android yang lebih lama. Tindakan menafikan kebenaran boleh menyebabkannya tidak berfungsi seperti yang dimaksudkan lagi."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"laksanakan tindakan yang tidak diketahui"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_0">%1$d</xliff:g> daripada <xliff:g id="COUNT_1">%2$d</xliff:g> apl dibenarkan"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Tunjukkan sistem"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Sembunyikan sistem"</string>
- <string name="permission_title" msgid="6495415273398916381">"Kebenaran <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Tiada apl"</string>
- <string name="location_settings" msgid="1774875730854491297">"Tetapan Lokasi"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Jika anda tolak kebenaran ini, ciri asas peranti anda mungkin tidak berfungsi seperti yang dimaksudkan lagi."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Dikuatkuasakan oleh dasar"</string>
- <string name="loading" msgid="7811651799620593731">"Memuatkan…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Semua kebenaran"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Keupayaan apl yang lain"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Permintaan kebenaran"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Tindanan skrin dikesan"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Untuk menukar tetapan kebenaran ini, anda perlu mematikan tindanan skrin daripada Tetapan > Apl terlebih dahulu"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Buka tetapan"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Tindakan pasang/nyahpasang tidak disokong pada Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> telah dikemas kini. Benarkan <xliff:g id="APP_NAME_1">%1$s</xliff:g> mengakses perkara berikut?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Pilih perkara yang boleh diakses oleh <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> telah dikemas kini. Pilih perkara yang boleh diakses oleh apl ini."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Batal"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Teruskan"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Kebenaran baharu"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Kebenaran semasa"</string>
- <string name="message_staging" msgid="6151794817691100003">"Pemeringkatan apl…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Tidak diketahui"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Untuk keselamatan, tablet anda tidak dibenarkan memasang apl yang tidak diketahui daripada sumber ini."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Untuk keselamatan, TV anda tidak dibenarkan memasang apl yang tidak diketahui daripada sumber ini."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Untuk keselamatan, telefon anda tidak dibenarkan memasang apl yang tidak diketahui daripada sumber ini."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Telefon dan data peribadi anda lebih mudah diserang oleh apl yang tidak diketahui. Dengan memasang apl ini, anda bersetuju bahawa anda bertanggungjawab atas sebarang kerosakan pada telefon anda atau kehilangan data yang mungkin disebabkan oleh penggunaan apl tersebut."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Tablet dan data peribadi anda lebih mudah diserang oleh apl yang tidak diketahui. Dengan memasang apl ini, anda bersetuju bahawa anda bertanggungjawab atas sebarang kerosakan pada tablet anda atau kehilangan data yang mungkin disebabkan oleh penggunaan apl tersebut."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"TV dan data peribadi anda lebih mudah diserang oleh apl yang tidak diketahui. Dengan memasang apl ini, anda bersetuju bahawa anda bertanggungjawab atas sebarang kerosakan pada TV anda atau kehilangan data yang mungkin disebabkan oleh penggunaan apl tersebut."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Teruskan"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Tetapan"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Memasang/menyahpasang apl wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Apl ini direka bentuk untuk versi Android yang lebih lama. Tindakan menolak kebenaran boleh menyebabkan apl tidak lagi berfungsi seperti yang dimaksudkan."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"laksanakan tindakan yang tidak diketahui"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> daripada <xliff:g id="COUNT_1">%2$d</xliff:g> apl dibenarkan"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Penggunaan terbaharu"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Lihat Papan Pemuka Kebenaran"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Tunjukkan sistem"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Sembunyikan sistem"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Tiada apl"</string>
+ <string name="location_settings" msgid="547378321761364906">"Tetapan Lokasi"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Jika anda tolak kebenaran ini, ciri asas peranti anda mungkin tidak lagi berfungsi seperti yang dimaksudkan."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Dikuatkuasakan oleh dasar"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Akses latar belakang dilumpuhkan oleh dasar"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Akses latar belakang didayakan oleh dasar"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Akses latar depan didayakan oleh dasar"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Dikawal oleh pentadbir"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Akses latar belakang dilumpuhkan oleh pentadbir"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Akses latar belakang didayakan oleh pentadbir"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Akses latar depan didayakan oleh pentadbir"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Kebenaran ditetapkan oleh sistem"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Sentiasa"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Hanya semasa menggunakan apl"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Jangan"</string>
+ <string name="loading" msgid="323483393167148377">"Memuatkan…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Semua kebenaran"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Keupayaan apl lain"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Permintaan kebenaran"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Tindanan skrin dikesan"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Untuk menukar tetapan kebenaran ini, anda perlu mematikan tindanan skrin daripada Tetapan > Apl dahulu"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Buka tetapan"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Tindakan pasang/nyahpasang tidak disokong pada Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Pilih perkara yang boleh diakses oleh <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> telah dikemas kini. Pilih perkara yang boleh diakses oleh apl ini."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Batal"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Teruskan"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Kebenaran baharu"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Kebenaran semasa"</string>
+ <string name="message_staging" msgid="641286607664721291">"Pemeringkatan apl…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Tidak diketahui"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Papan Pemuka"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Akses terakhir: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> akses (<xliff:g id="NUM_5">%3$s</xliff:g> di latar belakang)</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 (<xliff:g id="NUM_2">%3$s</xliff:g> di latar belakang)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Akses terakhir: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> akses\nTempoh: <xliff:g id="TIME_5">%3$s</xliff:g></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\nTempoh: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Akses terakhir: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> akses (<xliff:g id="NUM_6">%3$s</xliff:g> di latar belakang)\nTempoh: <xliff:g id="TIME_7">%3$s</xliff:g></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 (<xliff:g id="NUM_2">%3$s</xliff:g> di latar belakang)\nTempoh: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Sebarang kebenaran"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Pada bila-bila masa"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"7 hari yang lalu"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"24 jam yang lalu"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Sejam yang lalu"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"15 minit yang lalu"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"1 minit terakhir"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Tiada penggunaan kebenaran"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Akses pada bila-bila masa"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Akses dalam 7 hari terakhir"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Akses dalam 24 jam terakhir"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Akses dalam jam terakhir"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Akses dalam 15 minit terakhir"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Akses dalam 1 minit terakhir"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Penggunaan kebenaran terbanyak pada bila-bila masa"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Penggunaan kebenaran terbanyak dlm 7 hari terakhir"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Penggunaan kebenaran terbanyak dlm 24 jam terakhir"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Penggunaan kebenaran terbanyak dlm 1 jam terakhir"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Penggunaan kebenaran terbanyak dlm 15 min terakhir"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Penggunaan kebenaran terbanyak dlm 1 min terakhir"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Apl"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Ditapis mengikut: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Alih keluar penapis"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Tapis mengikut"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Tapis mengikut kebenaran"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Paling banyak kebenaran"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Paling banyak akses"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Terbaharu"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Muat smula"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Penggunaan kebenaran apl"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Akses: <xliff:g id="NUM">%1$s</xliff:g> kali. Terakhir digunakan <xliff:g id="TIME">%2$s</xliff:g> yang lalu."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Benarkan"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Benarkan sepanjang masa"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Benarkan hanya semasa apl sedang digunakan"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Tolak"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Kebenaran <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Akses <xliff:g id="PERM">%1$s</xliff:g> untuk <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> mengakses <xliff:g id="PERM">%2$s</xliff:g> anda <xliff:g id="TIME">%3$s</xliff:g> yang lalu."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> belum mengakses <xliff:g id="PERM">%2$s</xliff:g> anda."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Lihat penggunaan kebenaran terperinci"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Akses terakhir: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Tidak pernah mengakses"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Dibenarkan"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Dibenarkan hanya semasa dalam penggunaan"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Ditolak"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Lihat penggunaan terperinci"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> hari</item>
+ <item quantity="one">1 hari</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> jam</item>
+ <item quantity="one">1 jam</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minit</item>
+ <item quantity="one">1 minit</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> saat</item>
+ <item quantity="one">1 saat</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Gunakan <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> sebagai <xliff:g id="ROLE_NAME">%2$s</xliff:g> anda?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Gunakan <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> dan bukannya <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> sebagai <xliff:g id="ROLE_NAME">%2$s</xliff:g> anda?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Peringatan kebenaran"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> telah menggunakan lokasi anda"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Apl ini boleh mengakses lokasi anda pada setiap masa. Ketik untuk menukar."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Hanya semasa apl sedang digunakan"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Tiada kebenaran dibenarkan"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Tiada kebenaran ditolak"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Tiada apl dibenarkan"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Tiada apl ditolak"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Buka"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Nyahpasang"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Henti paksa"</string>
+ <!-- no translation found for settings (2884124136779508907) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_title_single (1613456964930225277) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_title_multiple (1262608280562255761) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_bottom_text_single (6932810943462703517) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_bottom_text_multiple (817809209968536329) -->
+ <skip />
+ <string name="default_apps" msgid="8554530939151957828">"Apl lalai"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Tiada apl lalai"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Lalai untuk kerja"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Tiada"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Tiada apl"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Akses apl khas"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Tiada akses apl khas"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Tiada apl"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Apl Bantu"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Apl penyemak imbas"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Apl Telefon"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Apl SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Apl kecemasan"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Apl skrin utama"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Apl Muzik"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Apl Galeri"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Apl telefon mod kereta"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Apl pengubahhalaan panggilan"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Apl penyaringan panggilan"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Apl rakan panggilan"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Apl Unjuran Kereta"</string>
+ <!-- no translation found for home_missing_work_profile_support (1439466272746259937) -->
+ <skip />
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Nota: Jika anda memulakan semula peranti dan telah menetapkan kunci skrin, apl ini tidak boleh dimulakan sehingga anda membuka kunci peranti anda."</string>
+ <!-- no translation found for assistant_confirmation_message (4529925223796676824) -->
+ <skip />
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Kongsi Data Penyahpepijatan"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Kongsi data penyahpepijatan secara terperinci?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> mahu memuat naik maklumat penyahpepijatan."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Kongsi Data Penyahpepijatan"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> mahu memuat naik laporan pepijat daripada peranti ini yang diambil pada <xliff:g id="DATE">%2$s</xliff:g> pada <xliff:g id="TIME">%3$s</xliff:g>. Laporan pepijat termasuk maklumat peribadi tentang peranti anda atau yang dilog oleh apl, contohnya, nama pengguna, data lokasi, pengecam peranti dan maklumat rangkaian. Kongsi laporan pepijat dengan orang dan apl yang anda percayai sahaja berhubung maklumat ini. Benarkan <xliff:g id="APP_NAME_1">%4$s</xliff:g> memuat naik laporan pepijat?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Benarkan"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Tolak"</string>
</resources>
diff --git a/res/values-my-television/strings.xml b/res/values-my-television/strings.xml
index b802f59..8793928 100644
--- a/res/values-my-television/strings.xml
+++ b/res/values-my-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"ငြင်းဆိုပြီး ထပ်မံ မမေးပါနှင့်"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"နောင်တွင် ဤသည်အား ဆက်တင်များ > အက်ပ်များတွင် ပြင်နိုင်၏"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"စနစ်အပ်ဖ်များ ပြသရန်"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"အက်ပ်ခွင့်ပြုချက်များ"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"အက်ပ်ခွင့်ပြုချက်များ"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> ခွင့်ပြုချက်များ"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"အပိုဆောင်း ခွင့်ပြုချက်များ"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> ခွင့်ပြုချက်များ"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"ငြင်းပယ်သည်၊ ထပ်မံ မမေးပါနှင့်"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"နောင်တွင် ၎င်းကို ဆက်တင်များ > အက်ပ်များတွင် ပြောင်းနိုင်ပါသည်"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"စနစ်အက်ပ်များ ပြသရန်"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"အက်ပ်ခွင့်ပြုချက်များ"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"အက်ပ်ခွင့်ပြုချက်များ"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> ခွင့်ပြုချက်များ"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"ထပ်ဆောင်း ခွင့်ပြုချက်များ"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> ခွင့်ပြုချက်များ"</string>
</resources>
diff --git a/res/values-my-watch/strings.xml b/res/values-my-watch/strings.xml
index 21283c0..f44cdb7 100644
--- a/res/values-my-watch/strings.xml
+++ b/res/values-my-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"ငြင်းပယ်သည်၊ ထပ်မမေးပါနှင့်"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"စနစ်အပ်ဖ်များ ပြသရန်"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ပြောင်းလဲ မရနိုင်ပါ"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Yes"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"မလုပ်တော့"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"ငြင်းပယ်သည်၊ ထပ်မမေးပါနှင့်"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"စနစ်အက်ပ်များ ပြသရန်"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"ပြောင်းလဲ မရနိုင်ပါ"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Yes"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"မလုပ်တော့"</string>
</resources>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index e3ea31b..11c74e5 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Package ထည့်သွင်းခြင်း"</string>
- <string name="next" msgid="3057143178373252333">"ရှေ့သို့"</string>
- <string name="install" msgid="5896438203900042068">"ထည့်သွင်းပါ"</string>
- <string name="done" msgid="3889387558374211719">"ပြီးပါပြီ"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"ဒီအပလီကေးရှင်းကို ခွင့်ပြုရမှာကတော့:"</string>
- <string name="cancel" msgid="8360346460165114585">"မလုပ်တော့"</string>
- <string name="unknown" msgid="4742479012767208045">"အကြောင်းအရာ မသိရှိ"</string>
- <string name="installing" msgid="8613631001631998372">"ထည့်သွင်းနေပါသည်"</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ကို ထည့်သွင်းနေသည်…"</string>
- <string name="install_done" msgid="3682715442154357097">"အက်ပ်ထည့်သွင်းပြီး"</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"ဤအပလီကေးရှင်းကို ထည့်သွင်းပါမလား။ ဤအပလီကေးရှင်း သုံးစွဲခွင့်ရှိမှာ ကတော့:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"ဤအပလီကေးရှင်းကို ထည့်သွင်းပါမလား။ အထူးတလည် သုံးခွင့် မလိုအပ်ပါ"</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"လက်ရှိ ရှိပြီးသား အပလီကေးရှင်းကို အပ်ဒိတ်လုပ်လိုပါသလား။ ရှိပြီးသား အချက်အလက်များကို ဆုံးရှုံးမည် မဟုတ်ပါ။ အပ်ဒိတ်လုပ်လိုက်သော အပလီကေးရှင်းသုံးစွဲခွင့်ရှိမှာ များကတော့-"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"အဆင့်သင့် ပါလာသော အပလီကေးရှင်းကို အပ်ဒိတ်လုပ်လိုပါသလား။ ရှိပြီးသား အချက်အလက်များကို ဆုံးရှုံးမည် မဟုတ်ပါ။ အပ်ဒိတ်လုပ်လိုက်သော အပလီကေးရှင်း သုံးစွဲခွင့်ရှိမှာ များကတော့ -"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"လက်ရှိ ရှိပြီးသား အပလီကေးရှင်းကို အပ်ဒိတ်လုပ်လိုပါသလား။ ရှိပြီးသား အချက်အလက်များကို ဆုံးရှုံးမည် မဟုတ်ပါ။ အထူးတလည် သုံးခွင့် မလိုအပ်ပါ"</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"အဆင့်သင့် ပါလာသော အပလီကေးရှင်းကို အပ်ဒိတ်လုပ်လိုပါသလား။ ရှိပြီးသား အချက်အလက်များကို ဆုံးရှုံးမည် မဟုတ်ပါ။ အထူးတလည် သုံးခွင့် မလိုအပ်ပါ"</string>
- <string name="install_failed" msgid="6579998651498970899">"အက်ပ်မထည့်သွင်းရသေးပါ"</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"ပက်ကေ့ထည့်သွင်းခြင်းကို ပိတ်ဆို့ထားသည်။"</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"ပက်ကေ့ဂျ်အဖြစ် ထည့်သွင်းမထားသော အက်ပ်သည် လက်ရှိပက်ကေ့ဂျ်နှင့် တိုက်နေသည်။"</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"အက်ပ်အဖြစ် ထည့်သွင်းမထားသော အက်ပ်သည် သင့်တက်ဘလက်နှင့် ကိုက်ညီမှုမရှိပါ။"</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"ဤ အက်ပ်သည် သင့်တီဗွီနှင့် တွဲဖက်သုံးမရပါ။"</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"အက်ပ်အဖြစ် ထည့်သွင်းမထားသော အက်ပ်သည် သင့်ဖုန်းနှင့် ကိုက်ညီမှုမရှိပါ။"</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"ပက်ကေ့ဂျ်အဖြစ် ထည့်သွင်းမထားသော အက်ပ်သည် မှန်ကန်မှုမရှိပုံပေါ်သည်။"</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> ကို သင့်တက်ဘလက်တွင် ထည့်သွင်းလို့ မရနိုင်ပါ"</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"သင့်တီဗွီတွင် <xliff:g id="APP_NAME">%1$s</xliff:g> အား မတပ်ဆင်နိုင်ပါ။"</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> ကို သင့်ဖုန်းတွင် ထည့်သွင်းလို့ မရနိုင်ပါ"</string>
- <string name="launch" msgid="4826921505917605463">"ဖွင့်သည်"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"သင်၏ စီမံခန့်ခွဲသူက ရင်းမြစ်မသိသော အက်ပ်များကို ထည့်သွင်းခွင့်မပြုပါ"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"အရင်းအမြစ်မသိသော အက်ပ်များကို ဤအသုံးပြုသူက ထည့်သွင်းခွင့်မရှိပါ"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"ဤအသုံးပြုသူသည် အက်ပ်များကို ထည့်သွင်းခွင့်မရှိပါ"</string>
- <string name="ok" msgid="3468756155452870475">"အိုကေ"</string>
- <string name="settings" msgid="6743583734099755409">"အပြင်အဆင်များ"</string>
- <string name="manage_applications" msgid="4033876279091996596">"အပလီကေးရှင်းများအား ထိန်းသိမ်းခြင်း"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"အပလီကေးရှင်းအား အစားထိုးမညိလား?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"သင် ထည့်သွင်းနေသော အပလီကေးရှင်းမှာ တခြား အပလီကေးရှင်းတစ်ခုအား အစားထိုးပါမည်။.\n\n ယခင်သိမ်းဆည်းထားသော အချက်အလက်များ ကို သိမ်းဆည်းပေးပါမည်။"</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"ဒီဟာသည် စနစ်၏အက်ပ်ဖြစ်ပါသည်။ \n\nယခင် သုံးစွဲသူအချက်အလက်များ ကို သိမ်းဆည်းပေးပါမည်။"</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"နေရာလွတ်မရှိပါ"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> ကို ထည့်သွင်းလို့ မရနိုင်ပါ။ နေရာအပိုရအောင် ရှင်းလင်းပြီး ပြန်ကြိုးစားပါ"</string>
- <string name="dlg_ok" msgid="6944357727705699232">"အိုကေ"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"အက်ပ်အားမတွေ့ပါ"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"ထည့်သွင်းထားသော အပလီကေးရှင်းထဲတွင် ဤအပလီကေးရှင်း မတွေ့ရှိပါ"</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"ခွင့်ပြုမထားပါ"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"ဤဖယ်ရှားမှုပြုလုပ်ရန် လက်ရှိအသုံးပြုသူအား ခွင့်ပြုမထားပါ။"</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"အမှားအယွင်း"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"အက်ပ်ကို ဖယ်ရှား၍မရနိုင်ပါ။"</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"အပလီကေးရှင်းကို ဖယ်ရှားပါ"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"အပ်ဒိတ်လုပ်ထားခြင်းကို ပြန်ထုတ်ပါ"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> ကတော့ အောက်ပါ အက်ပ်၏အစိတ်အပိုင်း တစ်ခု ဖြစ်ပါသည်:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"ဤအပလီကေးရှင်းကို သင်ဖယ်ရှားချင်ပါသလား"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"ဤအပလီကေးရှင်းကို အသုံးပြုသူ"<b>" အားလုံး"</b>" အတွက် ဖယ်ရှားချင်ပါသလား? ဤအပလီကေးရှင်း နှင့် သက်ဆိုင်ရာ အချက်အလက်များ အားလုံးကို "<b>" မှ အားလုံးသော "</b>" စက်အသုံးပြုသူတွေအတွက် ဖယ်ရှားပစ်ပါလိမ့်မည်"</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"သင်သည် အသုံးပြုသူ <xliff:g id="USERNAME">%1$s</xliff:g> အတွက် ဒီအကောင့်ကို ဖြုတ်ပစ်လိုပါသလား?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"ဤအက်ပ်ကို စက်ရုံထုတ်ဗားရှင်းဖြင့် အစားထိုးမလား။ ဒေတာများအားလုံးကို ဖယ်ရှားလိုက်ပါမည်။"</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"ဤအက်ပ်ကို စက်ရုံထုတ်ဗားရှင်းဖြင့် အစားထိုးမလား။ ဒေတာများအားလုံးကို ဖယ်ရှားလိုက်ပါမည်။ ၎င်းသည် အလုပ်ပရိုဖိုင်ဖြင့်သုံးသူများအပါအဝင် အသုံးပြုသူများအားလုံးကို အကျိုးသက်ရောက်စေပါလိမ့်မည်။"</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"ပရိုဂရမ်ကို ဖယ်ရှားနေပါသည်"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"ပရိုဂရမ်ကို ဖယ်ရှားခြင်းမအောင်မြင်ပါ"</string>
- <string name="uninstalling" msgid="5556217435895938250">"ဖယ်ထုတ်သည်"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ကို ဖယ်ရှားနေပါသည်…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"ဖယ်ရှားခြင်း ပြီးပါပြီ"</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ကို ဖယ်ရှားလိုက်ပါပြီ"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"ဖယ်ရှားမှု မအောင်မြင်ပါ"</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ကို ဖယ်ရှားခြင်း မအောင်မြင်ပါ။"</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"ဖွင့်ထားသော စက်ပစ္စည်းကို စီမံခန့်ခွဲရန်အက်ပ်အား ဖယ်ရှား၍မရပါ"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"<xliff:g id="USERNAME">%1$s</xliff:g> အတွက် ဖွင့်ထားသော စက်ပစ္စည်းကို စီမံခန့်ခွဲရန် အက်ပ်အား ဖယ်ရှား၍မရပါ။"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"အချို့အသုံးပြုသူများ သို့မဟုတ် ပရိုဖိုင်များအတွက် ဤအက်ပ်ကို လိုအပ်သော်လည်း အချို့သူများအတွက် ဖြုတ်ထားပါသည်"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"သင့်ပရိုဖိုင်အတွက် ဤအက်ပ်ကိုလိုအပ်ပြီး ဖြုတ်၍မရပါ။"</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"ဒီအက်ပ်မှာ သင်၏ ကိရိယာ စီမံအုပ်ချုပ်သူက လိုအပ်သောကြောင့် ဖြုတ်၍ မရနိုင်ပါ။"</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"စက်ပစ္စည်းကို စီမံခန့်ခွဲရန် အက်ပ်များအား စီမံရန်"</string>
- <string name="manage_users" msgid="3125018886835668847">"အသုံးပြုသူများအား စီမံခန့်ခွဲပါ"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> ကို ဖယ်ရှားလို့ မရပါ"</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"ဒေတာအချက်အလက်အစုအားဖတ်ရှုစဉ် ပြသနာ တစ်ခု ဖြစ်ပေါ်ပါသည်"</string>
- <string name="newPerms" msgid="6039428254474104210">"အသစ်"</string>
- <string name="allPerms" msgid="1024385515840703981">"အားလုံး"</string>
- <string name="privacyPerms" msgid="1850527049572617">"လုံခြုံမှု"</string>
- <string name="devicePerms" msgid="6733560207731294504">"စက်ပစ္စည်း အသုံးပြုခွင့်"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"ဤအပ်ဒိတ်အတွက် ခွင့်ပြုချက်အသစ် မလိုအပ်ပါ"</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"အောက်ပါ ခွင့်ပြုချက်များ ပေးလိုပါသလား။ ၎င်းတို့က သုံးခွင့်ပြုမှာကတော့၊"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"ငြင်းပယ်သည်"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"အခြားအချက်အလက်များ"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"မည်သို့ပင်ဖြစ်စေ ငြင်းပယ်ပါ"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ကို <xliff:g id="ACTION">%2$s</xliff:g> ရန်ခွင့်ပြုမလား။"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> ခု ပိတ်ထားသည်"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"အားလုံးပိတ်ထားသည်"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"တစ်ခုမျှ ပိတ်မထားပါ"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"ခွင့်ပြုသည်"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"အက်ပ်များ"</string>
- <string name="app_permissions" msgid="3146758905824597178">"အက်ပ်ခွင့်ပြုချက်များ"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"နောက်ထပ်မမေးပါနှင့်"</string>
- <string name="no_permissions" msgid="3210542466245591574">"ခွင့်ပြုချက်မရှိ"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"ထပ်တိုး ခွင့်ပြုချက်များ"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
- <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>
+ <string name="app_name" msgid="2792757108872430971">"ခွင့်ပြုချက် ထိန်းကိရိယာ"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"ခွင့်ပြုချက်များ"</string>
+ <string name="cancel" msgid="7279939269964834974">"မလုပ်တော့"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"အက်ပ် မတွေ့ပါ"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"ငြင်းပယ်ရန်"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"ငြင်းပယ်ပြီး ထပ်မမေးတော့ရန်"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"နောက်ထပ်"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"မည်သို့ပင်ဖြစ်စေ ငြင်းပယ်ပါ"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ကို <xliff:g id="ACTION">%2$s</xliff:g> ရန်ခွင့်ပြုမလား။"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ကို <xliff:g id="ACTION">%2$s</xliff:g> ရန် အမြဲခွင့်ပြုသလား။"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"အက်ပ်အသုံးပြုစဉ်သာ"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"အမြဲတမ်း"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"ငြင်းပယ်သည်၊ ထပ်မမေးပါနှင့်"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> ခု ပိတ်ထားသည်"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"အားလုံးပိတ်ထားသည်"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"တစ်ခုမျှ ပိတ်မထားပါ"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"ခွင့်ပြုရန်"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"အမြဲ ခွင့်ပြုရန်"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"အက်ပ်အသုံးပြုချိန်တွင်သာ ခွင့်ပြုရန်"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"အက်ပ်များ"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"အက်ပ်ခွင့်ပြုချက်များ"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"ခွင့်ပြုချက် မန်နေဂျာ"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"ထပ်မမေးပါနှင့်"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"ခွင့်ပြုချက်မရှိပါ"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"ထပ်ဆောင်း ခွင့်ပြုချက်များ"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"အက်ပ်အချက်အလက် ဖွင့်ရန်"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
+ <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="old_sdk_deny_warning" msgid="3872277112584842615">"ဤအက်ပ် အား Android ၏ ဗားရှင်းဟောင်းအတွက် ပုံဆွဲရေးဆွဲထား၏။ ခွင့်ပြုချက်ပေးရန် ငြင်းဆိုပါက ရည်ရွယ်ထားသကဲ့သို့ ဆောင်ရွက်လိမ့်မည် မဟုတ်ပါ။"</string>
- <string name="default_permission_description" msgid="4992892207044156668">"အမျိုးအမည်မသိ ဆောင်ရွက်ချက်တစ်ခု လုပ်ရန်"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"အက်ပ် <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="6773743421743728921">"စနစ်ကိုပြသရန်"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"စနစ်ကို ဖျောက်မည်"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> ခွင့်ပြုချက်များ"</string>
- <string name="no_apps" msgid="1965493419005012569">"အက်ပ် မရှိပါ"</string>
- <string name="location_settings" msgid="1774875730854491297">"တည်နေရာ ဆက်တင်များ"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> သည် ဤစက်ပစ္စည်းအတွက် တည်နေရာ ဝန်ဆောင်မှုများ ထုတ်ပေးသူဖြစ်သည်။ တည်နေရာ အသုံးပြုမှုကို တည်နေရာချိန်ညှိမှုများတွင် ပြုပြင်နိုင်သည်။"</string>
- <string name="system_warning" msgid="7103819124542305179">"ဤခွင့်ပြုချက်အား သင် ငြင်းဆိုပါက၊ သင့်စက်ကိရိယာ၏ အခြေခံလုပ်ဆောင်ချက်များသည် ရည်ရွယ်ထားသကဲ့သို့ အလုပ်လုပ်မည် မဟုတ်ပါ။"</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"မူဝါဒအားဖြင့်ပြဌာန်းရန်"</string>
- <string name="loading" msgid="7811651799620593731">"တင်နေ…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"ခွင့်ပြုချက်များ အားလုံး"</string>
- <string name="other_permissions" msgid="2016192512386091933">"အခြားအပ်ဖ်၏ စွမ်းရည်များ"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"ခွင့်ပြုချက် တောင်းခံမှု"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"မျက်နှာပြင် ထပ်ပေးမှုကို ရှာတွေ့ခဲ့"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"ဒီခွင့်ပြုချက် ဆက်တင်ကို ပြောင်းရန်၊ သင်ဟာ ဦးစွာ ဆက်တင်များ > အက်ပ်များ ထဲတွင် မျက်နှာပြင် ထပ်ပေးမှုကို ပိတ်လိုက်ရန် လိုမယ်"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"ဆက်တင်းများ ဖွင့်ရန်"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android ဆောင်စရာ"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Wear ပေါ်တွင် ထည့်သွင်းခြင်း/ဖြုတ်ခြင်းများကို ပံ့ပိုးမထားပါ။"</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ကို အပ်ဒိတ် လုပ်ခဲ့သည်။<xliff:g id="APP_NAME_1">%1$s</xliff:g> အား အောက်ဖေါ်ပြပါကို သုံးခွင့် ပြုရမလား။"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"&It;b7gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&It;/b> က အသုံးပြုခွင့်ရမည့် အရာတို့ကို ရွေးပါ"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"&It;b><xliff:g id="APP_NAME">%1$s</xliff:g>&It;/b> ကို အပ်ဒိတ်လုပ်ပြီးပါပြီ။ ဤအက်ပ်က အသုံးပြုခွင့်ရမည့်အရာတို့ကို ရွေးပါ။"</string>
- <string name="review_button_cancel" msgid="957906817733578877">"မလုပ်တော့"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"ဆက်လုပ်ရန်"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"ခွင့်ပြုချက် အသစ်များ"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"လက်ရှိ ခွင့်ပြုချက်များ"</string>
- <string name="message_staging" msgid="6151794817691100003">"အက်ပ်ကို ပြင်ဆင်နေသည်…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"အမျိုးအမည်မသိ"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"လုံခြုံရေးအရ ဤနေရာမှရယူထားသည့် အမျိုးအမည်မသိသောအက်ပ်များကို သင်၏တက်ဘလက်တွင် ထည့်သွင်းခွင့်မရှိပါ။"</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"လုံခြုံရေးအရ ဤနေရာမှရယူထားသည့် အမျိုးအမည်မသိသောအက်ပ်များကို သင်၏တီဗီတွင် ထည့်သွင်းခွင့်မရှိပါ။"</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"လုံခြုံရေးအရ ဤနေရာမှရယူထားသည့် အမျိုးအမည်မသိသောအက်ပ်များကို သင်၏ဖုန်းတွင် ထည့်သွင်းခွင့်မရှိပါ။"</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"သင်၏ဖုန်းနှင့် ကိုယ်ရေးကိုယ်တာ အချက်အလက်များသည် အမျိုးအမည် မသိသောအက်ပ်များ၏ တိုက်ခိုက်ခြင်းကို ပိုမိုခံရနိုင်ပါသည်။ ဤအက်ပ်ကို ထည့်သွင်းအသုံးပြုခြင်းအားဖြင့် ဖြစ်ပေါ်လာနိုင်သော ဖုန်းပျက်စီးမှု သို့မဟုတ် ဒေတာဆုံးရှုံးမှုများအတွက် သင့်ထံ၌သာ တာဝန်ရှိကြောင်း သဘောတူရာရောက်ပါသည်။"</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"သင်၏ တက်ဘလက်နှင့် ကိုယ်ရေးကိုယ်တာ အချက်အလက်များသည် အမျိုးအမည် မသိသောအက်ပ်များ၏ တိုက်ခိုက်ခြင်းကို ပိုမိုခံရနိုင်ပါသည်။ ဤအက်ပ်ကို ထည့်သွင်းအသုံးပြုခြင်းအားဖြင့် ဖြစ်ပေါ်လာနိုင်သော တက်ဘလက်ပျက်စီးမှု သို့မဟုတ် ဒေတာဆုံးရှုံးမှုများအတွက် သင့်ထံ၌သာ တာဝန်ရှိကြောင်း သဘောတူရာရောက်ပါသည်။"</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"သင်၏ TV နှင့် ကိုယ်ရေးကိုယ်တာ အချက်အလက်များသည် အမျိုးအမည် မသိသောအက်ပ်များ၏ တိုက်ခိုက်ခြင်းကို ပိုမိုခံရနိုင်ပါသည်။ ဤအက်ပ်ကို ထည့်သွင်းအသုံးပြုခြင်းအားဖြင့် ဖြစ်ပေါ်လာနိုင်သော TV ပျက်စီးမှု သို့မဟုတ် ဒေတာဆုံးရှုံးမှုများအတွက် သင့်ထံ၌သာ တာဝန်ရှိကြောင်း သဘောတူရာရောက်ပါသည်။"</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"ဆက်လုပ်ရန်"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"ဆက်တင်များ"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"wear အက်ပ်ကိုထည့်သွင်းခြင်း/ဖယ်ရှားခြင်း"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"ဤအက်ပ်ကို Android ဗားရှင်းအဟောင်းတွင် သုံးရန် ရေးဆွဲထားပါသည်။ ခွင့်ပြုချက်ပေးရန် ငြင်းပယ်ပါက ရည်ရွယ်ထားသကဲ့သို့ ဆောင်ရွက်မည် မဟုတ်ပါ။"</string>
+ <string name="default_permission_description" msgid="692254823411049573">"အမျိုးအမည်မသိ ဆောင်ရွက်ချက်တစ်ခု လုပ်ရန်"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"အက်ပ် <xliff:g id="COUNT_1">%2$d</xliff:g> ခုထဲမှ <xliff:g id="COUNT_0">%1$d</xliff:g> ခု ခွင့်ပြုသည်"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"လတ်တလော အသုံးပြုမှု"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"ခွင့်ပြုမှုဒက်ရှ်ဘုတ် ကြည့်ရန်"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"စနစ်ကိုပြသရန်"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"စနစ်ကို ဖျောက်ရန်"</string>
+ <string name="no_apps" msgid="2377153782338039463">"အက်ပ် မရှိပါ"</string>
+ <string name="location_settings" msgid="547378321761364906">"တည်နေရာ ဆက်တင်များ"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> သည် ဤကိရိယာအတွက် တည်နေရာ ဝန်ဆောင်မှုများကို ပံ့ပိုးပေးသူ ဖြစ်သည်။ တည်နေရာ အသုံးပြုမှုကို တည်နေရာဆက်တင်များတွင် ပြောင်းနိုင်ပါသည်။"</string>
+ <string name="system_warning" msgid="6868290533389195836">"ဤခွင့်ပြုချက်ကို သင် ငြင်းပယ်ပါက သင့်ကိရိယာ၏ အခြေခံ ဝန်ဆောင်မှုများသည် ရည်ရွယ်ထားသည့်အတိုင်း လုပ်ဆောင်မည် မဟုတ်ပါ။"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"မူဝါဒအားဖြင့်ပြဌာန်းရန်"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"နောက်ခံတွင်ဝင်သုံးခွင့်ကို မူဝါဒက ပိတ်ထားသည်"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"နောက်ခံတွင်ဝင်သုံးခွင့်ကို မူဝါဒက ဖွင့်ထားသည်"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"မျက်နှာစာတွင်ဝင်သုံးခွင့်ကို မူဝါဒက ဖွင့်ထားသည်"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"စီမံခန့်ခွဲသူက ထိန်းချုပ်ထားသည်"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"နောက်ကွယ်၌ အသုံးပြုခွင့်ကို စီမံခန့်ခွဲသူက ပိတ်ထားသည်"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"နောက်ကွယ်၌ အသုံးပြုခွင့်ကို စီမံခန့်ခွဲသူက ဖွင့်ထားသည်"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"မျက်နှာပေါ်၌ အသုံးပြုခွင့်ကို စီမံခန့်ခွဲသူက ဖွင့်ထားသည်"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"စနစ်က သတ်မှတ်ထားသော ခွင့်ပြုချက်"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"အမြဲတမ်း"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"အက်ပ်အသုံးပြုစဉ်သာ"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"ဘယ်တော့မှ"</string>
+ <string name="loading" msgid="323483393167148377">"ဖွင့်နေသည်…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"ခွင့်ပြုချက် အားလုံး"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"အခြားအက်ပ်၏ စွမ်းရည်များ"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"ခွင့်ပြုချက် တောင်းခံမှု"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"ဖန်သားပြင်တွင် ထပ်ဆင့်ပြသခြင်းကို ရှာတွေ့ခဲ့သည်"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"ဤခွင့်ပြုချက် ဆက်တင်ကိုပြောင်းရန် သင်သည် ဆက်တင်များ > အက်ပ်များသို့ သွား၍ ဖန်သားပြင်တွင် ထပ်ဆင့်ပြသခြင်းကို အရင်ဆုံး ပိတ်ရပါမည်"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"ဆက်တင်များ ဖွင့်ရန်"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Wear ပေါ်တွင် ထည့်သွင်းခြင်း/ဖြုတ်ခြင်းများကို ပံ့ပိုးမထားပါ။"</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"&It;b7gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&It;/b> က အသုံးပြုခွင့်ရမည့် အရာတို့ကို ရွေးပါ"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"&It;b><xliff:g id="APP_NAME">%1$s</xliff:g>&It;/b> ကို အပ်ဒိတ်လုပ်ပြီးပါပြီ။ ဤအက်ပ်က အသုံးပြုခွင့်ရမည့်အရာတို့ကို ရွေးပါ။"</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"မလုပ်တော့"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"ရှေ့ဆက်ရန်"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"ခွင့်ပြုချက် အသစ်များ"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"လက်ရှိ ခွင့်ပြုချက်များ"</string>
+ <string name="message_staging" msgid="641286607664721291">"အက်ပ်ကို ပြင်ဆင်နေသည်…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"အမည်မသိ"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"ဒက်ရှ်ဘုတ်"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">နောက်ဆုံးအသုံးပြုမှု- <xliff:g id="TIME_3">%1$s</xliff:g>\nအသုံးပြုမှု <xliff:g id="NUM_4">%2$s</xliff:g> ခု (နောက်ခံတွင် <xliff:g id="NUM_5">%3$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> ခု (နောက်ခံတွင် <xliff:g id="NUM_2">%3$s</xliff:g> ခု)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">နောက်ဆုံးအသုံးပြုမှု- <xliff:g id="TIME_3">%1$s</xliff:g>\nအသုံးပြုမှု <xliff:g id="NUM_4">%2$s</xliff:g> ခု\nကြာချိန်- <xliff:g id="TIME_5">%3$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> ခု\nကြာချိန်- <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">နောက်ဆုံးအသုံးပြုမှု- <xliff:g id="TIME_4">%1$s</xliff:g>\nအသုံးပြုမှု <xliff:g id="NUM_5">%2$s</xliff:g> ခု (နောက်ခံတွင် <xliff:g id="NUM_6">%3$s</xliff:g> ခု)\nကြာချိန်- <xliff:g id="TIME_7">%3$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> ခု (နောက်ခံတွင် <xliff:g id="NUM_2">%3$s</xliff:g> ခု)\nကြာချိန်- <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"မည်သည့် ခွင့်ပြုချက်မဆို"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"အချိန်မရွေး"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"ပြီးခဲ့သော ၇ ရက်"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"ပြီးခဲ့သော ၂၄ နာရီ"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"ပြီးခဲ့သော ၁ နာရီ"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"ပြီးခဲ့သော ၁၅ မိနစ်"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"ပြီးခဲ့သည့် ၁ မိနစ်"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"မည်သည့်ခွင့်ပြုချက်မှ မသုံးပါ"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"အချိန်မရွေး အသုံးပြုနိုင်သည်"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"ပြီးခဲ့သော ၇ ရက်အတွင်း အသုံးပြုမှု"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"ပြီးခဲ့သော ၂၄ နာရီအတွင်း အသုံးပြုမှု"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"ပြီးခဲ့သော ၁ နာရီအတွင်း အသုံးပြုမှု"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"ပြီးခဲ့သော ၁၅ မိနစ်အတွင်း အသုံးပြုမှု"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"ပြီးခဲ့သည့် ၁ မိနစ်က အသုံးပြုထားသည်"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"မည်သည့်အချိန်မဆိုအတွက် ထိပ်တန်းခွင့်ပြု သုံးစွဲမှု"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"ပြီးခဲ့သော ၇ ရက်ရှိ ထိပ်တန်းခွင့်ပြု သုံးစွဲမှု"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"ပြီးခဲ့သော ၂၄ နာရီရှိ ထိပ်တန်းခွင့်ပြု သုံးစွဲမှု"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"ပြီးခဲ့သော ၁ နာရီရှိ ထိပ်တန်းခွင့်ပြု သုံးစွဲမှု"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"ပြီးခဲ့သော ၁၅ မိနစ်ရှိ ထိပ်တန်းခွင့်ပြု သုံးစွဲမှု"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"ပြီးခဲ့သော ၁ မိနစ်က ထိပ်တန်းခွင့်ပြုချက်သုံးစွဲမှု"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"အက်ပ်များ"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"စစ်ထုတ်စနစ်- <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"စစ်ထုတ်ခြင်းကို ဖယ်ရှားရန်"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"အောက်ပါဖြင့် စစ်ထုတ်ရန်-"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"ခွင့်ပြုချက်များဖြင့် စစ်ထုတ်ရန်"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"အများဆုံး ခွင့်ပြုချက်များ"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"အများဆုံး အသုံးပြုမှု"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"လတ်တလော"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"ပြန်စရန်"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"အက်ပ်ခွင့်ပြုချက် အသုံးပြုမှု"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"အသုံးပြုမှု− <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="4040424337831328212">"အသုံးပြုမှု− <xliff:g id="NUM">%1$s</xliff:g> ကြိမ်။ ပြီးခဲ့သည့် <xliff:g id="TIME">%2$s</xliff:g> က အသုံးပြုခဲ့သည်။"</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"ခွင့်ပြုရန်"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"အမြဲ ခွင့်ပြုရန်"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"အက်ပ်အသုံးပြုချိန်တွင်သာ ခွင့်ပြုရန်"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"ငြင်းပယ်ရန်"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> ခွင့်ပြုချက်"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="APP">%2$s</xliff:g> အတွက် <xliff:g id="PERM">%1$s</xliff:g> ဝင်သုံးခွင့်"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> က သင်၏ <xliff:g id="PERM">%2$s</xliff:g> ကို ပြီးခဲ့သော <xliff:g id="TIME">%3$s</xliff:g> က ဝင်သုံးထားသည်။"</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> က သင်၏ <xliff:g id="PERM">%2$s</xliff:g> ကို ဝင်သုံးမထားပါ။"</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"ခွင့်ပြုချက်များ အသုံးပြုမှု အသေးစိတ်ကို ကြည့်ရန်"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"နောက်ဆုံး အသုံးပြုချိန်- <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"တစ်ခါမျှ အသုံးပြုမထားပါ"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"ခွင့်ပြုထားသည်"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"အသုံးပြုစဉ်တွင်သာ ခွင့်ပြုထားသည်"</string>
+ <string name="denied_header" msgid="2277998574238617699">"ငြင်းပယ်ထားသည်"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"အသေးစိတ်အသုံးပြုမှုကို ကြည့်ရန်"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ရက်</item>
+ <item quantity="one">၁ ရက်</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> နာရီ</item>
+ <item quantity="one">၁ နာရီ</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> မိနစ်</item>
+ <item quantity="one">၁ မိနစ်</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> စက္ကန့်</item>
+ <item quantity="one">၁ စက္ကန့်</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ကို သင့် <xliff:g id="ROLE_NAME">%2$s</xliff:g> အဖြစ် အသုံးပြုမလား။"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"<b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> အစား <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> ကို သင့် <xliff:g id="ROLE_NAME">%2$s</xliff:g> အဖြစ် အသုံးပြုမလား။"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"ခွင့်ပြုချက် သတိပေးမှုများ"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> က သင်၏တည်နေရာကို အသုံးပြုနေပါသည်"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"ဤအက်ပ်က သင်၏တည်နေရာကို အမြဲဝင်ကြည့်နိုင်ပါသည်။ ပြောင်းရန် တို့ပါ။"</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"အက်ပ်ကို အသုံးပြုနေစဉ်သာ"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"ခွင့်ပြုချက်များ ပေးမထားပါ"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"ခွင့်ပြုချက်များကို ငြင်းပယ်မထားပါ"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"အက်ပ်များကို ခွင့်ပြုမထားပါ"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"အက်ပ်များကို ငြင်းပယ်မထားပါ"</string>
+ <string name="launch_app" msgid="5641437562665039291">"ဖွင့်ရန်"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"ဖြုတ်ရန်"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"ချက်ချင်း ရပ်ရန်"</string>
+ <string name="settings" msgid="2884124136779508907">"ဆက်တင်များ"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> သည် သင့်ကိရိယာအား အပြည့်အဝ အသုံးပြုခွင့်ရှိသည်"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"အများသုံးစွဲနိုင်မှုဆိုင်ရာ ဝန်ဆောင်မှု <xliff:g id="NUM_SERVICES">%s</xliff:g> ခုသည် သင့်ကိရိယာအား အပြည့်အဝ အသုံးပြုခွင့်ရှိသည်"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> သည် သင်၏ မျက်နှာပြင်၊ လုပ်ဆောင်ချက်များ၊ ထည့်သွင်းမှုများကို ကြည့်နိုင်ပြီး လုပ်ဆောင်ချက်များကို ဆောင်ရွက်နိုင်သည့်အပြင် မျက်နှာပြင်သမှုကိုလည်း ထိန်းချုပ်နိုင်သည်။"</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"ဤဝန်ဆောင်မှုများသည် သင်၏ မျက်နှာပြင်၊ လုပ်ဆောင်ချက်များ၊ ထည့်သွင်းမှုများကို ကြည့်နိုင်ပြီး လုပ်ဆောင်ချက်များကို ဆောင်ရွက်နိုင်သည့်အပြင် မျက်နှာပြင်သမှုကိုလည်း ထိန်းချုပ်နိုင်သည်။"</string>
+ <string name="default_apps" msgid="8554530939151957828">"မူရင်း အက်ပ်များ"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"မူရင်းအက်ပ်မရှိပါ"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"အလုပ်အတွက် မူရင်း"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"မရှိ"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"အက်ပ် မရှိပါ"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"အထူးအက်ပ်များ သုံးခွင့်ရှိသည်"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"အထူးအက်ပ်များ သုံးခွင့်မရှိပါ"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"အက်ပ် မရှိပါ"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"အကူအညီ အက်ပ်"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"ဘရောင်ဇာ အက်ပ်"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"ဖုန်းအက်ပ်"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS အက်ပ်"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"အရေးပေါ် အက်ပ်"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"ပင်မစာမျက်နှာ အက်ပ်"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"တေးဂီတ အက်ပ်"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"ပုံပြခန်းအက်ပ်"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"ကားမုဒ်ဖုန်းအက်ပ်"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"ခေါ်ဆိုမှု တစ်ဆင့်ညွှန်အက်ပ်"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"ခေါ်ဆိုမှု စစ်ဆေးခြင်းအက်ပ်"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"ခေါ်ဆိုမှု အကူအညီအက်ပ်"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"ကားပုံစံပြသည့် အက်ပ်"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"အလုပ်ပရိုဖိုင်ကို မပံ့ပိုးပါ"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"မှတ်ချက်- သင်၏စက်ပစ္စည်းကို ပြန်လည်စတင်ပြီး မျက်နှာပြင်လော့ခ်ချထားလျှင် ၎င်းကို လော့ခ်မဖွင့်မချင်း ဤအက်ပ်ကို အသုံးပြု၍မရပါ။"</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Assistant သည် သင်၏ မျက်နှာပြင်ပေါ်တွင် မြင်ရသည့် သို့မဟုတ် အက်ပ်များအတွင်း ရယူအသုံးပြုနိုင်သည့် အချက်အလက်များအပါအဝင် သင်၏ စနစ်ထဲတွင် အသုံးပြုနေသည့် အက်ပ်များနှင့် ပတ်သက်သည့် အချက်အလက်များကို ဖတ်ရှုနိုင်မည်ဖြစ်သည်။"</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"အမှားရှာပြင်သည့် ဒေတာ မျှဝေခြင်း"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"အမှားရှာပြင်သည့် ဒေတာ အသေးစိတ်ကို မျှဝေလိုသလား။"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> က အမှားရှာပြင်သည့် အချက်အလက်ကို အပ်လုဒ်လုပ်လိုသည်။"</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"အမှားရှာပြင်သည့် ဒေတာ မျှဝေခြင်း"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> သည် ဤကိရိယာက <xliff:g id="DATE">%2$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g> တွင် ရယူထားသည့် ချွတ်ယွင်းမှု အစီရင်ခံစာကို အပ်လုဒ်လုပ်ရန် တောင်းဆိုနေသည်။ ချွတ်ယွင်းမှု အစီရင်ခံစာတွင် သင့်ကိရိယာ သို့မဟုတ် အက်ပ်များဖြင့် အကောင့်ဝင်ရောက်ထားသည့် အသုံးပြုသူအမည်၊ တည်နေရာဒေတာ၊ ကိရိယာ သတ်မှတ်မှုစနစ်များနှင့် ကွန်ရက်အချက်အလက်တို့ကဲ့သို့ ကိုယ်ရေးကိုယ်တာအချက်လက်များ ပါဝင်သည်။ ဤအချက်အလက်နှင့် ပတ်သက်ပြီး သင်ယုံကြည်ရသည့် လူ၊ အက်ပ်များနှင့်သာ ချွတ်ယွင်းမှု အစီရင်ခံစာကို မျှဝေပါ။ <xliff:g id="APP_NAME_1">%4$s</xliff:g> ကို ချွတ်ယွင်းမှု အစီရင်ခံစာ အပ်လုဒ်လုပ်ခွင့်ပေးမလား။"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"ခွင့်ပြုရန်"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"ငြင်းပယ်ရန်"</string>
</resources>
diff --git a/res/values-nb-television/strings.xml b/res/values-nb-television/strings.xml
index 57f6a21..c5bd69a 100644
--- a/res/values-nb-television/strings.xml
+++ b/res/values-nb-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Avvis, og ikke spør igjen"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Du kan endre dette senere i Innstillinger > Apper"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Vis systemapper"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Apptillatelser"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Apptillatelser"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Tillatelser for <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Flere tillatelser"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Tillatelser for <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Avvis, og ikke spør igjen"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Du kan endre dette senere i Innstillinger > Apper"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Vis systemapper"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Apptillatelser"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Apptillatelser"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g>-tillatelser"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Flere tillatelser"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g>-tillatelser"</string>
</resources>
diff --git a/res/values-nb-watch/strings.xml b/res/values-nb-watch/strings.xml
index 332a8fe..3281fa2 100644
--- a/res/values-nb-watch/strings.xml
+++ b/res/values-nb-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Avvis, ikke spør igjen"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Vis systemapper"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Kan ikke endres"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Ja"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Avbryt"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Avvis, ikke spør igjen"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Vis systemapper"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Kan ikke endres"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Ja"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Avbryt"</string>
</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index dc180ed..1d2dfa9 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Pakkeinstallasjon"</string>
- <string name="next" msgid="3057143178373252333">"Neste"</string>
- <string name="install" msgid="5896438203900042068">"Installer"</string>
- <string name="done" msgid="3889387558374211719">"Ferdig"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Gi appen følgende tillatelser:"</string>
- <string name="cancel" msgid="8360346460165114585">"Avbryt"</string>
- <string name="unknown" msgid="4742479012767208045">"Ukjent"</string>
- <string name="installing" msgid="8613631001631998372">"Installerer…"</string>
- <string name="installing_app" msgid="4097935682329028894">"Installerer <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> …"</string>
- <string name="install_done" msgid="3682715442154357097">"Appen er installert."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Ønsker du å installere denne appen? Den får tilgang til følgende:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Ønsker du å installere denne appen? Den krever ingen spesiell tilgang."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Ønsker du å installere en oppdatering for denne eksisterende appen? Du mister ingen eksisterende data. Den oppdaterte appen får tilgangen spesifisert nedenfor."</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Ønsker du å installere en oppdatering for denne innebygde appen? Du mister ingen eksisterende data. Den oppdaterte appen får tilgangen spesifisert nedenfor."</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Vil du installere en oppdatering av denne eksisterende appen? De eksisterende dataene dine går ikke tapt. Dette krever ingen spesiell tilgang."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Vil du installere en oppdatering av denne innebygde appen? De eksisterende dataene dine går ikke tapt. Dette krever ingen spesiell tilgang."</string>
- <string name="install_failed" msgid="6579998651498970899">"Appen ble ikke installert."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Pakken er blokkert fra å bli installert."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Appen ble ikke installert fordi pakken er i konflikt med en eksisterende pakke."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Appen ble ikke installert fordi appen ikke er kompatibel med nettbrettet ditt."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Denne appen er ikke kompatibel med TV-en din."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Appen ble ikke installert fordi appen ikke er kompatibel med telefonen din."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Appen ble ikke installert fordi pakken ser ut til å være ugyldig."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> kunne ikke installeres på nettbrettet ditt."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> kunne ikke installeres på TV-en."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> kunne ikke installeres på telefonen din."</string>
- <string name="launch" msgid="4826921505917605463">"Åpne"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Administratoren din tillater ikke installering av apper som er hentet fra ukjente kilder"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Ukjente apper kan ikke installeres av denne brukeren"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Brukeren har ikke tillatelse til å installere apper"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Innstillinger"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Administrer apper"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Vil du erstatte appen?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Appen du installerer erstatter en annen app.\n\nAlle de tidligere brukerdataene dine blir lagret."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Dette er en systemapp.\n\nAlle de tidligere brukerdataene dine blir lagret."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Tom for plass"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> kunne ikke installeres. Frigjør plass og prøv på nytt."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Appen ble ikke funnet"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Finner ikke appen i listen over installerte apper."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Ikke tillatt"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Denne brukeren har ikke tillatelse til å utføre denne avinstalleringen."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Feil"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Kunne ikke avinstallere appen."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Avinstaller appen"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Avinstaller oppdateringen"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> er del av følgende app:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Vil du avinstallere denne appen?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Vil du avinstallere denne appen for "<b>"alle"</b>" brukere? Appen og tilhørende data blir fjernet fra "<b>"alle"</b>" brukere på enheten."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Ønsker du å avinstallere denne appen for brukeren <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Vil du erstatte denne appen med den opprinnelige versjonen? Alle dataene fjernes."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Vil du erstatte denne appen med den opprinnelige versjonen? Alle dataene fjernes. Dette påvirker alle som bruker denne enheten – også personer med jobbprofiler."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Avinstalleringer som er i gang"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Mislykkede avinstalleringer"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Avinstallerer…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Avinstallerer <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> …"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Avinstalleringen er fullført."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Avinstallerte <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Avinstalleringen mislyktes."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Kunne ikke avinstallere <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Kan ikke avinstallere den aktive appen for enhetsadministrator"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Kan ikke avinstallere den aktive appen for enhetsadministrator for <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Appen er nødvendig for noen brukere eller profiler, og den er avinstallert for andre"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Denne appen er nødvendig for profilen din og kan ikke avinstalleres."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Denne appen kreves av enhetsadministratoren din og kan ikke avinstalleres."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Administrer apper for enhetsadministrator"</string>
- <string name="manage_users" msgid="3125018886835668847">"Administrer brukere"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> kunne ikke installeres."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Det oppsto et problem med analysen av pakken."</string>
- <string name="newPerms" msgid="6039428254474104210">"Nye"</string>
- <string name="allPerms" msgid="1024385515840703981">"Alle"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Personvern"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Enhetstilgang"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Denne oppdateringen krever ingen nye tillatelser."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Ønsker du å gi følgende tillatelser? Dette gir tilgang til:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Ikke tillat"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Finn ut mer"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Avvis likevel"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Vil du gi <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> tillatelse til å <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> er slått av"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"alt er slått av"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"ingen er slått av"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Tillat"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Apper"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Apptillatelser"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Ikke spør igjen"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Ingen tillatelser"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Flere tillatelser"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Tillatelsekontrollør"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"tillatelser"</string>
+ <string name="cancel" msgid="7279939269964834974">"Avbryt"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Appen ble ikke funnet"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Avvis"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Avvis, og ikke spør igjen"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Mer info"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Avvis likevel"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Vil du gi <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> tillatelse til å <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Vil du alltid tillate at <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> kan <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Bare når appen brukes"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Alltid"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Avvis, og ikke spør igjen"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> er slått av"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"alt er slått av"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"ingen er slått av"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Ja"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Tillat hele tiden"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Bare tillat mens appen er i bruk"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Apper"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Apptillatelser"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Tillatelsesadministrator"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Ikke spør igjen"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Ingen tillatelser"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Flere tillatelser"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Åpne info om appen"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> til</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> til</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Denne appen er designet for en eldre versjon av Android. Hvis du nekter å gi tillatelse, kan det føre til at den ikke lenger fungerer etter hensikten."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"utfør en ukjent handling"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_0">%1$d</xliff:g> av <xliff:g id="COUNT_1">%2$d</xliff:g> apper er tillatt"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Vis systemapper"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Skjul systemet"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g>-tillatelser"</string>
- <string name="no_apps" msgid="1965493419005012569">"Ingen apper"</string>
- <string name="location_settings" msgid="1774875730854491297">"Posisjonsinnstillinger"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Hvis du ikke gir denne tillatelsen, kan grunnleggende funksjoner på enheten slutte å fungere som de skal."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Påkrevd ifølge retningslinjene"</string>
- <string name="loading" msgid="7811651799620593731">"Laster inn …"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Alle tillatelser"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Andre appfunksjoner"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Forespørsel om tillatelse"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Skjermoverlegg oppdaget"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"For å endre denne tillatelsesinnstilingen må du først slå av skjermoverlegget fra Innstillinger > Apper"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Åpne innstillingene"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Handlinger for å installere og avinstallere er ikke støttet på Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> er oppdatert. Vil du gi <xliff:g id="APP_NAME_1">%1$s</xliff:g> tilgang til følgende?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Velg hva du vil gi <xliff:g id="APP_NAME">%1$s</xliff:g> tilgang til"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<xliff:g id="APP_NAME">%1$s</xliff:g> er oppdatert. Velg hva du vil gi denne appen tilgang til."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Avbryt"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Fortsett"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Nye tillatelser"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Gjeldende tillatelser"</string>
- <string name="message_staging" msgid="6151794817691100003">"Setter opp appen …"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Ukjent"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Nettbrettet ditt har ikke tillatelse til å installere ukjente apper fra denne kilden, for å ivareta sikkerheten din."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"TV-en din har ikke tillatelse til å installere ukjente apper fra denne kilden, for å ivareta sikkerheten din."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Telefonen din har ikke tillatelse til å installere ukjente apper fra denne kilden, for å ivareta sikkerheten din."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Telefonen din og de personlige dataene dine er mer sårbare for angrep fra ukjente apper. Når du installerer denne appen, samtykker du i at du er ansvarlig for eventuelle skader på telefonen eller tap av data bruk av appen forårsaker."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Nettbrettet ditt og de personlige dataene dine er mer sårbare for angrep fra ukjente apper. Når du installerer denne appen, samtykker du i at du er ansvarlig for eventuelle skader på nettbrettet eller tap av data bruk av appen forårsaker."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"TV-en din og de personlige dataene dine er mer sårbare for angrep fra ukjente apper. Når du installerer denne appen, samtykker du i at du er ansvarlig for eventuelle skader på TV-en eller tap av data bruk av appen forårsaker."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Fortsett"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Innstillinger"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Installerer/avinstallerer wear-apper"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Denne appen er laget for en eldre versjon av Android. Hvis du ikke gir tillatelse, kan det føre til at den ikke lenger fungerer som den skal."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"utføre en ukjent handling"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> av <xliff:g id="COUNT_1">%2$d</xliff:g> apper er tillatt"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Nylig bruk"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Se tillatelsesoversikten"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Vis systemapper"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Skjul systemapper"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Ingen apper"</string>
+ <string name="location_settings" msgid="547378321761364906">"Posisjonsinnstillinger"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Hvis du ikke gir denne tillatelsen, kan grunnleggende funksjoner på enheten slutte å fungere som de skal."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Påkrevd ifølge retningslinjene"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Tilgang i bakgrunnen er slått av pga. retningslinjene"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Tilgang i bakgrunnen er slått på pga. retningslinjene"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Tilgang i forgrunnen er slått på pga. retningslinjene"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Kontrollert av administratoren"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Administratoren har slått av tilgang i bakgrunnen"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Administratoren har slått på tilgang i bakgrunnen"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Administratoren har slått på tilgang i forgrunnen"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Tillatelse er angitt av systemet"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Alltid"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Bare når appen brukes"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Aldri"</string>
+ <string name="loading" msgid="323483393167148377">"Laster inn …"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Alle tillatelser"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Andre appfunksjoner"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Forespørsel om tillatelse"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Skjermoverlegg oppdaget"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"For å endre denne tillatelsesinnstillingen må du først slå av skjermoverlegget fra Innstillinger > Apper"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Åpne Innstillinger"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Handlinger for å installere og avinstallere støttes ikke på Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Velg hva du vil gi <xliff:g id="APP_NAME">%1$s</xliff:g> tilgang til"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<xliff:g id="APP_NAME">%1$s</xliff:g> er oppdatert. Velg hva du vil gi denne appen tilgang til."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Avbryt"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Fortsett"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Nye tillatelser"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Gjeldende tillatelser"</string>
+ <string name="message_staging" msgid="641286607664721291">"Klargjør appen …"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Ukjent"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Oversikt"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Sist brukt: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> ganger (<xliff:g id="NUM_5">%3$s</xliff:g> i bakgrunnen)</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 (<xliff:g id="NUM_2">%3$s</xliff:g> i bakgrunnen)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Sist brukt: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> ganger\nVarighet: <xliff:g id="TIME_5">%3$s</xliff:g></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\nVarighet: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Sist brukt: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> ganger (<xliff:g id="NUM_6">%3$s</xliff:g> i bakgrunnen)\nVarighet: <xliff:g id="TIME_7">%3$s</xliff:g></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 (<xliff:g id="NUM_2">%3$s</xliff:g> i bakgrunnen)\nVarighet: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Hvilken som helst tillatelse"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Når som helst"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"De siste 7 dagene"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"De siste 24 timene"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Den siste timen"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"De siste 15 minuttene"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Det siste minuttet"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Ingen bruk av tillatelsen"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Bruk til enhver tid"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Bruk i løpet av de siste syv dagene"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Bruk i løpet av de siste 24 timene"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Bruk i løpet av den siste timen"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Brukt i løpet av de siste 15 minuttene"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Bruk i løpet av det siste minuttet"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Hyppigste bruk av tillatelser til enhver tid"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Hyppigste bruk av tillatelser de siste syv dagene"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Hyppigste bruk av tillatelser de siste 24 timene"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Hyppigste bruk av tillatelser den siste timen"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Hyppigste bruk av tillatelse de siste 15 minuttene"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Hyppigste bruk av tillatelser det siste minuttet"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Apper"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtrert etter: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Fjern filteret"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtrér etter"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtrér etter tillatelser"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Flest tillatelser"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Mest brukt"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Nylig"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Last inn på nytt"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Bruk av apptillatelser"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Tilgang: <xliff:g id="NUM">%1$s</xliff:g> ganger. Sist brukt for <xliff:g id="TIME">%2$s</xliff:g> siden."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Tillat"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Tillat hele tiden"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Bare tillat mens appen er i bruk"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Avvis"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g>-tillatelse"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="PERM">%1$s</xliff:g>-tilgang for <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> har brukt <xliff:g id="PERM">%2$s</xliff:g> for <xliff:g id="TIME">%3$s</xliff:g> siden."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> har ikke brukt <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Vis detaljert bruk av tillatelser"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Siste tilgang: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Aldri brukt"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Tillatt"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Tillates bare når appen brukes"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Avvist"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Se detaljert bruk"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dager</item>
+ <item quantity="one">1 dag</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> timer</item>
+ <item quantity="one">1 time</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minutter</item>
+ <item quantity="one">1 minutt</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sekunder</item>
+ <item quantity="one">1 sekund</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Vil du bruke <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> som <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Vil du bruke <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> i stedet for <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> som <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Påminnelser om tillatelser"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> har brukt posisjonen din"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Denne appen har alltid tilgang til posisjonen din. Trykk for å endre."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Bare mens appen er i bruk"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Ingen tillatelser er gitt"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Ingen tillatelser er nektet"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Ingen apper har fått tillatelsen"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Ingen apper er nektet"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Åpne"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Avinstaller"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Tving til å avslutte"</string>
+ <string name="settings" msgid="2884124136779508907">"Innstillinger"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> har full tilgang til enheten din"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> tilgjengelighetstjenester har full tilgang til enheten din"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> kan se skjermen, handlinger og inndata, utføre handlinger og kontrollere skjermen."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Disse tjenestene kan se skjermen, handlinger og inndata, utføre handlinger og kontrollere skjermen."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Standardapper"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Ingen standardapper"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Jobbstandard"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Ingen"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Ingen apper"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Spesiell apptilgang"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Ingen spesiell apptilgang"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Ingen apper"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Assistentapp"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Nettleserapp"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Telefon-app"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS-app"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Nødapp"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Startsideapp"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Musikk-appen"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Galleri-appen"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Telefonapp for bilmodus"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"App for viderekobling av anrop"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"App for anropsutvelgelse"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Følgeapp for ringing"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"App for speiling i bilen"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Støtter ikke jobbprofiler"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Merk: Hvis du starter enheten din på nytt og har en skjermlås angitt, kan ikke denne appen starte før du låser opp enheten."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Assistenten kan lese informasjon om appene du bruker i systemet ditt, inkludert informasjon som er synlig på skjermen eller tilgjengelig i appene."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Del feilsøkingsdata"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Vil du dele detaljerte feilsøkingsdata?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> vil laste opp feilsøkingsinformasjon."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Del feilsøkingsdata"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ber om å laste opp en feilrapport fra denne enheten fra <xliff:g id="DATE">%2$s</xliff:g> klokken <xliff:g id="TIME">%3$s</xliff:g>. Feilrapporter inkluderer personopplysninger om enheten eller opplysninger som er loggført av apper, for eksempel brukernavn, posisjonsdata, enhetsidentifikatorer og nettverksinformasjon. Du bør bare dele feilrapporter med personer og apper du stoler på. Vil du gi <xliff:g id="APP_NAME_1">%4$s</xliff:g> tillatelse til å laste opp en feilrapport?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Tillat"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Avvis"</string>
</resources>
diff --git a/res/values-ne-television/strings.xml b/res/values-ne-television/strings.xml
index d6e908c..a1b01aa 100644
--- a/res/values-ne-television/strings.xml
+++ b/res/values-ne-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"अस्वीकृत गर्नुहोस् र फेरि नसोध्नुहोस्"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"तपाईं यसलाई पछि सेटिङ > अनुप्रयोगमा बदल्न सक्नु हुन्छ"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"प्रणाली अनुप्रयोगहरू देखाउनुहोस्"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"अनुप्रयोग सम्बन्धी अनुमतिहरू"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"अनुप्रयोग सम्बन्धी अनुमतिहरू"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> सम्बन्धी अनुमतिहरू"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"अतिरिक्त अनुमतिहरू"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> सम्बन्धी अनुमतिहरू"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"अस्वीकार गर्नुहोस् र अब उप्रान्त नसोध्नुहोला"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"तपाईं यसलाई सेटिङ > अनुप्रयोगमा गई पछि बदल्न सक्नुहुन्छ"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"प्रणालीका अनुप्रयोगहरू देखाउनुहोस्"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"अनुप्रयोगसम्बन्धी अनुमति"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"अनुप्रयोगसम्बन्धी अनुमति"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> सम्बन्धी अनुमति"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"अतिरिक्त अनुमति"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> सम्बन्धी अनुमति"</string>
</resources>
diff --git a/res/values-ne-watch/strings.xml b/res/values-ne-watch/strings.xml
index ffcc2f7..ebc4b96 100644
--- a/res/values-ne-watch/strings.xml
+++ b/res/values-ne-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"अस्वीकार गर्नुहोस्, फेरि नसोध्नुहोस्"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"प्रणाली अनुप्रयोगहरू देखाउनुहोस्"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"परिवर्तन गर्न सकिँदैन"</string>
- <string name="generic_yes" msgid="3394094077553763689">"हो"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"रद्द गर्नुहोस्"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"अस्वीकार गर्नुहोस्, फेरि नसोध्नु…"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"प्रणालीका अनुप्रयोगहरू देखाउनुहोस्"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"बदल्न मिल्दैन"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"हुन्छ"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"रद्द गर्नु…"</string>
</resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 212d03a..9123211 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"प्याकेज स्थापनकर्ता"</string>
- <string name="next" msgid="3057143178373252333">"अर्को"</string>
- <string name="install" msgid="5896438203900042068">"स्थापना गर्नुहोस्"</string>
- <string name="done" msgid="3889387558374211719">"भयो"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"यस अनुप्रयोगलाई अनुमति दिनुहोस्:"</string>
- <string name="cancel" msgid="8360346460165114585">"रद्द गर्नुहोस्"</string>
- <string name="unknown" msgid="4742479012767208045">"अज्ञात"</string>
- <string name="installing" msgid="8613631001631998372">"स्थापित हुँदै…"</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> स्थापना गर्दै…"</string>
- <string name="install_done" msgid="3682715442154357097">"अनुप्रयोग स्थापना भयो।"</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"के तपाईं यो अनुप्रयोग स्थापन गर्न चाहनु हुन्छ? यसले पहुँच प्राप्त गर्ने छ:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"के तपाईं यस अनुप्रयोगलाई जडान गर्न चाहनु हुन्छ? यसको लागि कुनै विशेष पहुँचको आवश्यकता पर्दैन।"</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"के तपाईँसँग अहिले भईरहेको अनुप्रयोगको एक अपडेट लाई स्थापित गर्न चाहानुहुन्छ? तपाईँको अहिलेको डेटा हराउने छैन। अपडेट भएको अनुप्रयोग पहुँच पाउनेछ मा:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"के तपाईं यस पूर्व-निर्मित अनुप्रयोगमा अपडेट स्थापित गर्न चाहनु हुन्छ? तपाईंको रहेको डेटा हराउने छैन। अपडेट गरिएको अनुप्रयोगले पहुँच पाउने छ:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"के तपाईँसँग अहिले भइरहेको अनुप्रयोगको एउटा अपडेटलाई स्थापित गर्न चाहनु हुन्छ? तपाईँको अहिलेको डेटा हराउने छैन। यसलाई कुनै विशेष पहुँचको आवश्यकता छैन।"</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"के तपाईं यस जोडिएको अनुप्रयोगको एउटा अपडेटलाई स्थापित गर्न चाहनुहुन्छ? तपाईंको अहिलेको डेटा हराउने छैन। यसलाई कुनै विशेष पहुँचको आवश्यकता छैन।"</string>
- <string name="install_failed" msgid="6579998651498970899">"अनुप्रयोग स्थापना भएन।"</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"यो प्याकेज स्थापना हुनबाट अवरुद्ध भएको थियो।"</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"प्याकेजका रूपमा स्थापना नगरिएको अनुप्रयोग विद्यमान प्याकेजसँग मेल खाँदैन।"</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"अनुप्रयोगका रूपमा स्थापना नगरिएको अनुप्रयोग तपाईंको ट्याब्लेटसँग मिल्दो छैन।"</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"यो अनुप्रयोग तपाईँको TV को लागि उपयुक्त छैन।"</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"अनुप्रयोगका रूपमा स्थापना नगरिएको अनुप्रयोग तपाईंको फोनसँग मिल्दो छैन।"</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"प्याकेजका रूपमा स्थापना नगरिएको अनुप्रयोग अमान्य जस्तो देखिन्छ।"</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> तपाईँको ट्याब्लेटमा स्थापित हुन सकेन।"</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"तपाईँको TVमा<xliff:g id="APP_NAME">%1$s</xliff:g>स्थापना गर्न सकिएन।"</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"तपाईँको फोनमा <xliff:g id="APP_NAME">%1$s</xliff:g> जडान हुन सकेन।"</string>
- <string name="launch" msgid="4826921505917605463">"खोल्नुहोस्"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"तपाईंका प्रशासकले अज्ञात स्रोतहरूबाट प्राप्त अनुप्रयोगहरूलाई स्थापना गर्ने अनुमति दिनुहुन्न"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"यस प्रयोगकर्ताले अज्ञात अनुप्रयोगहरू स्थापना गर्न सक्नुहुन्न"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"यो प्रयोगकर्तालाई अनुप्रयोगहरूको स्थापना गर्ने अनुमति छैन"</string>
- <string name="ok" msgid="3468756155452870475">"ठीक छ"</string>
- <string name="settings" msgid="6743583734099755409">"सेटिङहरू"</string>
- <string name="manage_applications" msgid="4033876279091996596">"अनुप्रयोगहरूको व्यवस्थापन गर्नुहोस्"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"अनुप्रयोग विस्थापन गर्ने?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"तपाईँले स्थापना गरिरहनु भएको अनुप्रयोगले अर्कोलाई प्रतिस्थापन गर्ने छ।\n\nतपाईँको पहिलेको सबै प्रयोगकर्ता डेटा बचत हुने छ।"</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"यो एउटा प्रणाली अनुप्रयोग हो।\n\n तपाईँको पहिलेको सबै डेटा बचत हुने छ।"</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"ठाउँभन्दा बाहिर"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> स्थापन गर्न सकिएन। केही ठाउँ खाली गर्नुहोस् र फेरि कोसिस गर्नुहोस्"</string>
- <string name="dlg_ok" msgid="6944357727705699232">"ठीक छ"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"अनुप्रयोग फेला परेन"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"स्थापना भएको अनुप्रयोगहरू सूचीमा अनुप्रयोग फेला परेको थिएन।"</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"अनुमति छैन"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"हालको प्रयोगकर्तालाई यो स्थापना रद्द गर्ने कार्य गर्ने अनुमति छैन।"</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"त्रुटि"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"अनुप्रयोगको स्थापना रद्द गर्न सकिएन।"</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"अनुप्रयोग अस्थापना गर्नुहोस्"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"परिस्कारहरू अस्थापना गर्नुहोस्"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> निम्न अनुप्रयोगको अंश हो:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"के तपाईं यो अनुप्रयोग अस्थापना गर्न चाहनु हुन्छ?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"के तपाईं यो अनुप्रयोग "<b>"सबै"</b>" प्रयोगकर्ताहरूको लागि स्थापना रद्द गर्न चाहनु हुन्छ? अनुप्रयोग र यसको डेटा "<b>"सबै"</b>" प्रयोगकर्ताहरूबाट उपकरणमा हटाइने छ।"</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"के तपाईं प्रयोगकर्ता <xliff:g id="USERNAME">%1$s</xliff:g> को लागि यो अनुप्रयोग स्थापना रद्द गर्न चाहनुहुन्छ?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"यस अनुप्रयोगलाई फ्याक्ट्रीको संस्करणले बदल्ने हो? सबै डेटा हटाइनेछ।"</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"यस अनुप्रयोगलाई फ्याक्ट्रीको संस्करणले बदल्ने हो? सबै डेटा हटाइनेछ। यसले यस यन्त्रका कार्य प्रोफाइल भएका लगायत सबै प्रयोगकर्ताहरूमा असर पार्छ।"</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"चलिरहेका स्थापना रद्द गर्ने कार्यहरू"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"असफल भएका स्थापना रद्द गर्ने कार्यहरू"</string>
- <string name="uninstalling" msgid="5556217435895938250">"अस्थापना गर्दै..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> को स्थापना रद्द गर्दै…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"स्थापना रद्द गर्न सकियो।"</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> को स्थापना रद्द गरियो"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"अस्थापना गर्न असफल"</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> को स्थापना रद्द गर्ने कार्य असफल भयो।"</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"यन्त्रको सक्रिय प्रशासकीय अनुप्रयोगको स्थापना रद्द गर्न मिल्दैन"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"<xliff:g id="USERNAME">%1$s</xliff:g> को यन्त्रको सक्रिय प्रशासकीय अनुप्रयोगको स्थापना रद्द गर्न मिल्दैन"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"अन्य प्रयोगकर्ताहरूका लागि यस अनु्प्रयोगको स्थापना रद्द गरे पनि केही प्रयोगकर्ता वा प्रोफाइलहरूलाई यसको आवश्यकता पर्दछ"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"यो अनुप्रयोग तपाईँको प्रोफाइलका लागि आवश्यक छ र यसको स्थापनालाई रद्द गर्न सकिँदैन।"</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"यो अनुप्रयोग तपाईँको उपकरण प्रशासकलाई आवश्यक छ र स्थापना रद्द गर्न सकिँदैन।"</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"यन्त्रका प्रशासकीय अनुप्रयोगहरूको व्यवस्थापन गर्नुहोस्"</string>
- <string name="manage_users" msgid="3125018886835668847">"प्रयोगकर्ताहरूलाई व्यवस्थापन गर्नुहोस्"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> स्थापना रद्द गर्न सकिँदैन।"</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"प्याकेजलाई पार्सिङ गर्दा एउटा समस्या आयो।"</string>
- <string name="newPerms" msgid="6039428254474104210">"नयाँ"</string>
- <string name="allPerms" msgid="1024385515840703981">"सबै"</string>
- <string name="privacyPerms" msgid="1850527049572617">"गोपनीयता"</string>
- <string name="devicePerms" msgid="6733560207731294504">"उपकरण पहुँच"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"यस अपडेटलाई नयाँ अनुमति आवश्यक पर्दैन।"</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"के तपाईं निम्न अनुमति प्रदान गर्न चाहनु हुन्छ? यसले पहुँच पाउने छ:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"अस्वीकार गर्नुहोस्"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"थप जानकारी"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"जे भए पनि अस्वीकार गर्नुहोस्"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> लाई <xliff:g id="ACTION">%2$s</xliff:g> गर्न अनुमति दिने हो?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> अनुमतिहरूलाई असक्षम पारिएको छ"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"सबै अनुमतिहरूलाई असक्षम पारिएको छ"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"कुनै पनि अनुमतिलाई असक्षम पारिएको छैन"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"अनुमति दिनुहोस्"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"अनुप्रयोगहरू"</string>
- <string name="app_permissions" msgid="3146758905824597178">"अनुप्रयोग अनुमतिहरू"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"फेरि नसोध्नुहोस्"</string>
- <string name="no_permissions" msgid="3210542466245591574">"कुनै अनुमतिहरू छैनन्"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"अतिरिक्त अनुमतिहरू"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
- <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>
+ <string name="app_name" msgid="2792757108872430971">"अनुमति नियन्त्रक"</string>
+ <string name="ok" msgid="4417794827535157922">"ठिक छ"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"अनुमतिहरू"</string>
+ <string name="cancel" msgid="7279939269964834974">"रद्द गर्नुहोस्"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"अनुप्रयोग फेला परेन"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"अस्वीकार गर्नु…"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"अस्वीकार गर्नुहोस् र अब उप्रान्त नसोध्नुहोला"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"थप जानकारी"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"जे भए पनि अस्वीकार गर्नु…"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> लाई <xliff:g id="ACTION">%2$s</xliff:g> अनुमति दिने हो?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> लाई सधैँ <xliff:g id="ACTION">%2$s</xliff:g> अनुमति दिने हो?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"अनुप्रयोग प्रयोग गर्दा मात्र"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"सधैँ"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"अस्वीकार गर्नुहोस् र अब उप्रान्त नसोध्नुहोला"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> अनुमति असक्षम पारिएको छ"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"सबै अनुमति असक्षम पारिएको छ"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"कुनै पनि असक्षम पारिएको छैन"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"अनुमति दिनुहोस्"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"सधैँ अनुमति दिनुहोस्"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"अनुप्रयोग प्रयोगमा भएको बेलामा मात्र अनुमति दिनुहोस्"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"अनुप्रयोगहरू"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"अनुप्रयोगसम्बन्धी अनुमति"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"अनुमतिका प्रबन्धक"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"फेरि नसोध्नुहोला"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"अनुमति दिन भनी कुनै अनुरोध छैन"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"अतिरिक्त अनुमति"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"अनुप्रयोगसम्बन्धी जानकारी खोल्नुहोस्"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
+ <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="old_sdk_deny_warning" msgid="3872277112584842615">"यो अनुप्रयोग Android को पुरानो संस्करणका लागि डिजाइन गरिएको थियो। अनुमति अस्वीकृत गर्नाले यसले चाहिएको जस्तो कार्य नगर्न सक्छ।"</string>
- <string name="default_permission_description" msgid="4992892207044156668">"एउटा अज्ञात कार्य गर्नुहोस्"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"प्रणाली देखाउनुहोस्"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"प्रणाली लुकाउनुहोस्"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> अनुमतिहरु"</string>
- <string name="no_apps" msgid="1965493419005012569">"कुनै अनुप्रयोगहरू छैनन्।"</string>
- <string name="location_settings" msgid="1774875730854491297">"स्थान सेटिङहरू"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> यो यन्त्रका लागि स्थान सेवाहरूको एउटा प्रदायक हो। स्थान पहुँच स्थान सेटिङहरूबाट परिमार्जन गर्न सकिन्छ।"</string>
- <string name="system_warning" msgid="7103819124542305179">"तपाईँले यो अनुमति अस्वीकार गर्नुभयो भने तपाईँको यन्त्रका मूल विशेषताहरू अब चाहेअनुसार कार्य नगर्न सक्छ।"</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"नीतिद्वारा लागू गरियो"</string>
- <string name="loading" msgid="7811651799620593731">"लोड हुँदैछ..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"सबै अनुमतिहरू"</string>
- <string name="other_permissions" msgid="2016192512386091933">"अन्य अनुप्रयोग क्षमताहरू"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"अनुमति अनुरोध"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"स्क्रिन ओभरले पत्ता लाग्यो"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"यो अनुमति सेटिङ परिवर्तन गर्न, तपाईँले पहिला सेटिङ अनुप्रयोगबाट स्क्रिन ओभरले बन्द गर्नु पर्दछ।"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"सेटिङहरू खोल्नुहोस्"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Wear मा स्थापना/स्थापना रद्द गर्ने कारबाहीहरू समर्थित छैनन्।"</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> अद्यावधिक गरिएको छ। <xliff:g id="APP_NAME_1">%1$s</xliff:g> लाई निम्न वस्तु पहुँच गर्न अनुमति दिने हो?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> लाई के माथि पहुँच राख्न दिने भन्ने कुरा छनौट गर्नुहोस्"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> लाई अद्यावधिक गरिएको छ। यस अनुप्रयोगलाई के माथि पहुँच राख्न दिने भन्ने कुरा छनौट गर्नुहोस्।"</string>
- <string name="review_button_cancel" msgid="957906817733578877">"रद्द गर्नुहोस्"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"जारी राख्नुहोस्"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"नयाँ अनुमतिहरू"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"वर्तमान अनुमतिहरू"</string>
- <string name="message_staging" msgid="6151794817691100003">"अनुप्रयोगलाई तयार पार्दै…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"अज्ञात"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"तपाईंको सुरक्षाको लागि, तपाईंको ट्याब्लेटलाई यो स्रोतबाट प्राप्त हुने अज्ञात अनुप्रयोगहरू स्थापना गर्ने अनुमति छैन।"</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"तपाईंको सुरक्षाको लागि, तपाईंको TV लाई यो स्रोतबाट प्राप्त हुने अज्ञात अनुप्रयोगहरू स्थापना गर्ने अनुमति छैन।"</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"तपाईंको सुरक्षाको लागि, तपाईंको फोनलाई यो स्रोतबाट प्राप्त हुने अज्ञात अनुप्रयोगहरू स्थापना गर्ने अनुमति छैन।"</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"तपाईंको फोन र व्यक्तिगत डेटा अज्ञात अनुप्रयोगहरूबाट हुने आक्रमणको चपेटामा पर्ने बढी जोखिममा हुन्छन्। यो अनुप्रयोग स्थापना गरेर तपाईं यसको प्रयोगबाट तपाईंको फोनलाई हुनसक्ने क्षति वा डेटाको नोक्सानीका लागि स्वयं जिम्मेवार हुनुहुन्छ भन्ने कुरामा सहमत हुनुहुन्छ।"</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"तपाईंको ट्याब्लेट र व्यक्तिगत डेटा अज्ञात अनुप्रयोगहरूबाट हुने आक्रमणको चपेटामा पर्ने बढी जोखिममा हुन्छन्। यो अनुप्रयोग स्थापना गरेर तपाईं यसको प्रयोगबाट तपाईंको ट्याब्लेटलाई हुनसक्ने क्षति वा डेटाको नोक्सानीका लागि स्वयं जिम्मेवार हुनुहुन्छ भन्ने कुरामा सहमत हुनुहुन्छ।"</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"तपाईंको TV र व्यक्तिगत डेटा अज्ञात अनुप्रयोगहरूबाट हुने आक्रमणको चपेटामा पर्ने बढी जोखिममा हुन्छन्। यो अनुप्रयोग स्थापना गरेर तपाईं यसको प्रयोगबाट तपाईंको TV लाई हुनसक्ने क्षति वा डेटाको नोक्सानीका लागि स्वयं जिम्मेवार हुनुहुन्छ भन्ने कुरामा सहमत हुनुहुन्छ।"</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"जारी राख्नुहोस्"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"सेटिङहरू"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"वेयर एपहरूको स्थापना/स्थापना रद्द गर्दै"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"यो अनुप्रयोग Android को कुनै पुरानो संस्करणका लागि डिजाइन गरिएको थियो। अनुमति नदिइनुले यसलाई अब उप्रान्त चाहेअनुसार काम गर्न नसक्ने बनाउन पनि सक्छ।"</string>
+ <string name="default_permission_description" msgid="692254823411049573">"कुनै अज्ञात कारबाही गर्नुहोस्"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_1">%2$d</xliff:g> मध्ये <xliff:g id="COUNT_0">%1$d</xliff:g> अनुप्रयोगहरूलाई अनुमति दिइएको छ"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"हालसालैको उपयोग"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"अनुमतिसम्बन्धी ड्यासबोर्ड हेर्नुहोस्"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"प्रणाली देखाउनुहोस्"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"प्रणाली लुकाउनुहोस्"</string>
+ <string name="no_apps" msgid="2377153782338039463">"कुनै पनि अनुप्रयोग छैन"</string>
+ <string name="location_settings" msgid="547378321761364906">"स्थानसम्बन्धी सेटिङहरू"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> यस यन्त्रको स्थानसम्बन्धी सेवा प्रदायक हो। स्थानसम्बन्धी सेटिङहरूमा गई स्थानसम्बन्धी पहुँच परिमार्जन गर्न सकिन्छ।"</string>
+ <string name="system_warning" msgid="6868290533389195836">"तपाईंले यो अनुमति अस्वीकार गर्नुभएमा तपाईंको यन्त्रका मूल सुविधाहरूले अब चाहेअनुसार कार्य नगर्न पनि सक्छन्।"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"नीतिले लागू गरेको"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"नीतिले पृष्ठभूमिको पहुँच असक्षम पारेको छ"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"नीतिले पृष्ठभूमिको पहुँच सक्षम पारेको छ"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"नीतिले अग्रभूमिको पहुँच सक्षम पारेको छ"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"प्रशासकले नियन्त्रण गर्नुभएको"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"प्रशासकले पृष्ठभूमिको पहुँच असक्षम पार्नुभएको छ"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"प्रशासकले पृष्ठभूमिको पहुँच सक्षम पार्नुभएको छ"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"प्रशासकले अग्रभूमिको पहुँच सक्षम पार्नुभएको छ"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"प्रणालीले सेट गरेको अनुमति"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"सधैँ"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"अनुप्रयोग प्रयोग गर्दा मात्र"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"कहिल्यै होइन"</string>
+ <string name="loading" msgid="323483393167148377">"लोड गर्दै…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"सबै अनुमति"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"अनुप्रयोगका अन्य क्षमताहरू"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"अनुमति दिन भनी गरिएको अनुरोध"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"स्क्रिन ओभरले पत्ता लाग्यो"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"यो अनुमतिसम्बन्धी सेटिङ बदल्न तपाईंले पहिला सेटिङ > अनुप्रयोगमा गई स्क्रिन ओभरले निष्क्रिय पार्नु पर्छ।"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"सेटिङहरू खोल्नुहोस्"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Wear मा स्थापना/स्थापना रद्द गर्ने कारबाहीहरू समर्थित छैनन्।"</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> लाई केमाथि पहुँच राख्न दिने हो छनौट गर्नुहोस्"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> अद्यावधिक गरिएको छ। यस अनुप्रयोगलाई केमाथि पहुँच राख्न दिने हो छनौट गर्नुहोस्।"</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"रद्द गर्नुहोस्"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"जारी राख्नुहोस्"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"नयाँ अनुमति"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"एपले हाल प्रयोग गर्ने अनुमति"</string>
+ <string name="message_staging" msgid="641286607664721291">"अनुप्रयोग स्थापना गर्न तयारी गर्दै…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"अज्ञात"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"ड्यासबोर्ड"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">पछिल्लो पटकको पहुँच: <xliff:g id="TIME_3">%1$s</xliff:g> <xliff:g id="NUM_4">%2$s</xliff:g> \n पहुँचहरू (<xliff:g id="NUM_5">%3$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> पहुँच (<xliff:g id="NUM_2">%3$s</xliff:g> पृष्ठभूमिमा)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">पछिल्लो पटकको पहुँच: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> पहुँच\nअवधि: <xliff:g id="TIME_5">%3$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> पहुँच\nअवधि: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">पछिल्लो पटकको पहुँच: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> पहुँचहरू (<xliff:g id="NUM_6">%3$s</xliff:g> पृष्ठभूमिमा)\nअवधि: <xliff:g id="TIME_7">%3$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> पहुँच (<xliff:g id="NUM_2">%3$s</xliff:g> पृष्ठभूमिमा)\nअवधि: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"कुनै पनि अनुमति"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"कुनै पनि समय"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"पछिल्ला ७ दिन"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"पछिल्लो २४ घन्टा"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"पछिल्लो १ घन्टा"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"पछिल्लो १५ मिनेट"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"पछिल्लो १ मिनेट"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"उपयोगको अनुमति छैन"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"जुनसुकै बेला राखिएको पहुँच"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"पछिल्लो ७ दिनमा राखिएको पहुँच"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"पछिल्लो २४ घन्टामा राखिएको पहुँच"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"अन्तिम क्षणमा राखिएको पहुँच"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"पछिल्लो १५ मिनेटमा राखिएको पहुँच"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"पछिल्लो १ मिनेटमा पहुँच राखिएको अनुमति"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"जुनसुकै बेला सबैभन्दा बढी प्रयोग गरिएको अनुमति"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"पछिल्लो ७ दिनमा सबैभन्दा बढी प्रयोग गरिएको अनुमति"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"पछिल्लो २४ घन्टामा सबैभन्दा बढी प्रयोग गरिएको अनुमति"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"पछिल्लो १ घन्टामा सबैभन्दा बढी प्रयोग गरिएको अनुमति"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"पछिल्लो १५ मिनेटमा सबैभन्दा बढी प्रयोग गरिएको अनुमति"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"पछिल्लो १ मिनेटमा सबैभन्दा बढी प्रयोग गरिएको अनुमति"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"अनुप्रयोगहरू"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"यसअनुसार फिल्टर गरिएको: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"फिल्टर हटाउनुहोस्"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"यसअनुसार फिल्टर गर्नुहोस्"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"अनुमतिअनुसार फिल्टर गर्नुहोस्"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"सबैभन्दा धेेरै प्रयोग गरिएको अनुमति"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"सबैभन्दा धेरै पटक पहुँच राखिएको"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"हालसालैका"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"पुनः ताजा गर्नुहोस्"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"अनुप्रयोगको अनुमतिको उपयोग"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"पहुँच: <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="4040424337831328212">"पहुँच: <xliff:g id="NUM">%1$s</xliff:g> पटक। पछिल्लो पटक <xliff:g id="TIME">%2$s</xliff:g> अघि प्रयोग गरिएको।"</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"अनुमति दिनुहोस्"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"सधैँ अनुमति दिनुहोस्"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"अनुप्रयोग प्रयोग भएको बेलामा मात्र अनुमति दिनुहोस्"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"अस्वीकार गर्नुहोस्"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> अनुमति"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="APP">%2$s</xliff:g> का लागि <xliff:g id="PERM">%1$s</xliff:g> को पहुँँच"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> ले <xliff:g id="TIME">%3$s</xliff:g> पहिले तपाईंको <xliff:g id="PERM">%2$s</xliff:g> माथि पहुँच राख्यो।"</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g>तपाईंको <xliff:g id="PERM">%2$s</xliff:g>माथि पहुँच राखेको छैन।"</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"अनुमतिको विस्तृत उपयोग हेर्नुहोस्"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"पछिल्लो पटक पहुँच राखिएको समय: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"कहिल्यै पहुँच गरिएन"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"अनुमति दिइएको"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"प्रयोगमा भएका बेला मात्र अनुमति दिइन्छ"</string>
+ <string name="denied_header" msgid="2277998574238617699">"अस्वीकार गरिएको"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"उयोगसम्बन्धी विस्तृत जानकारी हेर्नुहोस्"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> दिन</item>
+ <item quantity="one">१ दिन</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> घन्टा</item>
+ <item quantity="one">१ घन्टा</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> मिनेट</item>
+ <item quantity="one">१ मिनेट</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> सेकेन्ड</item>
+ <item quantity="one">१ सेकेन्ड</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> तपाईंको <xliff:g id="ROLE_NAME">%2$s</xliff:g> का रूपमा प्रयोग गर्ने हो?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"<b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> को सट्टा तपाईंको <xliff:g id="ROLE_NAME">%2$s</xliff:g> का रूपमा <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> प्रयोग गर्ने हो?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"अनुमतिसम्बन्धी रिमाइन्डरहरू"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> ले तपाईंको स्थान प्रयोग गरिरहेको छ"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"यो अनुप्रयोगले सधैँ तपाईंको स्थान प्रयोग गर्न सक्छ। बदल्न ट्याप गर्नुहोस्।"</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"अनुप्रयोग प्रयोगमा भएको बेला मात्र"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"कुनै पनि अनुमति छैन"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"कुनै पनि अनुमति अस्वीकार गरिएको छैन"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"कुनै पनि अनुप्रयोगलाई अनुमति छैन"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"कुनै पनि अनुप्रयोगको अनुमति अस्वीकार गरिएको छैन"</string>
+ <string name="launch_app" msgid="5641437562665039291">"खोल्नुहोस्"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"स्थापना रद्द गर्नुहोस्"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"जबरजस्ती रोक्नुहोस्"</string>
+ <string name="settings" msgid="2884124136779508907">"सेटिङहरू"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ले तपाईंको यन्त्रमाथि पूर्ण रूपमा पहुँच राख्न सक्छ"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"पहुँचसम्बन्धी <xliff:g id="NUM_SERVICES">%s</xliff:g> सेवाहरूले तपाईंको यन्त्रमाथि पूर्ण रूपमा पहुँच राख्न सक्छन्"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ले तपाईंको स्क्रिन, कारबाही र इनपुट हेर्न, कारबाहीहरू गर्न र डिस्प्ले नियन्त्रण गर्न सक्छ।"</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"यी सेवाहरूले तपाईंको स्क्रिन, कारबाही र इनपुट हेर्न, कारबाहीहरू गर्न र डिस्प्ले नियन्त्रण गर्न सक्छन्।"</string>
+ <string name="default_apps" msgid="8554530939151957828">"पूर्वनिर्धारित अनुप्रयोगहरू"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"कुनै पनि पूर्वनिर्धारित अनुप्रयोग छैन"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"कार्यका लागि पूर्वनिर्धारित"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"कुनै पनि होइन"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"कुनै पनि अनुप्रयोग छैन"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"अनुप्रयोगसम्बन्धी विशेष पहुँच"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"एपसम्बन्धी कुनै विशेष पहुँच छैन"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"कुनै पनि अनुप्रयोग छैन"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"सहायक अनुप्रयोग"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"ब्राउजर अनुप्रयोग"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"फोन अनुप्रयोग"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS अनुप्रयोग"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"आपतकालीन अनुप्रयोग"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Home अनुप्रयोग"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"सङ्गीत अनुप्रयोग"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"ग्यालरी अनुप्रयोग"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"कार मोड नामक फोन अनुप्रयोग"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"कल रिडिरेक्ट गर्ने अनुप्रयोग"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"कललाई स्क्रिनमा देखाउने अनुप्रयोग"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"सहयोगी अनुप्रयोगलाई कल गर्नु…"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"कारको प्रोजेक्सनको अनुप्रयोग"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"कार्य प्रोफाइल समर्थन गर्दैन"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"टिपोट: तपाईंले आफ्नो यन्त्र पुनः सुरु गर्नुभयो र त्यसमा स्क्रिन लक सेट गरिएको छ भने तपाईंले आफ्नो यन्त्र अनलक नगरेसम्म यो अनुप्रयोग सुरु हुन सक्दैन।"</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"सहायकले तपाईंको स्क्रिनमा देखिने वा अनुप्रयोगभित्रबाट पहुँच राख्न सकिने जानकारीलगायत तपाईंको प्रणालीमा प्रयोगमा रहेका अनुप्रयोगसम्बन्धी जानकारी पढ्न सक्ने छ।"</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"डिबग प्रक्रियासम्बन्धी डेटा आदान प्रदान गर्नुहोस्"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"डिबग प्रक्रियाको विस्तृत डेटा आदान प्रदान गर्ने?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> डिबग प्रक्रियासम्बन्धी जानकारी अपलोड गर्न चाहन्छ।"</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"डिबग प्रक्रियासम्बन्धी डेटा आदान प्रदान गर्नुहोस्"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ले <xliff:g id="DATE">%2$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g> मा यो यन्त्रबाट लिएको बगको रिपोर्ट अपलोड गर्ने अनुरोध गर्दै छ। बग रिपोर्टमा प्रयोगकर्ताका नाम, स्ठानसम्बन्धी डेटा, यन्त्रका पहिचानकर्ता र नेटवर्कसम्बन्धी जानकारी जस्ता तपाईंको यन्त्रको व्यक्तिगत जानकारी वा अनुप्रयोगले लग गरेको जानकारी समावेश छ। तपाईंलाई यो जानकारी दिँदा फरक पर्दैन जस्तो लाग्ने विश्वसनीय मान्छे वा अनुप्रयोगसँग मात्र बग रिपोर्टहरू आदान प्रदान गर्नुहोस्। <xliff:g id="APP_NAME_1">%4$s</xliff:g> लाई बग रिपोर्ट अपलोड गर्न दिने हो?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"अनुमति दिनुहोस्"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"अनुमति नदिनुहोस्"</string>
</resources>
diff --git a/res/values-night/themes.xml b/res/values-night/themes.xml
new file mode 100644
index 0000000..1ee2d37
--- /dev/null
+++ b/res/values-night/themes.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 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.
+ -->
+
+<!-- themes for the permission grant dialog. -->
+<resources>
+ <style name="GrantPermissions"
+ 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>
+ </style>
+
+ <style name="Theme.PermissionGrantDialog"
+ parent="@android:style/Theme.DeviceDefault.Dialog">
+ <item name="android:colorBackground">@color/google_grey_800</item>
+ <item name="android:divider">@drawable/list_divider</item>
+ </style>
+
+ <style name="PermissionDialog"
+ parent="@android:style/Theme.DeviceDefault.Dialog.NoActionBar">
+ </style>
+</resources>
\ No newline at end of file
diff --git a/res/values-nl-television/strings.xml b/res/values-nl-television/strings.xml
index c7256e8..88589d7 100644
--- a/res/values-nl-television/strings.xml
+++ b/res/values-nl-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Weigeren en niet meer vragen"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"U kunt dit later wijzigen in Instellingen > Apps"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Systeem weergeven"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"App-machtigingen"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"App-machtigingen"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Machtigingen voor <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Aanvullende machtigingen"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Machtigingen voor <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Weigeren en niet meer vragen"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Je kunt dit later wijzigen via Instellingen > Apps"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Systeem-apps weergeven"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"App-machtigingen"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"App-machtigingen"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g>-machtigingen"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Aanvullende machtigingen"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g>-machtigingen"</string>
</resources>
diff --git a/res/values-nl-watch/strings.xml b/res/values-nl-watch/strings.xml
index 338b79b..ae0a022 100644
--- a/res/values-nl-watch/strings.xml
+++ b/res/values-nl-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Weigeren, niet meer vragen"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Systeem weergeven"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Niet aanpasbaar"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Ja"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Annuleren"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Weigeren, niet meer vragen"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Systeem-apps weergeven"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Niet aanpasbaar"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Ja"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Annuleren"</string>
</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 945de6f..7d73d23 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Pakket-installatie"</string>
- <string name="next" msgid="3057143178373252333">"Volgende"</string>
- <string name="install" msgid="5896438203900042068">"Installeren"</string>
- <string name="done" msgid="3889387558374211719">"Gereed"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Toestaan dat deze app:"</string>
- <string name="cancel" msgid="8360346460165114585">"Annuleren"</string>
- <string name="unknown" msgid="4742479012767208045">"Onbekend"</string>
- <string name="installing" msgid="8613631001631998372">"Installeren..."</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> installeren…"</string>
- <string name="install_done" msgid="3682715442154357097">"App geïnstalleerd."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Wil je deze app installeren? Deze krijgt toegang tot:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Wil je deze app installeren? Hiervoor is geen speciale toegang vereist."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Wil je een update voor deze bestaande app installeren? Je huidige gegevens gaan niet verloren. De bijgewerkte app krijgt toegang tot:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Wil je een update van deze ingebouwde app installeren? Je huidige gegevens gaan niet verloren. De bijgewerkte app krijgt toegang tot:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Wil je een update voor deze bestaande app installeren? Je huidige gegevens gaan niet verloren. Hiervoor is geen speciale toegang vereist."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Wil je een update voor deze ingebouwde app installeren? Je huidige gegevens gaan niet verloren. Hiervoor is geen speciale toegang vereist."</string>
- <string name="install_failed" msgid="6579998651498970899">"App niet geïnstalleerd."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"De installatie van het pakket is geblokkeerd."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"App die niet is geïnstalleerd als pakket conflicteert met een bestaand pakket."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"App die niet is geïnstalleerd als app is niet geschikt voor je tablet."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Deze app is niet compatibel met je tv."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"App die niet is geïnstalleerd als app is niet geschikt voor je telefoon."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"App die niet is geïnstalleerd als pakket lijkt ongeldig te zijn."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> kan niet worden geïnstalleerd op je tablet."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> kan niet worden geïnstalleerd op je tv."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> kan niet worden geïnstalleerd op je telefoon."</string>
- <string name="launch" msgid="4826921505917605463">"Openen"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Je beheerder staat de installatie van apps afkomstig van onbekende bronnen niet toe"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Onbekende apps kunnen niet worden geïnstalleerd door deze gebruiker"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Deze gebruiker mag geen apps installeren"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Instellingen"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Apps beheren"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"App vervangen?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"De app die u installeert, vervangt een andere app.\n\nAl je eerdere gebruikersgegevens worden opgeslagen."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Dit is een systeemapp.\n\nAl je eerdere gebruikersgegevens worden opgeslagen."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Geen ruimte beschikbaar"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> kan niet worden geïnstalleerd. Maak ruimte vrij en probeer het opnieuw."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"App niet gevonden"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"De app is niet gevonden in de lijst met geïnstalleerde apps."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Niet toegestaan"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"De huidige gebruiker mag deze verwijdering niet uitvoeren."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Fout"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"App kan niet worden verwijderd."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"App verwijderen"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Update verwijderen"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> maakt deel uit van de volgende app:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Wil je deze app verwijderen?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Wil je deze app verwijderen voor "<b>"alle"</b>" gebruikers? Deze app en de gegevens ervan worden verwijderd voor "<b>"alle"</b>" gebruikers van het apparaat."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Wil je deze app verwijderen voor de gebruiker <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Deze app vervangen door de fabrieksversie? Alle gegevens worden verwijderd."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Deze app vervangen door de fabrieksversie? Alle gegevens worden verwijderd. Dit geldt voor alle gebruikers van het apparaat, dus ook voor gebruikers met een werkprofiel."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Actieve verwijderingen"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Mislukte verwijderingen"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Verwijderen..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> verwijderen…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Verwijdering voltooid."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> verwijderd"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Verwijdering mislukt."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> kan niet worden verwijderd."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Kan actieve apparaatbeheer-app niet verwijderen"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Kan actieve apparaatbeheer-app niet verwijderen voor <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Deze app is vereist voor sommige gebruikers of profielen en is verwijderd voor andere"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Deze app is vereist voor je profiel en kan niet worden verwijderd."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Deze app is vereist door je apparaatbeheerder en kan niet worden verwijderd."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Apparaatbeheer-apps beheren"</string>
- <string name="manage_users" msgid="3125018886835668847">"Gebruikers beheren"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> kan niet worden verwijderd."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Er is een probleem opgetreden bij het parseren van het pakket."</string>
- <string name="newPerms" msgid="6039428254474104210">"Nieuw"</string>
- <string name="allPerms" msgid="1024385515840703981">"Alle"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privacy"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Apparaattoegang"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Voor deze update zijn geen nieuwe machtigingen vereist."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Wil je de volgende machtigingen verlenen? Hiermee kan toegang worden verkregen tot:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Weigeren"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Meer informatie"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Toch weigeren"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> het volgende toestaan: <xliff:g id="ACTION">%2$s</xliff:g>."</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> uitgeschakeld"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"alle rechten uitgeschakeld"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"geen rechten uitgeschakeld"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Toestaan"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Apps"</string>
- <string name="app_permissions" msgid="3146758905824597178">"App-machtigingen"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Niet meer vragen"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Geen machtigingen"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Aanvullende machtigingen"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Machtigingsbeheerder"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"machtigingen"</string>
+ <string name="cancel" msgid="7279939269964834974">"Annuleren"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"App niet gevonden"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Weigeren"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Weigeren en niet meer vragen"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Meer informatie"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Toch weigeren"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> het volgende toestaan: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> altijd toestaan om <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Alleen als app in gebruik is"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Altijd"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Weigeren en niet meer vragen"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> uitgeschakeld"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"alle rechten uitgeschakeld"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"geen rechten uitgeschakeld"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Toestaan"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Altijd toestaan"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Alleen toestaan terwijl de app wordt gebruikt"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Apps"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"App-machtigingen"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Machtigingsbeheer"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Niet meer vragen"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Geen machtigingen"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Aanvullende machtigingen"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"App-info openen"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other">Nog <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="one">Nog <xliff:g id="COUNT_0">%1$d</xliff:g></item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Deze app is ontworpen voor een oudere versie van Android. Als u geen toestemming geeft, kan de app mogelijk niet functioneren zoals is bedoeld."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"een onbekende actie uitvoeren"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"Verleend aan <xliff:g id="COUNT_0">%1$d</xliff:g> van <xliff:g id="COUNT_1">%2$d</xliff:g> apps"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Systeem weergeven"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Systeem-apps verbergen"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> machtigingen"</string>
- <string name="no_apps" msgid="1965493419005012569">"Geen apps"</string>
- <string name="location_settings" msgid="1774875730854491297">"Locatie-instellingen"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Als je deze machtiging weigert, kan het zijn dat basisfuncties van je apparaat niet meer werken zoals bedoeld."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Afgedwongen door beleid"</string>
- <string name="loading" msgid="7811651799620593731">"Laden…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Alle machtigingen"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Andere app-mogelijkheden"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Toestemmingsverzoek"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Schermoverlay gedetecteerd"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Als u deze instelling voor rechten wilt wijzigen, moet u eerst de schermoverlay uitschakelen via \'Instellingen\' > \'Apps\'"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Instellingen openen"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Acties voor installeren/verwijderen niet ondersteund op Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> is geüpdatet. Wil je <xliff:g id="APP_NAME_1">%1$s</xliff:g> toegang geven tot het volgende?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Kiezen waartoe <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang krijgt"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> is geüpdatet. Kies waartoe je deze app toegang wilt geven."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Annuleren"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Doorgaan"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Nieuwe machtigingen"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Huidige machtigingen"</string>
- <string name="message_staging" msgid="6151794817691100003">"App uitvoeren…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Onbekend"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Uit veiligheidsoverwegingen heeft je tablet geen toestemming om onbekende apps van deze bron te installeren."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Uit veiligheidsoverwegingen heeft je tv geen toestemming om onbekende apps van deze bron te installeren."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Uit veiligheidsoverwegingen heeft je telefoon geen toestemming om onbekende apps van deze bron te installeren."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Je telefoon en persoonlijke gegevens zijn kwetsbaarder voor aanvallen door onbekende apps. Als je deze app installeert, ga je ermee akkoord dat je verantwoordelijk bent voor eventuele schade aan je telefoon of gegevensverlies als gevolg van het gebruik van de app."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Je tablet en persoonlijke gegevens zijn kwetsbaarder voor aanvallen door onbekende apps. Als je deze app installeert, ga je ermee akkoord dat je verantwoordelijk bent voor eventuele schade aan je tablet of gegevensverlies als gevolg van het gebruik van de app."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Je tv en persoonlijke gegevens zijn kwetsbaarder voor aanvallen door onbekende apps. Als je deze app installeert, ga je ermee akkoord dat je verantwoordelijk bent voor eventuele schade aan je tv of gegevensverlies als gevolg van het gebruik van de app."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Doorgaan"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Instellingen"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Wear-apps installeren/verwijderen"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Deze app is ontworpen voor een oudere versie van Android. Als u geen toestemming geeft, kan de app mogelijk niet functioneren zoals is bedoeld."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"een onbekende actie uitvoeren"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"Verleend aan <xliff:g id="COUNT_0">%1$d</xliff:g> van <xliff:g id="COUNT_1">%2$d</xliff:g> apps"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Recent gebruik"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Machtigingsdashboard weergeven"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Systeem-apps weergeven"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Systeem-apps verbergen"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Geen apps"</string>
+ <string name="location_settings" msgid="547378321761364906">"Locatie-instellingen"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Als je deze machtiging weigert, kan het zijn dat basisfuncties van je apparaat niet meer werken zoals bedoeld."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Afgedwongen door beleid"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Toegang op de achtergrond uitgeschakeld op basis van beleid"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Toegang op de achtergrond ingeschakeld op basis van beleid"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Toegang op de voorgrond ingeschakeld op basis van beleid"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Ingesteld door beheerder"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Achtergrondtoegang uitgeschakeld door beheerder"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Achtergrondtoegang ingeschakeld door beheerder"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Voorgrondtoegang ingeschakeld door beheerder"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Machtiging ingesteld door systeem"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Altijd"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Alleen als app in gebruik is"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Nooit"</string>
+ <string name="loading" msgid="323483393167148377">"Laden…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Alle machtigingen"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Andere app-mogelijkheden"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Toestemmingsverzoek"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Schermoverlay gedetecteerd"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Als u deze instelling voor rechten wilt wijzigen, moet u eerst de schermoverlay uitschakelen via Instellingen > Apps"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Instellingen openen"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Acties voor installeren/verwijderen niet ondersteund op Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Kiezen waartoe <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang krijgt"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> is geüpdatet. Kies waartoe je deze app toegang wilt geven."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Annuleren"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Doorgaan"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Nieuwe machtigingen"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Huidige machtigingen"</string>
+ <string name="message_staging" msgid="641286607664721291">"App uitvoeren…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Onbekend"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Dashboard"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Laatste keer geopend: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> toegangsacties (<xliff:g id="NUM_5">%3$s</xliff:g> op de achtergrond)</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> toegangsacties (<xliff:g id="NUM_2">%3$s</xliff:g> op de achtergrond)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Laatste keer geopend: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> toegangsacties\nDuur: <xliff:g id="TIME_5">%3$s</xliff:g></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\nDuur: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Laatste keer geopend: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> toegangsacties (<xliff:g id="NUM_6">%3$s</xliff:g> op de achtergrond)\nDuur: <xliff:g id="TIME_7">%3$s</xliff:g></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 (<xliff:g id="NUM_2">%3$s</xliff:g> op de achtergrond)\nDuur: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Elke machtiging"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Altijd"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Afgelopen 7 dagen"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Afgelopen 24 uur"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Afgelopen uur"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Afgelopen 15 minuten"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Afgelopen minuut"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Geen gebruik van machtigingen"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Toegang op elk willekeurig moment"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Toegang in de afgelopen zeven dagen"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Toegang in de afgelopen 24 uur"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Toegang in het afgelopen uur"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Toegang in de afgelopen vijftien minuten"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Toegang in de afgelopen minuut"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Top machtigingsgebruik op elk willekeurig moment"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Top machtigingsgebruik in de afgelopen zeven dagen"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Top machtigingsgebruik in de afgelopen 24 uur"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Top machtigingsgebruik in het afgelopen uur"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Top machtigingsgebruik in het afgelopen kwartier"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Top machtigingsgebruik in de afgelopen minuut"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Apps"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Gefilterd op: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Filter verwijderen"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filteren op"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filteren op machtigingen"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Meeste machtigingen"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Meeste toegangsacties"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Recent"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Vernieuwen"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Gebruik van app-machtigingen"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Toegang: <xliff:g id="NUM">%1$s</xliff:g> keer. Laatst gebruikt: <xliff:g id="TIME">%2$s</xliff:g> geleden."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Toestaan"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Altijd toestaan"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Alleen toestaan terwijl de app wordt gebruikt"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Weigeren"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g>-machtiging"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Toegang tot <xliff:g id="PERM">%1$s</xliff:g> voor <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> heeft <xliff:g id="TIME">%3$s</xliff:g> geleden toegang tot je <xliff:g id="PERM">%2$s</xliff:g> gehad."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> heeft geen toegang verkregen tot je <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Gedetailleerd machtigingsgebruik weergeven"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Laatste keer geopend: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Nooit geopend"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Toegestaan"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Alleen toegestaan tijdens gebruik"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Geweigerd"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Gedetailleerd gebruik bekijken"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dagen</item>
+ <item quantity="one">1 dag</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> uur</item>
+ <item quantity="one">1 uur</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minuten</item>
+ <item quantity="one">1 minuut</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> seconden</item>
+ <item quantity="one">1 seconde</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> gebruiken als je <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"<b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> in plaats van <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> gebruiken als je <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Herinneringen voor machtigingen"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> maakt gebruik van je locatie"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Deze app heeft altijd toegang tot je locatie. Tik om dit te wijzigen."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Alleen terwijl de app wordt gebruikt"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Geen machtigingen toegestaan"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Geen machtigingen geweigerd"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Geen apps toegestaan"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Geen apps geweigerd"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Openen"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Verwijderen"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Gedwongen stoppen"</string>
+ <string name="settings" msgid="2884124136779508907">"Instellingen"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> heeft volledige toegang tot je apparaat"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> toegankelijkheidsservices hebben volledige toegang tot je apparaat"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> kan je scherm, acties en invoer bekijken, acties uitvoeren en het display beheren."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Deze services kunnen je scherm, acties en invoer bekijken, acties uitvoeren en het display beheren."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Standaard-apps"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Geen standaard-apps"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Standaard voor werk"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Geen"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Geen apps"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Speciale app-toegang"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Geen speciale app-toegang"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Geen apps"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"App voor assistentie"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Browser-app"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Telefoon-app"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Sms-app"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Nood-app"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Startscherm-app"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Muziek-app"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Galerij-app"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Telefoon-app voor automodus"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"App voor gesprekdoorschakeling"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"App voor gesprekken screenen"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Bijbehorende app voor bellen"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Autoprojectie-app"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Ondersteunt geen werkprofielen"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Opmerking: Als je het apparaat opnieuw opstart en een schermvergrendeling hebt ingesteld, kan deze app pas worden gestart nadat je het apparaat hebt ontgrendeld."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"De Assistent kan informatie over de gebruikte apps in je systeem lezen, waaronder informatie die zichtbaar is op je scherm of toegankelijk is in de apps."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Foutopsporingsgegevens delen"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Gedetailleerde foutopsporingsgegevens delen?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> wil foutopsporingsinformatie uploaden."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Foutopsporingsgegevens delen"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> wil een bugrapport van dit apparaat uploaden dat is gemaakt op <xliff:g id="DATE">%2$s</xliff:g> om <xliff:g id="TIME">%3$s</xliff:g>. Bugrapporten omvatten persoonsgegevens over je apparaat of gegevens die zijn geregistreerd door apps, zoals gebruikersnamen, locatiegegevens, apparaat-ID\'s en netwerkgegevens. Deel alleen bugrapporten met mensen en apps die je met deze informatie vertrouwt. Wil je <xliff:g id="APP_NAME_1">%4$s</xliff:g> toestaan een bugrapport te uploaden?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Toestaan"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Weigeren"</string>
</resources>
diff --git a/res/values-or-television/strings.xml b/res/values-or-television/strings.xml
new file mode 100644
index 0000000..fe90a66
--- /dev/null
+++ b/res/values-or-television/strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 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.
+ -->
+
+<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="7721279038965659947">"ମନାକରନ୍ତୁ ଏବଂ ପୁଣି ପଚାରନ୍ତୁ ନାହିଁ"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"ଏହାକୁ ଆପଣ ପରେ ଆପ୍ସ ସେଟିଂସ୍ରେ> ବଦଳାଇପାରିବେ"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"ସିଷ୍ଟମ୍ ଆପ୍ସ ଦେଖାନ୍ତୁ"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"ଆପ୍ ଅନୁମତିଗୁଡ଼ିକ"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"ଆପ୍ ଅନୁମତିଗୁଡ଼ିକ"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> ଅନୁମତିଗୁଡ଼ିକ"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"ଅତିରିକ୍ତ ଅନୁମତିଗୁଡ଼ିକ"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> ଅନୁମତିଗୁଡ଼ିକ"</string>
+</resources>
diff --git a/res/values-or-watch/strings.xml b/res/values-or-watch/strings.xml
new file mode 100644
index 0000000..cae086f
--- /dev/null
+++ b/res/values-or-watch/strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 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.
+ -->
+
+<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="2362190433398675134">"ମନାକରନ୍ତୁ,ପୁଣି ପଚାରନ୍ତୁ ନାହିଁ"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"ସିଷ୍ଟମ୍ ଆପ୍ସ ଦେଖାନ୍ତୁ"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"ଏହା ବଦଳାଯାଇପାରିବ ନାହିଁ"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"ହଁ"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"ବାତିଲ୍"</string>
+</resources>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 02a26ae..975ea87 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,200 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"ପ୍ୟାକେଜ୍ ଇନଷ୍ଟଲର୍"</string>
- <string name="next" msgid="3057143178373252333">"ପରବର୍ତ୍ତୀ"</string>
- <string name="install" msgid="5896438203900042068">"ଇନଷ୍ଟଲ୍ କରନ୍ତୁ"</string>
- <string name="done" msgid="3889387558374211719">"ହୋଇଗଲା"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"ଏହି ଆପ୍କୁ ଏହା କରିବାକୁ ଦିଅନ୍ତୁ:"</string>
- <string name="cancel" msgid="8360346460165114585">"କ୍ୟାନ୍ସଲ୍ କରନ୍ତୁ"</string>
- <string name="unknown" msgid="4742479012767208045">"ଅଜଣା"</string>
- <string name="installing" msgid="8613631001631998372">"ଇନଷ୍ଟଲ୍ କରାଯାଉଛି…"</string>
- <!-- no translation found for installing_app (4097935682329028894) -->
- <skip />
- <string name="install_done" msgid="3682715442154357097">"ଆପ୍ ଇନଷ୍ଟଲ୍ ହୋଇଗଲା।"</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"ଏହି ଆପ୍ଲିକେଶନ୍ ଆପଣ ଇନଷ୍ଟଲ୍ କରିବେ କି? ଏହିଗୁଡ଼ିକୁ ଏହା ଆକ୍ସେସ୍ କରିପାରିବ:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"ଏହି ଆପ୍ଲିକେଶନ୍ ଆପଣ ଇନଷ୍ଟଲ୍ କରିବେ କି? ଏହା କୌଣସି ବିଶେଷ ପ୍ରକାରର ଆକ୍ସେସ୍ ଆବଶ୍ୟକ କରେନାହିଁ।"</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"ପୂର୍ବରୁ ଥିବା ଏହି ଆପ୍ଲିକେଶନ୍ରେ ଆପଣ ଏକ ଅପଡେଟ୍ ଇନଷ୍ଟଲ୍ କରିବେ କି? ଏଥିରେ ଥିବା ଆପଣଙ୍କ ଡାଟା ନଷ୍ଟ ହେବନାହିଁ। ଅପଡେଟ୍ ହେବାପରେ ଆପ୍ଲିକେଶନ୍ଟି ଏହିଗୁଡ଼ିକୁ ଆକ୍ସେସ୍ କରିପାରିବ:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"ଏହି ବିଲ୍ଟ-ଇନ୍ ଆପ୍ଲିକେଶନ୍ରେ ଆପଣ ଏକ ଅପଡେଟ୍ ଇନଷ୍ଟଲ୍ କରିବେ କି? ଏଥିରେ ଥିବା ଆପଣଙ୍କ ଡାଟା ନଷ୍ଟ ହେବନାହିଁ। ଅପଡେଟ୍ ହେବାପରେ ଆପ୍ଲିକେଶନ୍ଟି ଏହିଗୁଡ଼ିକୁ ଆକ୍ସେସ୍ କରିପାରିବ:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"ଆପଣ ବର୍ତ୍ତମାନର ଏହି ଆପ୍ଲିକେଶନ୍ର ଏକ ଅପଡେଟ୍ ଇନଷ୍ଟଲ୍ କରିବାକୁ ଚାହୁଁଛନ୍ତି କି? ଆପଣଙ୍କ ବର୍ତ୍ତମାନର ଡାଟା ନଷ୍ଟ ହେବନାହିଁ। ଏଥିରେ କୌଣସି ବିଶେଷ ଆକ୍ସେସ୍ର ଆବଶ୍ୟକତା ନାହିଁ।"</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"ଆପଣ ବର୍ତ୍ତମାନର ଏହି ବିଲ୍ଟ-ଇନ୍ ଆପ୍ଲିକେଶନ୍ର ଏକ ଅପଡେଟ୍ ଇନଷ୍ଟଲ୍ କରିବାକୁ ଚାହୁଁଛନ୍ତି କି? ଆପଣଙ୍କ ବର୍ତ୍ତମାନର ଡାଟା ନଷ୍ଟ ହେବନାହିଁ। ଏଥିରେ କୌଣସି ବିଶେଷ ଆକ୍ସେସ୍ର ଆବଶ୍ୟକତା ନାହିଁ।"</string>
- <string name="install_failed" msgid="6579998651498970899">"ଆପ୍ ଇନଷ୍ଟଲ୍ ହୋଇନାହିଁ।"</string>
- <!-- no translation found for install_failed_blocked (1606870930588770025) -->
- <skip />
- <!-- no translation found for install_failed_conflict (5336045235168070954) -->
- <skip />
- <!-- no translation found for install_failed_incompatible (6682387386242708974) -->
- <skip />
- <!-- no translation found for install_failed_incompatible (3553367270510072729) -->
- <skip />
- <!-- no translation found for install_failed_incompatible (7917996365659426872) -->
- <skip />
- <!-- no translation found for install_failed_invalid_apk (269885385245534742) -->
- <skip />
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g>ଟି ଆପଣଙ୍କ ଟାବଲେଟ୍ରେ ଇନଷ୍ଟଲ୍ କରାଯାଇପାରିଲା ନାହିଁ।"</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> ଆପଣଙ୍କ ଟିଭିରେ ଇନଷ୍ଟଲ୍ କରାଯାଇପାରିଲା ନାହିଁ।"</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g>ଟି ଆପଣଙ୍କ ଫୋନ୍ରେ ଇନଷ୍ଟଲ୍ କରାଯାଇପାରିଲା ନାହିଁ।"</string>
- <string name="launch" msgid="4826921505917605463">"ଖୋଲନ୍ତୁ"</string>
- <!-- no translation found for unknown_apps_admin_dlg_text (7488386758312008790) -->
- <skip />
- <!-- no translation found for unknown_apps_user_restriction_dlg_text (5785226253054083336) -->
- <skip />
- <!-- no translation found for install_apps_user_restriction_dlg_text (5041150186260066212) -->
- <skip />
- <string name="ok" msgid="3468756155452870475">"ଠିକ୍ ଅଛି"</string>
- <string name="settings" msgid="6743583734099755409">"ସେଟିଙ୍ଗ"</string>
- <string name="manage_applications" msgid="4033876279091996596">"ଆପ୍ଗୁଡ଼ିକର ପରିଚାଳନା କରନ୍ତୁ"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"ଆପ୍ ବଦଳାଇବେ?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"ଆପଣ ଯେଉଁ ଆପ୍ ଇନଷ୍ଟଲ୍ କରୁଛନ୍ତି, ତାହା ଅନ୍ୟ ଆପ୍ର ସ୍ଥାନ ନେଇଯିବ।\n\nଆପଣଙ୍କ ସମସ୍ତ ପୂର୍ବ ୟୁଜର୍ ଡାଟା ସେଭ୍ କରାଯିବ।"</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"ଏହା ଏକ ସିଷ୍ଟମ୍ ଆପ୍।\n\nଆପଣଙ୍କ ସମସ୍ତ ପୂର୍ବ ୟୁଜର୍ ଡାଟା ସେଭ୍ କରାଯିବ।"</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"ଆଉ ସ୍ଥାନ ନାହିଁ"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> ଇନଷ୍ଟଲ୍ କରାଯାଇପାରିଲା ନାହିଁ। କିଛି ସ୍ଥାନ ଖାଲିକରି ପୁଣିଥରେ ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
- <string name="dlg_ok" msgid="6944357727705699232">"ଠିକ୍ ଅଛି"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"ଆପ୍ ମିଳିଲା ନାହିଁ"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"ଇନଷ୍ଟଲ୍ କରାଯାଇଥିବା ଆପ୍ ତାଲିକାରେ ଆପ୍ଟି ମିଳିଲା ନାହିଁ।"</string>
- <!-- no translation found for user_is_not_allowed_dlg_title (118128026847201582) -->
- <skip />
- <!-- no translation found for user_is_not_allowed_dlg_text (739716827677987545) -->
- <skip />
- <!-- no translation found for generic_error_dlg_title (2684806600635296961) -->
- <skip />
- <!-- no translation found for generic_error_dlg_text (4288738047825333954) -->
- <skip />
- <string name="uninstall_application_title" msgid="1860074100811653963">"ଆପ୍ ଅନଇନଷ୍ଟଲ୍ କରନ୍ତୁ"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"ଅପଡେଟ୍ ଅନଇନଷ୍ଟଲ୍ କରନ୍ତୁ"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> ହେଉଛି ନିମ୍ନ ଆପ୍ର ଏକ ଅଂଶ।"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"ଆପଣ ଏହି ଆପ୍ ଅନଇନଷ୍ଟଲ୍ କରିବାକୁ ଚାହାଁନ୍ତି କି?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"ଆପଣ "<b>"ସମସ୍ତ"</b>" ୟୁଜର୍ଙ୍କ ପାଇଁ ଏହି ଆପ୍କୁ ଅନଷ୍ଟଲ୍ କରିବାକୁ ଚାହୁଁଛନ୍ତି କି? ଡିଭାଇସ୍ରେ ଥିବା "<b>"ସମସ୍ତ"</b>" ୟୁଜର୍ ଆପ୍ଲିକେଶନ୍ ଏବଂ ତାହାର ଡାଟା ବାହାର କରିଦିଆଯିବ।"</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"ୟୁଜର୍ <xliff:g id="USERNAME">%1$s</xliff:g>ଙ୍କ ପାଇଁ ଆପଣ ଏହି ଆପ୍ ଇନଷ୍ଟଲ୍ କରିବେ କି?"</string>
- <!-- no translation found for uninstall_update_text (1394549691152728409) -->
- <skip />
- <!-- no translation found for uninstall_update_text_multiuser (2083665452990861991) -->
- <skip />
- <!-- no translation found for uninstalling_notification_channel (5698369661583525583) -->
- <skip />
- <!-- no translation found for uninstall_failure_notification_channel (8224276726364132314) -->
- <skip />
- <string name="uninstalling" msgid="5556217435895938250">"ଅନଇନଷ୍ଟଲ୍ କରାଯାଉଛି…"</string>
- <!-- no translation found for uninstalling_app (2773617614877719294) -->
- <skip />
- <string name="uninstall_done" msgid="3792487853420281888">"ଅନଇନଷ୍ଟଲ୍ ହୋଇଗଲା।"</string>
- <!-- no translation found for uninstall_done_app (775837862728680479) -->
- <skip />
- <string name="uninstall_failed" msgid="631122574306299512">"ଅନଇନଷ୍ଟଲ୍ କରାଯାଇପାରିଲା ନାହିଁ।"</string>
- <!-- no translation found for uninstall_failed_app (945277834056527022) -->
- <skip />
- <!-- no translation found for uninstall_failed_device_policy_manager (2727361164694743362) -->
- <skip />
- <!-- no translation found for uninstall_failed_device_policy_manager_of_user (2161462242935805756) -->
- <skip />
- <!-- no translation found for uninstall_all_blocked_profile_owner (3544933038594382346) -->
- <skip />
- <!-- no translation found for uninstall_blocked_profile_owner (6912141045528994954) -->
- <skip />
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"ଆପଣଙ୍କ ଡିଭାଇସ୍ ଆଡମିନିଷ୍ଟ୍ରେଟର୍ ଏହି ଆପ୍ ଆବଶ୍ୟକ କରନ୍ତୁ ଏବଂ ଏହାକୁ ଅନ୍ଇନଷ୍ଟଲ୍ କରାଯାଇପାରିବ ନାହିଁ।"</string>
- <!-- no translation found for manage_device_administrators (118178632652346535) -->
- <skip />
- <!-- no translation found for manage_users (3125018886835668847) -->
- <skip />
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> ଅନଇନଷ୍ଟଲ୍ କରାଯାଇପାରିଲା ନାହିଁ।"</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"ଏହି ପ୍ୟାକେଜ୍ ପାର୍ସ କରିବାରେ ସମସ୍ୟା ଥିଲା।"</string>
- <string name="newPerms" msgid="6039428254474104210">"ନୂଆ"</string>
- <string name="allPerms" msgid="1024385515840703981">"ସମସ୍ତ"</string>
- <string name="privacyPerms" msgid="1850527049572617">"ଗୋପନିୟତା"</string>
- <string name="devicePerms" msgid="6733560207731294504">"ଡିଭାଇସ୍ ଆକ୍ସେସ୍"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"ଏହି ଅପଡେଟ୍ କୌଣସି ନୂଆ ଅନୁମତି ଆବଶ୍ୟକ କରେନାହିଁ"</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"ଆପଣ ନିମ୍ନ ଅନୁମତିଗୁଡ଼ିକୁ ମଞ୍ଜୁର କରିବେ କି? ଏହିଗୁଡ଼ିକ ଆକ୍ସେସ୍ କରିପାରିବ:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"ପ୍ରତ୍ୟାଖ୍ୟାନ"</string>
- <!-- no translation found for grant_dialog_button_more_info (2218220771432058426) -->
- <skip />
- <!-- no translation found for grant_dialog_button_deny_anyway (847960499284125250) -->
- <skip />
- <string name="current_permission_template" msgid="6378304249516652817">"<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>ଟିରୁ <xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>ଟି"</string>
- <!-- no translation found for permission_warning_template (7332275268559121742) -->
- <skip />
- <!-- no translation found for permission_revoked_count (7386129423432613024) -->
- <skip />
- <!-- no translation found for permission_revoked_all (8595742638132863678) -->
- <skip />
- <!-- no translation found for permission_revoked_none (2059511550181271342) -->
- <skip />
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"ଅନୁମତି ଦିଅନ୍ତୁ"</string>
- <!-- no translation found for app_permissions_breadcrumb (3390836200791539264) -->
- <skip />
- <string name="app_permissions" msgid="3146758905824597178">"ଆପ୍ ଅନୁମତି"</string>
- <!-- no translation found for never_ask_again (1089938738199748687) -->
- <skip />
- <string name="no_permissions" msgid="3210542466245591574">"କୌଣସି ଅନୁମତି ନାହିଁ"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"ଅତିରିକ୍ତ ଅନୁମତି"</string>
- <!-- no translation found for additional_permissions_more (945127158155064388) -->
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"ଏହି ଆପ୍ Androidର ଏକ ପୁରୁଣା ସଂସ୍କରଣ ପାଇଁ ଡିଜାଇନ୍ କରାଯାଇଥିଲା। ଅନୁମତି ପ୍ରତ୍ୟାଖ୍ୟାନ କରିବା ଦ୍ୱାରା ଏହା ଠିକ୍ ଭାବେ ଆଉ କାମ ନକରିପାରେ।"</string>
- <string name="default_permission_description" msgid="4992892207044156668">"ଏକ ଅଜଣା କାମ କରେ"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"ସିଷ୍ଟମ୍କୁ ଦେଖାନ୍ତୁ"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"ସିଷ୍ଟମ୍କୁ ଲୁଚାନ୍ତୁ"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> ଅନୁମତି"</string>
- <!-- no translation found for no_apps (1965493419005012569) -->
- <skip />
- <!-- no translation found for location_settings (1774875730854491297) -->
- <skip />
- <!-- no translation found for location_warning (8778701356292735971) -->
- <skip />
- <!-- no translation found for system_warning (7103819124542305179) -->
- <skip />
- <!-- no translation found for permission_summary_enforced_by_policy (3418617316188986205) -->
- <skip />
- <!-- no translation found for loading (7811651799620593731) -->
- <skip />
- <!-- no translation found for all_permissions (5156669007784613042) -->
- <skip />
- <!-- no translation found for other_permissions (2016192512386091933) -->
- <skip />
- <!-- no translation found for permission_request_title (1204446718549121199) -->
- <skip />
- <!-- no translation found for screen_overlay_title (3021729846864038529) -->
- <skip />
- <!-- no translation found for screen_overlay_message (2141944461571677331) -->
- <skip />
- <!-- no translation found for screen_overlay_button (4344544843349937743) -->
- <skip />
- <!-- no translation found for wear_not_allowed_dlg_title (8104666773577525713) -->
- <skip />
- <!-- no translation found for wear_not_allowed_dlg_text (1322352525843583064) -->
- <skip />
- <!-- no translation found for permission_review_warning_title_template_update (2569412700408535872) -->
- <skip />
- <!-- no translation found for permission_review_title_template_install (6819338441305295479) -->
- <skip />
- <!-- no translation found for permission_review_title_template_update (8632233603161669426) -->
- <skip />
- <!-- no translation found for review_button_cancel (957906817733578877) -->
- <skip />
- <!-- no translation found for review_button_continue (4809162078179371370) -->
- <skip />
- <!-- no translation found for new_permissions_category (3213523410139204183) -->
- <skip />
- <!-- no translation found for current_permissions_category (998210994450606094) -->
- <skip />
- <!-- no translation found for message_staging (6151794817691100003) -->
- <skip />
- <!-- no translation found for app_name_unknown (8931522764510159105) -->
- <skip />
- <!-- no translation found for untrusted_external_source_warning (1483151219938173935) -->
- <skip />
- <!-- no translation found for untrusted_external_source_warning (5373768281884328560) -->
- <skip />
- <!-- no translation found for untrusted_external_source_warning (2223486836232706553) -->
- <skip />
- <!-- no translation found for anonymous_source_warning (7700263729981815614) -->
- <skip />
- <!-- no translation found for anonymous_source_warning (8854462805499848630) -->
- <skip />
- <!-- no translation found for anonymous_source_warning (1291472686734385872) -->
- <skip />
- <!-- no translation found for anonymous_source_continue (2094381167954332292) -->
- <skip />
- <!-- no translation found for external_sources_settings (8601453744517291632) -->
- <skip />
- <!-- no translation found for wear_app_channel (6200840123672949356) -->
- <skip />
+ <string name="app_name" msgid="2792757108872430971">"ଅନୁମତି ନିୟନ୍ତ୍ରକ"</string>
+ <string name="ok" msgid="4417794827535157922">"ଓକେ"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"ଅନୁମତିଗୁଡ଼ିକ"</string>
+ <string name="cancel" msgid="7279939269964834974">"ବାତିଲ୍ କରନ୍ତୁ"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"ଆପ୍ ମିଳିଲା ନାହିଁ"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"ଅସ୍ଵୀକାର କରନ୍ତୁ"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"ମନା କରନ୍ତୁ ଏବଂ ପୁଣି ପଚାରନ୍ତୁ ନାହିଁ"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"ଅଧିକ ସୂଚନା"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"ତଥାପି ମନାକରନ୍ତୁ"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>କୁ <xliff:g id="ACTION">%2$s</xliff:g> ପାଇଁ ଅନୁମତି ଦେବେ କି?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ସବୁବେଳେ <xliff:g id="ACTION">%2$s</xliff:g>କୁ ଅନୁମତି ଦେବେ?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"କେବଳ ଆପ୍ ବ୍ୟବହାର ସମୟରେ"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"ସର୍ବଦା"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"ମନାକରନ୍ତୁ ଏବଂ ପୁଣି ପଚାରନ୍ତୁ ନାହିଁ"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> ଅନୁମତି ଅକ୍ଷମ କରାଯାଇଛି"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"ସମସ୍ତ ଅନୁମତି ଅକ୍ଷମ କରାଯାଇଛି"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"କୌଣସି ଅନୁମତି ଅକ୍ଷମ କରାଯାଇନାହିଁ"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"ଅନୁମତି ଦିଅନ୍ତୁ"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"ସଦାବେଳ ପାଇଁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"ଆପ୍ ବ୍ୟବହାରରେ ରହିଥିବା ବେଳେ କେବଳ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"ଆପ୍ସ"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"ଆପ୍ ଅନୁମତିଗୁଡ଼ିକ"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"ଅନୁମତି ପରିଚାଳକ"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"ପୁଣି ପଚାରନ୍ତୁ ନାହିଁ"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"କୌଣସି ଅନୁମତିଗୁଡ଼ିକ ନାହିଁ"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"ଅତିରିକ୍ତ ଅନୁମତିଗୁଡ଼ିକ"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"ଆପ୍ର ସୂଚନା ଖୋଲନ୍ତୁ"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
+ <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="old_sdk_deny_warning" msgid="6018489265342857714">"ଏହି ଆପ୍ Androidର ଏକ ପୁରୁଣା ସଂସ୍କରଣ ପାଇଁ ଡିଜାଇନ୍ କରାଯାଇଥିଲା। ଅନୁମତି ପ୍ରତ୍ୟାଖ୍ୟାନ କରିବା ଦ୍ୱାରା ଏହା ଠିକ୍ ଭାବେ ଆଉ କାମ ନକରିପାରେ।"</string>
+ <string name="default_permission_description" msgid="692254823411049573">"ଏହା ଏକ ଅଜଣା କାର୍ଯ୍ୟ ସମ୍ପାଦନ କରିଥାଏ"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_1">%2$d</xliff:g>ଆପ୍ସରୁ <xliff:g id="COUNT_0">%1$d</xliff:g>କୁ ଅନୁମତି ଦିଆଯାଇଛି"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"ନିକଟରେ ହୋଇଥିବା ବ୍ୟବହାର"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"ଅନୁମତି ଡ୍ୟାସ୍ବୋର୍ଡ ଦେଖନ୍ତୁ"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"ସିଷ୍ଟମ୍ ଦେଖାନ୍ତୁ"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"ସିଷ୍ଟମ୍କୁ ଲୁଚାନ୍ତୁ"</string>
+ <string name="no_apps" msgid="2377153782338039463">"କୌଣସି ଆପ୍ ନାହିଁ"</string>
+ <string name="location_settings" msgid="547378321761364906">"ଲୋକେସନ୍ ସେଟିଂସ୍"</string>
+ <string name="location_warning" msgid="4687406043150343369">"ଏହି ଡିଭାଇସ୍ ପାଇଁ <xliff:g id="APP_NAME">%1$s</xliff:g> ଲୋକେସନ୍ ସେବା ପ୍ରଦାନ କରେ। ଲୋକେସନ୍ ସେଟିଂସ୍ରୁ ଲୋକେସନ୍ ଆକ୍ସେସ୍ ବଦଳାଯାଇପାରିବ।"</string>
+ <string name="system_warning" msgid="6868290533389195836">"ଏହି ଅନୁମତିକୁ ଯଦି ଆପଣ ପ୍ରତ୍ୟାଖ୍ୟାନ କରନ୍ତି, ଆପଣଙ୍କ ଡିଭାଇସ୍ର ସାଧାରଣ ସୁବିଧାଗୁଡ଼ିକ ଆଉ କାର୍ଯ୍ୟ ନକରିପାରେ।"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"ନିତୀଦ୍ୱାରା ଲାଗୁ କରାଯାଇଛି"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"ନିତୀ ଅନୁସାରେ ବ୍ୟାକ୍ଗ୍ରାଉଣ୍ଡ ଆକ୍ସେସ୍ ଅକ୍ଷମ କରାଯାଇଛି"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"ନିତୀ ଅନୁସାରେ ପୃଷ୍ଠପଟ ଆକ୍ସେସ୍ ସକ୍ଷମ କରାଯାଇଛି"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"ନିତୀ ଅନୁସାରେ ସମ୍ମୁଖଭାଗ ଆକ୍ସେସ୍ ସକ୍ଷମ କରାଯାଇଛି"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"ବ୍ୟବସ୍ଥାପକଙ୍କ ଦ୍ୱାରା ନିୟନ୍ତ୍ରିତ"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"ବ୍ୟବସ୍ଥାପକଙ୍କ ଦ୍ୱାରା ପୃଷ୍ଠଭୂମି ଆକ୍ସେସ୍ ଅକ୍ଷମ କରାଯାଇଛି"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"ବ୍ୟବସ୍ଥାପକଙ୍କ ଦ୍ୱାରା ପୃଷ୍ଠଭୂମି ଆକ୍ସେସ୍ ସକ୍ଷମ କରାଯାଇଛି"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"ବ୍ୟବସ୍ଥାପକଙ୍କ ଦ୍ୱାରା ସମ୍ମୁଖଭାଗ ଆକ୍ସେସ୍ ସକ୍ଷମ କରାଯାଇଛି"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"ସିଷ୍ଟମ୍ ଦ୍ବାରା ଅନୁମତି ସେଟ୍ ହୋଇଛି"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"ସର୍ବଦା"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"କେବଳ ଆପ୍ ବ୍ୟବହାର ସମୟରେ"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"ଆଦୌ ନୁହେଁ"</string>
+ <string name="loading" msgid="323483393167148377">"ଲୋଡ୍ ହେଉଛି…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"ସମସ୍ତ ଅନୁମତିଗୁଡ଼ିକ"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"ଅନ୍ୟାନ୍ୟ ଆପ୍ ଦକ୍ଷତା"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"ଅନୁମତି ଅନୁରୋଧ"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"ସ୍କ୍ରୀନ୍ ଓଭର୍ଲେ ଚିହ୍ନଟ ହୋଇଛି"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"ଏହି ଅନୁମତି ସେଟିଙ୍ଗ ବଦଳାଇବାକୁ, ପ୍ରଥମେ ଆପଣଙ୍କୁ ସେଟିଂସ୍ରୁ ଓ ଆପ୍ରୁ ସ୍କ୍ରୀନ୍ ଓଭର୍ଲେ ବନ୍ଦ କରିବାକୁ ପଡିବ"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"ସେଟିଂସ୍ ଖୋଲନ୍ତୁ"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android ୱିୟର୍"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"ୱିୟର୍ରେ ଇନଷ୍ଟଲ୍/ଅନଇନଷ୍ଟଲ୍ କାର୍ଯ୍ୟଗୁଡ଼ିକ ସମର୍ଥନ କରେନାହିଁ।"</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ଆକ୍ସେସ୍ କରିବା ପାଇଁ କେଉଁସବୁ ଅନୁମତି ଦିଆଯିବ, ତାହା ବାଛନ୍ତୁ"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ଅପଡେଟ୍ କରାଯାଇଛି। ଏହି ଆପ୍ କେଉଁସବୁ ଆକ୍ସେସ୍ କରିପାରିବ, ତାହା ବାଛନ୍ତୁ।"</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"ବାତିଲ୍"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"ଜାରି ରଖନ୍ତୁ"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"ନୂଆ ଅନୁମତିଗୁଡ଼ିକ"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"ବର୍ତ୍ତମାନର ଅନୁମତିଗୁଡ଼ିକ"</string>
+ <string name="message_staging" msgid="641286607664721291">"ଆପ୍ ପର୍ଯ୍ୟାୟଭୁକ୍ତ କରାଯାଉଛି…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"ଅଜଣା"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"ଡ୍ୟାସ୍ବୋର୍ଡ"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">ଶେଷ ଆକ୍ସେସ୍: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> ଆକ୍ସେସ୍ (ପୃଷ୍ଠଭୂମିରେ <xliff:g id="NUM_5">%3$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> ଆକ୍ସେସ୍ (ପୃଷ୍ଠଭୂମିରେ <xliff:g id="NUM_2">%3$s</xliff:g>)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">ଶେଷ ଆକ୍ସେସ୍: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> ଆକ୍ସେସ୍\nଅବଧି: <xliff:g id="TIME_5">%3$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> ଆକ୍ସେସ୍\nଅବଧି: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">ଶେଷ ଆକ୍ସେସ୍: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> ଆକ୍ସେସ୍ (ପୃଷ୍ଠଭୂମିରେ <xliff:g id="NUM_6">%3$s</xliff:g>)\nଅବଧି: <xliff:g id="TIME_7">%3$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> ଆକ୍ସେସ୍ (ପୃଷ୍ଠଭୂମିରେ <xliff:g id="NUM_2">%3$s</xliff:g>)\nଅବଧି: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"ଯେକୌଣସି ଅନୁମତି"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"ଯେକୌଣସି ସମୟରେ"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"ଗତ 7 ଦିନ"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"ଶେଷ 24 ଘଣ୍ଟା"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"ଶେଷ 1 ଘଣ୍ଟା"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"ଶେଷ 15 ମିନିଟ୍"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"ଗତ 1 ମିନିଟ୍ରେ"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"ବ୍ୟବହାର ପାଇଁ କୌଣସି ଅନୁମତି ନାହିଁ"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"ଯେକୌଣସି ସମୟରେ ଆକ୍ସେସ୍"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"ଗତ 7 ଦିନରେ ଆକ୍ସେସ୍"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"ଗତ 24 ଘଣ୍ଟାରେ ଆକ୍ସେସ୍"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"ଗତ ଘଣ୍ଟାରେ ଆକ୍ସେସ"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"ଗତ 15 ମିନିଟ୍ରେ ଆକ୍ସେସ୍"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"ଗତ 1 ମିନିଟ୍ରେ ଆକ୍ସେସ୍"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"ଯେକୌଣସି ସମୟରେ ବ୍ୟବହୃତ ହୋଇଥିବା ଶୀର୍ଷ ଅନୁମତି"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"ଗତ 7 ଦିନରେ ବ୍ୟବହୃତ ହୋଇଥିବା ଶୀର୍ଷ ଅନୁମତି"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"ଗତ 24 ଘଣ୍ଟାରେ ବ୍ୟବହୃତ ହୋଇଥିବା ଶୀର୍ଷ ଅନୁମତି"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"ଗତ 1 ଘଣ୍ଟାରେ ବ୍ୟବହୃତ ହୋଇଥିବା ଶୀର୍ଷ ଅନୁମତି"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"ଗତ 15 ମିନିଟ୍ରେ ବ୍ୟବହୃତ ହୋଇଥିବା ଶୀର୍ଷ ଅନୁମତି"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"ଗତ 1 ଘଣ୍ଟାରେ ବ୍ୟବହୃତ ହୋଇଥିବା ଶୀର୍ଷ ଅନୁମତି"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"ଆପ୍ସ"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"<xliff:g id="PERM">%1$s</xliff:g> ଦ୍ବାରା ଫିଲ୍ଟର୍ କରାଯାଇଛି"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"ଫିଲ୍ଟର୍କୁ କାଢ଼ିଦିଅନ୍ତୁ"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"ଏହି ଅନୁସାରେ ଫିଲ୍ଟର୍ କରନ୍ତୁ"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"ଅନୁମତି ଅନୁଯାୟୀ ଫିଲ୍ଟର୍ କରନ୍ତୁ"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"ଅଧିକ ଅନୁମତିଗୁଡିକ"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"ସର୍ବାଧିକ ଆକ୍ସେସ୍ଗୁଡିକ"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"ସମ୍ପ୍ରତି"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"ରିଫ୍ରେଶ୍ କରନ୍ତୁ"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"ଆପ୍ ଅନୁମତି ବ୍ୟବହାର"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"ଆକ୍ସେସ୍: <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="4040424337831328212">"ଆକ୍ସେସ୍: <xliff:g id="NUM">%1$s</xliff:g>ଥର। ଅନ୍ତିମ ଥର <xliff:g id="TIME">%2$s</xliff:g> ପୂର୍ବେ ବ୍ୟବହୃତ ହୋଇଥିଲା।"</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"ଅନୁମତି ଦିଅନ୍ତୁ"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"ସଦାବେଳେ ପାଇଁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"ଆପ୍ ବ୍ୟବହାରରେ ରହିଥିବା ବେଳେ କେବଳ ଅନୁମତି କରନ୍ତୁ"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"ଖାରଜ କରନ୍ତୁ"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> ଅନୁମତି"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="PERM">%1$s</xliff:g> <xliff:g id="APP">%2$s</xliff:g> ପାଇଁ ଆକ୍ସେସ୍ କରନ୍ତୁ"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g> ପୂର୍ବେ ଆପଣଙ୍କ <xliff:g id="PERM">%2$s</xliff:g> ଆକ୍ସେସ୍ କରିିିିଥିଲେ।"</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> ଆପଣଙ୍କ <xliff:g id="PERM">%2$s</xliff:g> ଆକ୍ସେସ୍ ନାହିଁ।"</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"ବିସ୍ତୃତ ଅନୁମତି ବ୍ୟବହାର ଦେଖନ୍ତୁ"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"ଶେଷ ଥର ପାଇଁ ଆକ୍ସେସ୍ କରାଯାଇଛି: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"କେବେବି ଆକ୍ସେସ୍ ହୋଇନାହିଁ"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"ଅନୁମୋଦିତ"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"କେବଳ ବ୍ୟବହାର ପାଇଁ ଅନୁମତି ଦିଆଯାଇଛି"</string>
+ <string name="denied_header" msgid="2277998574238617699">"ପ୍ରତ୍ୟାଖ୍ୟାନ କରାଗଲା"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"ବିସ୍ତାରିତ ବ୍ୟବହାର ଦେଖନ୍ତୁ"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ଦିନ</item>
+ <item quantity="one">1 ଦିନ</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ଘଣ୍ଟା</item>
+ <item quantity="one">1 ଘଣ୍ଟା</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ମିନିଟ୍</item>
+ <item quantity="one">1 ମିନିଟ୍</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ସେକେଣ୍ଡ</item>
+ <item quantity="one">1 ସେକେଣ୍ଡ</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"ଆପଣଙ୍କ <xliff:g id="ROLE_NAME">%2$s</xliff:g> ଭାବରେ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ବ୍ୟବହାର କରିବେ?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"ଆପଣଙ୍କ <xliff:g id="ROLE_NAME">%2$s</xliff:g> ଭାବରେ <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> ପରିବର୍ତ୍ତେ <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> ବ୍ୟବହାର କରିବେ?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"ଅନୁମତି ରିମାଇଣ୍ଡର୍"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> ଆପଣଙ୍କ ଲୋକେସନ୍ ବ୍ୟବହାର କରୁଛନ୍ତି"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"ଏହି ଆପ୍ ସବୁବେଳେ ଆପଣଙ୍କ ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରିପାରିବ। ବଦଳାଇବା ପାଇଁ ଟାପ୍ କରନ୍ତୁ"</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"କେବଳ ଆପ୍ ବ୍ୟବହାରରେ ରହିଥିବା ବେଳେ"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"କୌଣସି ଅନୁମତି ଦିଆଯାଇ ନାହିଁ"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"କୌଣସି ଅନୁମତି ଅଗ୍ରାହ୍ୟ କରାଯାଇନାହିଁ"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"କୌଣସି ଆପ୍କୁ ଅନୁମତି ନାହିଁ"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"କୌଣସି ଆପ୍କୁ ଅଗ୍ରାହ୍ୟ କରାଯାଇନାହିଁ"</string>
+ <string name="launch_app" msgid="5641437562665039291">"ଖୋଲନ୍ତୁ"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"ଅନ୍ଇନ୍ଷ୍ଟଲ୍ କରନ୍ତୁ"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"ଜବରଦସ୍ତି ବନ୍ଦ କରନ୍ତୁ"</string>
+ <string name="settings" msgid="2884124136779508907">"ସେଟିଂସ୍"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"ଆପଣଙ୍କ ଡିଭାଇସ୍କୁ <xliff:g id="SERVICE_NAME">%s</xliff:g>ର ସମ୍ପୂର୍ଣ୍ଣ ଆକ୍ସେସ୍ ଅଛି"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g>ଟି ଆକ୍ସେସିବିଲିଟୀ ସେବାକୁ ଆପଣଙ୍କ ଡିଭାଇସ୍ରେ ସମ୍ପୂର୍ଣ୍ଣ ଆକ୍ସେସ୍ ଅଛି"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ଆପଣଙ୍କର ସ୍କ୍ରିନ୍, କାର୍ଯ୍ୟ ଏବଂ ଇନ୍ପୁଟ୍ ଦେଖିପାରିବ ଏବଂ କାର୍ଯ୍ୟ ସମ୍ପାଦନ କରିପାରିବ ଏବଂ ଡିସ୍ପ୍ଲେ ନିୟନ୍ତ୍ରଣ କରିପାରିବ।"</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"ଏହି ସେବାଗୁଡ଼ିକ ଆପଣଙ୍କର ସ୍କ୍ରିନ୍, ପଦକ୍ଷେପ ଏବଂ ଇନ୍ପୁଟ୍ ଦେଖିପାରିବ ଏବଂ କାର୍ଯ୍ୟ ସମ୍ପାଦନ କରିପାରିବ ଏବଂ ଡିସ୍ପ୍ଲେ ନିୟନ୍ତ୍ରଣ କରିପାରିବ।"</string>
+ <string name="default_apps" msgid="8554530939151957828">"ଡିଫଲ୍ଟ ଆପ୍ସ"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"କୌଣସି ଡିଫଲ୍ଟ ଆପ୍ସ ନାହିଁ"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"କାର୍ଯ୍ୟ ପାଇଁ ଡିଫଲ୍ଟ ଅଛି"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"କିଛି ଆପ୍ ସେଟ୍ କରାଯାଇନାହିଁ"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"କୌଣସି ଆପ୍ ନାହିଁ"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"ଆପ୍ ଆକ୍ସେସ୍ ବାଛନ୍ତୁ"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"କୌଣସି ସ୍ଵତନ୍ତ୍ର ଆପ୍ ଆକ୍ସେସ୍ ନାହିଁ"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"କୌଣସି ଆପ୍ ନାହିଁ"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"ସହାୟକ ଆପ୍"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"ବ୍ରାଉଜର୍ ଆପ୍"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"ଫୋନ୍ ଆପ୍"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS ଆପ୍"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"ଜରୁରୀକାଳୀନ ଆପ୍"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"ମୂଳ ଆପ୍"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Music ଆପ୍"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Gallery ଆପ୍"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"କାର୍ ମୋଡ୍ ଫୋନ୍ ଆପ୍"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"କଲ୍ ପୁନଃନିର୍ଦ୍ଦେଶିତ କରୁଥିବା ଆପ୍"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"କଲ୍ ସ୍କ୍ରିନିଂ ଆପ୍"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"ସହଯୋଗୀ ଆପ୍କୁ କଲ୍ କରନ୍ତୁ"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"କାର୍ ପ୍ରୋଜେକ୍ସନ୍ ଆପ୍"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"ୱର୍କ ପ୍ରୋଫାଇଲ୍କୁ ସମର୍ଥନ କରେନାହିଁ"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"ଟିପ୍ପଣୀ: ଯଦି ଆପଣ ଆପଣଙ୍କ ଡିଭାଇସ୍ ରିଷ୍ଟାର୍ଟ କରିବେ ଏବଂ ଏକ ସ୍କ୍ରିନ୍ ଲକ୍ ସେଟ୍ ହେବ, ଆପଣଙ୍କ ଡିଭାଇସ୍ ଅନ୍ଲକ୍ ନହେବା ପର୍ଯ୍ୟନ୍ତ ଏହି ଆପ୍ ଆରମ୍ଭ ହୋଇପାରିବ ନାହିଁ।"</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"ଏହି ସହାୟକ, ସ୍କ୍ରିନ୍ରେ ଦେଖାଦେଉଥିବା କିମ୍ୱା ଆପ୍ଗୁଡ଼ିକ ମଧ୍ୟରେ ଆକ୍ସେସ୍ ହୋଇପାରିବା ଭଳି ସୂଚନା ସମେତ ଆପଣଙ୍କ ସିଷ୍ଟମ୍ରେ ଥିବା ଆପ୍ଗୁଡ଼ିକ ବିଷୟରେ ସୂଚନା ପଢ଼ିପାରିବ।"</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"ଡିବଗିଂ ଡାଟା ସେୟାର୍ କରନ୍ତୁ"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"ବିସ୍ତୃତ ଡିବଗିଂ ଡାଟା ସେୟାର୍ କରିବେ?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> ଡିବଗିଂ ସୂଚନା ଅପ୍ଲୋଡ୍ କରିବାକୁ ଚାହାନ୍ତି।"</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"ଡିବଗିଂ ଡାଟା ସେୟାର୍ କରନ୍ତୁ"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> <xliff:g id="DATE">%2$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g>ରେ ଏହି ଡିଭାଇସ୍ରୁ ନିଆଯାଇଥିବା ଏକ ବଗ୍ ରିପୋର୍ଟ ଅପ୍ଲୋଡ୍ କରିବାକୁ ଅନୁରୋଧ କରିଛି। ବଗ୍ ରିପୋର୍ଟରେ ଆପଣଙ୍କ ଡିଭାଇସ୍ ସମ୍ବନ୍ଧରେ ବ୍ୟକ୍ତିଗତ ସୂଚନା ବା ଆପ୍ସ ଲଗ୍ଇନ୍ ସମୟରେ ଦେଇଥିବା ବ୍ୟକ୍ତିଗତ ସୂଚନା ଉଦାହରଣ ସ୍ବରୂପ ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ନାମ, ଲୋକେସନ୍, ଡିଭାଇସ୍ ଚିହ୍ନଟକାରୀ, ଏବଂ ନେଟ୍ୱର୍କ ସୂଚନା ଅନ୍ତର୍ଭୂକ୍ତ ରହିଛି। ଏହି ସୂଚନା ସେୟାର୍ କରିବା ପାଇଁ ଆପଣ ଯାହାଙ୍କୁ ଭରସା କରୁଛନ୍ତି କେବଳ ସେହି ଲୋକ ଏବଂ ଆପ୍ସ ସହିତ ବଗ୍ ରିପୋର୍ଟ ସେୟାର୍ କରନ୍ତୁ। ଏକ ବଗ୍ ରିପୋର୍ଟ ଅପ୍ଲୋଡ୍ କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">%4$s</xliff:g>କୁ ଅନୁମତି ଦେବେ?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"ଅନୁମତି ଦିଅନ୍ତୁ"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"ପ୍ରତ୍ୟାଖ୍ୟାନ କରନ୍ତୁ"</string>
</resources>
diff --git a/res/values-pa-television/strings.xml b/res/values-pa-television/strings.xml
index 83d9264..ded8026 100644
--- a/res/values-pa-television/strings.xml
+++ b/res/values-pa-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"ਅਸਵੀਕਾਰ ਕਰੋ ਅਤੇ ਦੁਬਾਰਾ ਨਾ ਪੁੱਛੋ"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"ਤੁਸੀਂ ਇਸਨੂੰ ਬਾਅਦ ਵਿੱਚ ਸੈਟਿੰਗਾਂ > ਐਪਾਂ ਵਿੱਚ ਬਦਲ ਸਕਦੇ ਹੋ"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"ਸਿਸਟਮ ਐਪਸ ਦਿਖਾਓ"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"ਐਪ ਇਜਾਜ਼ਤਾਂ"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"ਐਪ ਇਜਾਜ਼ਤਾਂ"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> ਇਜਾਜ਼ਤਾਂ"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"ਵਾਧੂ ਇਜਾਜ਼ਤਾਂ"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> ਇਜਾਜ਼ਤਾਂ"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"ਅਸਵੀਕਾਰ ਕਰੋ ਅਤੇ ਦੁਬਾਰਾ ਨਾ ਪੁੱਛੋ"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"ਤੁਸੀਂ ਇਸਨੂੰ ਬਾਅਦ ਵਿੱਚ ਸੈਟਿੰਗਾਂ > ਐਪਾਂ ਵਿੱਚ ਬਦਲ ਸਕਦੇ ਹੋ"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"ਸਿਸਟਮ ਸੰਬੰਧੀ ਐਪਾਂ ਦਿਖਾਓ"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"ਐਪ ਇਜਾਜ਼ਤਾਂ"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"ਐਪ ਇਜਾਜ਼ਤਾਂ"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> ਇਜਾਜ਼ਤਾਂ"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"ਵਧੀਕ ਇਜਾਜ਼ਤਾਂ"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> ਇਜਾਜ਼ਤਾਂ"</string>
</resources>
diff --git a/res/values-pa-watch/strings.xml b/res/values-pa-watch/strings.xml
index e093021..01b0479 100644
--- a/res/values-pa-watch/strings.xml
+++ b/res/values-pa-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"ਅਸਵੀਕਾਰ ਕਰੋ, ਦੁਬਾਰਾ ਨਾ ਪੁੱਛੋ"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"ਸਿਸਟਮ ਐਪਸ ਦਿਖਾਓ"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ"</string>
- <string name="generic_yes" msgid="3394094077553763689">"ਹਾਂ"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"ਰੱਦ ਕਰੋ"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"ਅਸਵੀਕਾਰ ਕਰੋ, ਦੁਬਾਰਾ ਨਾ ਪੁੱਛੋ"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"ਸਿਸਟਮ ਸੰਬੰਧੀ ਐਪਾਂ ਦਿਖਾਓ"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"ਹਾਂ"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"ਰੱਦ ਕਰੋ"</string>
</resources>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index dd4c7a1..5cc02d8 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"ਪੈਕੇਜ ਸਥਾਪਨਾਕਾਰ"</string>
- <string name="next" msgid="3057143178373252333">"ਅੱਗੇ"</string>
- <string name="install" msgid="5896438203900042068">"ਸਥਾਪਤ ਕਰੋ"</string>
- <string name="done" msgid="3889387558374211719">"ਹੋ ਗਿਆ"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"ਇਸ ਐਪ ਨੂੰ ਇਹ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ:"</string>
- <string name="cancel" msgid="8360346460165114585">"ਰੱਦ ਕਰੋ"</string>
- <string name="unknown" msgid="4742479012767208045">"ਅਗਿਆਤ"</string>
- <string name="installing" msgid="8613631001631998372">"ਇੰਸਟੌਲ ਕਰ ਰਿਹਾ ਹੈ…"</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ਨੂੰ ਸਥਾਪਤ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
- <string name="install_done" msgid="3682715442154357097">"ਐਪ ਇੰਸਟੌਲ ਕੀਤਾ।"</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"ਕੀ ਤੁਸੀਂ ਇਹ ਐਪਲੀਕੇਸ਼ਨ ਸਥਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ? ਇਹ ਇਸ ਤੱਕ ਪਹੁੰਚ ਪ੍ਰਾਪਤ ਕਰੇਗਾ:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"ਕੀ ਤੁਸੀਂ ਇਸ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਸਥਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ? ਇਸ ਲਈ ਕਿਸੇ ਖਾਸ ਪਹੁੰਚ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ।"</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"ਕੀ ਤੁਸੀਂ ਇਸ ਮੌਜੂਦਾ ਐਪਲੀਕੇਸ਼ਨ ਤੇ ਇੱਕ ਅੱਪਡੇਟ ਸਥਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ? ਤੁਹਾਡਾ ਮੌਜੂਦਾ ਡਾਟਾ ਨਸ਼ਟ ਕੀਤਾ ਜਾਏਗਾ। ਅੱਪਡੇਟ ਕੀਤੀ ਐਪਲੀਕੇਸ਼ਨ ਇਸ ਤੱਕ ਪਹੁੰਚ ਪ੍ਰਾਪਤ ਕਰੇਗੀ:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"ਕੀ ਤੁਸੀਂ ਇਸ ਬਿਲਟ-ਇਨ ਐਪਲੀਕੇਸ਼ਨ ਤੇ ਇੱਕ ਅੱਪਡੇਟ ਸਥਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ? ਤੁਹਾਡਾ ਮੌਜੂਦਾ ਡਾਟਾ ਨਸ਼ਟ ਕੀਤਾ ਜਾਏਗਾ। ਅੱਪਡੇਟ ਕੀਤੀ ਐਪਲੀਕੇਸ਼ਨ ਇਸ ਤੱਕ ਪਹੁੰਚ ਪ੍ਰਾਪਤ ਕਰੇਗੀ:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"ਕੀ ਤੁਸੀਂ ਇਸ ਮੌਜੂਦਾ ਐਪਲੀਕੇਸ਼ਨ ਵਿੱਚ ਇੱਕ ਅੱਪਡੇਟ ਸਥਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ? ਤੁਹਾਡਾ ਮੌਜੂਦਾ ਡਾਟਾ ਨਸ਼ਟ ਨਹੀਂ ਹੋਵੇਗਾ। ਇਸ ਲਈ ਕਿਸੇ ਖਾਸ ਪਹੁੰਚ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ।"</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"ਕੀ ਤੁਸੀਂ ਇਸ ਬਿਲਟ-ਇਨ ਐਪਲੀਕੇਸ਼ਨ ਵਿੱਚ ਇੱਕ ਅੱਪਡੇਟ ਸਥਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ? ਤੁਹਾਡਾ ਮੌਜੂਦਾ ਡਾਟਾ ਨਸ਼ਟ ਨਹੀਂ ਹੋਵੇਗਾ। ਇਸ ਲਈ ਕਿਸੇ ਖਾਸ ਪਹੁੰਚ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ।"</string>
- <string name="install_failed" msgid="6579998651498970899">"ਐਪ ਇੰਸਟੌਲ ਨਹੀਂ ਕੀਤਾ।"</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"ਪੈਕੇਜ ਨੂੰ ਸਥਾਪਿਤ ਹੋਣ ਤੋਂ ਬਲੌਕ ਕੀਤਾ ਗਿਆ ਸੀ।"</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"ਪੈਕੇਜ ਦੇ ਇੱਕ ਮੌਜੂਦਾ ਪੈਕੇਜ ਨਾਲ ਵਿਵਾਦ ਹੋਣ ਕਰਕੇ ਐਪ ਦੀ ਸਥਾਪਨਾ ਨਹੀਂ ਕੀਤੀ ਗਈ।"</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"ਐਪ ਦੇ ਤੁਹਾਡੇ ਟੈਬਲੈੱਟ ਦੇ ਅਨੁਰੂਪ ਨਾ ਹੋਣ ਕਰਕੇ ਐਪ ਦੀ ਸਥਾਪਨਾ ਨਹੀਂ ਕੀਤੀ ਗਈ।"</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"ਇਹ ਐਪ ਤੁਹਾਡੇ ਟੀਵੀ ਦੇ ਅਨੁਕੂਲ ਨਹੀਂ ਹੈ।"</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"ਐਪ ਦੇ ਤੁਹਾਡੇ ਫ਼ੋਨ ਦੇ ਅਨੁਰੂਪ ਨਾ ਹੋਣ ਕਰਕੇ ਐਪ ਦੀ ਸਥਾਪਨਾ ਨਹੀਂ ਕੀਤੀ ਗਈ।"</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"ਪੈਕੇਜ ਦੇ ਅਵੈਧ ਪ੍ਰਤੀਤ ਹੋਣ ਕਰਕੇ ਐਪ ਦੀ ਸਥਾਪਨਾ ਨਹੀਂ ਕੀਤੀ ਗਈ।"</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਨੂੰ ਤੁਹਾਡੀ ਟੈਬਲੈੱਟ ਤੇ ਸਥਾਪਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।"</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਨੂੰ ਤੁਹਾਡੇ TV ਤੇ ਇੰਸਟੌਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।"</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਨੂੰ ਤੁਹਾਡੇ ਫ਼ੋਨ ਤੇ ਸਥਾਪਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।"</string>
- <string name="launch" msgid="4826921505917605463">"ਖੋਲ੍ਹੋ"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"ਤੁਹਾਡਾ ਪ੍ਰਸ਼ਾਸਕ ਅਗਿਆਤ ਸਰੋਤਾਂ ਤੋਂ ਪ੍ਰਾਪਤ ਐਪਾਂ ਸਥਾਪਤ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਦਿੰਦਾ"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"ਇਸ ਵਰਤੋਂਕਾਰ ਵੱਲੋਂ ਅਗਿਆਤ ਐਪਾਂ ਨੂੰ ਸਥਾਪਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"ਇਸ ਵਰਤੋਂਕਾਰ ਨੂੰ ਐਪਾਂ ਸਥਾਪਤ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ"</string>
- <string name="ok" msgid="3468756155452870475">"ਠੀਕ"</string>
- <string name="settings" msgid="6743583734099755409">"ਸੈਟਿੰਗਾਂ"</string>
- <string name="manage_applications" msgid="4033876279091996596">"ਐਪਸ ਵਿਵਸਥਿਤ ਕਰੋ"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"ਕੀ ਐਪ ਬਦਲਣਾ ਹੈ?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"ਜੋ ਐਪ ਤੁਸੀਂ ਸਥਾਪਤ ਕਰ ਰਹੇ ਹੋ, ਉਹ ਦੂਜੇ ਐਪ ਨਾਲ ਬਦਲ ਜਾਏਗਾ।\n\nਤੁਹਾਡਾ ਪਿਛਲਾ ਸਾਰਾ ਵਰਤੋਂਕਾਰ ਡਾਟਾ ਸੁਰੱਖਿਅਤ ਕੀਤਾ ਜਾਏਗਾ।"</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"ਇਹ ਇੱਕ ਸਿਸਟਮ ਐਪ ਹੈ।\n\nਤੁਹਾਡਾ ਸਾਰਾ ਪਿਛਲਾ ਵਰਤੋਂਕਾਰ ਡਾਟਾ ਸੁਰੱਖਿਅਤ ਕੀਤਾ ਜਾਏਗਾ।"</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"ਖਾਲੀ ਸਪੇਸ"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਇੰਸਟੌਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ। ਕੁਝ ਸਪੇਸ ਖਾਲੀ ਕਰੋ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
- <string name="dlg_ok" msgid="6944357727705699232">"ਠੀਕ"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"ਐਪ ਨਹੀਂ ਮਿਲਿਆ"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"ਐਪ ਇੰਸਟੌਲ ਕੀਤੇ ਐਪਸ ਦੀ ਸੂਚੀ ਵਿੱਚ ਨਹੀਂ ਮਿਲਿਆ ਸੀ।"</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"ਇਜਾਜ਼ਤ ਨਹੀਂ"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"ਮੌਜੂਦਾ ਵਰਤੋਂਕਾਰ ਨੂੰ ਇਹ ਅਣਸਥਾਪਨਾ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਦਿੱਤੀ ਗਈ ਹੈ।"</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"ਗੜਬੜ"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"ਐਪ ਅਣਸਥਾਪਤ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ।"</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"ਐਪ ਅਣਸਥਾਪਤ ਕਰੋ"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"ਅੱਪਡੇਟ ਅਣਸਥਾਪਤ ਕਰੋ"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> ਇਸ ਐਪ ਦਾ ਭਾਗ ਹੈ:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"ਕੀ ਤੁਸੀਂ ਇਸ ਐਪ ਨੂੰ ਅਣਸਥਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"ਕੀ ਤੁਸੀਂ ਇਸ ਐਪ ਨੂੰ "<b>"ਸਾਰੇ"</b>" ਵਰਤੋਂਕਾਰਾਂ ਲਈ ਅਣਸਥਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ? ਐਪਲੀਕੇਸ਼ਨ ਅਤੇ ਇਸਦਾ ਡਾਟਾ ਡੀਵਾਈਸ ਤੇ "<b>"ਸਾਰੇ"</b>" ਵਰਤੋਂਕਾਰਾਂ ਵੱਲੋਂ ਹਟਾ ਦਿੱਤਾ ਜਾਏਗਾ।"</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"ਕੀ ਤੁਸੀਂ ਵਰਤੋਂਕਾਰ <xliff:g id="USERNAME">%1$s</xliff:g> ਲਈ ਇਸ ਐਪ ਨੂੰ ਅਣਸਥਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"ਕੀ ਇਸ ਐਪ ਨੂੰ ਫੈਕਟਰੀ ਸੰਸਕਰਣ ਨਾਲ ਬਦਲਣਾ ਹੈ? ਸਾਰਾ ਡਾਟਾ ਹਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ।"</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"ਕੀ ਇਸ ਐਪ ਨੂੰ ਫੈਕਟਰੀ ਵਰਜਨ ਨਾਲ ਬਦਲਣਾ ਹੈ? ਸਾਰਾ ਡਾਟਾ ਹਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਇਹ ਇਸ ਡੀਵਾਈਸ ਦੇ ਸਾਰੇ ਵਰਤੋਂਕਾਰਾਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇਗਾ, ਜਿਸ ਵਿੱਚ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਵਾਲੇ ਵਰਤੋਂਕਾਰ ਵੀ ਸ਼ਾਮਲ ਹਨ।"</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"ਚੱਲ ਰਹੀਆਂ ਅਣਸਥਾਪਨਾਵਾਂ"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"ਅਸਫਲ ਅਣਸਥਾਪਨਾਵਾਂ"</string>
- <string name="uninstalling" msgid="5556217435895938250">"ਅਣਇੰਸਟੌਲ ਕਰ ਰਿਹਾ ਹੈ…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ਨੂੰ ਅਣਸਥਾਪਤ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"ਅਣਸਥਾਪਨਾ ਪੂਰੀ ਹੋਈ।"</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ਨੂੰ ਅਣਸਥਾਪਤ ਕੀਤਾ"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"ਅਣਸਥਾਪਨਾ ਅਸਫਲ।"</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ਨੂੰ ਅਣਸਥਾਪਤ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ।"</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"ਕਿਰਿਆਸ਼ੀਲ ਡੀਵਾਈਸ ਪ੍ਰਸ਼ਾਸਕ ਐਪ ਨੂੰ ਅਣਸਥਾਪਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"<xliff:g id="USERNAME">%1$s</xliff:g> ਲਈ ਕਿਰਿਆਸ਼ੀਲ ਡੀਵਾਈਸ ਪ੍ਰਸ਼ਾਸਕ ਐਪ ਨੂੰ ਅਣਸਥਾਪਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"ਇਹ ਐਪ ਕੁਝ ਵਰਤੋਂਕਾਰਾਂ ਜਾਂ ਪ੍ਰੋਫਾਈਲਾਂ ਲਈ ਲੋੜੀਂਦੀ ਹੈ ਅਤੇ ਹੋਰਾਂ ਲਈ ਅਣਸਥਾਪਤ ਕੀਤੀ ਗਈ ਸੀ"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"ਇਹ ਐਪ ਤੁਹਾਡੀ ਪ੍ਰੋਫਾਈਲ ਲਈ ਲੋੜੀਂਦੀ ਹੈ ਅਤੇ ਇਸ ਨੂੰ ਅਣਸਥਾਪਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।"</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"ਇਹ ਐਪ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਪ੍ਰਬੰਧਕ ਵੱਲੋਂ ਲੋੜੀਂਦੀ ਹੈ ਅਤੇ ਇਸਨੂੰ ਅਣਸਥਾਪਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।"</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"ਡੀਵਾਈਸ ਪ੍ਰਸ਼ਾਸਕ ਐਪਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ"</string>
- <string name="manage_users" msgid="3125018886835668847">"ਵਰਤੋਂਕਾਰਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਅਣਇੰਸਟੌਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।"</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"ਪੈਕੇਜ ਨੂੰ ਪਾਰਸ ਕਰਨ ਵਿੱਚ ਇੱਕ ਸਮੱਸਿਆ ਸੀ।"</string>
- <string name="newPerms" msgid="6039428254474104210">"ਨਵਾਂ"</string>
- <string name="allPerms" msgid="1024385515840703981">"ਸਭ"</string>
- <string name="privacyPerms" msgid="1850527049572617">"ਪ੍ਰਾਈਵੇਸੀ"</string>
- <string name="devicePerms" msgid="6733560207731294504">"ਡੀਵਾਈਸ ਪਹੁੰਚ"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"ਇਸ ਅੱਪਡੇਟ ਲਈ ਕਿਸੇ ਨਵੀਆਂ ਅਨੁਮਤੀਆਂ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ।"</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"ਕੀ ਤੁਸੀਂ ਇਹ ਇਜਾਜ਼ਤਾਂ ਮਨਜ਼ੂਰ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ? ਇਹ ਇਸ ਤੱਕ ਪਹੁੰਚ ਪ੍ਰਾਪਤ ਕਰੇਗਾ:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"ਅਸਵੀਕਾਰ ਕਰੋ"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"ਹੋਰ ਜਾਣਕਾਰੀ"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"ਫੇਰ ਵੀ ਅਸਵੀਕਾਰ ਕਰੋ"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"ਕੀ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ਨੂੰ <xliff:g id="ACTION">%2$s</xliff:g> ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> ਨੂੰ ਅਯੋਗ ਬਣਾਇਆ ਗਿਆ ਹੈ"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"ਸਭ ਨੂੰ ਅਯੋਗ ਬਣਾਇਆ ਗਿਆ ਹੈ"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"ਕਿਸੇ ਨੂੰ ਵੀ ਅਯੋਗ ਨਹੀਂ ਬਣਾਇਆ ਗਿਆ ਹੈ"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"ਆਗਿਆ ਦਿਓ"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"ਐਪਾਂ"</string>
- <string name="app_permissions" msgid="3146758905824597178">"ਐਪ ਅਨੁਮਤੀਆਂ"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"ਦੁਬਾਰਾ ਨਾ ਪੁੱਛੋ"</string>
- <string name="no_permissions" msgid="3210542466245591574">"ਕੋਈ ਅਨੁਮਤੀਆਂ ਨਹੀਂ ਹਨ"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"ਅਤਿਰਿਕਤ ਅਨੁਮਤੀਆਂ"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"ਇਜਾਜ਼ਤ ਕੰਟਰੋਲਰ"</string>
+ <string name="ok" msgid="4417794827535157922">"ਠੀਕ ਹੈ"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"ਇਜਾਜ਼ਤਾਂ"</string>
+ <string name="cancel" msgid="7279939269964834974">"ਰੱਦ ਕਰੋ"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"ਐਪ ਨਹੀਂ ਮਿਲੀ"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"ਅਸਵੀਕਾਰ ਕਰੋ"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"ਅਸਵੀਕਾਰ ਕਰੋ ਅਤੇ ਦੁਬਾਰਾ ਨਾ ਪੁੱਛੋ"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"ਹੋਰ ਜਾਣਕਾਰੀ"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"ਫਿਰ ਵੀ ਅਸਵੀਕਾਰ ਕਰੋ"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"ਕੀ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ਨੂੰ <xliff:g id="ACTION">%2$s</xliff:g> ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"ਕੀ ਹਮੇਸ਼ਾਂ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ਨੂੰ <xliff:g id="ACTION">%2$s</xliff:g> ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"ਸਿਰਫ਼ ਐਪ ਵਰਤਣ ਵੇਲੇ"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"ਹਮੇਸ਼ਾਂ"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"ਅਸਵੀਕਾਰ ਕਰੋ ਅਤੇ ਦੁਬਾਰਾ ਨਾ ਪੁੱਛੋ"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> ਨੂੰ ਬੰਦ ਕਰ ਦਿੱਤਾ ਗਿਆ"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"ਸਾਰੀਆਂ ਇਜਾਜ਼ਤਾਂ ਬੰਦ ਕਰ ਦਿੱਤੀਆਂ ਗਈਆਂ"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"ਕਿਸੇ ਨੂੰ ਵੀ ਬੰਦ ਨਹੀਂ ਕੀਤਾ ਗਿਆ"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"ਕਰਨ ਦਿਓ"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"ਹਰ ਵੇਲੇ ਕਰਨ ਦਿਓ"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"ਸਿਰਫ਼ ਐਪ ਵਰਤੇ ਜਾਣ ਵੇਲੇ ਕਰਨ ਦਿਓ"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"ਐਪਾਂ"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"ਐਪ ਇਜਾਜ਼ਤਾਂ"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"ਇਜਾਜ਼ਤ ਪ੍ਰਬੰਧਕ"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"ਦੁਬਾਰਾ ਨਾ ਪੁੱਛੋ"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"ਕੋਈ ਇਜਾਜ਼ਤਾਂ ਨਹੀਂ"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"ਵਧੀਕ ਇਜਾਜ਼ਤਾਂ"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"ਐਪ ਜਾਣਕਾਰੀ ਖੋਲ੍ਹੋ"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"ਇਹ ਐਪ Android ਦੇ ਕਿਸੇ ਪੁਰਾਣੇ ਸੰਸਕਰਣ ਲਈ ਬਣਾਈ ਗਈ ਸੀ। ਅਨੁਮਤੀ ਨੂੰ ਇਨਕਾਰ ਕਰਨਾ ਇਸਦੇ ਉਦੇਸ਼ਿਤ ਫੰਕਸ਼ਨ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰ ਸਕਦਾ ਹੈ।"</string>
- <string name="default_permission_description" msgid="4992892207044156668">"ਕੋਈ ਅਗਿਆਤ ਕਾਰਵਾਈ ਕਰੋ"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"ਸਿਸਟਮ ਦਿਖਾਓ"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"ਸਿਸਟਮ ਲੁਕਾਓ"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> ਇਜਾਜ਼ਤਾਂ"</string>
- <string name="no_apps" msgid="1965493419005012569">"ਕੋਈ ਐਪਾਂ ਨਹੀਂ"</string>
- <string name="location_settings" msgid="1774875730854491297">"ਟਿਕਾਣਾ ਸੈਟਿੰਗਾਂ"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਇਸ ਡੀਵਾਈਸ ਲਈ ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ ਦਾ ਇੱਕ ਪ੍ਰਦਾਤਾ ਹੈ। ਟਿਕਾਣਾ ਪਹੁੰਚ ਨੂੰ ਟਿਕਾਣਾ ਸੈਟਿੰਗਾਂ ਤੋਂ ਸੰਸ਼ੋਧਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।"</string>
- <string name="system_warning" msgid="7103819124542305179">"ਜੇਕਰ ਤੁਸੀਂ ਇਸ ਇਜਾਜ਼ਤ ਨੂੰ ਅਸਵੀਕਾਰ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁੁਹਾਡੇ ਡੀਵਾਈਸ ਦੀਆਂ ਮੂੂਲ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਆਪਣੇ ਫੰਕਸ਼ਨ ਮੁਤਾਬਕ ਕੰਮ ਨਹੀਂ ਵੀ ਕਰ ਸਕਦੀਆਂ।"</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"ਨੀਤੀ ਮੁਤਾਬਕ ਲਾਗੂ ਕੀਤਾ"</string>
- <string name="loading" msgid="7811651799620593731">"ਲੋਡ ਕਰ ਰਿਹਾ ਹੈ…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"ਸਾਰੀਆਂ ਅਨੁਮਤੀਆਂ"</string>
- <string name="other_permissions" msgid="2016192512386091933">"ਹੋਰ ਐਪ ਸਮਰੱਥਤਾਵਾਂ"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"ਇਜਾਜ਼ਤ ਬੇਨਤੀ"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"ਸਕਰੀਨ ਓਵਰਲੇਅ ਲੱਭ ਗਿਆ"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"ਇਸ ਇਜ਼ਾਜਤ ਸੈਟਿੰਗ ਨੂੰ ਬਦਲਣ ਲਈ; ਤੁਹਾਨੂੰ ਪਹਿਲਾਂ ਸੈਟਿੰਗਾਂ ਅਤੇ ਐਪਾਂ ਤੋਂ ਸਕ੍ਰੀਨ ਓਵਰਲੇਅ ਬੰਦ ਕਰਨਾ ਪਵੇਗਾ"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹੋ"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"ਵੀਅਰ \'ਤੇ ਸਥਾਪਤ/ਅਣਸਥਾਪਤ ਕਾਰਵਾਈਆਂ ਸਮਰਥਿਤ ਨਹੀਂ ਹਨ।"</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ਨੂੰ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾ ਚੁੱਕਿਆ ਹੈ। ਕੀ <xliff:g id="APP_NAME_1">%1$s</xliff:g> ਨੂੰ ਅੱਗੇ ਦਿੱਤਿਆਂ ਗਿਆ \'ਤੇ ਪਹੁੰਚ ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"ਇਹ ਚੁਣੋ ਕਿ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ਨੂੰ ਕਿਸ \'ਤੇ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ਨੂੰ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾ ਚੁੱਕਿਆ ਹੈ। ਇਹ ਚੁਣੋ ਕਿ ਇਸ ਐਪ ਨੂੰ ਕਿਸ \'ਤੇ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ।"</string>
- <string name="review_button_cancel" msgid="957906817733578877">"ਰੱਦ ਕਰੋ"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"ਜਾਰੀ ਰੱਖੋ"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"ਨਵੀਆਂ ਇਜਾਜ਼ਤਾਂ"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"ਵਰਤਮਾਨ ਇਜਾਜ਼ਤਾਂ"</string>
- <string name="message_staging" msgid="6151794817691100003">"ਐਪ ਨੂੰ ਪੜਾਅਬੱਧ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"ਅਗਿਆਤ"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"ਤੁਹਾਡੀ ਸੁਰੱਖਿਆ ਲਈ, ਤੁਹਾਡੇ ਟੈਬਲੈੱਟ ਨੂੰ ਇਸ ਸਰੋਤ ਤੋਂ ਅਗਿਆਤ ਐਪਾਂ ਸਥਾਪਤ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।"</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"ਤੁਹਾਡੀ ਸੁਰੱਖਿਆ ਲਈ, ਤੁਹਾਡੇ ਟੀਵੀ ਨੂੰ ਇਸ ਸਰੋਤ ਤੋਂ ਅਗਿਆਤ ਐਪਾਂ ਸਥਾਪਤ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।"</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"ਤੁਹਾਡੀ ਸੁਰੱਖਿਆ ਲਈ, ਤੁਹਾਡੇ ਫ਼ੋਨ ਨੂੰ ਇਸ ਸਰੋਤ ਤੋਂ ਅਗਿਆਤ ਐਪਾਂ ਸਥਾਪਤ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।"</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"ਤੁਹਾਡਾ ਫ਼ੋਨ ਅਤੇ ਨਿੱਜੀ ਡਾਟਾ ਅਗਿਆਤ ਐਪਾਂ ਤੋਂ ਹਮਲੇ ਪ੍ਰਤੀ ਵਧੇਰੇ ਵਿੰਨਣਸ਼ੀਲ ਹਨ। ਇਹ ਐਪ ਸਥਾਪਤ ਕਰਕੇ, ਤੁਸੀਂ ਸਹਿਮਤੀ ਦਿੰਦੇ ਹੋ ਕਿ ਆਪਣੇ ਫ਼ੋਨ ਨੂੰ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਨੁਕਸਾਨ ਜਾਂ ਡਾਟੇ ਦੀ ਹਾਨੀ ਲਈ ਤੁਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਹੋ ਜੋ ਸ਼ਾਇਦ ਇਸ ਐਪ ਨੂੰ ਵਰਤਣ ਦੇ ਨਤੀਜੇ ਵਜੋਂ ਹੋ ਸਕਦਾ ਹੈ।"</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"ਤੁਹਾਡਾ ਟੈਬਲੈੱਟ ਅਤੇ ਨਿੱਜੀ ਡਾਟਾ ਅਗਿਆਤ ਐਪਾਂ ਤੋਂ ਹਮਲੇ ਪ੍ਰਤੀ ਵਧੇਰੇ ਕਮਜ਼ੋਰ ਹੈ। ਇਹ ਐਪ ਸਥਾਪਤ ਕਰਕੇ, ਤੁਸੀਂ ਸਹਿਮਤੀ ਦਿੰਦੇ ਹੋ ਕਿ ਆਪਣੇ ਟੈਬਲੈੱਟ ਨੂੰ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਨੁਕਸਾਨ ਜਾਂ ਡਾਟੇ ਦੀ ਹਾਨੀ ਲਈ ਤੁਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਹੋ ਜੋ ਸ਼ਾਇਦ ਇਸ ਐਪ ਨੂੰ ਵਰਤਣ ਦੇ ਨਤੀਜੇ ਵਜੋਂ ਹੋ ਸਕਦਾ ਹੈ।"</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"ਤੁਹਾਡਾ ਟੀਵੀ ਅਤੇ ਨਿੱਜੀ ਡਾਟਾ ਅਗਿਆਤ ਐਪਾਂ ਤੋਂ ਹਮਲੇ ਪ੍ਰਤੀ ਵਧੇਰੇ ਵਿੰਨਣਸ਼ੀਲ ਹਨ। ਇਹ ਐਪ ਸਥਾਪਤ ਕਰਕੇ, ਤੁਸੀਂ ਸਹਿਮਤੀ ਦਿੰਦੇ ਹੋ ਕਿ ਆਪਣੇ ਟੀਵੀ ਨੂੰ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਨੁਕਸਾਨ ਜਾਂ ਡਾਟੇ ਦੀ ਹਾਨੀ ਲਈ ਤੁਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਹੋ ਜੋ ਸ਼ਾਇਦ ਇਸ ਐਪ ਨੂੰ ਵਰਤਣ ਦੇ ਨਤੀਜੇ ਵਜੋਂ ਹੋ ਸਕਦਾ ਹੈ।"</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"ਜਾਰੀ ਰੱਖੋ"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"ਸੈਟਿੰਗਾਂ"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"ਵੀਅਰ ਐਪਾਂ ਨੂੰ ਸਥਾਪਤ/ਅਣਸਥਾਪਤ ਕਰਨਾ"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"ਇਹ ਐਪ Android ਦੇ ਕਿਸੇ ਪੁਰਾਣੇ ਵਰਜਨ ਲਈ ਬਣਾਈ ਗਈ ਸੀ। ਇਜਾਜ਼ਤ ਨੂੰ ਅਸਵੀਕਾਰ ਕਰਨ ਨਾਲ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਇਹ ਇਸਦੇ ਨਿਯਤ ਤਰੀਕੇ ਨਾਲ ਕੰਮ ਨਾ ਕਰੇ।"</string>
+ <string name="default_permission_description" msgid="692254823411049573">"ਕੋਈ ਅਗਿਆਤ ਕਾਰਵਾਈ ਕਰੋ"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_1">%2$d</xliff:g> ਵਿੱਚੋਂ <xliff:g id="COUNT_0">%1$d</xliff:g> ਐਪਾਂ ਨੂੰ ਆਗਿਆ ਦਿੱਤੀ"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"ਹਾਲੀਆ ਵਰਤੋਂ"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"ਇਜਾਜ਼ਤਾਂ ਡੈਸ਼ਬੋਰਡ ਦੇਖੋ"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"ਸਿਸਟਮ ਦਿਖਾਓ"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"ਸਿਸਟਮ ਲੁਕਾਓ"</string>
+ <string name="no_apps" msgid="2377153782338039463">"ਕੋਈ ਐਪਾਂ ਨਹੀਂ"</string>
+ <string name="location_settings" msgid="547378321761364906">"ਟਿਕਾਣਾ ਸੈਟਿੰਗਾਂ"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਇਸ ਡੀਵਾਈਸ ਲਈ ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ ਦਾ ਇੱਕ ਪ੍ਰਦਾਨਕ ਹੈ। ਟਿਕਾਣਾ ਪਹੁੰਚ ਨੂੰ ਟਿਕਾਣਾ ਸੈਟਿੰਗਾਂ ਤੋਂ ਸੋਧਿਆ ਜਾ ਸਕਦਾ ਹੈ।"</string>
+ <string name="system_warning" msgid="6868290533389195836">"ਜੇਕਰ ਤੁਸੀਂ ਇਸ ਇਜਾਜ਼ਤ ਨੂੰ ਅਸਵੀਕਾਰ ਕਰਦੇ ਹੋ, ਤਾਂ ਹੋ ਸਕਦਾ ਹੈ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਦੀਆਂ ਮੂਲ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਉਹਨਾਂ ਦੇ ਨਿਯਤ ਤਰੀਕੇ ਨਾਲ ਕੰਮ ਨਾ ਕਰਨ।"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"ਨੀਤੀ ਮੁਤਾਬਕ ਲਾਗੂ ਕੀਤਾ ਗਿਆ"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"ਨੀਤੀ ਵੱਲੋਂ ਬੈਕਗ੍ਰਾਊਂਡ ਪਹੁੰਚ ਨੂੰ ਬੰਦ ਕੀਤਾ ਗਿਆ"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"ਨੀਤੀ ਵੱਲੋਂ ਬੈਕਗ੍ਰਾਊਂਡ ਪਹੁੰਚ ਨੂੰ ਚਾਲੂ ਕੀਤਾ ਗਿਆ"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"ਨੀਤੀ ਵੱਲੋਂ ਫੋਰਗ੍ਰਾਊਂਡ ਪਹੁੰਚ ਨੂੰ ਚਾਲੂ ਕੀਤਾ ਗਿਆ"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਕੰਟਰੋਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਬੈਕਗ੍ਰਾਊਂਡ ਪਹੁੰਚ ਨੂੰ ਬੰਦ ਕੀਤਾ ਗਿਆ"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਬੈਕਗ੍ਰਾਊਂਡ ਪਹੁੰਚ ਨੂੰ ਚਾਲੂ ਕੀਤਾ ਗਿਆ"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਫੋਰਗ੍ਰਾਊਂਡ ਪਹੁੰਚ ਨੂੰ ਚਾਲੂ ਕੀਤਾ ਗਿਆ"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"ਇਜਾਜ਼ਤ ਸਿਸਟਮ ਵੱਲੋਂ ਸੈੱਟ ਕੀਤੀ ਜਾਂਦੀ ਹੈ"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"ਹਮੇਸ਼ਾਂ"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"ਸਿਰਫ਼ ਐਪ ਵਰਤਣ ਵੇਲੇ"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"ਕਦੇ ਵੀ ਨਹੀਂ"</string>
+ <string name="loading" msgid="323483393167148377">"ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"ਸਾਰੀਆਂ ਇਜਾਜ਼ਤਾਂ"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"ਐਪ ਦੀਆਂ ਹੋਰ ਸਮਰੱਥਤਾਵਾਂ"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"ਇਜਾਜ਼ਤ ਬੇਨਤੀ"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"ਸਕ੍ਰੀਨ ਓਵਰਲੇਅ ਦਾ ਪਤਾ ਲੱਗਿਆ"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"ਇਸ ਇਜ਼ਾਜਤ ਸੈਟਿੰਗ ਨੂੰ ਬਦਲਣ ਲਈ, ਤੁਹਾਨੂੰ ਪਹਿਲਾਂ ਸੈਟਿੰਗਾਂ > ਐਪਾਂ ਤੋਂ ਸਕ੍ਰੀਨ ਓਵਰਲੇਅ ਬੰਦ ਕਰਨਾ ਪਵੇਗਾ"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹੋ"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Wear \'ਤੇ ਸਥਾਪਤ/ਅਣਸਥਾਪਤ ਕਰਨ ਦੀਆਂ ਕਾਰਵਾਈਆਂ ਸਮਰਥਿਤ ਨਹੀਂ ਹਨ।"</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"ਇਹ ਚੁਣੋ ਕਿ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ਨੂੰ ਕਿਸ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ਨੂੰ ਅੱਪਡੇਟ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ। ਇਹ ਚੁਣੋ ਕਿ ਇਸ ਐਪ ਨੂੰ ਕਿਸ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ।"</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"ਰੱਦ ਕਰੋ"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"ਜਾਰੀ ਰੱਖੋ"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"ਨਵੀਆਂ ਇਜਾਜ਼ਤਾਂ"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"ਵਰਤਮਾਨ ਇਜਾਜ਼ਤਾਂ"</string>
+ <string name="message_staging" msgid="641286607664721291">"ਐਪ ਨੂੰ ਸਟੇਜ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"ਅਗਿਆਤ"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"ਡੈਸ਼ਬੋਰਡ"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">ਪਿਛਲੀ ਵਾਰ ਪਹੁੰਚ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> ਪਹੁੰਚ (ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ <xliff:g id="NUM_5">%3$s</xliff:g>)</item>
+ <item quantity="other">ਪਿਛਲੀ ਵਾਰ ਪਹੁੰਚ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> ਪਹੁੰਚਾਂ (ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ <xliff:g id="NUM_5">%3$s</xliff:g>)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">ਪਿਛਲੀ ਵਾਰ ਪਹੁੰਚ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> ਪਹੁੰਚ\nਮਿਆਦ: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">ਪਿਛਲੀ ਵਾਰ ਪਹੁੰਚ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> ਪਹੁੰਚਾਂ\nਮਿਆਦ: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">ਪਿਛਲੀ ਵਾਰ ਪਹੁੰਚ: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> ਪਹੁੰਚ (ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ <xliff:g id="NUM_6">%3$s</xliff:g>)\nਮਿਆਦ: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">ਪਿਛਲੀ ਵਾਰ ਪਹੁੰਚ: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> ਪਹੁੰਚਾਂ (ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ <xliff:g id="NUM_6">%3$s</xliff:g>)\nਮਿਆਦ: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"ਕੋਈ ਵੀ ਇਜਾਜ਼ਤ"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"ਕਿਸੇ ਵੀ ਵੇਲੇ"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"ਪਿਛਲੇ 7 ਦਿਨ"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"ਪਿਛਲੇ 24 ਘੰਟੇ"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"ਪਿਛਲਾ 1 ਘੰਟਾ"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"ਪਿਛਲੇ 15 ਮਿੰਟ"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"ਪਿਛਲੇ 1 ਮਿੰਟ"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"ਕੋਈ ਇਜਾਜ਼ਤ ਨਹੀਂ ਵਰਤੀ ਗਈ"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"ਕਿਸੇ ਵੀ ਵੇਲੇ ਪਹੁੰਚ"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"ਪਿਛਲੇ 7 ਦਿਨਾਂ ਵਿੱਚ ਪਹੁੰਚ"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"ਪਿਛਲੇ 24 ਘੰਟਿਆਂ ਵਿੱਚ ਪਹੁੰਚ"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"ਪਿਛਲੇ ਘੰਟੇ ਵਿੱਚ ਪਹੁੰਚ"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"ਪਿਛਲੇ 15 ਮਿੰਟ ਵਿੱਚ ਪਹੁੰਚ"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"ਪਿਛਲੇ 1 ਮਿੰਟ ਪਹੁੰਚ"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"ਕਿਸੇ ਵੇਲੇ ਵੀ ਆਮ ਇਜਾਜ਼ਤ ਵਰਤੋਂ"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"ਪਿਛਲੇ 7 ਦਿਨਾਂ ਵਿੱਚ ਆਮ ਇਜਾਜ਼ਤ ਵਰਤੋਂ"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"ਪਿਛਲੇ 24 ਘੰਟਿਆਂ ਵਿੱਚ ਆਮ ਇਜਾਜ਼ਤ ਵਰਤੋਂ"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"ਪਿਛਲੇ 1 ਘੰਟੇ ਵਿੱਚ ਆਮ ਇਜਾਜ਼ਤ ਵਰਤੋਂ"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"ਪਿਛਲੇ 15 ਮਿੰਟ ਵਿੱਚ ਆਮ ਇਜਾਜ਼ਤ ਵਰਤੋਂ"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"ਪਿਛਲੇ 1 ਮਿੰਟ ਵਿੱਚ ਆਮ ਇਜਾਜ਼ਤ ਵਰਤੋਂ"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"ਐਪਾਂ"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"ਇਸ ਮੁਤਾਬਕ ਫਿਲਟਰ ਕੀਤਾ ਗਿਆ: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"ਫਿਲਟਰ ਹਟਾਓ"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"ਇਸ ਮੁਤਾਬਕ ਫਿਲਟਰ ਕਰੋ"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"ਇਜਾਜ਼ਤਾਂ ਮੁਤਾਬਕ ਫਿਲਟਰ ਕਰੋ"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"ਸਭ ਤੋਂ ਵੱਧ ਇਜਾਜ਼ਤਾਂ"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"ਸਭ ਤੋਂ ਵੱਧ ਪਹੁੰਚ"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"ਹਾਲੀਆ"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"ਰਿਫ੍ਰੈਸ਼ ਕਰੋ"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"ਐਪ ਇਜਾਜ਼ਤਾਂ ਵਰਤੋ"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"ਪਹੁੰਚ: <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="4040424337831328212">"ਪਹੁੰਚ: <xliff:g id="NUM">%1$s</xliff:g> ਵਾਰ। ਪਿਛਲੀ ਵਾਰ <xliff:g id="TIME">%2$s</xliff:g> ਪਹਿਲਾਂ ਵਰਤੀ ਗਈ।"</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"ਕਰਨ ਦਿਓ"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"ਹਰ ਵੇਲੇ ਕਰਨ ਦਿਓ"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"ਸਿਰਫ਼ ਐਪ ਵਰਤੇ ਜਾਣ ਵੇਲੇ ਕਰਨ ਦਿਓ"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"ਅਸਵੀਕਾਰ ਕਰੋ"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> ਇਜਾਜ਼ਤ"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="APP">%2$s</xliff:g> ਲਈ <xliff:g id="PERM">%1$s</xliff:g> ਪਹੁੰਚ"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> ਨੇ <xliff:g id="TIME">%3$s</xliff:g> ਪਹਿਲਾਂ ਤੁਹਾਡੇ <xliff:g id="PERM">%2$s</xliff:g> ਤੱਕ ਪਹੁੰਚ ਕੀਤੀ।"</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> ਨੇ ਤੁਹਾਡੇ <xliff:g id="PERM">%2$s</xliff:g> ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਕੀਤੀ।"</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"ਇਜਾਜ਼ਤਾਂ ਦੀ ਵਰਤੋਂ ਵੇਰਵੇ-ਸਹਿਤ ਦੇਖੋ"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"ਪਿਛਲੀ ਵਾਰ ਪਹੁੰਚ: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"ਕਦੇ ਪਹੁੰਚ ਨਹੀਂ ਕੀਤੀ"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"ਮਨਜ਼ੂਰਸ਼ੁਦਾ"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"ਸਿਰਫ਼ ਵਰਤੋਂ \'ਚ ਹੋਣ \'ਤੇ ਕਰਨ ਦਿੱਤਾ ਜਾਂਦਾ"</string>
+ <string name="denied_header" msgid="2277998574238617699">"ਗੈਰ-ਮਨਜ਼ੂਰਸ਼ੁਦਾ"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"ਵੇਰੇਵੇ ਸਹਿਤ ਵਰਤੋਂ ਦੇਖੋ"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <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="seconds" formatted="false" msgid="1632909606956324957">
+ <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="role_request_message_add" msgid="1977772335648650272">"ਕੀ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ਨੂੰ ਆਪਣੀ <xliff:g id="ROLE_NAME">%2$s</xliff:g> ਵਜੋਂ ਵਰਤਣਾ ਹੈ?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"ਕੀ <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> ਦੀ ਬਜਾਏ <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> ਨੂੰ ਆਪਣੀ <xliff:g id="ROLE_NAME">%2$s</xliff:g> ਵਜੋਂ ਵਰਤਣਾ ਹੈ?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"ਇਜਾਜ਼ਤਾਂ ਦੀਆਂ ਯਾਦ-ਸੂਚਨਾਵਾਂ"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> ਨੇ ਤੁਹਾਡੀ ਟਿਕਾਣਾ ਜਾਣਕਾਰੀ ਵਰਤੀ ਹੈ"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"ਇਹ ਐਪ ਹਮੇਸ਼ਾਂ ਤੁਹਾਡੀ ਟਿਕਾਣਾ ਜਾਣਕਾਰੀ \'ਤੇ ਪਹੁੰਚ ਕਰ ਸਕਦੀ ਹੈ। ਬਦਲਣ ਲਈ ਟੈਪ ਕਰੋ।"</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"ਸਿਰਫ਼ ਐਪ ਵਰਤੇ ਜਾਣ ਵੇਲੇ"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"ਕੋਈ ਇਜਾਜ਼ਤਾਂ ਨਹੀਂ ਦਿੱਤੀਆਂ ਗਈਆਂ ਹਨ"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"ਕੋਈ ਇਜਾਜ਼ਤਾਂ ਅਸਵੀਕਾਰ ਨਹੀਂ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"ਕਿਸੇ ਵੀ ਐਪ ਨੂੰ ਇਜਾਜ਼ਤ ਨਹੀਂ ਦਿੱਤੀ ਹੈ"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"ਕਿਸੇ ਵੀ ਐਪ ਦੀ ਇਜਾਜ਼ਤ ਅਸਵੀਕਾਰ ਨਹੀਂ ਕੀਤੀ ਗਈ"</string>
+ <string name="launch_app" msgid="5641437562665039291">"ਖੋਲ੍ਹੋ"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"ਅਣਸਥਾਪਤ ਕਰੋ"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"ਜ਼ਬਰਦਸਤੀ ਬੰਦ ਕਰੋ"</string>
+ <string name="settings" msgid="2884124136779508907">"ਸੈਟਿੰਗਾਂ"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ਕੋਲ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਤੱਕ ਪੂਰੀ ਪਹੁੰਚ ਹੈ"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> ਪਹੁੰਚਯੋਗਤਾ ਸੇਵਾਵਾਂ ਕੋਲ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਤੱਕ ਪੂਰੀ ਪਹੁੰਚ ਹੈ"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ਐਪ ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ, ਕਾਰਵਾਈਆਂ ਅਤੇ ਇਨਪੁੱਟਾਂ ਨੂੰ ਦੇਖ ਸਕਦੀ ਹੈ, ਕਾਰਵਾਈਆਂ ਕਰ ਸਕਦੀ ਹੈ ਅਤੇ ਡਿਸਪਲੇ ਕੰਟਰੋਲ ਕਰ ਸਕਦੀ ਹੈ।"</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"ਇਹ ਸੇਵਾਵਾਂ ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ, ਕਾਰਵਾਈਆਂ ਅਤੇ ਇਨਪੁੱਟਾਂ ਨੂੰ ਦੇਖ ਸਕਦੀ ਹੈ, ਕਾਰਵਾਈਆਂ ਕਰ ਸਕਦੀ ਹੈ ਅਤੇ ਡਿਸਪਲੇ ਕੰਟਰੋਲ ਕਰ ਸਕਦੀਆਂ ਹਨ।"</string>
+ <string name="default_apps" msgid="8554530939151957828">"ਪੂਰਵ-ਨਿਰਧਾਰਤ ਐਪਾਂ"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"ਕੋਈ ਪੂਰਵ-ਨਿਰਧਾਰਤ ਐਪਾਂ ਨਹੀਂ"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"ਕੰਮ ਲਈ ਪੂਰਵ-ਨਿਰਧਾਰਤ"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"ਕੋਈ ਨਹੀਂ"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"ਕੋਈ ਐਪਾਂ ਨਹੀਂ"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"ਵਿਸ਼ੇਸ਼ ਐਪ ਪਹੁੰਚ"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"ਕੋਈ ਵਿਸ਼ੇਸ਼ ਐਪ ਪਹੁੰਚ ਨਹੀਂ"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"ਕੋਈ ਐਪਾਂ ਨਹੀਂ"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"ਸਹਾਇਕ ਐਪ"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"ਬ੍ਰਾਊਜ਼ਰ ਐਪ"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"ਫ਼ੋਨ ਐਪ"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS ਐਪ"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"ਸੰਕਟਕਾਲੀਨ ਐਪ"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"ਹੋਮ ਐਪ"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"ਸੰਗੀਤ ਐਪ"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"ਗੈਲਰੀ ਐਪ"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"ਕਾਰ ਮੋਡ ਫ਼ੋਨ ਐਪ"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"ਕਾਲ ਨੂੰ ਰੀਡਾਇਰੈਕਟ ਕਰਨ ਵਾਲੀ ਐਪ"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"ਕਾਲ ਸਕ੍ਰੀਨਿੰਗ ਐਪ"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"ਕਾਲ ਸੰਬੰਧੀ ਐਪ"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"ਕਾਰ ਦੀ ਯੋਜਨਾਬੰਦੀ ਐਪ"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਦੀ ਸੁਵਿਧਾ ਨਹੀਂ ਹੈ"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"ਨੋਟ-ਕਥਨ: ਜੇਕਰ ਤੁਸੀਂ ਆਪਣੇ ਡੀਵਾਈਸ ਨੂੰ ਮੁੜ-ਸ਼ੁਰੂ ਕਰਦੇ ਹੋ ਅਤੇ ਸਕ੍ਰੀਨ ਲਾਕ ਸੈੱਟ ਕੀਤਾ ਹੋਇਆ ਹੈ, ਤਾਂ ਇਹ ਐਪਾ ਤੁਹਾਡੇ ਵੱਲੋਂ ਆਪਣੇ ਡੀਵਾਈਸ ਨੂੰ ਅਣਲਾਕ ਕੀਤੇ ਨਾ ਹੋਣ ਤੱਕ ਸ਼ੁਰੂ ਨਹੀਂ ਹੋਵੇਗੀ।"</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"\'ਅਸਿਸਟੈਂਟ\' ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ \'ਤੇ ਦਿਸਣਯੋਗ ਜਾਂ ਐਪਾਂ ਵਿੱਚ ਪਹੁੰਚਯੋਗ ਜਾਣਕਾਰੀ ਸਮੇਤ ਤੁਹਾਡੇ ਸਿਸਟਮ \'ਤੇ ਵਰਤੋਂ ਵਿੱਚ ਐਪਾਂ ਬਾਰੇ ਜਾਣਕਾਰੀ ਪੜ੍ਹ ਸਕੇਗੀ।"</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"ਡੀਬੱਗਿੰਗ ਡਾਟਾ ਸਾਂਝਾ ਕਰੋ"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"ਕੀ ਵੇਰਵੇ ਸਮੇਤ ਡੀਬੱਗਿੰਗ ਡਾਟਾ ਸਾਂਝਾ ਕਰਨਾ ਹੈ?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਡੀਬੱਗਿੰਗ ਜਾਣਕਾਰੀ ਨੂੰ ਅੱਪਲੋਡ ਕਰਨਾ ਚਾਹੁੰਦੀ ਹੈ।"</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"ਡੀਬੱਗਿੰਗ ਡਾਟਾ ਸਾਂਝਾ ਕਰੋ"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ਇਸ ਡੀਵਾਈਸ ਤੋਂ <xliff:g id="DATE">%2$s</xliff:g> ਨੂੰ <xliff:g id="TIME">%3$s</xliff:g> ਵਜੇ ਬਣਾਈ ਗਈ ਬੱਗ ਰਿਪੋਰਟ ਨੂੰ ਅੱਪਲੋਡ ਕਰਨ ਲਈ ਬੇਨਤੀ ਕਰ ਰਹੀ ਹੈ। ਬੱਗ ਰਿਪੋਰਟਾਂ ਵਿੱਚ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਜਾਂ ਐਪਾਂ ਰਾਹੀਂ ਲੌਗ ਕਰਨ ਬਾਰੇ ਨਿੱਜੀ ਜਾਣਕਾਰੀ ਸ਼ਾਮਲ ਹੈ, ਉਦਾਹਰਨ ਲਈ, ਵਰਤੋਂਕਾਰ ਨਾਮ, ਟਿਕਾਣਾ ਡਾਟਾ, ਡੀਵਾਈਸ ਪਛਾਣਕਰਤਾ ਅਤੇ ਨੈੱਟਵਰਕ ਜਾਣਕਾਰੀ। ਇਸ ਜਾਣਕਾਰੀ ਨਾਲ ਸਿਰਫ਼ ਆਪਣੇ ਭਰੋਸੇਯੋਗ ਲੋਕਾਂ ਅਤੇ ਐਪਾਂ ਨਾਲ ਬੱਗ ਰਿਪੋਰਟਾਂ ਸਾਂਝੀਆਂ ਕਰੋ। ਕੀ <xliff:g id="APP_NAME_1">%4$s</xliff:g> ਨੂੰ ਬੱਗ ਰਿਪੋਰਟ ਅੱਪਲੋਡ ਕਰਨ ਦੇਣੀ ਹੈ?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"ਕਰਨ ਦਿਓ"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"ਨਾ ਕਰਨ ਦਿਓ"</string>
</resources>
diff --git a/res/values-pl-television/strings.xml b/res/values-pl-television/strings.xml
index 6fede9a..ea16f4b 100644
--- a/res/values-pl-television/strings.xml
+++ b/res/values-pl-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Odmów i nie pytaj ponownie"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Możesz to później zmienić, wybierając Ustawienia > Aplikacje"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Pokaż aplikacje systemowe"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Uprawnienia aplikacji"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Uprawnienia aplikacji"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> – uprawnienia"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Dodatkowe uprawnienia"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> – uprawnienia"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Odmów i nie pytaj ponownie"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Możesz to później zmienić, wybierając Ustawienia > Aplikacje"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Pokaż aplikacje systemowe"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Uprawnienia aplikacji"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Uprawnienia aplikacji"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> – uprawnienia"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Dodatkowe uprawnienia"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> – uprawnienia"</string>
</resources>
diff --git a/res/values-pl-watch/strings.xml b/res/values-pl-watch/strings.xml
index 95c3687..cecd675 100644
--- a/res/values-pl-watch/strings.xml
+++ b/res/values-pl-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Odmów i nie pytaj ponownie"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Pokaż aplikacje systemowe"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Nie można zmienić"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Tak"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Anuluj"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Odmów i nie pytaj ponownie"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Pokaż aplikacje systemowe"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Nie można zmienić"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Tak"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Anuluj"</string>
</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index d6bcef2..ebde871 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,138 +16,226 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Instalator pakietu"</string>
- <string name="next" msgid="3057143178373252333">"Dalej"</string>
- <string name="install" msgid="5896438203900042068">"Instaluj"</string>
- <string name="done" msgid="3889387558374211719">"Gotowe"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Zezwalaj tej aplikacji na:"</string>
- <string name="cancel" msgid="8360346460165114585">"Anuluj"</string>
- <string name="unknown" msgid="4742479012767208045">"Nieznane"</string>
- <string name="installing" msgid="8613631001631998372">"Instalowanie..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Instaluję pakiet <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Aplikacja została zainstalowana."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Zainstalować tę aplikację? Będzie miała następujące uprawnienia:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Zainstalować tę aplikację? Nie ma specjalnych wymagań dotyczących dostępu."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Zainstalować aktualizację tej aplikacji? Nie utracisz wcześniejszych danych. Zaktualizowana aplikacja będzie miała następujące uprawnienia:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Zainstalować aktualizację fabrycznej aplikacji? Nie utracisz wcześniejszych danych. Zaktualizowana aplikacja będzie miała następujące uprawnienia:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Chcesz zaktualizować tę istniejącą aplikację? Nie utracisz danych. Nie są wymagane specjalne uprawnienia dostępu."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Chcesz zaktualizować tę wbudowaną aplikację? Nie utracisz danych. Nie są wymagane specjalne uprawnienia dostępu."</string>
- <string name="install_failed" msgid="6579998651498970899">"Aplikacja nie została zainstalowana."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Instalacja pakietu została zablokowana."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Aplikacja nie została zainstalowana, bo powoduje konflikt z istniejącym pakietem."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Aplikacja nie została zainstalowana, bo jest niezgodna z Twoim tabletem."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Aplikacja jest niezgodna z Twoim telewizorem."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Aplikacja nie została zainstalowana, bo jest niezgodna z Twoim telefonem."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Aplikacja nie została zainstalowana, bo pakiet wygląda na nieprawidłowy."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Nie można zainstalować aplikacji <xliff:g id="APP_NAME">%1$s</xliff:g> na Twoim tablecie."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Nie udało się zainstalować <xliff:g id="APP_NAME">%1$s</xliff:g> na Twoim telewizorze."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Nie można zainstalować aplikacji <xliff:g id="APP_NAME">%1$s</xliff:g> na Twoim telefonie."</string>
- <string name="launch" msgid="4826921505917605463">"Otwórz"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Twój administrator nie zezwala na instalowanie aplikacji pochodzących z nieznanych źródeł."</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Ten użytkownik nie może instalować nieznanych aplikacji"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Ten użytkownik nie może instalować aplikacji"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Ustawienia"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Zarządzaj aplikacjami"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Zastąpić aplikację?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Instalowana aplikacja zastąpi inną.\n\nWszystkie Twoje dotychczasowe dane zostaną zapisane."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Jest to aplikacja systemowa.\n\nWszystkie Twoje dotychczasowe dane zostaną zapisane."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Brak miejsca"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Nie można zainstalować aplikacji <xliff:g id="APP_NAME">%1$s</xliff:g>. Zwolnij trochę miejsca i spróbuj ponownie."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Nie znaleziono aplikacji"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Aplikacji nie znaleziono na liście zainstalowanych programów."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Niedozwolone"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Bieżący użytkownik nie może tego odinstalować."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Błąd"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Nie można odinstalować aplikacji."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Odinstaluj aplikację"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Odinstaluj aktualizację"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> jest częścią następującej aplikacji:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Odinstalować tę aplikację?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Chcesz odinstalować tę aplikację dla "<b>"wszystkich"</b>" użytkowników? Ta aplikacja i jej dane zostaną usunięte dla "<b>"wszystkich"</b>" użytkowników na urządzeniu."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Chcesz odinstalować tę aplikację dla użytkownika <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Przywrócić fabryczną wersję tej aplikacji? Wszystkie dane zostaną usunięte."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Przywrócić fabryczną wersję tej aplikacji? Wszystkie dane zostaną usunięte. Dotyczy to wszystkich użytkowników tego urządzenia, również tych korzystających z profilu do pracy."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Aktywne odinstalowania"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Nieudane odinstalowania"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Odinstalowywanie..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Odinstalowuję pakiet <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Odinstalowywanie zakończone"</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Odinstalowano pakiet <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Nie udało się odinstalować."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Nie udało się odinstalować pakietu <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Nie można odinstalować aktywnej aplikacji do administrowania urządzeniem"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Nie można odinstalować aplikacji do administrowania urządzeniem aktywnej dla użytkownika <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Niektórzy użytkownicy i niektóre profile wymagają tej aplikacji, a w innych przypadkach została odinstalowana"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Ta aplikacja jest potrzebna w Twoim profilu i nie można jej odinstalować."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Administrator urządzenia wymaga tej aplikacji i nie można jej odinstalować."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Zarządzaj aplikacjami do administrowania urządzeniem"</string>
- <string name="manage_users" msgid="3125018886835668847">"Zarządzaj użytkownikami"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Nie można odinstalować aplikacji <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Podczas analizowania pakietu wystąpił problem."</string>
- <string name="newPerms" msgid="6039428254474104210">"Nowe"</string>
- <string name="allPerms" msgid="1024385515840703981">"Wszystkie"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Prywatność"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Dostęp do urządzenia"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Ta aktualizacja nie wymaga nowych uprawnień."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Chcesz przyznać te uprawnienia? Dają one dostęp do:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Odmów"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Więcej informacji"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Odmów mimo to"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Zezwolić aplikacji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> na <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"wyłączone: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"wszystkie wyłączone"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"brak wyłączonych"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Zezwól"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Aplikacje"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Uprawnienia aplikacji"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Nie pytaj ponownie"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Brak uprawnień"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Dodatkowe uprawnienia"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Kontroler uprawnień"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"uprawnienia"</string>
+ <string name="cancel" msgid="7279939269964834974">"Anuluj"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Nie znaleziono aplikacji"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Odmów"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Odmów i nie pytaj ponownie"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Więcej"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Odmów mimo to"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Zezwolić aplikacji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> na: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Zawsze zezwalać aplikacji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> na: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Tylko przy używaniu aplikacji"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Zawsze"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Odmów i nie pytaj ponownie"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"wyłączone: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"wszystkie wyłączone"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"brak wyłączonych"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Zezwól"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Zawsze zezwalaj"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Zezwalaj tylko podczas używania aplikacji"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Aplikacje"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Uprawnienia aplikacji"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Menedżer uprawnień"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Nie pytaj ponownie"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Brak uprawnień"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Dodatkowe uprawnienia"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Otwórz informacje o aplikacji"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="few">Jeszcze <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="many">Jeszcze <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="other">Jeszcze <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="one">Jeszcze <xliff:g id="COUNT_0">%1$d</xliff:g></item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Ta aplikacja jest na straszą wersję Androida. Jeśli odmówisz uprawnień, aplikacja może nie działać prawidłowo."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"wykonywanie nieznanych działań"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"Dostęp ma: <xliff:g id="COUNT_0">%1$d</xliff:g> z <xliff:g id="COUNT_1">%2$d</xliff:g> aplikacji"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Pokaż systemowe"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Ukryj systemowe"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> – uprawnienia"</string>
- <string name="no_apps" msgid="1965493419005012569">"Brak aplikacji"</string>
- <string name="location_settings" msgid="1774875730854491297">"Ustawienia lokalizacji"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Jeśli nie przyznasz tych uprawnień, podstawowe funkcje urządzenia mogą nie działać prawidłowo."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Narzucone przez zasady"</string>
- <string name="loading" msgid="7811651799620593731">"Ładuję…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Wszystkie uprawnienia"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Inne funkcje aplikacji"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Prośba o pozwolenie"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Wykryto nakładkę ekranową"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Aby zmodyfikować te uprawnienia, musisz najpierw wyłączyć nakładkę ekranową, klikając Ustawienia > Aplikacje"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Otwórz ustawienia"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Wear nie obsługuje instalowania ani odinstalowywania."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"Aplikacja <xliff:g id="APP_NAME_0">%1$s</xliff:g> została zaktualizowana. Zezwolić aplikacji <xliff:g id="APP_NAME_1">%1$s</xliff:g> na uzyskiwanie dostępu do tych elementów?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Wybierz, jakie uprawnienia dostępu ma mieć <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"Aplikacja <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> została zaktualizowana. Wybierz dla niej uprawnienia dostępu."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Anuluj"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Dalej"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Nowe uprawnienia"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Aktualne uprawnienia"</string>
- <string name="message_staging" msgid="6151794817691100003">"Przygotowuję aplikację…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Nieznana"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Ze względów bezpieczeństwa na Twoim tablecie nie można instalować nieznanych aplikacji z tego źródła."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Ze względów bezpieczeństwa na Twoim telewizorze nie można instalować nieznanych aplikacji z tego źródła."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Ze względów bezpieczeństwa na Twoim telefonie nie można instalować nieznanych aplikacji z tego źródła."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Dane na telefonie i prywatne są bardziej narażone na atak nieznanych aplikacji. Instalując tę aplikację, bierzesz na siebie odpowiedzialność za ewentualne uszkodzenie telefonu lub utratę danych w wyniku jej używania."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Dane na tablecie i prywatne są bardziej narażone na atak nieznanych aplikacji. Instalując tę aplikację, bierzesz na siebie odpowiedzialność za ewentualne uszkodzenie tabletu lub utratę danych w wyniku jej używania."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Dane na telewizorze i prywatne są bardziej narażone na atak nieznanych aplikacji. Instalując tę aplikację, bierzesz na siebie odpowiedzialność za ewentualne uszkodzenie telewizora lub utratę danych w wyniku jej używania."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Dalej"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Ustawienia"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Instalowanie/odinstalowywanie aplikacji na Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Ta aplikacja jest na straszą wersję Androida. Jeśli odmówisz uprawnień, aplikacja może nie działać prawidłowo."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"wykonywanie nieznanych działań"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"Dostęp ma: <xliff:g id="COUNT_0">%1$d</xliff:g> z <xliff:g id="COUNT_1">%2$d</xliff:g> aplikacji"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Ostatnie użycie"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Wyświetl panel uprawnień"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Pokaż systemowe"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Ukryj systemowe"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Brak aplikacji"</string>
+ <string name="location_settings" msgid="547378321761364906">"Ustawienia lokalizacji"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Jeśli nie przyznasz tych uprawnień, podstawowe funkcje urządzenia mogą nie działać prawidłowo."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Narzucone przez zasady"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Dostęp w tle wyłączony przez zasady"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Dostęp w tle włączony przez zasady"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Dostęp na pierwszym planie włączony przez zasady"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Kontrolowane przez administratora"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Dostęp w tle wyłączony przez administratora"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Dostęp w tle włączony przez administratora"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Dostęp na pierwszym planie włączony przez administratora"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Uprawnienie ustawione przez system"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Zawsze"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Tylko przy używaniu aplikacji"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Nigdy"</string>
+ <string name="loading" msgid="323483393167148377">"Ładuję…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Wszystkie uprawnienia"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Inne funkcje aplikacji"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Prośba o pozwolenie"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Wykryto nakładkę ekranową"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Aby zmodyfikować te uprawnienia, musisz najpierw wyłączyć nakładkę ekranową, klikając Ustawienia > Aplikacje"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Otwórz ustawienia"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Wear nie obsługuje instalowania ani odinstalowywania."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Wybierz, jakie uprawnienia dostępu ma mieć <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"Aplikacja <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> została zaktualizowana. Wybierz dla niej uprawnienia dostępu."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Anuluj"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Dalej"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Nowe uprawnienia"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Aktualne uprawnienia"</string>
+ <string name="message_staging" msgid="641286607664721291">"Przygotowuję aplikację…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Inny"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Panel"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ <item quantity="other">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="one">Ostatnie użycie: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> użycie</item>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="few">Ostatnie użycie: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> użycia (<xliff:g id="NUM_5">%3$s</xliff:g> w tle)</item>
+ <item quantity="many">Ostatnie użycie: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> użyć (<xliff:g id="NUM_5">%3$s</xliff:g> w tle)</item>
+ <item quantity="other">Ostatnie użycie: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> użycia (<xliff:g id="NUM_5">%3$s</xliff:g> w tle)</item>
+ <item quantity="one">Ostatnie użycie: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> użycie (<xliff:g id="NUM_2">%3$s</xliff:g> w tle)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="few">Ostatnie użycie: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> użycia\nCzas trwania: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="many">Ostatnie użycie: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> użyć\nCzas trwania: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">Ostatnie użycie: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> użycia\nCzas trwania: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="one">Ostatnie użycie: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> użycie\nCzas trwania: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="few">Ostatnie użycie: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> użycia (<xliff:g id="NUM_6">%3$s</xliff:g> w tle)\nCzas trwania: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="many">Ostatnie użycie: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> użyć (<xliff:g id="NUM_6">%3$s</xliff:g> w tle)\nCzas trwania: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">Ostatnie użycie: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> użycia (<xliff:g id="NUM_6">%3$s</xliff:g> w tle)\nCzas trwania: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="one">Ostatnie użycie: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> użycie (<xliff:g id="NUM_2">%3$s</xliff:g> w tle)\nCzas trwania: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Dowolne uprawnienie"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Dowolny czas"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Ostatnie 7 dni"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Ostatnie 24 godziny"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Ostatnia godzina"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Ostatnie 15 minut"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Ostatnia minuta"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Brak użycia uprawnień"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Użyte w dowolnym czasie"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Użyte w ciągu ostatnich 7 dni"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Użyte w ciągu ostatnich 24 godzin"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Użyte w ciągu ostatniej godziny"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Użyte w ciągu ostatnich 15 minut"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Użyte w ciągu ostatniej minuty"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Najczęściej używane w dowolnym czasie"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Najczęściej używane w ciągu ostatnich 7 dni"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Najczęściej używane w ciągu ostatnich 24 godzin"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Najczęściej używane w ciągu ostatniej godziny"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Najczęściej używane w ciągu ostatnich 15 minut"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Najczęściej używane w ciągu ostatniej minuty"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Aplikacje"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtrowane według: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Usuń filtr"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtruj według"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtruj według uprawnień"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Najwięcej uprawnień"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Najczęściej używane"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Ostatnio"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Odśwież"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Użycie uprawnień aplikacji"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Dostęp: <xliff:g id="NUM">%1$s</xliff:g> razy. Ostatnio użyto <xliff:g id="TIME">%2$s</xliff:g> temu."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Zezwól"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Zawsze zezwalaj"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Zezwalaj tylko podczas używania aplikacji"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Odmów"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Uprawnienie dostępu do: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Dostęp do: <xliff:g id="PERM">%1$s</xliff:g> dla aplikacji <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"Aplikacja <xliff:g id="APP">%1$s</xliff:g> użyła dostępu do: <xliff:g id="PERM">%2$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g> temu."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"Aplikacja <xliff:g id="APP">%1$s</xliff:g> nie korzysta z: <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Wyświetl szczegółowe użycie uprawnień"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Ostatnie użycie: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Nigdy nie użyto"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Dozwolone"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Zgoda na dostęp tylko podczas używania"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Niedozwolone"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Zobacz szczegółowe informacje o użyciu"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> minuty</item>
+ <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> minut</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minuty</item>
+ <item quantity="one">1 minuta</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> sekundy</item>
+ <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> sekund</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sekundy</item>
+ <item quantity="one">1 sekunda</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Użyć aplikacji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> jako: <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Użyć aplikacji <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> zamiast aplikacji <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> jako: <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Przypomnienia o uprawnieniach"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"Aplikacja <xliff:g id="APP_NAME">%s</xliff:g> używa Twojej lokalizacji"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Ta aplikacja może zawsze uzyskać dostęp do Twojej lokalizacji. Kliknij, by to zmienić."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Tylko podczas używania aplikacji"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Nie przyznano żadnych uprawnień"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Nie odmówiono żadnych uprawnień"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Nie zezwolono żadnym aplikacjom"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Nie zabroniono żadnym aplikacjom"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Otwórz"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Odinstaluj"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Wymuś zatrzymanie"</string>
+ <string name="settings" msgid="2884124136779508907">"Ustawienia"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"Usługa <xliff:g id="SERVICE_NAME">%s</xliff:g> ma pełny dostęp do urządzenia"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"Usługi ułatwień dostępu (<xliff:g id="NUM_SERVICES">%s</xliff:g>) mają pełny dostęp do urządzenia"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"Usługa <xliff:g id="SERVICE_NAME">%s</xliff:g> może wyświetlać ekran, działania i wprowadzane dane, wykonywać działania i zarządzać wyświetlaczem."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Te usługi mogą wyświetlać ekran, działania i wprowadzane dane, wykonywać działania i zarządzać wyświetlaczem."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Aplikacje domyślne"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Brak domyślnych aplikacji"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Domyślne do pracy"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Brak"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Brak aplikacji"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Specjalny dostęp do aplikacji"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Brak specjalnego dostępu do aplikacji"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Brak aplikacji"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Aplikacja asystująca"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Przeglądarka"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Telefon"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Aplikacja do SMS-ów"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Aplikacja alarmowa"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Aplikacja ekranu głównego"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Aplikacja Muzyka"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Aplikacja Galeria"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Aplikacja na telefon, tryb samochodowy"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Aplikacja przekierowująca połączenia"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Aplikacja do filtrowania połączeń"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Aplikacja towarzysząca połączeniom"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Aplikacja do wyświetlania treści w samochodzie"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Nie obsługuje profilu do pracy"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Uwaga: Po ponownym uruchomieniu urządzenia z ustawioną blokadą ekranu ta aplikacja będzie mogła uruchomić się dopiero wtedy, gdy odblokujesz urządzenie."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Asystent będzie mógł odczytywać informacje o aplikacjach używanych w systemie. Obejmuje to też informacje widoczne na ekranie i dostępne w aplikacjach."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Udostępnianie danych debugowania"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Udostępnić szczegółowe dane debugowania?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> chce przesłać informacje debugowania."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Udostępnianie danych debugowania"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> prosi o zezwolenie na przesłanie raportu o błędzie z tego urządzenia. Raport utworzono <xliff:g id="DATE">%2$s</xliff:g> o <xliff:g id="TIME">%3$s</xliff:g>. Raporty o błędach zawierają dane prywatne powiązane z Twoim urządzeniem lub zarejestrowane w aplikacjach, na przykład nazwy użytkowników, dane o lokalizacji, identyfikatory urządzeń i informacje o sieciach. Raporty o błędach zawierające te informacje udostępniaj tylko osobom i aplikacjom, którym ufasz. Zezwolić aplikacji <xliff:g id="APP_NAME_1">%4$s</xliff:g> na przesłanie raportu o błędzie?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Zezwól"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Odmów"</string>
</resources>
diff --git a/res/values-pt-rBR-television/strings.xml b/res/values-pt-rBR-television/strings.xml
index 2b6bdda..e6f45ff 100644
--- a/res/values-pt-rBR-television/strings.xml
+++ b/res/values-pt-rBR-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Negar e não perguntar novamente"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"É possível alterar isso mais tarde em \"Config.\" > \"Apps\""</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Mostrar apps do sistema"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Permissões do app"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Permissões do app"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Permissões para <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Permissões adicionais"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Permissões para <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Negar e não perguntar de novo"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"É possível alterar isso mais tarde em \"Config.\" > \"Apps\""</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Mostrar apps do sistema"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Permissões do app"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Permissões do app"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Permissões para <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Outras permissões"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Permissões para <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-pt-rBR-watch/strings.xml b/res/values-pt-rBR-watch/strings.xml
index 8742c2d..52ec70e 100644
--- a/res/values-pt-rBR-watch/strings.xml
+++ b/res/values-pt-rBR-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Negar e não perguntar de novo"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Mostrar apps do sistema"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Impossível alterar"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Sim"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Cancelar"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Negar e não perguntar de novo"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Mostrar apps do sistema"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Impossível alterar"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Sim"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Cancelar"</string>
</resources>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index 46c3902..4e01252 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Instalador do pacote"</string>
- <string name="next" msgid="3057143178373252333">"Próximo"</string>
- <string name="install" msgid="5896438203900042068">"Instalar"</string>
- <string name="done" msgid="3889387558374211719">"Concluído"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Permitir que este app:"</string>
- <string name="cancel" msgid="8360346460165114585">"Cancelar"</string>
- <string name="unknown" msgid="4742479012767208045">"Desconhecido"</string>
- <string name="installing" msgid="8613631001631998372">"Instalando..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Instalando <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"App instalado."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Quer instalar este app? Ele terá acesso a:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Quer instalar este app? Não requer acesso especial."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Quer instalar uma atualização para este app? Os dados existentes não serão perdidos. O app atualizado terá acesso a:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Quer instalar uma atualização para este app integrado? Os dados existentes não serão perdidos. O app atualizado terá acesso a:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Quer instalar uma atualização para este app existente? Seus dados existentes não serão perdidos. A atualização não requer qualquer acesso especial."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Quer instalar uma atualização para este app integrado? Seus dados existentes não serão perdidos. A atualização não requer qualquer acesso especial."</string>
- <string name="install_failed" msgid="6579998651498970899">"O app não foi instalado."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"A instalação do pacote foi bloqueada."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Como o pacote tem um conflito com um pacote já existente, o app não foi instalado."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Como o app não é compatível com seu tablet, ele não foi instalado."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Este app não é compatível com sua TV."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Como o app não é compatível com seu smartphone, ele não foi instalado."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Como o pacote parece ser inválido, o app não foi instalado."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Não foi possível instalar <xliff:g id="APP_NAME">%1$s</xliff:g> em seu tablet."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Não foi possível instalar <xliff:g id="APP_NAME">%1$s</xliff:g> na sua TV."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Não foi possível instalar <xliff:g id="APP_NAME">%1$s</xliff:g> em seu telefone."</string>
- <string name="launch" msgid="4826921505917605463">"Abrir"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Seu administrador não permite a instalação de apps transferidos por download de fontes desconhecidas"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Apps desconhecidos não podem ser instalados por este usuário"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Este usuário não tem permissão para instalar apps"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Configurações"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Gerenciar apps"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Substituir app?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"O app que você está instalando substituirá outro app.\n\nTodos os seus dados de usuário anteriores serão salvos."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Este é um app do sistema.\n\nTodos os seus dados de usuário anteriores serão salvos."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Sem espaço"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Não foi possível instalar <xliff:g id="APP_NAME">%1$s</xliff:g>. Libere um pouco de espaço e tente novamente."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"App não encontrado"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"O app não foi encontrado na lista de apps instalados."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Não permitido"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"O usuário atual não tem permissão para executar essa desinstalação."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Erro"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Não foi possível desinstalar o app."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Desinstalar app"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Desinstalar atualização"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> é parte do seguinte app:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Quer desinstalar este app?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Quer desinstalar este app para "<b>"todos"</b>" os usuários? O app e seus dados serão removidos para "<b>"todos"</b>" os usuários do dispositivo."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Quer desinstalar este app para o usuário <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Substituir este app pela versão de fábrica? Todos os dados serão removidos."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Substituir este app pela versão de fábrica? Todos os dados serão removidos. Isso afeta todos os usuários deste dispositivo, incluindo aqueles com perfis de trabalho."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Executando desinstalações"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Falha nas desinstalações"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Desinstalando..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Desinstalando <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Desinstalação concluída."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> desinstalado"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Desinstalação malsucedida."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Falha na desinstalação de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Não é possível desinstalar o app para administrador ativo do dispositivo"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Não é possível desinstalar o app para administrador ativo do dispositivo de <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"O app é necessário para alguns usuários ou perfis e foi desinstalado para outros"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Este app é necessário para seu perfil e não pode ser desinstalado."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"O app é exigido pelo administrador do dispositivo e não pode ser desinstalado."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Gerenciar apps do administrador do dispositivo"</string>
- <string name="manage_users" msgid="3125018886835668847">"Gerenciar usuários"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Não foi possível desinstalar <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Ocorreu um problema ao analisar o pacote."</string>
- <string name="newPerms" msgid="6039428254474104210">"Novas"</string>
- <string name="allPerms" msgid="1024385515840703981">"Todas"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privacidade"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Acesso ao dispositivo"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Esta atualização não requer novas permissões."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Quer conceder as permissões a seguir? Será concedido acesso para:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Negar"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Mais informações"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Negar mesmo assim"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> desativada(s)"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"todas desativadas"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"nenhuma desativada"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Permitir"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Apps"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Permissões do app"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Não perguntar novamente"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Sem permissões"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Permissões adicionais"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Controlador de permissões"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"permissões"</string>
+ <string name="cancel" msgid="7279939269964834974">"Cancelar"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"App não encontrado"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Negar"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Negar e não perguntar de novo"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Mais inform."</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Negar mesmo assim"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Sempre permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Apenas ao usar o app"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Sempre"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Negar e não perguntar de novo"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> desativada(s)"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"todas desativadas"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"nenhuma desativada"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Permitir"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Permitir o tempo todo"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Permitir apenas enquanto o app estiver em uso"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Apps"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Permissões do app"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Gerenciador de permissões"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Não perguntar novamente"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Sem permissões"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Outras permissões"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Abrir informações do app"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="one">Mais <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="other">Mais <xliff:g id="COUNT_1">%1$d</xliff:g></item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Este app foi projetado para uma versão anterior do Android. Negar a permissão pode fazer com que ele deixe de funcionar conforme esperado."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"executar uma ação desconhecida"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_0">%1$d</xliff:g> de <xliff:g id="COUNT_1">%2$d</xliff:g> apps permitidos"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Mostrar sistema"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Ocultar sistema"</string>
- <string name="permission_title" msgid="6495415273398916381">"Permissões para <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Nenhum app"</string>
- <string name="location_settings" msgid="1774875730854491297">"Configurações de localização"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Se você negar essa permissão, recursos básicos do seu dispositivo poderão não funcionar mais como deveriam."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Aplicável por política"</string>
- <string name="loading" msgid="7811651799620593731">"Carregando…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Todas as permissões"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Outros recursos do app"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Solicitação de permissão"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Sobreposição de tela detectada"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Para alterar a configuração dessa permissão, você deve primeiro desativar a sobreposição de tela em \"Config.\" > \"Apps\""</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Abrir configurações"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"As ações de instalar/desinstalar não são compatíveis com o Android Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> foi atualizado. Permitir que o app <xliff:g id="APP_NAME_1">%1$s</xliff:g> acesse os itens a seguir?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Escolha o que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> terá permissão de acessar"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"O app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> foi atualizado. Escolha o que esse app terá permissão de acessar."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Cancelar"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Continuar"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Novas permissões"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Permissões atuais"</string>
- <string name="message_staging" msgid="6151794817691100003">"Promovendo app…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Desconhecido"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Para sua segurança, seu tablet não tem permissão para instalar apps desconhecidos dessa fonte."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Para sua segurança, sua TV não tem permissão para instalar apps desconhecidos dessa fonte."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Para sua segurança, seu smartphone não tem permissão para instalar apps desconhecidos dessa fonte."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Seu smartphone e seus dados pessoais estão mais vulneráveis a ataques de apps desconhecidos. Ao instalar esse app, você concorda que é responsável por qualquer dano causado ao seu smartphone ou pela perda de dados que possa resultar do uso desse app."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Seu tablet e seus dados pessoais estão mais vulneráveis a ataques de apps desconhecidos. Ao instalar esse app, você concorda que é responsável por qualquer dano causado ao seu tablet ou pela perda de dados que possa resultar do uso desse app."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Sua TV e seus dados pessoais estão mais vulneráveis a ataques por apps desconhecidos. Ao instalar esse app, você concorda que é responsável por qualquer dano à sua TV ou pela perda de dados que possa resultar do uso dese app."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Continuar"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Configurações"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Instalando/desinstalando apps do Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Este app foi projetado para uma versão anterior do Android. Negar a permissão pode fazer com que ele deixe de funcionar conforme esperado."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"executar uma ação desconhecida"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> de <xliff:g id="COUNT_1">%2$d</xliff:g> apps permitidos"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Uso recente"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Ver o painel de permissões"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Mostrar sistema"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Ocultar sistema"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Nenhum app"</string>
+ <string name="location_settings" msgid="547378321761364906">"Configurações de localização"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Se você negar essa permissão, recursos básicos do seu dispositivo poderão não funcionar mais como deveriam."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Aplicável por política"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Acesso em segundo plano desativado pela política"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Acesso em segundo plano ativado pela política"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Acesso em primeiro plano ativado pela política"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Controlada pelo administrador"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Acesso em segundo plano desativado pelo administrador"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Acesso em segundo plano ativado pelo administrador"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Acesso em primeiro plano ativado pelo administrador"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Permissão definida pelo sistema"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Sempre"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Apenas ao usar o app"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Nunca"</string>
+ <string name="loading" msgid="323483393167148377">"Carregando…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Todas as permissões"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Outros recursos do app"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Solicitação de permissão"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Sobreposição de tela detectada"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Para alterar a configuração dessa permissão, primeiro você precisa desativar a sobreposição de tela em \"Config.\" > \"Apps\""</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Abrir configurações"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"As ações de instalar/desinstalar não são compatíveis com o Android Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Escolha o que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> terá permissão para acessar"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"O app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> foi atualizado. Escolha o que esse app terá permissão para acessar."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Cancelar"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Continuar"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Novas permissões"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Permissões atuais"</string>
+ <string name="message_staging" msgid="641286607664721291">"Promovendo app…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Desconhecido"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Painel"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">Último acesso: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> (<xliff:g id="NUM_5">%3$s</xliff:g> em segundo plano)</item>
+ <item quantity="other">Últimos acessos: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> (<xliff:g id="NUM_5">%3$s</xliff:g> em segundo plano)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">Último acesso: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g>\nDuração: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">Últimos acessos: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g>\nDuração: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">Último acesso: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> (<xliff:g id="NUM_6">%3$s</xliff:g> em segundo plano)\nDuração: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">Últimos acessos: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> (<xliff:g id="NUM_6">%3$s</xliff:g> em segundo plano)\nDuração: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Qualquer permissão"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Qualquer horário"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Últimos 7 dias"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Últimas 24 horas"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Última hora"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Últimos 15 minutos"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Último minuto"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Nenhum uso de permissões"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Acesso a qualquer momento"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Acesso nos últimos sete dias"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Acesso nas últimas 24 horas"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Acesso na última hora"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Acesso nos últimos 15 minutos"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Acesso no último minuto"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Permissão mais usada a qualquer momento"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Permissão mais usada nos últimos sete dias"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Permissão mais usada nas últimas 24 horas"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Permissão mais usada na última hora"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Permissão mais usada nos últimos 15 minutos"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Permissão mais usada no último minuto"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Apps"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtrado por: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Remover filtro"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtrar por"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtrar por permissões"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Maior número de permissões"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Maior número de acessos"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Recentes"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Atualizar"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Uso de permissões do app"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Acesso: <xliff:g id="NUM">%1$s</xliff:g> vezes. Última utilização: <xliff:g id="TIME">%2$s</xliff:g> atrás."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Permitir"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Permitir o tempo todo"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Permitir apenas enquanto o app estiver em uso"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Negar"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Permissão de <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Acesso à permissão de <xliff:g id="PERM">%1$s</xliff:g> para o app <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"O app <xliff:g id="APP">%1$s</xliff:g> acessou sua permissão de <xliff:g id="PERM">%2$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g> atrás."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"O app <xliff:g id="APP">%1$s</xliff:g> não acessou seu <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Ver uso detalhado das permissões"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Último acesso: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Nunca acessou"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Permitido"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Permitido apenas quando em uso"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Negado"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Ver uso detalhado"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> minuto</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minutos</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> segundo</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> segundos</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Usar o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> como seu <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Usar o app <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> em vez de <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> como seu <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Lembretes de permissões"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"O app <xliff:g id="APP_NAME">%s</xliff:g> está usando sua localização"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Este app pode acessar sua localização a qualquer momento. Toque para alterar."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Apenas enquanto o app estiver em uso"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Nenhuma permissão autorizada"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Nenhuma permissão negada"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Nenhum app permitido"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Nenhum app negado"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Abrir"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Desinstalar"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Forçar fechamento"</string>
+ <string name="settings" msgid="2884124136779508907">"Configurações"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"O serviço <xliff:g id="SERVICE_NAME">%s</xliff:g> tem acesso total ao seu dispositivo"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> serviços de acessibilidade com acesso total ao seu dispositivo"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"O serviço <xliff:g id="SERVICE_NAME">%s</xliff:g> pode ver sua tela, ações e entradas, além de realizar ações e controlar a tela."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Esses serviços podem ver sua tela, ações e entradas, além de realizar ações e controlar a tela."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Apps padrão"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Nenhum app padrão"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Padrão para trabalho"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Nenhum"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Nenhum app"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Acesso especial ao app"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Nenhum acesso especial ao app"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Nenhum app"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"App assistivo"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"App de navegação"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"App Telefone"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"App de SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"App de emergência"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"App de início"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"App de música"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"App de galeria"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"App Telefone no modo carro"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"App p/ redirecionar chamadas"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"App identificador de chamadas"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"App complementar de chamadas"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"App de projeção do carro"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Não é compatível com perfil de trabalho"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Observação: se você reiniciar o dispositivo e tiver um bloqueio de tela definido, não será possível iniciar este app até que você desbloqueie o dispositivo."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"O assistente lerá informações sobre apps em uso no seu sistema, incluindo informações visíveis na tela ou as que podem ser acessadas nos apps."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Compartilhar dados de depuração"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Compartilhar dados detalhados de depuração?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"Solicitação do <xliff:g id="APP_NAME">%1$s</xliff:g> para upload de informações de depuração."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Compartilhar dados de depuração"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"Há uma solicitação do <xliff:g id="APP_NAME_0">%1$s</xliff:g> para upload de um relatório de bug criado neste dispositivo no dia <xliff:g id="DATE">%2$s</xliff:g>, <xliff:g id="TIME">%3$s</xliff:g>. Os relatórios de bug incluem informações pessoais do seu dispositivo ou registradas por apps, como nomes de usuário, dados de local, identificadores do dispositivo e informações de rede. Compartilhe relatórios de bugs apenas com pessoas e apps em que você confie para ter acesso a essas informações. Permitir que o <xliff:g id="APP_NAME_1">%4$s</xliff:g> faça upload do relatório de bug?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Permitir"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Negar"</string>
</resources>
diff --git a/res/values-pt-rPT-television/strings.xml b/res/values-pt-rPT-television/strings.xml
index 206676b..f6d7d76 100644
--- a/res/values-pt-rPT-television/strings.xml
+++ b/res/values-pt-rPT-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Recusar e não perguntar novamente"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Pode alterar esta definição mais tarde em Definições > Aplicações"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Mostrar aplicações do sistema"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Autorizações da aplicação"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Autorizações da aplicação"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Autorizações de <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Autorizações adicionais"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Autorizações de <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Recusar e não perguntar novamente"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Pode alterar esta definição mais tarde em Definições > Aplicações"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Mostrar aplicações do sistema"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Autorizações da aplicação"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Autorizações da aplicação"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Autorizações de <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Autorizações adicionais"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Autorizações de <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-pt-rPT-watch/strings.xml b/res/values-pt-rPT-watch/strings.xml
index e3c9e9f..5bf3e89 100644
--- a/res/values-pt-rPT-watch/strings.xml
+++ b/res/values-pt-rPT-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Recusar e não perguntar nov."</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Mostrar aplicações do sistema"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Não pode ser alterado"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Sim"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Cancelar"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Recusar e não perguntar nov."</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Mostrar aplicações do sistema"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Impossív. alterar"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Sim"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Cancelar"</string>
</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 9e51103..b55a0db 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,286 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Programa de instalação do pacote"</string>
- <string name="next" msgid="3057143178373252333">"Seguinte"</string>
- <string name="install" msgid="5896438203900042068">"Instalar"</string>
- <string name="done" msgid="3889387558374211719">"Concluído"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Permitir que esta aplicação:"</string>
- <string name="cancel" msgid="8360346460165114585">"Cancelar"</string>
- <string name="unknown" msgid="4742479012767208045">"Desconhecido"</string>
- <string name="installing" msgid="8613631001631998372">"A instalar..."</string>
- <string name="installing_app" msgid="4097935682329028894">"A instalar <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Aplicação instalada."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Pretende instalar esta aplicação? Terá acesso a:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Pretende instalar esta aplicação? Não requer qualquer acesso especial."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Pretende instalar uma atualização para a aplicação existente? Os dados existentes não serão perdidos. A aplicação atualizada terá acesso a:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Pretende instalar uma atualização para a aplicação existente? Os dados existentes não serão perdidos. A aplicação atualizada terá acesso a:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Pretende instalar uma atualização para a aplicação existente? Os dados existentes não serão perdidos. Não é necessário um acesso específico."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Pretende instalar uma atualização para a aplicação integrada? Os dados existentes não serão perdidos. Não é necessário um acesso específico."</string>
- <string name="install_failed" msgid="6579998651498970899">"Aplicação não instalada."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Foi bloqueada a instalação do pacote."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"A aplicação não foi instalada porque o pacote entra em conflito com um pacote existente."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"A aplicação não foi instalada porque não é compatível com o seu tablet."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Esta aplicação não é compatível com a sua TV."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"A aplicação não foi instalada porque não é compatível com o seu telemóvel."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"A aplicação não foi instalada porque o pacote parece ser inválido."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Não foi possível instalar <xliff:g id="APP_NAME">%1$s</xliff:g> no tablet."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Não foi possível instalar o <xliff:g id="APP_NAME">%1$s</xliff:g> na sua TV."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Não foi possível instalar <xliff:g id="APP_NAME">%1$s</xliff:g> no telemóvel."</string>
- <string name="launch" msgid="4826921505917605463">"Abrir"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"O gestor não permite a instalação de aplicações obtidas de fontes desconhecidas"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Este utilizador não pode instalar aplicações desconhecidas"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Este utilizador não tem permissão para instalar aplicações"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Definições"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Gerir aplicações"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Substituir aplicação?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"A aplicação que está a instalar substituirá outra aplicação. \n \nTodos os seus dados de utilizador anteriores serão guardados."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Este é uma aplicação do sistema. \n \nTodos os seus dados de utilizador anteriores serão guardados."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Sem espaço"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Não foi possível instalar <xliff:g id="APP_NAME">%1$s</xliff:g>. Liberte algum espaço e tente novamente."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Aplicação não encontrada"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"A aplicação não foi encontrada na lista de aplicações instaladas."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Não autorizado"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"O utilizador atual não tem autorização para efetuar esta desinstalação."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Erro"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Não foi possível desinstalar a aplicação."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Desinstalar a aplicação"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Desinstalar atualização"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> faz parte da seguinte aplicação:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Pretende desinstalar esta aplicação?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Pretende desinstalar esta aplicação para "<b>"todos"</b>" os utilizadores? A aplicação e os respetivos dados serão removidos de "<b>"todos"</b>" os utilizadores do dispositivo."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Pretende desinstalar esta aplicação para o utilizador <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Pretende substituir esta aplicação pela versão de fábrica? Todos os dados são removidos."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Pretende substituir esta aplicação pela versão de fábrica? Todos os dados são removidos. Esta ação afeta todos os utilizadores deste dispositivo, incluindo os que têm perfis de trabalho."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Desinstalações em execução"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Desinstalações com falha"</string>
- <string name="uninstalling" msgid="5556217435895938250">"A desinstalar..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"A desinstalar a aplicação <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Desinstalação concluída."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"A aplicação <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> foi desinstalada"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Desinstalação sem êxito."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Falha ao desinstalar a aplicação <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Não é possível desinstalar a aplicação de administração de dispositivos ativa"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Não é possível desinstalar a aplicação de administração de dispositivos ativa para <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Esta aplicação é necessária para alguns utilizadores ou perfis e foi desinstalada para outros"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"O perfil necessita desta aplicação e não é possível desinstalá-la."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Esta aplic. é exigida pelo gestor do disp. e não pode ser desinstalada."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Gerir aplicações de administração de dispositivos"</string>
- <string name="manage_users" msgid="3125018886835668847">"Gerir utilizadores"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Não foi possível desinstalar <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Ocorreu um problema ao analisar o pacote."</string>
- <string name="newPerms" msgid="6039428254474104210">"Novas"</string>
- <string name="allPerms" msgid="1024385515840703981">"Todas"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privacidade"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Acesso ao Dispositivo"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Esta atualização não requer novas permissões."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Pretende conceder as seguintes permissões? Permitirão acesso a:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Recusar"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Mais informações"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Recusar mesmo assim"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Pretende permitir à(ao) <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> desativadas"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"todas desativadas"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"nenhuma desativada"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Permitir"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Aplicações"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Permissões da aplicação"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Não perguntar novamente"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Sem autorizações"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Autorizações adicionais"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Controlador autorizações"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"autorizações"</string>
+ <string name="cancel" msgid="7279939269964834974">"Cancelar"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Aplicação não encontrada"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Recusar"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Recusar e não perguntar novamente"</string>
+ <!-- no translation found for grant_dialog_button_deny_background (5378693207810841555) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_deny_background_and_dont_ask_again (1032019626928637454) -->
+ <skip />
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Mais informação"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Recus. na mesma"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Pretende permitir a <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Pretende permitir que a aplicação <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g> sempre?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Apenas ao utilizar a aplicação"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Sempre"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Recusar e não perguntar novamente"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> desativadas"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"todas desativadas"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"nenhuma desativada"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Permitir"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Permitir sempre"</string>
+ <!-- no translation found for grant_dialog_button_allow_foreground (8090382319222429427) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_allow_background (3190568549032350790) -->
+ <skip />
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Aplicações"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Autorizações da aplicação"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Gestor de autorizações"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Não perguntar"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Sem autorizações"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Autorizações adicionais"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Abrir informações da aplicação"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other">Mais <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="one">Mais <xliff:g id="COUNT_0">%1$d</xliff:g></item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Esta aplicação foi concebida para uma versão mais antiga do Android. Negar autorização pode fazer com que deixe de funcionar como pretendido."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"executar uma ação desconhecida"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_0">%1$d</xliff:g> de <xliff:g id="COUNT_1">%2$d</xliff:g> aplicações autorizadas"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Mostrar sistema"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Ocultar sistema"</string>
- <string name="permission_title" msgid="6495415273398916381">"Autorizações de <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Sem aplicações"</string>
- <string name="location_settings" msgid="1774875730854491297">"Definições de localização"</string>
- <string name="location_warning" msgid="8778701356292735971">"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="7103819124542305179">"Se negar esta autorização, as funcionalidades básicas do seu dispositivo podem deixar de funcionar corretamente."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Imposta pela política"</string>
- <string name="loading" msgid="7811651799620593731">"A carregar…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Todas as autorizações"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Outras capacidades de aplicações"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Pedido de autorização"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Sobreposição de ecrã detetada"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Para alterar esta definição de autorização, primeiro tem de desativar a sobreposição do ecrã em Definições > Aplicações"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Abrir definições"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"As ações de instalar/desinstalar não são compatíveis com o Android Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"O <xliff:g id="APP_NAME_0">%1$s</xliff:g> foi atualizado. Permite que o <xliff:g id="APP_NAME_1">%1$s</xliff:g> aceda aos conteúdos seguintes?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Escolher a que conteúdos permite que o <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> aceda"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"O <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> foi atualizado. Escolha a que conteúdos permite que esta aplicação aceda."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Cancelar"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Continuar"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Novas autorizações"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Autorizações atuais"</string>
- <string name="message_staging" msgid="6151794817691100003">"A preparar a aplicação…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Desconhecido"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Para sua segurança, o tablet não está autorizado a instalar aplicações desconhecidas a partir desta fonte."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Para sua segurança, a TV não está autorizada a instalar aplicações desconhecidas a partir desta fonte."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Para sua segurança, o telemóvel não está autorizado a instalar aplicações desconhecidas a partir desta fonte."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"O seu telemóvel e os dados pessoais estão mais vulneráveis a ataques por parte de aplicações desconhecidas. Ao instalar esta aplicação, concorda que é responsável por quaisquer danos causados ao telemóvel ou pelas perdas de dados que possam resultar da utilização da mesma."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"O seu tablet e os dados pessoais estão mais vulneráveis a ataques por parte de aplicações desconhecidas. Ao instalar esta aplicação, concorda que é responsável por quaisquer danos causados ao tablet ou pelas perdas de dados que possam resultar da utilização da mesma."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"A sua TV e os dados pessoais estão mais vulneráveis a ataques por parte de aplicações desconhecidas. Ao instalar esta aplicação, concorda que é responsável por quaisquer danos causados à TV ou pelas perdas de dados que possam resultar da utilização da mesma."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Continuar"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Definições"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Instalar/desinstalar aplicações Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Esta aplicação foi concebida para uma versão mais antiga do Android. Recusar a autorização pode fazer com que deixe de funcionar como pretendido."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"executar uma ação desconhecida"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> de <xliff:g id="COUNT_1">%2$d</xliff:g> aplicações autorizadas"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Mostrar sistema"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Ocultar sistema"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Sem aplicações"</string>
+ <string name="location_settings" msgid="547378321761364906">"Definições de localização"</string>
+ <string name="location_warning" msgid="4687406043150343369">"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="6868290533389195836">"Se recusar esta autorização, as funcionalidades básicas do seu dispositivo podem deixar de funcionar corretamente."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Imposta pela política"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Acesso em segundo plano desativado pela política"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Acesso em segundo plano ativado pela política"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Acesso em primeiro plano ativado pela política"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Controlada pelo administrador"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Acesso em segundo plano desativado pelo administrador"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Acesso em segundo plano ativado pelo administrador"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Acesso em primeiro plano ativado pelo administrador"</string>
+ <!-- no translation found for permission_summary_enabled_system_fixed (5463084832974856683) -->
+ <skip />
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <!-- no translation found for permission_access_always (5419580764084361573) -->
+ <skip />
+ <!-- no translation found for permission_access_only_foreground (2857031150724321567) -->
+ <skip />
+ <!-- no translation found for permission_access_never (425385910378172045) -->
+ <skip />
+ <string name="loading" msgid="323483393167148377">"A carregar…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Todas as autorizações"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Outras capacidades de aplicações"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Pedido de autorização"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Sobreposição de ecrã detetada"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Para alterar esta definição de autorização, primeiro tem de desativar a sobreposição do ecrã em Definições > Aplicações"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Abrir definições"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"As ações de instalar/desinstalar não são compatíveis com o Android Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Escolher a que conteúdos permite que o <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> aceda"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"O <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> foi atualizado. Escolha a que conteúdos permite que esta aplicação aceda."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Cancelar"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Continuar"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Novas autorizações"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Autorizações atuais"</string>
+ <string name="message_staging" msgid="641286607664721291">"A preparar a aplicação…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Desconhecido"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Painel"</string>
+ <!-- no translation found for permission_usage_summary_foreground (3203419920107457274) -->
+ <skip />
+ <!-- no translation found for permission_usage_summary_background (5719598203265078254) -->
+ <skip />
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Qualquer autorização"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Em qualquer altura"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Últimos 7 dias"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Últimas 24 horas"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Última hora"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Últimos 15 minutos"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Último minuto"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Autorizações não utilizadas"</string>
+ <!-- no translation found for permission_usage_list_title_any_time (5641676869304328239) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_7_days (2972289322203714509) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_day (6298662604046093174) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_hour (7224982939487774388) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_15_minutes (49045607172810502) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_minute (7716966405942817635) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_any_time (862654449303514044) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_7_days (5393381637937213483) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_day (7202567658282481259) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_hour (4672313408976666479) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_15_minutes (1776918144361651860) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_minute (236300476767668315) -->
+ <skip />
+ <!-- no translation found for app_permission_usage_bar_label (7261634017833698654) -->
+ <!-- no translation found for permission_usage_view_details (4728049344017619500) -->
+ <skip />
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtrado por: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Remover filtro"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtrar por"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtrar por autorizações"</string>
+ <!-- no translation found for filter_by_time (1763143592970195407) -->
+ <skip />
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Maioria de autorizações"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Maioria de acessos"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Recentes"</string>
+ <!-- no translation found for sort_by_app (1912228966803416485) -->
+ <skip />
+ <!-- no translation found for sort_by_time (8280378662234104410) -->
+ <skip />
+ <!-- no translation found for item_separator (8266062815210378175) -->
+ <skip />
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Atualizar"</string>
+ <!-- no translation found for permission_usage_permission_filter_subtitle (5539392196389332769) -->
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Utiliz. de autoriz. da app"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Acesso: <xliff:g id="NUM">%1$s</xliff:g> vezes. Última utilização há <xliff:g id="TIME">%2$s</xliff:g>."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Permitir"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Permitir sempre"</string>
+ <!-- no translation found for app_permission_button_allow_foreground (2303741829613210541) -->
+ <skip />
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Recusar"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Autorização para o(a) <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <!-- no translation found for app_permission_header (228974007660007656) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_usage_summary (1034436308858219976) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_no_usages (4444374134047275841) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_app_permissions_link (8033278634020892918) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_permission_apps_link (8759141212929298774) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_generic (5479202003136667039) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_activity_recognition (2022880340017289990) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_calendar (2846128908236787586) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_call_log (2429916962093948340) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_camera (6699611334403400091) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_contacts (5169995707720233126) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_location (687820658574645201) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_aural (2102206495149326019) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_visual (3105938942794669520) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_microphone (2300290217308759293) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_phone (3773977614654088578) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sensors (6733606479604624853) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sms (8850213022386508528) -->
+ <skip />
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Último acesso: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Nunca acedida"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Permitidas"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Apenas permitido durante a utilização"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Recusadas"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Ver a utilização detalhada"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dias</item>
+ <item quantity="one">1 dia</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> horas</item>
+ <item quantity="one">1 hora</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minutos</item>
+ <item quantity="one">1 minuto</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> segundos</item>
+ <item quantity="one">1 segundo</item>
+ </plurals>
+ <string name="permission_reminders" msgid="8040710767178843151">"Lembretes de autorização"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"A aplicação <xliff:g id="APP_NAME">%s</xliff:g> tem estado a utilizar a sua localização"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Esta aplicação consegue aceder sempre à sua localização. Toque para alterar."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Apenas enquanto a aplicação está a ser utilizada"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Nenhuma autorização permitida."</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Nenhuma autorização recusada."</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Nenhuma aplicação permitida."</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Nenhuma aplicação recusada."</string>
+ <string name="settings" msgid="2884124136779508907">"Definições"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"O serviço <xliff:g id="SERVICE_NAME">%s</xliff:g> tem acesso total ao seu dispositivo"</string>
+ <!-- no translation found for accessibility_service_dialog_title_multiple (8129325613496173909) -->
+ <skip />
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"O serviço <xliff:g id="SERVICE_NAME">%s</xliff:g> pode ver o seu ecrã, as ações e as entradas, efetuar ações e controlar o ecrã."</string>
+ <!-- no translation found for accessibility_service_dialog_bottom_text_multiple (1387803460488775887) -->
+ <skip />
+ <!-- no translation found for request_role_title (3611734134669430568) -->
+ <skip />
+ <!-- no translation found for request_role_current_default (7512045433655289638) -->
+ <skip />
+ <!-- no translation found for request_role_set_as_default (5706081295230541240) -->
+ <skip />
+ <!-- no translation found for default_app_search_keyword (6938709626391437391) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_ok (3007005536659549573) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_open_settings (3368892579319881043) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_title (7173961211414061803) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_separator (9008030412869423988) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_last_separator (7455459775266515801) -->
+ <skip />
+ <string name="default_apps" msgid="8554530939151957828">"Aplicações predefinidas"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Sem aplicações predefinidas"</string>
+ <!-- no translation found for default_apps_manage_domain_urls (3146379064445013719) -->
+ <skip />
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Predefinição para o trabalho"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Nenhuma"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Sem aplicações"</string>
+ <!-- no translation found for special_app_access_search_keyword (462008045110320714) -->
+ <skip />
+ <string name="special_app_access" msgid="2561673957499408877">"Acesso especial a aplicações"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Sem acesso especial a aplic."</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Sem aplicações"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Aplicação de assistência"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Aplicação de navegador"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Aplicação Telefone"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Aplicação de SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Aplicação de emergência"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Aplicação Página inicial"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"App de música"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Aplicação de galeria"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Aplic. Telefone modo automóvel"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Aplic. de redirec. de chamadas"</string>
+ <!-- no translation found for role_label_call_screening (1089966334646538858) -->
+ <skip />
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Aplic. associada de chamadas"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Não suporta o perfil de trabalho."</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Nota: se reiniciar o dispositivo e tiver um bloqueio de ecrã definido, só é possível iniciar esta aplicação quando o dispositivo for desbloqueado."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"O assistente pode ler informações sobre aplicações em utilização no seu sistema, incluindo informações visíveis no ecrã ou acessíveis nas aplicações."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Partilhar dados de depuração"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Pretende partilhar dados de depuração detalhados?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"A aplicação <xliff:g id="APP_NAME">%1$s</xliff:g> pretende carregar informações de depuração."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Partilhar dados de depuração"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"A aplicação <xliff:g id="APP_NAME_0">%1$s</xliff:g> está a solicitar o carregamento de um relatório de erro a partir deste dispositivo realizado a <xliff:g id="DATE">%2$s</xliff:g> à(s) <xliff:g id="TIME">%3$s</xliff:g>. Os relatórios de erros incluem informações pessoais acerca do seu dispositivo ou registadas por aplicações, por exemplo, nomes de utilizador, dados de localização, identificadores do dispositivo e informações da rede. Apenas partilhe relatórios de erros com pessoas e aplicações nas quais confia. Permite que a aplicação <xliff:g id="APP_NAME_1">%4$s</xliff:g> carregue um relatório de erro?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Permitir"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Recusar"</string>
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_title (5699953608028268176) -->
+ <skip />
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_content (6960592986228883592) -->
+ <skip />
+ <!-- no translation found for dismiss_with_acknowledgment (2879819713128822468) -->
+ <skip />
</resources>
diff --git a/res/values-pt-television/strings.xml b/res/values-pt-television/strings.xml
index 2b6bdda..e6f45ff 100644
--- a/res/values-pt-television/strings.xml
+++ b/res/values-pt-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Negar e não perguntar novamente"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"É possível alterar isso mais tarde em \"Config.\" > \"Apps\""</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Mostrar apps do sistema"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Permissões do app"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Permissões do app"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Permissões para <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Permissões adicionais"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Permissões para <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Negar e não perguntar de novo"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"É possível alterar isso mais tarde em \"Config.\" > \"Apps\""</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Mostrar apps do sistema"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Permissões do app"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Permissões do app"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Permissões para <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Outras permissões"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Permissões para <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-pt-watch/strings.xml b/res/values-pt-watch/strings.xml
index 8742c2d..52ec70e 100644
--- a/res/values-pt-watch/strings.xml
+++ b/res/values-pt-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Negar e não perguntar de novo"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Mostrar apps do sistema"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Impossível alterar"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Sim"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Cancelar"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Negar e não perguntar de novo"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Mostrar apps do sistema"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Impossível alterar"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Sim"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Cancelar"</string>
</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 46c3902..4e01252 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Instalador do pacote"</string>
- <string name="next" msgid="3057143178373252333">"Próximo"</string>
- <string name="install" msgid="5896438203900042068">"Instalar"</string>
- <string name="done" msgid="3889387558374211719">"Concluído"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Permitir que este app:"</string>
- <string name="cancel" msgid="8360346460165114585">"Cancelar"</string>
- <string name="unknown" msgid="4742479012767208045">"Desconhecido"</string>
- <string name="installing" msgid="8613631001631998372">"Instalando..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Instalando <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"App instalado."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Quer instalar este app? Ele terá acesso a:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Quer instalar este app? Não requer acesso especial."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Quer instalar uma atualização para este app? Os dados existentes não serão perdidos. O app atualizado terá acesso a:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Quer instalar uma atualização para este app integrado? Os dados existentes não serão perdidos. O app atualizado terá acesso a:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Quer instalar uma atualização para este app existente? Seus dados existentes não serão perdidos. A atualização não requer qualquer acesso especial."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Quer instalar uma atualização para este app integrado? Seus dados existentes não serão perdidos. A atualização não requer qualquer acesso especial."</string>
- <string name="install_failed" msgid="6579998651498970899">"O app não foi instalado."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"A instalação do pacote foi bloqueada."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Como o pacote tem um conflito com um pacote já existente, o app não foi instalado."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Como o app não é compatível com seu tablet, ele não foi instalado."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Este app não é compatível com sua TV."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Como o app não é compatível com seu smartphone, ele não foi instalado."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Como o pacote parece ser inválido, o app não foi instalado."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Não foi possível instalar <xliff:g id="APP_NAME">%1$s</xliff:g> em seu tablet."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Não foi possível instalar <xliff:g id="APP_NAME">%1$s</xliff:g> na sua TV."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Não foi possível instalar <xliff:g id="APP_NAME">%1$s</xliff:g> em seu telefone."</string>
- <string name="launch" msgid="4826921505917605463">"Abrir"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Seu administrador não permite a instalação de apps transferidos por download de fontes desconhecidas"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Apps desconhecidos não podem ser instalados por este usuário"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Este usuário não tem permissão para instalar apps"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Configurações"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Gerenciar apps"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Substituir app?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"O app que você está instalando substituirá outro app.\n\nTodos os seus dados de usuário anteriores serão salvos."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Este é um app do sistema.\n\nTodos os seus dados de usuário anteriores serão salvos."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Sem espaço"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Não foi possível instalar <xliff:g id="APP_NAME">%1$s</xliff:g>. Libere um pouco de espaço e tente novamente."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"App não encontrado"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"O app não foi encontrado na lista de apps instalados."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Não permitido"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"O usuário atual não tem permissão para executar essa desinstalação."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Erro"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Não foi possível desinstalar o app."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Desinstalar app"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Desinstalar atualização"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> é parte do seguinte app:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Quer desinstalar este app?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Quer desinstalar este app para "<b>"todos"</b>" os usuários? O app e seus dados serão removidos para "<b>"todos"</b>" os usuários do dispositivo."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Quer desinstalar este app para o usuário <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Substituir este app pela versão de fábrica? Todos os dados serão removidos."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Substituir este app pela versão de fábrica? Todos os dados serão removidos. Isso afeta todos os usuários deste dispositivo, incluindo aqueles com perfis de trabalho."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Executando desinstalações"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Falha nas desinstalações"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Desinstalando..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Desinstalando <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Desinstalação concluída."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> desinstalado"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Desinstalação malsucedida."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Falha na desinstalação de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Não é possível desinstalar o app para administrador ativo do dispositivo"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Não é possível desinstalar o app para administrador ativo do dispositivo de <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"O app é necessário para alguns usuários ou perfis e foi desinstalado para outros"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Este app é necessário para seu perfil e não pode ser desinstalado."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"O app é exigido pelo administrador do dispositivo e não pode ser desinstalado."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Gerenciar apps do administrador do dispositivo"</string>
- <string name="manage_users" msgid="3125018886835668847">"Gerenciar usuários"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Não foi possível desinstalar <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Ocorreu um problema ao analisar o pacote."</string>
- <string name="newPerms" msgid="6039428254474104210">"Novas"</string>
- <string name="allPerms" msgid="1024385515840703981">"Todas"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privacidade"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Acesso ao dispositivo"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Esta atualização não requer novas permissões."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Quer conceder as permissões a seguir? Será concedido acesso para:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Negar"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Mais informações"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Negar mesmo assim"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> desativada(s)"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"todas desativadas"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"nenhuma desativada"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Permitir"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Apps"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Permissões do app"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Não perguntar novamente"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Sem permissões"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Permissões adicionais"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Controlador de permissões"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"permissões"</string>
+ <string name="cancel" msgid="7279939269964834974">"Cancelar"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"App não encontrado"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Negar"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Negar e não perguntar de novo"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Mais inform."</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Negar mesmo assim"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Sempre permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Apenas ao usar o app"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Sempre"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Negar e não perguntar de novo"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> desativada(s)"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"todas desativadas"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"nenhuma desativada"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Permitir"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Permitir o tempo todo"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Permitir apenas enquanto o app estiver em uso"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Apps"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Permissões do app"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Gerenciador de permissões"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Não perguntar novamente"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Sem permissões"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Outras permissões"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Abrir informações do app"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="one">Mais <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="other">Mais <xliff:g id="COUNT_1">%1$d</xliff:g></item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Este app foi projetado para uma versão anterior do Android. Negar a permissão pode fazer com que ele deixe de funcionar conforme esperado."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"executar uma ação desconhecida"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_0">%1$d</xliff:g> de <xliff:g id="COUNT_1">%2$d</xliff:g> apps permitidos"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Mostrar sistema"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Ocultar sistema"</string>
- <string name="permission_title" msgid="6495415273398916381">"Permissões para <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Nenhum app"</string>
- <string name="location_settings" msgid="1774875730854491297">"Configurações de localização"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Se você negar essa permissão, recursos básicos do seu dispositivo poderão não funcionar mais como deveriam."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Aplicável por política"</string>
- <string name="loading" msgid="7811651799620593731">"Carregando…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Todas as permissões"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Outros recursos do app"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Solicitação de permissão"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Sobreposição de tela detectada"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Para alterar a configuração dessa permissão, você deve primeiro desativar a sobreposição de tela em \"Config.\" > \"Apps\""</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Abrir configurações"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"As ações de instalar/desinstalar não são compatíveis com o Android Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> foi atualizado. Permitir que o app <xliff:g id="APP_NAME_1">%1$s</xliff:g> acesse os itens a seguir?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Escolha o que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> terá permissão de acessar"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"O app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> foi atualizado. Escolha o que esse app terá permissão de acessar."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Cancelar"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Continuar"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Novas permissões"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Permissões atuais"</string>
- <string name="message_staging" msgid="6151794817691100003">"Promovendo app…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Desconhecido"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Para sua segurança, seu tablet não tem permissão para instalar apps desconhecidos dessa fonte."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Para sua segurança, sua TV não tem permissão para instalar apps desconhecidos dessa fonte."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Para sua segurança, seu smartphone não tem permissão para instalar apps desconhecidos dessa fonte."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Seu smartphone e seus dados pessoais estão mais vulneráveis a ataques de apps desconhecidos. Ao instalar esse app, você concorda que é responsável por qualquer dano causado ao seu smartphone ou pela perda de dados que possa resultar do uso desse app."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Seu tablet e seus dados pessoais estão mais vulneráveis a ataques de apps desconhecidos. Ao instalar esse app, você concorda que é responsável por qualquer dano causado ao seu tablet ou pela perda de dados que possa resultar do uso desse app."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Sua TV e seus dados pessoais estão mais vulneráveis a ataques por apps desconhecidos. Ao instalar esse app, você concorda que é responsável por qualquer dano à sua TV ou pela perda de dados que possa resultar do uso dese app."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Continuar"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Configurações"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Instalando/desinstalando apps do Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Este app foi projetado para uma versão anterior do Android. Negar a permissão pode fazer com que ele deixe de funcionar conforme esperado."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"executar uma ação desconhecida"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> de <xliff:g id="COUNT_1">%2$d</xliff:g> apps permitidos"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Uso recente"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Ver o painel de permissões"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Mostrar sistema"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Ocultar sistema"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Nenhum app"</string>
+ <string name="location_settings" msgid="547378321761364906">"Configurações de localização"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Se você negar essa permissão, recursos básicos do seu dispositivo poderão não funcionar mais como deveriam."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Aplicável por política"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Acesso em segundo plano desativado pela política"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Acesso em segundo plano ativado pela política"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Acesso em primeiro plano ativado pela política"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Controlada pelo administrador"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Acesso em segundo plano desativado pelo administrador"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Acesso em segundo plano ativado pelo administrador"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Acesso em primeiro plano ativado pelo administrador"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Permissão definida pelo sistema"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Sempre"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Apenas ao usar o app"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Nunca"</string>
+ <string name="loading" msgid="323483393167148377">"Carregando…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Todas as permissões"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Outros recursos do app"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Solicitação de permissão"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Sobreposição de tela detectada"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Para alterar a configuração dessa permissão, primeiro você precisa desativar a sobreposição de tela em \"Config.\" > \"Apps\""</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Abrir configurações"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"As ações de instalar/desinstalar não são compatíveis com o Android Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Escolha o que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> terá permissão para acessar"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"O app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> foi atualizado. Escolha o que esse app terá permissão para acessar."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Cancelar"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Continuar"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Novas permissões"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Permissões atuais"</string>
+ <string name="message_staging" msgid="641286607664721291">"Promovendo app…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Desconhecido"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Painel"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">Último acesso: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> (<xliff:g id="NUM_5">%3$s</xliff:g> em segundo plano)</item>
+ <item quantity="other">Últimos acessos: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> (<xliff:g id="NUM_5">%3$s</xliff:g> em segundo plano)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">Último acesso: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g>\nDuração: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">Últimos acessos: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g>\nDuração: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">Último acesso: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> (<xliff:g id="NUM_6">%3$s</xliff:g> em segundo plano)\nDuração: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">Últimos acessos: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> (<xliff:g id="NUM_6">%3$s</xliff:g> em segundo plano)\nDuração: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Qualquer permissão"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Qualquer horário"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Últimos 7 dias"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Últimas 24 horas"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Última hora"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Últimos 15 minutos"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Último minuto"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Nenhum uso de permissões"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Acesso a qualquer momento"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Acesso nos últimos sete dias"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Acesso nas últimas 24 horas"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Acesso na última hora"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Acesso nos últimos 15 minutos"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Acesso no último minuto"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Permissão mais usada a qualquer momento"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Permissão mais usada nos últimos sete dias"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Permissão mais usada nas últimas 24 horas"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Permissão mais usada na última hora"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Permissão mais usada nos últimos 15 minutos"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Permissão mais usada no último minuto"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Apps"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtrado por: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Remover filtro"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtrar por"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtrar por permissões"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Maior número de permissões"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Maior número de acessos"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Recentes"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Atualizar"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Uso de permissões do app"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Acesso: <xliff:g id="NUM">%1$s</xliff:g> vezes. Última utilização: <xliff:g id="TIME">%2$s</xliff:g> atrás."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Permitir"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Permitir o tempo todo"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Permitir apenas enquanto o app estiver em uso"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Negar"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Permissão de <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Acesso à permissão de <xliff:g id="PERM">%1$s</xliff:g> para o app <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"O app <xliff:g id="APP">%1$s</xliff:g> acessou sua permissão de <xliff:g id="PERM">%2$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g> atrás."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"O app <xliff:g id="APP">%1$s</xliff:g> não acessou seu <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Ver uso detalhado das permissões"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Último acesso: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Nunca acessou"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Permitido"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Permitido apenas quando em uso"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Negado"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Ver uso detalhado"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> minuto</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minutos</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> segundo</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> segundos</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Usar o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> como seu <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Usar o app <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> em vez de <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> como seu <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Lembretes de permissões"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"O app <xliff:g id="APP_NAME">%s</xliff:g> está usando sua localização"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Este app pode acessar sua localização a qualquer momento. Toque para alterar."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Apenas enquanto o app estiver em uso"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Nenhuma permissão autorizada"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Nenhuma permissão negada"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Nenhum app permitido"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Nenhum app negado"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Abrir"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Desinstalar"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Forçar fechamento"</string>
+ <string name="settings" msgid="2884124136779508907">"Configurações"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"O serviço <xliff:g id="SERVICE_NAME">%s</xliff:g> tem acesso total ao seu dispositivo"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> serviços de acessibilidade com acesso total ao seu dispositivo"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"O serviço <xliff:g id="SERVICE_NAME">%s</xliff:g> pode ver sua tela, ações e entradas, além de realizar ações e controlar a tela."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Esses serviços podem ver sua tela, ações e entradas, além de realizar ações e controlar a tela."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Apps padrão"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Nenhum app padrão"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Padrão para trabalho"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Nenhum"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Nenhum app"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Acesso especial ao app"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Nenhum acesso especial ao app"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Nenhum app"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"App assistivo"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"App de navegação"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"App Telefone"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"App de SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"App de emergência"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"App de início"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"App de música"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"App de galeria"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"App Telefone no modo carro"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"App p/ redirecionar chamadas"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"App identificador de chamadas"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"App complementar de chamadas"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"App de projeção do carro"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Não é compatível com perfil de trabalho"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Observação: se você reiniciar o dispositivo e tiver um bloqueio de tela definido, não será possível iniciar este app até que você desbloqueie o dispositivo."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"O assistente lerá informações sobre apps em uso no seu sistema, incluindo informações visíveis na tela ou as que podem ser acessadas nos apps."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Compartilhar dados de depuração"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Compartilhar dados detalhados de depuração?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"Solicitação do <xliff:g id="APP_NAME">%1$s</xliff:g> para upload de informações de depuração."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Compartilhar dados de depuração"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"Há uma solicitação do <xliff:g id="APP_NAME_0">%1$s</xliff:g> para upload de um relatório de bug criado neste dispositivo no dia <xliff:g id="DATE">%2$s</xliff:g>, <xliff:g id="TIME">%3$s</xliff:g>. Os relatórios de bug incluem informações pessoais do seu dispositivo ou registradas por apps, como nomes de usuário, dados de local, identificadores do dispositivo e informações de rede. Compartilhe relatórios de bugs apenas com pessoas e apps em que você confie para ter acesso a essas informações. Permitir que o <xliff:g id="APP_NAME_1">%4$s</xliff:g> faça upload do relatório de bug?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Permitir"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Negar"</string>
</resources>
diff --git a/res/values-ro-television/strings.xml b/res/values-ro-television/strings.xml
index 4f8992f..5c84ef7 100644
--- a/res/values-ro-television/strings.xml
+++ b/res/values-ro-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Respingeți și nu se mai întreabă"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Puteți modifica permisiunile ulterior din Setări > Aplicații"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Afișează aplicațiile de sistem"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Permisiuni aplicații"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Permisiuni aplicații"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Permisiuni pentru <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Permisiuni suplimentare"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Permisiuni pentru <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Respingeți și nu se mai întreabă"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Puteți modifica permisiunile ulterior din Setări > Aplicații"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Afișați aplicațiile de sistem"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Permisiuni pentru aplicații"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Permisiuni pentru aplicații"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Permisiuni pentru <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Permisiuni suplimentare"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Permisiuni pentru <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-ro-watch/strings.xml b/res/values-ro-watch/strings.xml
index ea699f3..34fd1f5 100644
--- a/res/values-ro-watch/strings.xml
+++ b/res/values-ro-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Respingeți; nu se mai întreabă"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Afișează aplicațiile de sistem"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Nu se poate modifica"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Da"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Anulați"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Resping., nu se mai întreabă"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Afișați aplicațiile de sistem"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Nu se poate modif"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Da"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Anulați"</string>
</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 4912b77..6be0be9 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,137 +16,217 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Program de instalare a pachetelor"</string>
- <string name="next" msgid="3057143178373252333">"Înainte"</string>
- <string name="install" msgid="5896438203900042068">"Instalați"</string>
- <string name="done" msgid="3889387558374211719">"Terminat"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Permiteți acestei aplicații să:"</string>
- <string name="cancel" msgid="8360346460165114585">"Anulați"</string>
- <string name="unknown" msgid="4742479012767208045">"Necunoscut"</string>
- <string name="installing" msgid="8613631001631998372">"În curs de instalare..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Se instalează <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Aplicație instalată."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Doriți să instalați această aplicație? Aceasta va avea acces la:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Doriți să instalați această aplicație? Aplicația nu solicită un acces special."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Doriți să instalați o actualizare pentru această aplicație existentă? Datele existente nu vor fi pierdute. Aplicația actualizată va avea acces la:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Doriți să instalați o actualizare pentru această aplicație încorporată? Datele existente nu vor fi pierdute. Aplicația actualizată va avea acces la:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Doriți să instalați o actualizare pentru această aplicație existentă? Datele existente nu vor fi pierdute. Actualizarea nu are nevoie de acces special."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Doriți să instalați o actualizare pentru această aplicație încorporată? Datele existente nu vor fi pierdute. Actualizarea nu are nevoie de acces special."</string>
- <string name="install_failed" msgid="6579998651498970899">"Aplicația nu este instalată."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Instalarea pachetului a fost blocată."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Aplicația nu a fost instalată deoarece pachetul intră în conflict cu un pachet existent."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Aplicația nu a fost instalată deoarece nu este compatibilă cu tableta dvs."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Această aplicație nu este compatibilă cu televizorul dvs."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Aplicația nu a fost instalată deoarece nu este compatibilă cu telefonul dvs."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Aplicația nu a fost instalată deoarece se pare că pachetul este nevalid."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> nu a putut fi instalată pe tableta dvs."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Aplicația <xliff:g id="APP_NAME">%1$s</xliff:g> nu a putut fi instalată pe televizor."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> nu a putut fi instalată pe telefonul dvs."</string>
- <string name="launch" msgid="4826921505917605463">"Deschideți"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Administratorul nu permite instalarea aplicațiilor obținute din surse necunoscute"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Aplicațiile necunoscute nu pot fi instalate de acest utilizator"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Acest utilizator nu are permisiunea să instaleze aplicații"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Setări"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Gestionați aplicații"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Înlocuiți aplicația?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Aplicația pe care o instalați va înlocui o altă aplicație.\n \nToate datele dvs. anterioare de utilizator vor fi salvate."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Aceasta este o aplicație de sistem.\n \nToate datele dvs. anterioare de utilizator vor fi salvate."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Spațiu de stocare insuficient"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> nu a putut fi instalată. Eliberați spațiu și încercați din nou."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Aplicația nu a fost găsită"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Aplicația nu a fost găsită în lista de aplicații instalate."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Nu are permisiune"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Utilizatorul actual nu are permisiune pentru a face această dezinstalare."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Eroare"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Aplicația nu a putut fi dezinstalată."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Dezinstalați aplicația"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Dezinstalați actualizarea"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">" <xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> face parte din următoarea aplicație:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Doriți să dezinstalați această aplicație?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Doriți să dezinstalați această aplicație pentru "<b>"toți"</b>" utilizatorii? Aplicația și datele acesteia vor fi eliminate de la "<b>"toți"</b>" utilizatorii de pe acest dispozitiv."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Dezinstalați această aplicație pentru utilizatorul <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Înlocuiți această aplicație cu versiunea din fabrică? Toate datele vor fi eliminate."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Înlocuiți această aplicație cu versiunea din fabrică? Toate datele vor fi eliminate. Această acțiune va afecta toți utilizatorii dispozitivului, inclusiv pe cei cu profiluri de serviciu."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Dezinstalări în curs"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Dezinstalări nereușite"</string>
- <string name="uninstalling" msgid="5556217435895938250">"În curs de dezinstalare..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Se dezinstalează <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Dezinstalare finalizată."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> a fost dezinstalat"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Dezinstalare nefinalizată."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> nu a putut fi dezinstalată."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Nu se poate dezinstala aplicația activă de administrare a dispozitivului"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Nu se poate dezinstala aplicația activă de administrare a dispozitivului pentru <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Aplicația este necesară unor utilizatori sau profiluri și a fost dezinstalată pentru alții"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Aplicația este necesară pentru profilul dvs. și nu poate fi dezinstalată."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Aplicație necesară administratorului dispozitivului. Nu poate fi dezinstalată."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Gestionați aplicațiile de administrare dispozitiv"</string>
- <string name="manage_users" msgid="3125018886835668847">"Gestionați utilizatorii"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> nu a putut fi dezinstalată."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"A apărut o problemă la analizarea pachetului."</string>
- <string name="newPerms" msgid="6039428254474104210">"Noi"</string>
- <string name="allPerms" msgid="1024385515840703981">"Toate"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Confidențialitate"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Acces la dispozitiv"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Această actualizare nu necesită permisiuni noi."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Doriți să acordați următoarele permisiuni? Utilizatorul va avea acces la:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Refuzați"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Mai multe informații"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Nu permiteți oricum"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Permiteți <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> să <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> dezactivate"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"toate dezactivate"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"niciuna dezactivată"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Permiteți"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Aplicații"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Permisiuni pentru aplicație"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Nu mai întreba"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Fără permisiuni"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Permisiuni suplimentare"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Controler de permisiuni"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"permisiuni"</string>
+ <string name="cancel" msgid="7279939269964834974">"Anulați"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Aplicația nu a fost găsită"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Refuzați"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Respingeți și nu se mai întreabă"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Mai multe info."</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Nu perm. oricum"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Permiteți <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> să <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Permiteți întotdeauna <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> să <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Doar în timp ce folosiți aplicația"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Mereu"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Respingeți și nu se mai întreabă"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> dezactivate"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"toate dezactivate"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"niciuna dezactivată"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Permiteți"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Permiteți întotdeauna"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Permiteți numai când aplicația este folosită"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Aplicații"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Permisiuni pentru aplicații"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Manager de permisiuni"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Nu mai întrebați"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Nicio permisiune"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Permisiuni suplimentare"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Deschideți informațiile despre aplicații"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="few">Încă <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="other">Încă <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="one">Încă <xliff:g id="COUNT_0">%1$d</xliff:g></item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Această aplicație a fost creată pentru o versiune Android mai veche. Dacă nu acordați permisiunea, este posibil ca aceasta să nu mai funcționeze corespunzător."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"efectuează o acțiune necunoscută"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_0">%1$d</xliff:g> din <xliff:g id="COUNT_1">%2$d</xliff:g> aplicații au această permisiune"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Afișați aplicațiile de sistem"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Ascundeți aplicațiile de sistem"</string>
- <string name="permission_title" msgid="6495415273398916381">"Permisiuni pentru <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Nicio aplicație"</string>
- <string name="location_settings" msgid="1774875730854491297">"Setări privind locația"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Dacă refuzați această permisiune, este posibil ca funcțiile de bază ale dispozitivului să nu mai funcționeze corespunzător."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Aplicată conform politicii"</string>
- <string name="loading" msgid="7811651799620593731">"Se încarcă..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"Toate permisiunile"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Alte funcții ale aplicației"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Solicitare de permisiune"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"S-a detectat suprapunerea pe ecran"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Ca să schimbați această setare pentru permisiuni, mai întâi trebuie să dezactivați suprapunerea pe ecran din Setări > Aplicații"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Deschideți setările"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Acțiunile Instalați/Dezinstalați nu sunt acceptate pe Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"Aplicația <xliff:g id="APP_NAME_0">%1$s</xliff:g> a fost actualizată. Permiteți aplicației <xliff:g id="APP_NAME_1">%1$s</xliff:g> să acceseze următoarele?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Alegeți ce va putea accesa <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"Aplicația <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> a fost actualizată. Alegeți ce va putea accesa această aplicație."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Anulați"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Continuați"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Permisiuni noi"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Permisiuni actuale"</string>
- <string name="message_staging" msgid="6151794817691100003">"Se pregătește aplicația…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Necunoscut"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Din motive de securitate, tableta dvs. nu are permisiunea să instaleze aplicații necunoscute din această sursă."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Din motive de securitate, televizorul dvs. nu are permisiunea să instaleze aplicații necunoscute din această sursă."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Din motive de securitate, telefonul dvs. nu are permisiunea să instaleze aplicații necunoscute din această sursă."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Telefonul și datele dvs. personale sunt mai vulnerabile la un atac din partea aplicațiilor necunoscute. Dacă instalați aplicația, acceptați că sunteți singura persoană responsabilă pentru deteriorarea telefonului sau pentru pierderea datelor, care pot avea loc în urma utilizării acesteia."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Tableta și datele dvs. personale sunt mai vulnerabile la un atac din partea aplicațiilor necunoscute. Dacă instalați aplicația, acceptați că sunteți singura persoană responsabilă pentru deteriorarea tabletei sau pentru pierderea datelor, care pot avea loc în urma utilizării acesteia."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Televizorul și datele dvs. personale sunt mai vulnerabile la un atac din partea aplicațiilor necunoscute. Dacă instalați această aplicație, acceptați că sunteți singura persoană responsabilă pentru deteriorarea televizorului sau pentru pierderea datelor, care pot avea loc în urma utilizării acesteia."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Continuați"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Setări"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Se (dez)instalează aplicațiile Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Această aplicație a fost creată pentru o versiune Android mai veche. Dacă nu acordați permisiunea, este posibil ca aceasta să nu mai funcționeze corespunzător."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"efectuează o acțiune necunoscută"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> din <xliff:g id="COUNT_1">%2$d</xliff:g> aplicații au această permisiune"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Utilizare recentă"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Vizualizați tabloul de bord pentru permisiuni"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Afișați aplicațiile de sistem"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Ascundeți aplicațiile de sistem"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Nicio aplicație"</string>
+ <string name="location_settings" msgid="547378321761364906">"Setări privind locația"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Dacă refuzați această permisiune, este posibil ca funcțiile de bază ale dispozitivului să nu mai funcționeze corespunzător."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Aplicată conform politicii"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Acces la fundal dezactivat de politică"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Acces la fundal activat de politică"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Acces la prim-plan activat de politică"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Controlat de administrator"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Accesul la fundal dezactivat de administrator"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Accesul la fundal activat de administrator"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Accesul la prim-plan activat de administrator"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Permisiune setată de sistem"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Mereu"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Doar în timp ce fol. aplicația"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Niciodată"</string>
+ <string name="loading" msgid="323483393167148377">"Se încarcă…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Toate permisiunile"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Alte funcții ale aplicației"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Solicitare de permisiune"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"S-a detectat suprapunerea pe ecran"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Ca să schimbați această setare pentru permisiuni, mai întâi trebuie să dezactivați suprapunerea pe ecran din Setări > Aplicații"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Deschideți setările"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Acțiunile Instalați/Dezinstalați nu sunt acceptate pe Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Alegeți ce va putea accesa <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"Aplicația <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> a fost actualizată. Alegeți ce va putea accesa această aplicație."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Anulați"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Continuați"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Permisiuni noi"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Permisiuni actuale"</string>
+ <string name="message_staging" msgid="641286607664721291">"Se pregătește aplicația…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Necunoscut"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Tablou de bord"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ <item quantity="one">Ultima accesare: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g>o accesare</item>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="few">Ultima accesare: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> accesări (<xliff:g id="NUM_5">%3$s</xliff:g> în fundal)</item>
+ <item quantity="other">Ultima accesare: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> de accesări (<xliff:g id="NUM_5">%3$s</xliff:g> în fundal)</item>
+ <item quantity="one">Ultima accesare: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g>o accesare (<xliff:g id="NUM_2">%3$s</xliff:g> în fundal)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="few">Ultima accesare: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> accesări\nDurata: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">Ultima accesare: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> de accesări\nDurată: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="one">Ultima accesare: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g>o accesare\nDurata: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="few">Ultima accesare: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> accesări (<xliff:g id="NUM_6">%3$s</xliff:g> în fundal)\nDurată: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">Ultima accesare: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> de accesări (<xliff:g id="NUM_6">%3$s</xliff:g> în fundal)\nDurată: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="one">Ultima accesare: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g>o accesare (<xliff:g id="NUM_2">%3$s</xliff:g> în fundal)\nDurată: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Orice permisiune"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Oricând"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Ultimele 7 zile"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Ultimele 24 de ore"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Ultima oră"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Ultimele 15 minute"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Ultimul minut"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Nicio permisiune folosită"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Acces oricând"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Acces în ultimele 7 zile"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Acces în ultimele 24 de ore"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Acces în ultima oră"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Acces în ultimele 15 minute"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Acces în ultimul minut"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Cele mai utilizate permisiuni dintotdeauna"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Cele mai utilizate permisiuni în ultimele 7 zile"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Cele mai utilizate permisiuni în ultimele 24 de ore"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Cele mai utilizate permisiuni în ultima oră"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Cele mai utilizate permisiuni în ultimele 15 min"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Cele mai utilizate permisiuni în ultimul minut"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Aplicații"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtrat după: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Eliminați filtrul"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtrați după"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtrați după permisiuni"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Cele mai multe permisiuni"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Cele mai multe accesuri"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Recente"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Actualizați"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Utilizare permisiuni pentru aplicație"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Acces: <xliff:g id="NUM">%1$s</xliff:g> ori. Ultima utilizare: acum <xliff:g id="TIME">%2$s</xliff:g>."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Permiteți"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Permiteți întotdeauna"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Permiteți numai când aplicația este folosită"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Refuzați"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Permisiune <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Acces la <xliff:g id="PERM">%1$s</xliff:g> pentru aplicația <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"Aplicația <xliff:g id="APP">%1$s</xliff:g> a accesat <xliff:g id="PERM">%2$s</xliff:g> acum <xliff:g id="TIME">%3$s</xliff:g>."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> nu a accesat <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Afișați utilizarea detaliată a permisiunilor"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Ultima accesare: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Nu a fost accesată niciodată"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Permise"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Permis numai în timpul utilizării"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Respinse"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Vedeți detaliile utilizării"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> minute</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> de minute</item>
+ <item quantity="one">1 minut</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> secunde</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> de secunde</item>
+ <item quantity="one">O secundă</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Folosiți <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ca <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Folosiți <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> în loc de <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> ca <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Mementouri de permisiune"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> folosește locația dvs."</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Această aplicație poate accesa întotdeauna locația dvs. Atingeți ca să modificați."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Numai când aplicația este folosită"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Nicio permisiune"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Nu există permisiuni refuzate"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Nu este permisă nicio aplicație"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Nu există aplicații refuzate"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Deschideți"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Dezinstalați"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Opriți forțat"</string>
+ <string name="settings" msgid="2884124136779508907">"Setări"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> are acces deplin la dispozitivul dvs."</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> servicii de accesibilitate au acces deplin la dispozitivul dvs."</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> poate să vă vadă ecranul, acțiunile și textul pe care îl introduceți, să efectueze acțiuni și să controleze afișajul."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Aceste servicii pot să vă vadă ecranul, acțiunile și textul pe care îl introduceți, să efectueze acțiuni și să controleze afișajul."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Aplicații prestabilite"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Nicio aplicație prestabilită."</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Prestabilite pentru serviciu"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Niciuna"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Nicio aplicație"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Acces special pentru aplicații"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Niciun acces special pentru aplicații"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Nicio aplicație"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Aplicație asistent"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Aplicația Browser"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Aplicația Telefon"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Aplicația SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Aplicația de urgență"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Aplicația din casă"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Aplicația Muzică"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Aplicația Galerie"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Aplicația pentru telefon în modul Mașină"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Aplicația de redirecționare a apelurilor"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Aplicația de filtrare a apelurilor"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Aplicație partener de apelare"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Aplicația pentru proiecția mașinii"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Nu acceptă profilul de serviciu"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Notă: dacă reporniți telefonul și aveți activată blocarea ecranului, această aplicație nu poate porni până nu deblocați telefonul."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Aplicația asistent va putea să citească informații despre aplicațiile în uz de pe sistem, inclusiv informațiile vizibile pe ecran sau accesibile în aplicații."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Trimiteți datele despre remedierea erorilor"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Trimiteți datele detaliate despre remedierea erorilor?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> dorește să încarce informațiile despre remedierea erorilor."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Trimiteți datele despre remedierea erorilor"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> solicită încărcarea unui raport de erori de pe acest dispozitiv creat în data de <xliff:g id="DATE">%2$s</xliff:g> la <xliff:g id="TIME">%3$s</xliff:g>. Rapoartele de erori conțin informații cu caracter personal despre dispozitiv sau înregistrate de aplicații, de exemplu: nume de utilizator, date privind locațiile, identificatori ai dispozitivului și informații despre rețea. Trimiteți rapoarte de erori doar persoanelor și aplicațiilor de încredere. Permiteți <xliff:g id="APP_NAME_1">%4$s</xliff:g> să încarce un raport de erori?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Permiteți"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Refuzați"</string>
</resources>
diff --git a/res/values-ru-television/strings.xml b/res/values-ru-television/strings.xml
index e105f92..9232e2b 100644
--- a/res/values-ru-television/strings.xml
+++ b/res/values-ru-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Запретить и больше не спрашивать"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Чтобы изменить разрешения, откройте \"Настройки\" и выберите \"Приложения\"."</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Показать системные приложения"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Разрешения приложений"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Разрешения приложений"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Разрешения (<xliff:g id="PERMISSION">%1$s</xliff:g>)"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Ещё разрешения"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Разрешения (<xliff:g id="PERMISSION">%1$s</xliff:g>)"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Запретить и больше не спрашивать"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Чтобы изменить разрешения, откройте \"Настройки\" и выберите \"Приложения\"."</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Показать системные приложения"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Разрешения приложений"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Разрешения приложений"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Разрешения (<xliff:g id="PERMISSION">%1$s</xliff:g>)"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Дополнительные разрешения"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Разрешения (<xliff:g id="PERMISSION">%1$s</xliff:g>)"</string>
</resources>
diff --git a/res/values-ru-watch/strings.xml b/res/values-ru-watch/strings.xml
index f58db32..8b9efbe 100644
--- a/res/values-ru-watch/strings.xml
+++ b/res/values-ru-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Запретить и не спрашивать"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Показать системные приложения"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Нельзя изменить"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Да"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Отмена"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Запретить и не спрашивать"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Показать системные приложения"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Нельзя изменить"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Да"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Отмена"</string>
</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index e300169..26b3a8f 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,138 +16,233 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Установщик пакетов"</string>
- <string name="next" msgid="3057143178373252333">"Далее"</string>
- <string name="install" msgid="5896438203900042068">"Установить"</string>
- <string name="done" msgid="3889387558374211719">"Готово"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Список разрешений:"</string>
- <string name="cancel" msgid="8360346460165114585">"Отмена"</string>
- <string name="unknown" msgid="4742479012767208045">"Неизвестно"</string>
- <string name="installing" msgid="8613631001631998372">"Установка..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Устанавливаем <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Приложение установлено."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Хотите ли вы установить это приложение? Оно получит следующие разрешения:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Это приложение не требует специальных разрешений. Установить его?"</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Хотите установить обновление для этого приложения? После обновления оно сможет выполнять следующие действия:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Хотите установить обновление для этого приложения? После обновления оно сможет выполнять следующие действия:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Установить обновление этого приложения? На текущих данных это никак не отразится. Специальных прав доступа не требуется."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Установить обновление этого встроенного приложения? На текущих данных это никак не отразится. Специальных прав доступа не требуется."</string>
- <string name="install_failed" msgid="6579998651498970899">"Приложение не установлено."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Установка пакета заблокирована."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Приложение не установлено, так как оно конфликтует с другим пакетом."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Приложение не установлено, так как оно несовместимо с вашим планшетом."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Приложение несовместимо с вашим телевизором."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Приложение не установлено, так как оно несовместимо с вашим телефоном."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Приложение не установлено, так как его пакет недействителен (например, поврежден)."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Не удалось установить приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" нельзя установить на ваш телевизор."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Не удалось установить приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"."</string>
- <string name="launch" msgid="4826921505917605463">"Открыть"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Ваш администратор запретил устанавливать приложения из неизвестных источников"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Этот пользователь не может устанавливать неизвестные приложения"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Этому пользователю не разрешено устанавливать приложения"</string>
- <string name="ok" msgid="3468756155452870475">"ОК"</string>
- <string name="settings" msgid="6743583734099755409">"Настройки"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Управление приложениями"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Заменить приложение?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Данное приложение заменит другую программу.\n\nВсе пользовательские данные будут сохранены."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Это системное приложение.\n\nВсе пользовательские данные будут сохранены."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Недостаточно места"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Не удалось установить приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\". Освободите место и повторите попытку."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"ОК"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Приложение не найдено"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Приложения нет в списке установленных."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Действие запрещено"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Этот пользователь не может удалить приложение."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Ошибка"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Не удалось удалить приложение."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Удаление приложения"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Удаление обновления"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> – часть следующего приложения:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Удалить приложение?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Удалить это приложение для "<b>"всех"</b>" пользователей? После этого "<b>"ни один"</b>" пользователь устройства не будет иметь доступа к приложению и связанным с ним данным."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Удалить это приложение из профиля <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Установить исходную версию приложения? Все его данные будут удалены."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Установить исходную версию приложения? Его данные будут удалены из всех профилей устройства, в том числе рабочих."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Активные процессы удаления"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Ошибки удаления"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Удаление..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Удаление приложения \"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>\"…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Удаление завершено."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Приложение \"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>\" удалено"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Ошибка при удалении."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Не удалось удалить приложение \"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>\"."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Невозможно удалить активное приложение для администрирования устройства"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Невозможно удалить активное приложение для администрирования устройства в профиле <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Это приложение обязательно для некоторых пользователей или профилей."</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Это приложение обязательно для вашего профиля. Его нельзя удалить."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Это приложение указано администратором как обязательное. Его нельзя удалить."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Настроить приложения для администрир. устройства"</string>
- <string name="manage_users" msgid="3125018886835668847">"Управление пользователями"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Не удалось удалить приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Ошибка при синтаксическом анализе пакета."</string>
- <string name="newPerms" msgid="6039428254474104210">"Новые"</string>
- <string name="allPerms" msgid="1024385515840703981">"Все"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Личные данные"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Доступ к устройству"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Установка этого обновления не требует новых разрешений."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Предоставить следующие разрешения? Вот к чему будет получен доступ:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Отклонить"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Подробнее"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Все равно запретить"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Разрешить приложению <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"отключено: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"все отключены"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"все включены"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Разрешить"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Приложения"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Разрешения приложений"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Больше не спрашивать"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Разрешения не требуются"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Ещё разрешения"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Контролер разрешений"</string>
+ <string name="ok" msgid="4417794827535157922">"ОК"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"разрешения"</string>
+ <string name="cancel" msgid="7279939269964834974">"Отмена"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Приложение не найдено"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Запретить"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Запретить и больше не спрашивать"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Подробнее"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Запретить"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Разрешить приложению <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Всегда разрешать приложению <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Когда открыто приложение"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Всегда"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Запретить и больше не спрашивать"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"отключено: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"все отключены"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"все включены"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Разрешить"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Разрешить в любом режиме"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Разрешить только в активном режиме"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Приложения"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Разрешения приложений"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Управление разрешениями"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Больше не спрашивать"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Нет разрешений"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Ещё разрешения"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Показать информацию о приложении"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"Это приложение было разработано для более ранней версии Android. Отзыв разрешения может вызвать неполадки в работе."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"выполняет неизвестные действия"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"Приложений с разрешением: <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="6773743421743728921">"Показать системные процессы"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Скрыть системные процессы"</string>
- <string name="permission_title" msgid="6495415273398916381">"Разрешения (<xliff:g id="PERMISSION">%1$s</xliff:g>)"</string>
- <string name="no_apps" msgid="1965493419005012569">"Нет приложений"</string>
- <string name="location_settings" msgid="1774875730854491297">"Настройки геоданных"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> является поставщиком услуг геолокации для этого устройства. Вы можете изменить параметры доступа в настройках геоданных."</string>
- <string name="system_warning" msgid="7103819124542305179">"Если вы отключите это разрешение, основные функции устройства могут работать неправильно."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"В соответствии с политикой"</string>
- <string name="loading" msgid="7811651799620593731">"Загрузка…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Все разрешения"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Что ещё может приложение"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Запрос разрешений"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Показ поверх других окон"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Чтобы предоставить или отменить разрешение, сначала отключите показ поверх других окон. Для этого нажмите \"Настройки > Приложения\"."</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Открыть настройки"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Установка и удаление не поддерживаются на Android Wear"</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"Приложение <xliff:g id="APP_NAME_0">%1$s</xliff:g> было обновлено. Разрешить приложению <xliff:g id="APP_NAME_1">%1$s</xliff:g> следующие действия?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Выберите разрешения для приложения <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"Приложение <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> обновлено. Выберите разрешения для него."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Отмена"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Далее"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Новые разрешения"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Имеющиеся разрешения"</string>
- <string name="message_staging" msgid="6151794817691100003">"Подождите…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Неизвестное приложение"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"В целях безопасности ваш планшет блокирует установку приложений из неизвестных источников."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"В целях безопасности ваш телевизор блокирует установку приложений из неизвестных источников."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"В целях безопасности ваш телефон блокирует установку приложений из неизвестных источников."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Ваши личные данные и данные телефона более уязвимы для атак приложений из неизвестных источников. Устанавливая это приложение, вы соглашаетесь с тем, что несете полную ответственность за любой ущерб, нанесенный телефону, и потерю данных, связанные с использованием этого приложения."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Ваши личные данные и данные планшета более уязвимы для атак приложений из неизвестных источников. Устанавливая это приложение, вы соглашаетесь с тем, что несете полную ответственность за любой ущерб, нанесенный планшету, и потерю данных, связанные с использованием этого приложения."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Ваши личные данные и данные телевизора более уязвимы для атак приложений из неизвестных источников. Устанавливая это приложение, вы соглашаетесь с тем, что несете полную ответственность за любой ущерб, нанесенный телевизору, и потерю данных, связанные с использованием этого приложения."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Продолжить"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Настройки"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Установка/удаление приложений для Android Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Это приложение было разработано для более ранней версии Android. Отзыв разрешения может вызвать неполадки в работе."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"выполнять неизвестное действие"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"Приложений с разрешением: <xliff:g id="COUNT_0">%1$d</xliff:g> из <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Недавнее использование"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Открыть панель управления разрешениями"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Показать системные процессы"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Скрыть системные процессы"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Нет приложений"</string>
+ <string name="location_settings" msgid="547378321761364906">"Открыть настройки доступа"</string>
+ <string name="location_warning" msgid="4687406043150343369">"Приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" обеспечивает геолокацию на этом устройстве. Вы всегда можете изменить настройки доступа к данным о местоположении."</string>
+ <string name="system_warning" msgid="6868290533389195836">"Без этого разрешения основные функции устройства могут работать неправильно."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"В соответствии с правилами"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Доступ в фоновом режиме отключен в соответствии с правилами"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Доступ в фоновом режиме включен в соответствии с правилами"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Доступ в активном режиме включен в соответствии с правилами"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Контролируется администратором"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Доступ в фоновом режиме отключен администратором"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Доступ в фоновом режиме включен администратором"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Доступ в активном режиме включен администратором"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Разрешение предоставлено системой"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Всегда"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Когда открыто приложение"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Никогда"</string>
+ <string name="loading" msgid="323483393167148377">"Загрузка…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Все разрешения"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Что ещё может приложение"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Запрос разрешений"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Включен экранный оверлей"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Чтобы предоставить или отозвать разрешение, сначала отключите экранный оверлей. Для этого откройте \"Настройки\" и выберите \"Приложения\"."</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Открыть настройки"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Wear OS"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Установка и удаление не поддерживаются в Wear OS."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Выберите разрешения для приложения <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"Приложение <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> обновлено. Выберите разрешения для него."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Отмена"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Продолжить"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Новые разрешения"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Имеющиеся разрешения"</string>
+ <string name="message_staging" msgid="641286607664721291">"Подождите…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Неизвестное приложение"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Панель управления"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ <item quantity="many">Последнее использование: <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">Последнее использование: <xliff:g id="TIME_3">%1$s</xliff:g>.\nРазрешение использовано <xliff:g id="NUM_4">%2$s</xliff:g> раз (<xliff:g id="NUM_5">%3$s</xliff:g> в фоновом режиме).</item>
+ <item quantity="few">Последнее использование: <xliff:g id="TIME_3">%1$s</xliff:g>.\nРазрешение использовано <xliff:g id="NUM_4">%2$s</xliff:g> раза (<xliff:g id="NUM_5">%3$s</xliff:g> в фоновом режиме).</item>
+ <item quantity="many">Последнее использование: <xliff:g id="TIME_3">%1$s</xliff:g>.\nРазрешение использовано <xliff:g id="NUM_4">%2$s</xliff:g> раз (<xliff:g id="NUM_5">%3$s</xliff:g> в фоновом режиме).</item>
+ <item quantity="other">Последнее использование: <xliff:g id="TIME_3">%1$s</xliff:g>.\nРазрешение использовано <xliff:g id="NUM_4">%2$s</xliff:g> раза (<xliff:g id="NUM_5">%3$s</xliff:g> в фоновом режиме).</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">Последнее использование: <xliff:g id="TIME_3">%1$s</xliff:g>.\nРазрешение использовано <xliff:g id="NUM_4">%2$s</xliff:g> раз.\nПродолжительность: <xliff:g id="TIME_5">%3$s</xliff:g>.</item>
+ <item quantity="few">Последнее использование: <xliff:g id="TIME_3">%1$s</xliff:g>.\nРазрешение использовано <xliff:g id="NUM_4">%2$s</xliff:g> раза.\nПродолжительность: <xliff:g id="TIME_5">%3$s</xliff:g>.</item>
+ <item quantity="many">Последнее использование: <xliff:g id="TIME_3">%1$s</xliff:g>.\nРазрешение использовано <xliff:g id="NUM_4">%2$s</xliff:g> раз.\nПродолжительность: <xliff:g id="TIME_5">%3$s</xliff:g>.</item>
+ <item quantity="other">Последнее использование: <xliff:g id="TIME_3">%1$s</xliff:g>.\nРазрешение использовано <xliff:g id="NUM_4">%2$s</xliff:g> раза.\nПродолжительность: <xliff:g id="TIME_5">%3$s</xliff:g>.</item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">Последнее использование: <xliff:g id="TIME_4">%1$s</xliff:g>.\nРазрешение использовано <xliff:g id="NUM_5">%2$s</xliff:g> раз (<xliff:g id="NUM_6">%3$s</xliff:g> в фоновом режиме).\nПродолжительность: <xliff:g id="TIME_7">%3$s</xliff:g>.</item>
+ <item quantity="few">Последнее использование: <xliff:g id="TIME_4">%1$s</xliff:g>.\nРазрешение использовано <xliff:g id="NUM_5">%2$s</xliff:g> раза (<xliff:g id="NUM_6">%3$s</xliff:g> в фоновом режиме).\nПродолжительность: <xliff:g id="TIME_7">%3$s</xliff:g>.</item>
+ <item quantity="many">Последнее использование: <xliff:g id="TIME_4">%1$s</xliff:g>.\nРазрешение использовано <xliff:g id="NUM_5">%2$s</xliff:g> раз (<xliff:g id="NUM_6">%3$s</xliff:g> в фоновом режиме).\nПродолжительность: <xliff:g id="TIME_7">%3$s</xliff:g>.</item>
+ <item quantity="other">Последнее использование: <xliff:g id="TIME_4">%1$s</xliff:g>.\nРазрешение использовано <xliff:g id="NUM_5">%2$s</xliff:g> раза (<xliff:g id="NUM_6">%3$s</xliff:g> в фоновом режиме).\nПродолжительность: <xliff:g id="TIME_7">%3$s</xliff:g>.</item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Все разрешения"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Все время"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Последние 7 дней"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Последние 24 часа"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Последний час"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Последние 15 минут"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Последняя минута"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Разрешения не использовались"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Все использованные разрешения"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Разрешения, использованные за последние 7 дней"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Разрешения, использованные за последние 24 ч."</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Разрешения, использованные за последний час"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Разрешения, использованные за последние 15 мин."</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Разрешения, использованные за последнюю минуту"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Самые популярные разрешения за все время"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Самые популярные разрешения за последние 7 дней"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Самые популярные разрешения за последние 24 часа"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Самые популярные разрешения за последний час"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Самые популярные разрешения за последние 15 минут"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Самые популярные разрешения за последнюю минуту"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Приложения"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Фильтры: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Удалить фильтр"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Фильтровать по"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Фильтровать по разрешениям"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Популярность"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Количество разрешений"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Недавние"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Обновить"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Использование разрешений"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"Сколько раз использовано: <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="4040424337831328212">"Сколько раз использовано: <xliff:g id="NUM">%1$s</xliff:g>. Последний раз: <xliff:g id="TIME">%2$s</xliff:g> назад."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Разрешить"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Разрешить в любом режиме"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Разрешить только в активном режиме"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Запретить"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Разрешение \"<xliff:g id="PERM">%1$s</xliff:g>\""</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Доступ к разрешению \"<xliff:g id="PERM">%1$s</xliff:g>\" для приложения \"<xliff:g id="APP">%2$s</xliff:g>\"."</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"Приложение \"<xliff:g id="APP">%1$s</xliff:g>\" получило доступ к разрешению \"<xliff:g id="PERM">%2$s</xliff:g>\" <xliff:g id="TIME">%3$s</xliff:g> назад."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"Приложение \"<xliff:g id="APP">%1$s</xliff:g>\" не обратилось к следующему разрешению: <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Показать подробную информацию об использовании разрешений"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Последний раз использовано: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Не использовалось."</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Предоставленные разрешения"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Только когда приложение открыто"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Отсутствующие разрешения"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Подробные сведения об использовании"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <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="seconds" formatted="false" msgid="1632909606956324957">
+ <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="role_request_message_add" msgid="1977772335648650272">"Использовать приложение <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> в роли \"<xliff:g id="ROLE_NAME">%2$s</xliff:g>\"?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Использовать приложение <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> вместо <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> в роли \"<xliff:g id="ROLE_NAME">%2$s</xliff:g>\"?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Напоминания о разрешениях"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"Приложение \"<xliff:g id="APP_NAME">%s</xliff:g>\" использовало ваши геоданные"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"У этого приложения есть постоянный доступ к сведениям о вашем местоположении. Нажмите, чтобы изменить настройки."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Разрешить только в активном режиме"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Разрешения не предоставлены"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Предоставлены все разрешения"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Не используется ни в одном приложении"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Используется во всех приложениях"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Открыть"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Удалить"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Остановить принудительно"</string>
+ <!-- no translation found for settings (2884124136779508907) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_title_single (1613456964930225277) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_title_multiple (1262608280562255761) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_bottom_text_single (6932810943462703517) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_bottom_text_multiple (817809209968536329) -->
+ <skip />
+ <string name="default_apps" msgid="8554530939151957828">"Приложения по умолчанию"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Нет приложений по умолчанию"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Стандартные для работы"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Нет"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Приложений нет"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Спец. доступ для приложений"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Специальный доступ не настроен"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Нет приложений"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Помощник"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Браузер"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Приложение для звонков"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Приложение для SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Тревожное оповещение"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Главное приложение"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Музыка"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Галерея"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Приложение для звонков во время вождения"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Перенаправление вызовов"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Приложение для управления входящими вызовами"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Сопутствующее приложение для звонков"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Трансляция на экран автомобиля"</string>
+ <!-- no translation found for home_missing_work_profile_support (1439466272746259937) -->
+ <skip />
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Примечание. Если у вас установлена блокировка экрана, после перезагрузки вам потребуется разблокировать устройство, чтобы запустить приложение."</string>
+ <!-- no translation found for assistant_confirmation_message (4529925223796676824) -->
+ <skip />
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Отправка данных об отладке"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Отправка детализированных данных об отладке"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"Приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" запрашивает разрешение на загрузку данных об отладке."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Отправка данных об отладке"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"Приложение \"<xliff:g id="APP_NAME_0">%1$s</xliff:g>\" запрашивает ваше согласие на загрузку с этого устройства отчета об ошибке от <xliff:g id="TIME">%3$s</xliff:g> <xliff:g id="DATE">%2$s</xliff:g>. Отчет может содержать персональную информацию с устройства или из установленных приложений, например имена пользователей, сведения о местоположении, идентификаторы устройства и данные сети. Мы рекомендуем отправлять отчеты об ошибке только тем приложениям и пользователям, которым вы доверяете. Разрешить приложению \"<xliff:g id="APP_NAME_1">%4$s</xliff:g>\" загрузку отчета об ошибке?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Разрешить"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Запретить"</string>
</resources>
diff --git a/res/values-si-television/strings.xml b/res/values-si-television/strings.xml
index 2ac8d8b..9d4d69b 100644
--- a/res/values-si-television/strings.xml
+++ b/res/values-si-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"ප්රතික්ෂේප කරන්න, නැවත අසන්න එපා"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"ඔබට මෙය පසුව සැකසීම් > යෙදුම් තුළ වෙනස් කළ හැකිය"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"පද්ධති යෙදුම් පෙන්වන්න"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"යෙදුම් අවසර"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"යෙදුම් අවසර"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> අවසර"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"අතිරේක අවසර"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> අවසර"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"ප්රතික්ෂේප කරන්න, නැවත අසන්න එපා"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"ඔබට මෙය පසුව සැකසීම් > යෙදුම් තුළ වෙනස් කළ හැකිය"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"පද්ධති යෙදුම් පෙන්වන්න"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"යෙදුම් අවසර"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"යෙදුම් අවසර"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> අවසර"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"අතිරේක අවසර"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> අවසර"</string>
</resources>
diff --git a/res/values-si-watch/strings.xml b/res/values-si-watch/strings.xml
index c5d9ae4..e945266 100644
--- a/res/values-si-watch/strings.xml
+++ b/res/values-si-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"ප්රතික්ෂේප කරන්න, නැවත අසන්න එපා"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"පද්ධති යෙදුම් පෙන්වන්න"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"වෙනස් කළ නොහැකිය"</string>
- <string name="generic_yes" msgid="3394094077553763689">"ඔව්"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"අවලංගු කර."</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"ප්රතික්ෂේප කරන්න, නැවත අසන්න එපා"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"පද්ධති යෙදුම් පෙන්වන්න"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"වෙනස් කළ නොහැකිය"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"ඔව්"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"අවලංගු කරන්න"</string>
</resources>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 45efec5..9e43ee9 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"පැකේජ ස්ථාපනකරු"</string>
- <string name="next" msgid="3057143178373252333">"මීලඟ"</string>
- <string name="install" msgid="5896438203900042068">"ස්ථාපනය"</string>
- <string name="done" msgid="3889387558374211719">"හරි"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"මෙම යෙදුමට අවසර දෙන්න:"</string>
- <string name="cancel" msgid="8360346460165114585">"අවලංගු කරන්න"</string>
- <string name="unknown" msgid="4742479012767208045">"නොදනී"</string>
- <string name="installing" msgid="8613631001631998372">"ස්ථාපනය කරමින්…"</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ස්ථාපනය කරමින්…"</string>
- <string name="install_done" msgid="3682715442154357097">"යෙදුම ස්ථාපනය කරන ලදි."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"ඔබට මෙම යෙදුම ස්ථාපනය කිරීමට අවශ්යද? පහත ඒවා වෙත එයට ප්රවේශය ලැබෙනු ඇත:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"මෙම යෙදුම ස්ථාපනය කිරීමට ඔබට අවශ්යද? වෙනත් විශේෂ ප්රවේශයක් එයට අවශ්ය නොවෙයි."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"දැනට පවතින මෙම යෙදුමට යාවත්කාලීනයක් ස්ථාපනය කිරීමට ඔබට අවශ්යද? ඔබගේ පවතින දත්ත නැති නොවේ. යාවත්කාලීන කළ යෙදුම පිවිසීම ලබා ගනී:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"ඔබට මෙම තිළැලි යෙදුමට යාවත්කාලීනය ස්ථාපනය කිරීමට අවශ්යද? ඔබගේ දැනට පවතින දත්ත නැති නොවේ. යාවත්කාලීන කරන ලද යෙදුම පහත සඳහා ප්රවේශය ලබාගනු ඇත:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"මෙම පවතින යෙදුමට යාවත්කාලීනයක් ස්ථාපනය කිරීමට ඔබට අවශ්යද? ඔබගේ පවතින දත්ත නැති නොවේ. එයට විශේෂ ප්රවේශයක් අවශ්ය නොවේ."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"පවතින මෙම යෙදුමට යාවත්කාලීනයක් ස්ථාපනය කිරීමට ඔබට අවශ්යද? ඔබගේ පවතින දත්ත නැති නොවේ. එයට විශේෂ ප්රවේශයක් අවශ්ය නොවේ."</string>
- <string name="install_failed" msgid="6579998651498970899">"යෙදුම ස්ථාපනය කරේ නැත."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"මෙම පැකේජය ස්ථාපනය කිරීම අවහිර කරන ලදි."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"පැකේජය දැනට පවතින පැකේජයක් සමග ගැටෙන නිසා යෙදුම ස්ථාපනය නොකරන ලදී."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"යෙදුම ඔබේ ටැබ්ලට් පරිගණකය සමග නොගැළපෙන නිසා යෙදුම ස්ථාපනය නොකරන ලදී."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"මෙම යෙදුම ඔබගේ රූපවාහිනිය හා නොගැළපේ."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"යෙදුම ඔබේ දුරකථනය සමග නොගැළපෙන නිසා යෙදුම ස්ථාපනය නොකරන ලදී."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"පැකේජය වලංගු නොවන බවක් පෙනෙන නිසා යෙදුම ස්ථාපනය නොකරන ලදී."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"ඔබගේ ටැබ්ලටයේ <xliff:g id="APP_NAME">%1$s</xliff:g> ස්ථාපනය කළ නොහැක."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> මෙම රූපවාහිනියෙහි ස්ථාපනය කළ නොහැක."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> දුරකථනයට ස්ථාපිත කිරීමට නොහැකි විය."</string>
- <string name="launch" msgid="4826921505917605463">"විවෘත කරන්න"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"නාඳුනන මූලයන් වෙතින් ලබාගත් යෙදුම් ස්ථාපනය කිරීමට ඔබගේ පරිපාලකයා ඉඩ නොදේ"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"මෙම පරිශීලකයා මඟින් නොදන්නා යෙදුම් ස්ථාපනය කළ නොහැක"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"මෙම පරිශීලකයාට යෙදුම් ස්ථාපනය කිරීමට අවසර නැත"</string>
- <string name="ok" msgid="3468756155452870475">"හරි"</string>
- <string name="settings" msgid="6743583734099755409">"සැකසීම්"</string>
- <string name="manage_applications" msgid="4033876279091996596">"යෙදුම් කළමනාකරණය කරන්න"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"යෙදුම ප්රතිස්ථාපනය කරනවාද?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"ඔබ ස්ථාපනය කරන යෙදුම අනෙක් යෙදුමෙන් ප්රතිස්ථාපනය කෙරේ.\n\nඔබගේ සියලුම පෙර පරිශීලක දත්ත සුරැකෙනු ඇත."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"මෙය පද්ධති යෙදුමකි.\n\n}ඔබගේ සියලුම පෙර පරිශීලක දත්ත සුරැකෙනු ඇත."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"ඉඩ නොමැත"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> ස්ථාපිත කිරීමට නොහැකි විය. ඉඩ පොඩ්ඩක් නිදහස් කොට නැවත උත්සාහ කරන්න."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"හරි"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"යෙදුම හමුවී නැත"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"ස්ථාපිත යෙදුම් ලැයිස්තුවේ යෙදුම සොයා ගත නොහැකි විය."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"ඉඩ නොදෙයි"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"වත්මන් පරිශීලකයාට මෙම අස්ථාපනය සිදු කිරීමට ඉඩ නොදේ."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"දෝෂය"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"යෙදුම අස්ථාපනය කළ නොහැකි විය."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"යෙදුම අස්ථාපනය කරන්න"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"යාවත්කාලිනය අස්ථාපනය කරන්න"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> පහත යෙදුමේ කොටසකි:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"ඔබට මෙම යෙදුම අස්ථාපනය කිරීමට අවශ්යද?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222"><b>"සියලු"</b>" පරිශීලකයන් සඳහා මෙම යෙදුම අස්ථාපනය කිරීමට ඔබට අවශ්යද? උපාංගයෙහි "<b>"සියලු"</b>" පරිශීලකයන් සඳහා යෙදුම සහ එහි දත්ත ඉවත්වනු ඇත."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"<xliff:g id="USERNAME">%1$s</xliff:g> පරිශීලකයා සඳහා මෙම යෙදුම අස්ථාපනය කිරීමට ඔබට අවශ්යයද?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"මෙම යෙදුම කර්මාන්ත ශාලා අනුවාදයක් සමගින් ප්රතිස්ථාපනය කරන්නද? සියලු දත්ත ඉවත් කරනු ඇත."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"මෙම යෙදුම කර්මාන්ත ශාලා අනුවාදයක් සමගින් ප්රතිස්ථාපනය කරන්නද? සියලු දත්ත ඉවත් කරනු ඇත. මෙය කාර්යාල පැතිකඩවල් සහිත අය ඇතුළුව, මෙම උපාංගයෙහි සියලු පරිශීලකයන් වෙත බලපානු ඇත."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"අස්ථාපන ධාවනය කරමින්"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"අසාර්ථක වූ අස්ථාපන"</string>
- <string name="uninstalling" msgid="5556217435895938250">"අස්ථාපනය කරමින්…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> අස්ථාපනය කරමින්…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"අස්ථාපනය අවසන්."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> අස්ථාපනය කරන ලදී"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"අස්ථාපිත විම අසාර්ථකයි."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> අස්ථාපනය කිරීම සාර්ථකයි."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"ක්රියාකාරී උපාංගය පරිපාලක යෙදුම අස්ථාපනය කිරීමට නොහැක"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"<xliff:g id="USERNAME">%1$s</xliff:g> සඳහා ක්රියාකාරී උපාංගය පරිපාලක යෙදුම අස්ථාපනය කිරීමට නොහැක"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"මෙම යෙදුම සමහර පරිශීලකයන්ට සහ පැතිකඩවල්වලට අවශ්ය අතර අනෙක් අයට අස්ථාපනය කරන ලදී"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"ඔබේ කාර්ය පැතිකඩ සඳහා මෙම යෙදුම අවශ්ය වන අතර අස්ථාපනය කළ නොහැකිය."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"ඔබගේ උපාංගයේ පාලකයාට මෙම යෙදුම අවශ්ය වේ එම නිසා අස්ථාපනය කළ නොහැක."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"උපාංග පරිපාලක යෙදුම් කළමනාකරණය කිරීම"</string>
- <string name="manage_users" msgid="3125018886835668847">"පරිශීලකයන් කළමනාකරණය කරන්න"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> අස්ථාපනය කල නොහැක."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"පැකේජය විග්රහ කිරීමේදී ගැටළුවක් ඇති විය."</string>
- <string name="newPerms" msgid="6039428254474104210">"අලුත්"</string>
- <string name="allPerms" msgid="1024385515840703981">"සියල්ල"</string>
- <string name="privacyPerms" msgid="1850527049572617">"පෞද්ගලිකත්වය"</string>
- <string name="devicePerms" msgid="6733560207731294504">"උපාංගය ප්රවේශය"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"මෙම යාවත්කාලිනයට අලුත් අවසරයන් අවශ්ය නොවේ."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"ඔබට පහත සඳහන් අවසර පිරිනැමීමට අවශ්ය ද? එය පහත සඳහා ප්රවේශය ලබා ගනියි:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"ප්රතික්ෂේප කරන්න"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"වැඩිදුර තොරතුරු"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"කෙසේ වෙතත් ප්රතික්ෂේප කරන්න"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ට <xliff:g id="ACTION">%2$s</xliff:g> වෙත ඉඩ දෙන්නද?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> අබලයි"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"සියල්ල අබලයි"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"කිසිවක් අබල නැත"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"ඉඩ දෙන්න"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"යෙදුම්"</string>
- <string name="app_permissions" msgid="3146758905824597178">"යෙදුම් අවසර"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"නැවත අසන්න එපා"</string>
- <string name="no_permissions" msgid="3210542466245591574">"අවසර නොමැත"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"අතිරේක අවසර"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"අවසර පාලක"</string>
+ <string name="ok" msgid="4417794827535157922">"හරි"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"අවසර"</string>
+ <string name="cancel" msgid="7279939269964834974">"අවලංගු කරන්න"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"යෙදුම හමුවී නැත"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"ප්රතික්ෂේප කර."</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"ප්රතික්ෂේප කර නැවත අසන්න එපා"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"තවත් තතු"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"කෙසේ වෙතත් ප්රතික්ෂේප කරන්න"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> හට <xliff:g id="ACTION">%2$s</xliff:g> වෙත ඉඩ දෙන්නද?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"සැම විට <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> හට <xliff:g id="ACTION">%2$s</xliff:g> වෙත ඉඩ දෙන්නද?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"යෙදුම භාවිතා කරන විට පමණි"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"සැමවිටම"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"ප්රතික්ෂේප කරන්න, නැවත අසන්න එපා"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> අබලයි"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"සියල්ල අබලයි"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"කිසිවක් අබල නැත"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"ඉඩ දෙන්න"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"සැම විටම ඉඩ දෙන්න"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"යෙදුම භාවිතයේ දී පමණක් ඉඩ දෙන්න"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"යෙදුම්"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"යෙදුම් අවසර"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"අවසර කළමනාකරු"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"නැවත නොඅසන්න"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"අවසර නොමැත"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"අතිරේක අවසර"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"යෙදුම් තොරතුරු විවෘත කරන්න"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"මෙම යෙදුම නිර්මාණය කර ඇත්තේ Android වල පැරණි අනුවාදයකට වේ. අවසර නොදීම මඟින් එය බලාපොරොත්තු වන ආකාරයට වැඩ නොකිරීමට හැක."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"නොදන්නා ක්රියාවක් සිදු කරන්න"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"යෙදුම් <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="6773743421743728921">"පද්ධතිය පෙන්වන්න"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"පද්ධතිය සඟවන්න"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> අවසර"</string>
- <string name="no_apps" msgid="1965493419005012569">"යෙදුම් නොමැත"</string>
- <string name="location_settings" msgid="1774875730854491297">"ස්ථාන සැකසීම්"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> මෙම උපාංගය සඳහා ස්ථාන සේවාවන් සපයන්නෙකු වේ. ස්ථාන ප්රවේශය ස්ථාන සැකසීම් වෙතින් වෙනස් කළ හැක."</string>
- <string name="system_warning" msgid="7103819124542305179">"ඔබ මෙම අවසරය ප්රතික්ෂේප කරන්නේ නම්, සමහර යෙදුම් බලාපොරොත්තු පරිදි ක්රියා නොකරනු ඇත."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"ප්රතිපත්තිය මඟින් බලාත්මක කරයි"</string>
- <string name="loading" msgid="7811651799620593731">"පූරණය කරමින්…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"සියලු අවසර"</string>
- <string name="other_permissions" msgid="2016192512386091933">"වෙනත් යෙදුම් හැකියාවන්"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"අවසර ඉල්ලීම"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"තිර උඩැතිරියක් අනාවරණය කරන ලදි"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"මෙම අවසර සැකසීම වෙනස් කිරීම සඳහා, ඔබට මුලින්ම සැකසීම් > යෙදුම් වෙතින් තිර උඩැතිරිය අක්රිය කර යුතුයි"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"සැකසීම් විවෘත කරන්න"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Wear මත ස්ථාපන/අස්ථාපනය ක්රියා සහාය දක්වන්නේ නැත."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> යාවත්කාලීන කර ඇත. <xliff:g id="APP_NAME_1">%1$s</xliff:g> හට පහත ඒවාට පිවිසීමට ඉඩ දෙන්නද?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> හට පිවිසීමට ඉඩ දෙන දේ තෝරන්න"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> යාවත්කාලීන කර ඇත. මෙම යෙදුමට පිවිසීමට ඉඩ දෙන දේ තෝරන්න."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"අවලංගු කරන්න"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"දිගටම කර ගෙන යන්න"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"නව අවසර"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"වත්මන් අවසර"</string>
- <string name="message_staging" msgid="6151794817691100003">"යෙදුම වේදිකාගත කරමින්..."</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"නොදනී"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"ආරක්ෂාව සඳහා, ඔබගේ ටැබ්ලටය මෙම මුලාශ්රයෙන් ලබාගත් නොදන්නා යෙදුම් ස්ථාපනය කිරීමට අවසර නැත."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"ආරක්ෂාව සඳහා, ඔබගේ රූපවාහිනිය මෙම මුලාශ්රයෙන් ලබාගත් නොදන්නා යෙදුම් ස්ථාපනය කිරීමට අවසර නැත."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"ආරක්ෂාව සඳහා, ඔබගේ දුරකථනය මෙම මුලාශ්රයෙන් ලබාගත් නොදන්නා යෙදුම් ස්ථාපනය කිරීමට අවසර නැත."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"ඔබගේ දුරකථනය සහ පුද්ගලික දත්තවලට නොදන්නා යෙදුම් මඟින් තර්ජන එල්ල කිරීමේ හැකියාව වැඩිය. මෙම යෙදුම් ස්ථාපනය කිරීමෙන් සහ භාවිත කිරීමෙන් ඔබ ඔබේ දුරකථනය සඳහා සිදු වන යම් හානි හෝ එය භාවිත කිරීමේ ප්රතිඵලයක් ලෙස සිදු වන දත්ත හානි සඳහා ඔබ වගකිව යුතු බවට එකඟ වේ."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"ඔබගේ ටැබ්ලට් පරිගණකය සහ පුද්ගලික දත්තවලට නොදන්නා යෙදුම් මඟින් තර්ජන එල්ල කිරීමේ හැකියාව වැඩිය. මෙම යෙදුම් ස්ථාපනය කිරීමෙන් සහ භාවිත කිරීමෙන් ඔබ ඔබේ ටැබ්ලට් පරිගණකය සඳහා සිදු වන යම් හානි හෝ එය භාවිත කිරීමේ ප්රතිඵලයක් ලෙස සිදු වන දත්ත හානි සඳහා ඔබ වගකිව යුතු බවට එකඟ වේ."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"ඔබගේ TV සහ පුද්ගලික දත්තවලට නොදන්නා යෙදුම් මඟින් තර්ජන එල්ල කිරීමේ හැකියාව වැඩිය. මෙම යෙදුම් ස්ථාපනය කිරීමෙන් සහ භාවිත කිරීමෙන් ඔබ ඔබේ TV සඳහා සිදු වන යම් හානි හෝ එය භාවිත කිරීමේ ප්රතිඵලයක් ලෙස සිදු වන දත්ත හානි සඳහා ඔබ වගකිව යුතු බවට එකඟ වේ."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"දිගටම කරගෙන යන්න"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"සැකසීම්"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Wear යෙදුම් ස්ථාපනය/අස්ථාපනය කරමින්"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"මෙම යෙදුම නිර්මාණය කර ඇත්තේ Android වල පැරණි අනුවාදයකට වේ. අවසර නොදීම මඟින් එය බලාපොරොත්තු වන ආකාරයට වැඩ නොකිරීමට හැක."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"නොදන්නා ක්රියාවක් සිදු කරන්න"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"යෙදුම් <xliff:g id="COUNT_0">%1$d</xliff:g>කින් <xliff:g id="COUNT_1">%2$d</xliff:g>කට ඉඩ දෙන ලදී"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"මෑත භාවිතය"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"අවසර උපකරණ පුවරුව බලන්න"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"පද්ධතිය පෙන්වන්න"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"පද්ධතිය සඟවන්න"</string>
+ <string name="no_apps" msgid="2377153782338039463">"යෙදුම් නොමැත"</string>
+ <string name="location_settings" msgid="547378321761364906">"ස්ථාන සැකසීම්"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> මෙම උපාංගය සඳහා ස්ථාන සේවාවන් සපයන්නෙකු වේ. ස්ථාන ප්රවේශය ස්ථාන සැකසීම් වෙතින් වෙනස් කළ හැක."</string>
+ <string name="system_warning" msgid="6868290533389195836">"ඔබ මෙම අවසරය ප්රතික්ෂේප කරන්නේ නම්, සමහර යෙදුම් බලාපොරොත්තු පරිදි ක්රියා නොකරනු ඇත."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"ප්රතිපත්තිය මඟින් බලාත්මක කරයි"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"පසුබිම් ප්රවේශය ප්රතිපත්තිය මගින් අබල කර ඇත"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"පසුබිම් ප්රවේශය ප්රතිපත්තිය මගින් සබල කර ඇත"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"පෙරබිම් ප්රවේශය ප්රතිපත්තිය මගින් සබල කර ඇත"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"පරිපාලක විසින් පාලනය කෙරේ"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"පසුබිම් ප්රවේශය පරිපාලක විසින් අබල කර ඇත"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"පසුබිම් ප්රවේශය පරිපාලක විසින් සබල කර ඇත"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"පෙරබිම් ප්රවේශය පරිපාලක විසින් සබල කර ඇත"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"පද්ධතිය මගින් සකසන අවසරය"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"සැමවිටම"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"යෙදුම භාවිතා කරන විට පමණි"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"කිසිදාත් නැත"</string>
+ <string name="loading" msgid="323483393167148377">"පූරණය කරමින්…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"සියලු අවසර"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"වෙනත් යෙදුම් හැකියාවන්"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"අවසර ඉල්ලීම"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"තිර උඩැතිරියක් අනාවරණය කරන ලදි"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"මෙම අවසර සැකසීම වෙනස් කිරීම සඳහා, ඔබට මුලින්ම සැකසීම් > යෙදුම් වෙතින් තිර උඩැතිරිය අක්රිය කර යුතුයි"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"සැකසීම් විවෘත කරන්න"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Wear මත ස්ථාපන/අස්ථාපනය ක්රියා සහාය දක්වන්නේ නැත."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> හට පිවිසීමට ඉඩ දෙන දේ තෝරන්න"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> යාවත්කාලීන කර ඇත. මෙම යෙදුමට පිවිසීමට ඉඩ දෙන දේ තෝරන්න."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"අවලංගු කරන්න"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"ඉදිරියට යන්න"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"නව අවසර"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"වත්මන් අවසර"</string>
+ <string name="message_staging" msgid="641286607664721291">"යෙදුම වේදිකාගත කරමින්..."</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"නොදනී"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"උපකරණ පුවරුව"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">අවසන් ප්රවේශය: ප්රවේශ <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g>ක් (පසුබිම තුළ <xliff:g id="NUM_5">%3$s</xliff:g>)</item>
+ <item quantity="other">අවසන් ප්රවේශය: ප්රවේශ <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g>ක් (පසුබිම තුළ <xliff:g id="NUM_5">%3$s</xliff:g>)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">අවසන් ප්රවේශය: ප්රවේශ <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g>ක්\nකාලය: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">අවසන් ප්රවේශය: ප්රවේශ <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g>ක්\nකාලය: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">අවසන් ප්රවේශය: ප්රවේශ <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g>ක් (පසුබිම තුළ <xliff:g id="NUM_6">%3$s</xliff:g>)\nකාලය: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">අවසන් ප්රවේශය: ප්රවේශ <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g>ක් (පසුබිම තුළ <xliff:g id="NUM_6">%3$s</xliff:g>)\nකාලය: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"ඕනෑම අවසරයක්"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"ඕනෑම වේලාවක"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"පසුගිය දින 7"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"පසුගිය පැය 24"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"පසුගිය පැය 1"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"පසුගිය මිනිත්තු 15"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"පසුගිය විනාඩි 1"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"අවසර භාවිත නැත"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"ඕනෑම වේලාවක ප්රවේශය"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"පසුගිය දින 7ක් තුළ ප්රවේශය"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"පසුගිය පැය 24ක් තුළ ප්රවේශය"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"පසුගිය පැය තුළ ප්රවේශය"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"පසුගිය විනාඩි 15ක් තුළ ප්රවේශය"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"පසුගිය විනාඩි 1 තුළ ප්රවේශය"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"ඕනෑම වේලාවක් තුළ ඉහළ අවසර භාවිතය"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"පසුගිය දින 7ක් තුළ ඉහළ අවසර භාවිතය"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"පසුගිය පැය 24ක් තුළ ඉහළ අවසර භාවිතය"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"පසුගිය පැයක් තුළ ඉහළ අවසර භාවිතය"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"පසුගිය විනාඩි 15ක් තුළ ඉහළ අවසර භාවිතය"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"පසුගිය විනාඩි 1 තුළ ඉහළ අවසර භාවිතය"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"යෙදුම්"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"මේ අනුව පෙරහන්න: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"පෙරහන ඉවත් කරන්න"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"මේ අනුව පෙරහන්න"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"අවසර අනුව පෙරහන්න"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"බොහෝ අවසර"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"බොහෝ ප්රවේශ වීම්"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"මෑත"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"නැවුම් කරන්න"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"යෙදුම් අවසර භාවිතය"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"ප්රවේශය: වාර <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="4040424337831328212">"ප්රවේශය: වාර <xliff:g id="NUM">%1$s</xliff:g>. අවසන් වරට භාවිත කළේ <xliff:g id="TIME">%2$s</xliff:g> කට ඉහතය."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"ඉඩ දෙන්න"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"සැම විටම ඉඩ දෙන්න"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"යෙදුම භාවිතයේදී පමණක් ඉඩ දෙන්න"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"ප්රතික්ෂේප කර."</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> අවසරය"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="APP">%2$s</xliff:g> සඳහා <xliff:g id="PERM">%1$s</xliff:g> ප්රවේශය"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> ඔබේ <xliff:g id="PERM">%2$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g>කට පෙර පිවිසියා."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> ඔබේ <xliff:g id="PERM">%2$s</xliff:g> වෙත පිවිස නැත."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"විස්තරාත්මක අවසර භාවිතය බලන්න"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"අවසන් ප්රවේශය: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"කිසි විටෙක ප්රවේශ නොවූ"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"ඉඩ දුන්"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"භාවිත කෙරෙන විට පමණක් අනුමත කෙරේ"</string>
+ <string name="denied_header" msgid="2277998574238617699">"ප්රතික්ෂේපයි"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"විස්තරාත්මක භාවිතය බලන්න"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <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="seconds" formatted="false" msgid="1632909606956324957">
+ <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="role_request_message_add" msgid="1977772335648650272">"ඔබේ <xliff:g id="ROLE_NAME">%2$s</xliff:g> ලෙස <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> භාවිත කරන්නද?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"<b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> වෙනුවට ඔබේ <xliff:g id="ROLE_NAME">%2$s</xliff:g> ලෙස <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> භාවිත කරන්නද?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"අවසර සිහි කැඳවීම්"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> ඔබේ ස්ථානය භාවිත කරමින් සිටියි"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"මෙම යෙදුම සැමවිටම ඔබේ ස්ථානය වෙත ප්රවේශ විය හැක. වෙනස් කිරීමට තට්ටු කරන්න."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"යෙදුම භාවිතයේ දී පමණි"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"අවසරවලට ඉඩ නොදේ"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"අවසර ප්රතික්ෂේප නොකෙරේ"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"යෙදුම්වලට ඉඩ නොදේ"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"යෙදුම් ප්රතික්ෂේප නොකෙරේ"</string>
+ <string name="launch_app" msgid="5641437562665039291">"විවෘත කරන්න"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"අස්ථාපනය"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"බලෙන් නවතන්න"</string>
+ <string name="settings" msgid="2884124136779508907">"සැකසීම්"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> හට ඔබේ උපාංගය වෙත පූර්ණ ප්රවේශය තිබේ"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> ප්රවේශ්යතා සේවාවලට ඔබේ උපාංගය වෙත පූර්ණ ප්රවේශය තිබේ"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> හට ඔබේ තිරය, ක්රියා, සහ ආදාන බැලීමට, කාර්ය ඉටු කිරීමට, සහ සංදර්ශකය පාලන කිරීමට හැකි ය."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"මෙම සේවාවලට ඔබේ තිරය, ක්රියා, සහ ආදාන බැලීමට, කාර්ය ඉටු කිරීමට, සහ සංදර්ශකය පාලන කිරීමට හැකි ය."</string>
+ <string name="default_apps" msgid="8554530939151957828">"පෙරනිමි යෙදුම්"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"පෙරනිමි යෙදුම් නැත"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"වැඩ සඳහා පෙරනිමි"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"කිසිවක් නැත"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"යෙදුම් නොමැත"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"විශේෂ යෙදුම් ප්රවේශය"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"විශේෂිත යෙදුම් ප්රවේශයක් නැත"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"යෙදුම් නැත"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"සහය යෙදුම"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"බ්රවුසර යෙදුම"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"දුරකථන යෙදුම"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"කෙටි පණිවුඩ යෙදුම"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"හදිසි යෙදුම"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"මුල් පිටු යෙදුම"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"සංගීත යෙදුම"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Gallery යෙදුම"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"රිය ප්රකාර දුරකථන යෙදුම"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"ඇමතුම් ප්රතියොමු කරන යෙදුම"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"ඇමතුම් පරීක්ෂා කිරීමේ යෙදුම"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"ඇමතුම් සහායක යෙදුම"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"මෝටර් රථ ප්රක්ෂේපන යෙදුම"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"වැඩ පැතිකඩට සහය නොදක්වයි"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"සටහන: ඔබ ඔබේ උපාංගය යළි අරඹන්නේ නම් සහ තිර අඟුලක් සකසා තිබේ නම්, ඔබ ඔබේ උපාංගය අඟුලු අරින තෙක් මෙම යෙදුම ආරම්භ විය නොහැක."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"සහකරුට ඔබේ තිරය මත දෘශ්යමාන වන හෝ යෙදුම් තුළ ප්රවේශ විය හැකි තොරතුරු ඇතුළුව, ඔබේ පද්ධතිය මත භාවිතයේ ඇති යෙදුම් ගැන කියවීමට හැකි වෙයි."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"නිදොසීම් දත්ත බෙදා ගන්න"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"විස්තරාත්මක නිදොසීම් දත්ත බෙදා ගන්න ද?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> නිදොසීම් තොරතුරු උඩුගත කිරීමට කැමතිය."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"නිදොසීම් දත්ත බෙදා ගන්න"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> මෙම උපාංගයෙන් <xliff:g id="DATE">%2$s</xliff:g> හි <xliff:g id="TIME">%3$s</xliff:g> හිදී ගෙන ඇති දෝෂ වාර්තාවක් උඩුගත කිරීමට ඉල්ලා සිටී. දෝෂ වාර්තාවල ඔබේ උපාංගය පිළිබඳ හෝ යෙදුම් විසින් සටහන් කර ඇති පුද්ගලික තොරතුරු, උදාහරණයක් ලෙස, පරිශීලක නාම, ස්ථාන දත්ත, උපාංග හැඳුනුම්කාරක සහ ජාල තොරතුරු ඇතුළත් වේ. ඔබ මෙම තොරතුරු සමඟ විශ්වාස කරන පුද්ගලයින් සහ යෙදුම් සමඟ පමණක් දෝෂ වාර්තා බෙදා ගන්න. <xliff:g id="APP_NAME_1">%4$s</xliff:g> හට දෝෂ වාර්තාවක් උඩුගත කිරීමට ඉඩ දෙන්න ද?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"ඉඩ දෙන්න"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"ප්රතික්ෂේප කරන්න"</string>
</resources>
diff --git a/res/values-sk-television/strings.xml b/res/values-sk-television/strings.xml
index 15ecdb8..0ff2da3 100644
--- a/res/values-sk-television/strings.xml
+++ b/res/values-sk-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Zamietnuť a nabudúce sa nepýtať"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Neskôr to môžete zmeniť v časti Nastavenia > Aplikácie"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Zobraziť systémové aplikácie"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Povolenia aplikácie"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Povolenia aplikácie"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Povolenia – <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Ďalšie povolenia"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Povolenia – <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Zamietnuť a nabudúce sa nepýtať"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Neskôr to môžete zmeniť v časti Nastavenia > Aplikácie"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Zobrazenie systémových aplikácií"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Povolenia aplikácií"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Povolenia aplikácií"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Povolenia – <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Ďalšie povolenia"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Povolenia – <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-sk-watch/strings.xml b/res/values-sk-watch/strings.xml
index dc3ce4f..78f4fed 100644
--- a/res/values-sk-watch/strings.xml
+++ b/res/values-sk-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Zamietnuť a už sa nepýtať"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Zobraziť systémové aplikácie"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Nedá sa zmeniť"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Áno"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Zrušiť"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Zamietnuť a už sa nepýtať"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Zobrazenie systémových aplikácií"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Nedá sa zmeniť"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Áno"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Zrušiť"</string>
</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 1e31529..af44f4f 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,138 +16,296 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Nástroj na inštaláciu balíčkov"</string>
- <string name="next" msgid="3057143178373252333">"Ďalej"</string>
- <string name="install" msgid="5896438203900042068">"Inštalovať"</string>
- <string name="done" msgid="3889387558374211719">"Hotovo"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Povoliť aplikácii nasledovné:"</string>
- <string name="cancel" msgid="8360346460165114585">"Zrušiť"</string>
- <string name="unknown" msgid="4742479012767208045">"Neznáme"</string>
- <string name="installing" msgid="8613631001631998372">"Inštaluje sa..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Inštaluje sa <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Aplikácia bola nainštalovaná."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Chcete nainštalovať túto aplikáciu? Získa nasledujúce povolenia:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Chcete nainštalovať túto aplikáciu? Nevyžaduje žiadny zvláštny prístup."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Chcete nainštalovať aktualizáciu existujúcej aplikácie? Existujúce údaje sa nestratia. Aktualizovaná aplikácia získa nasledujúce povolenia:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Chcete nainštalovať aktualizáciu tejto integrovanej aplikácie? Existujúce údaje sa nestratia. Aktualizovaná aplikácia získa nasledujúce povolenia:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Chcete nainštalovať aktualizáciu tejto existujúcej aplikácie? Vaše údaje nebudú stratené. Táto akcia nevyžaduje žiadny zvláštny prístup."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Chcete nainštalovať aktualizáciu tejto vstavanej aplikácie? Vaše údaje sa nestratia. Táto akcia nevyžaduje žiadny zvláštny prístup."</string>
- <string name="install_failed" msgid="6579998651498970899">"Aplikácia nebola nainštalovaná."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Inštalácia balíka bola zablokovaná."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Aplikácia sa nenainštalovala, pretože balík koliduje s existujúcim balíkom."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Aplikácia sa nenainštalovala, pretože nie je kompatibilná s vaším tabletom."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Táto aplikácia nie je kompatibilná s vaším televízorom."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Aplikácia sa nenainštalovala, pretože nie je kompatibilná s vaším telefónom."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Aplikácia sa nenainštalovala, pretože je balík zrejme neplatný."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Aplikáciu <xliff:g id="APP_NAME">%1$s</xliff:g> sa do vášho tabletu nepodarilo nainštalovať."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Aplikáciu <xliff:g id="APP_NAME">%1$s</xliff:g> sa nepodarilo nainštalovať na vašom televízore."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Aplikáciu <xliff:g id="APP_NAME">%1$s</xliff:g> sa do vášho telefónu nepodarilo nainštalovať."</string>
- <string name="launch" msgid="4826921505917605463">"Otvoriť"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Váš správca zakázal inštaláciu aplikácií z neznámych zdrojov"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Tento používateľ nemôže inštalovať neznáme aplikácie"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Tento používateľ nemá povolené inštalovať aplikácie"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Nastavenia"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Spravovať aplikácie"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Nahradiť aplikáciu?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Aplikácia, ktorú inštalujete, nahradí inú aplikáciu.\n\nVšetky predchádzajúce používateľské údaje budú uložené."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Toto je systémová aplikácia.\n\nVšetky predchádzajúce používateľské údaje budú uložené."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Nedostatok miesta"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Aplikáciu <xliff:g id="APP_NAME">%1$s</xliff:g> sa nepodarilo nainštalovať. Uvoľnite miesto v pamäti a skúste to znova."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Aplikácia sa nenašla"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Aplikáciu sa nepodarilo nájsť v zozname nainštalovaných aplikácií."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Nie je povolené"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Aktuálny používateľ nemá na odinštalovanie povolenie."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Chyba"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Aplikáciu nie je možné odinštalovať."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Odinštalovať aplikáciu"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Odinštalovať aktualizáciu"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"Aktivita <xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> je súčasťou nasledujúcej aplikácie:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Chcete túto aplikáciu odinštalovať?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Chcete odinštalovať túto aplikáciu pre "<b>"všetkých"</b>" používateľov? Aplikácia a jej údaje sa odstránia z tohto zariadenia pre "<b>"všetkých"</b>" používateľov."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Chcete túto aplikáciu odinštalovať pre používateľa <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Nahradiť túto aplikáciu továrenskou verziou? Všetky údaje sa odstránia."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Nahradiť túto aplikáciu továrenskou verziou? Všetky údaje sa odstránia. Ovplyvní to všetkých používateľov tohto zariadenia vrátane tých s pracovnými profilmi."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Prebiehajúce odinštalácie"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Neúspešné odinštalácie"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Prebieha odinštalovanie..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Prebieha odinštalovanie balíčka <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Odinštalovanie bolo dokončené."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Balíček <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> bol odinštalovaný"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Odinštalovanie bolo neúspešné."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Odinštalovanie balíčka <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> sa nepodarilo."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Aktívna aplikácia na správu zariadenia sa nedá odinštalovať"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Aktívna aplikácia na správu zariadenia sa v prípade používateľa <xliff:g id="USERNAME">%1$s</xliff:g> nedá odinštalovať"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Táto aplikácia sa vyžaduje v prípade niektorých používateľov či profilov a v prípade iných zase bola odinštalovaná"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Táto aplikácia sa vyžaduje pre váš profil a nemôžete ju odinštalovať."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Túto aplikáciu vyžaduje správca vášho zariadenia a nie je ju možné odinštalovať."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Spravovať aplikácie na ovládanie zariadenia"</string>
- <string name="manage_users" msgid="3125018886835668847">"Spravovať používateľov"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Aplikáciu <xliff:g id="APP_NAME">%1$s</xliff:g> sa nepodarilo odinštalovať."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Pri analýze balíka sa vyskytol problém."</string>
- <string name="newPerms" msgid="6039428254474104210">"Nové"</string>
- <string name="allPerms" msgid="1024385515840703981">"Všetko"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Ochrana súkromia"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Prístup k zariadeniu"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Táto aktualizácia nevyžaduje žiadne nové povolenia."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Chcete udeliť nasledujúce povolenia? Získate prístup k:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Odmietnuť"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Ďalšie informácie"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Zamietnuť"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Povoliť aplikácii <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"deaktivované (<xliff:g id="COUNT">%1$d</xliff:g>)"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"všetky sú zakázané"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"žiadne nie sú zakázané"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Povoliť"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Aplikácie"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Povolenia aplikácií"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Nabudúce sa nepýtať"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Žiadne povolenia"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Ďalšie povolenia"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Ovládač povolení"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"povolenia"</string>
+ <string name="cancel" msgid="7279939269964834974">"Zrušiť"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Aplikácia sa nenašla"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Zamietnuť"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Zamietnuť a už sa nepýtať"</string>
+ <!-- no translation found for grant_dialog_button_deny_background (5378693207810841555) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_deny_background_and_dont_ask_again (1032019626928637454) -->
+ <skip />
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Ďalšie info"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Zamietnuť"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Povoliť aplikácii <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> vykonať akciu <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Vždy povoliť aplikácii <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Iba počas používania aplikácie"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Vždy"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Zamietnuť a nabudúce sa nepýtať"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"deaktivované (<xliff:g id="COUNT">%1$d</xliff:g>)"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"všetky sú zakázané"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"žiadne nie sú zakázané"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Povoliť"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Povoliť po celý čas"</string>
+ <!-- no translation found for grant_dialog_button_allow_foreground (8090382319222429427) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_allow_background (3190568549032350790) -->
+ <skip />
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Aplikácie"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Povolenia aplikácií"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Správca povolení"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Nabudúce sa nepýtať"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Žiadne povolenia"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Ďalšie povolenia"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Otvoriť informácie o aplikácii"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> ďalšie</item>
- <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> ďalšieho</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> more</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ďalších</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ďalšie</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Táto aplikácia bola navrhnutá pre staršiu verziu systému Android. Odmietnutie povolenia môže spôsobiť, že nebude optimálne fungovať."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"umožňuje vykonať neznámu akciu"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"Povolené <xliff:g id="COUNT_0">%1$d</xliff:g> z <xliff:g id="COUNT_1">%2$d</xliff:g> aplikácií"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Zobraziť systémové aplikácie"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Skryť systémové aplikácie"</string>
- <string name="permission_title" msgid="6495415273398916381">"Povolenia <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Žiadne aplikácie"</string>
- <string name="location_settings" msgid="1774875730854491297">"Nastavenia polohy"</string>
- <string name="location_warning" msgid="8778701356292735971">"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="7103819124542305179">"Ak toto povolenie zamietnete, základné funkcie vášho zariadenia nemusia pracovať podľa očakávaní."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Vynútené pravidlom"</string>
- <string name="loading" msgid="7811651799620593731">"Načítava sa…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Všetky povolenia"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Ďalšie možnosti aplikácie"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Žiadosť o povolenie"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Bolo zistené prekrytie obrazovky"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Ak chcete zmeniť nastavenie tohto povolenia, musíte najprv v časti Nastavenia > Aplikácie vypnúť prekrytie obrazovky"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Otvoriť nastavenia"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Systém Wear nepodporuje akciu inštalácie/odinštalovania."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"Aplikácia <xliff:g id="APP_NAME_0">%1$s</xliff:g> bola aktualizovaná. Povoliť aplikácii <xliff:g id="APP_NAME_1">%1$s</xliff:g> prístup k nasledovnému?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Vyberte, k čomu môže pristupovať aplikácia <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"Aplikácia <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> bola aktualizovaná. Vyberte, k čomu môže pristupovať."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Zrušiť"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Pokračovať"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Nové povolenia"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Aktuálne povolenia"</string>
- <string name="message_staging" msgid="6151794817691100003">"Aplikácia je zavádzaná po etapách…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Neznáma"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Váš tablet nemôže z bezpečnostných dôvodov inštalovať neznáme aplikácie z tohto zdroja."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Váš televízor nemôže z bezpečnostných dôvodov inštalovať neznáme aplikácie z tohto zdroja."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Váš telefón nemôže z bezpečnostných dôvodov inštalovať neznáme aplikácie z tohto zdroja."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Váš telefón a osobné údaje sú náchylnejšie na útok z neznámych aplikácií. Inštalovaním tejto aplikácie súhlasíte, že zodpovedáte za akékoľvek poškodenie vášho telefónu či stratu údajov, ku ktorým môže dôjsť v dôsledku jej použitia."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Váš tablet a osobné údaje sú náchylnejšie na útok z neznámych aplikácií. Inštalovaním tejto aplikácie súhlasíte, že zodpovedáte za akékoľvek poškodenie vášho tabletu či stratu údajov, ku ktorým môže dôjsť v dôsledku jej použitia."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Váš televízor a osobné údaje sú náchylnejšie na útok z neznámych aplikácií. Inštalovaním tejto aplikácie súhlasíte, že zodpovedáte za akékoľvek poškodenie vášho televízora či stratu údajov, ku ktorým môže dôjsť v dôsledku jej použitia."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Pokračovať"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Nastavenia"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Inštalácia/odinštalácia aplikácií Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Táto aplikácia bola navrhnutá pre staršiu verziu Androidu. Odmietnutie povolenia môže spôsobiť, že nebude optimálne fungovať."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"umožňuje vykonať neznámu akciu"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"Povolené: <xliff:g id="COUNT_0">%1$d</xliff:g> z <xliff:g id="COUNT_1">%2$d</xliff:g> aplikácií"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Zobraziť systémové"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Skryť systémové"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Žiadne aplikácie"</string>
+ <string name="location_settings" msgid="547378321761364906">"Nastavenia polohy"</string>
+ <string name="location_warning" msgid="4687406043150343369">"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="6868290533389195836">"Ak toto povolenie zamietnete, základné funkcie vášho zariadenia nemusia pracovať podľa očakávaní."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Vynútené pravidlom"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Prístup na pozadí je zakázaný pravidlom"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Prístup na pozadí je povolený pravidlom"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Prístup na popredí je povolený pravidlom"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Ovládané správcom"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Prístup na pozadí bol zakázaný správcom"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Prístup na pozadí bol povolený správcom"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Prístup na popredí bol povolený správcom"</string>
+ <!-- no translation found for permission_summary_enabled_system_fixed (5463084832974856683) -->
+ <skip />
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <!-- no translation found for permission_access_always (5419580764084361573) -->
+ <skip />
+ <!-- no translation found for permission_access_only_foreground (2857031150724321567) -->
+ <skip />
+ <!-- no translation found for permission_access_never (425385910378172045) -->
+ <skip />
+ <string name="loading" msgid="323483393167148377">"Načítava sa…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Všetky povolenia"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Ďalšie možnosti aplikácie"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Žiadosť o povolenie"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Bolo zistené prekrytie obrazovky"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Ak chcete zmeniť nastavenie tohto povolenia, musíte najprv v časti Nastavenia > Aplikácie vypnúť prekrytie obrazovky"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Otvoriť nastavenia"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Wear nepodporuje akciu inštalácie/odinštalovania."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Vyberte, k čomu môže pristupovať aplikácia <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"Aplikácia <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> bola aktualizovaná. Vyberte, k čomu bude mať prístup."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Zrušiť"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Ďalej"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Nové povolenia"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Aktuálne povolenia"</string>
+ <string name="message_staging" msgid="641286607664721291">"Aplikácia je zavádzaná po etapách…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Neznáme"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Hlavný panel"</string>
+ <!-- no translation found for permission_usage_summary_foreground (3203419920107457274) -->
+ <skip />
+ <!-- no translation found for permission_usage_summary_background (5719598203265078254) -->
+ <skip />
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Všetky povolenia"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Kedykoľvek"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Posledných 7 dní"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Posledných 24 hodín"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Posledná hodina"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Posledných 15 minút"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Posledná minúta"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Žiadne využitie povolení"</string>
+ <!-- no translation found for permission_usage_list_title_any_time (5641676869304328239) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_7_days (2972289322203714509) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_day (6298662604046093174) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_hour (7224982939487774388) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_15_minutes (49045607172810502) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_minute (7716966405942817635) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_any_time (862654449303514044) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_7_days (5393381637937213483) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_day (7202567658282481259) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_hour (4672313408976666479) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_15_minutes (1776918144361651860) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_minute (236300476767668315) -->
+ <skip />
+ <!-- no translation found for app_permission_usage_bar_label (7261634017833698654) -->
+ <!-- no translation found for permission_usage_view_details (4728049344017619500) -->
+ <skip />
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtrované podľa: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Odstrániť filter"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtrovať podľa"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtrovať podľa povolení"</string>
+ <!-- no translation found for filter_by_time (1763143592970195407) -->
+ <skip />
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Najviac povolení"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Najviac prístupov"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Nedávne"</string>
+ <!-- no translation found for sort_by_app (1912228966803416485) -->
+ <skip />
+ <!-- no translation found for sort_by_time (8280378662234104410) -->
+ <skip />
+ <!-- no translation found for item_separator (8266062815210378175) -->
+ <skip />
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Obnoviť"</string>
+ <!-- no translation found for permission_usage_permission_filter_subtitle (5539392196389332769) -->
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Využitie povolení aplikácie"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"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>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Povoliť"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Povoliť po celý čas"</string>
+ <!-- no translation found for app_permission_button_allow_foreground (2303741829613210541) -->
+ <skip />
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Odmietnuť"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Povolenie <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <!-- no translation found for app_permission_header (228974007660007656) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_usage_summary (1034436308858219976) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_no_usages (4444374134047275841) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_app_permissions_link (8033278634020892918) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_permission_apps_link (8759141212929298774) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_generic (5479202003136667039) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_activity_recognition (2022880340017289990) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_calendar (2846128908236787586) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_call_log (2429916962093948340) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_camera (6699611334403400091) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_contacts (5169995707720233126) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_location (687820658574645201) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_aural (2102206495149326019) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_visual (3105938942794669520) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_microphone (2300290217308759293) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_phone (3773977614654088578) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sensors (6733606479604624853) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sms (8850213022386508528) -->
+ <skip />
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Posledný prístup: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Prístup sa nikdy neuskutočnil"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Povolené"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Povolené iba počas používania"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Zamietnuté"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Zobraziť podrobné údaje o využití"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> minúty</item>
+ <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> minúty</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minút</item>
+ <item quantity="one">1 minúta</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> sekundy</item>
+ <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> sekundy</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sekúnd</item>
+ <item quantity="one">1 sekunda</item>
+ </plurals>
+ <string name="permission_reminders" msgid="8040710767178843151">"Pripomenutia povolení"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> používa vašu polohu"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Táto aplikácia má neobmedzený prístup k polohe. Klepnutím to zmeníte."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Iba počas používania aplikácie"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Žiadne udelené povolenia"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Žiadne odmietnuté povolenia"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Žiadne povolené aplikácie"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Žiadne odmietnuté aplikácie"</string>
+ <string name="settings" msgid="2884124136779508907">"Nastavenia"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> má úplný prístup do vášho zariadenia"</string>
+ <!-- no translation found for accessibility_service_dialog_title_multiple (8129325613496173909) -->
+ <skip />
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> si môže zobraziť vašu obrazovku, akcie a vstupy, vykonávať akcie a ovládať obrazovku."</string>
+ <!-- no translation found for accessibility_service_dialog_bottom_text_multiple (1387803460488775887) -->
+ <skip />
+ <!-- no translation found for request_role_title (3611734134669430568) -->
+ <skip />
+ <!-- no translation found for request_role_current_default (7512045433655289638) -->
+ <skip />
+ <!-- no translation found for request_role_set_as_default (5706081295230541240) -->
+ <skip />
+ <!-- no translation found for default_app_search_keyword (6938709626391437391) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_ok (3007005536659549573) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_open_settings (3368892579319881043) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_title (7173961211414061803) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_separator (9008030412869423988) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_last_separator (7455459775266515801) -->
+ <skip />
+ <string name="default_apps" msgid="8554530939151957828">"Predvolené aplikácie"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Žiadne predvolené aplikácie"</string>
+ <!-- no translation found for default_apps_manage_domain_urls (3146379064445013719) -->
+ <skip />
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Predvolené na prácu"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Žiadna"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Žiadne aplikácie"</string>
+ <!-- no translation found for special_app_access_search_keyword (462008045110320714) -->
+ <skip />
+ <string name="special_app_access" msgid="2561673957499408877">"Špeciálny prístup aplikácií"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Žiadny špeciálny prístup aplikácií"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Žiadne aplikácie"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Asistenčná aplikácia"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Prehliadač"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Aplikácia Telefón"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Aplikácia pre SMS a MMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Aplikácia na tiesňové volania"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Domovská aplikácia"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Aplikácia Hudba"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Aplikácia Galéria"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Aplikácia režimu v aute pre telefóny"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Aplikácia na presmer. hovorov"</string>
+ <!-- no translation found for role_label_call_screening (1089966334646538858) -->
+ <skip />
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Sprievodná aplikácia na hovory"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Nepodporuje pracovný profil"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Poznámka: Ak reštartujete zariadenie a máte nastavenú zámku obrazovky, táto aplikácia sa spustí až po odomknutí zariadenia."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Pomocník bude môcť čítať informácie o aplikáciách používaných vo vašom systéme vrátane údajov viditeľných na obrazovke alebo prístupných v aplikáciách."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Zdieľanie údajov o ladení"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Chcete zdieľať podrobné údaje o ladení?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> chce nahrať informácie o ladení."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Zdieľanie údajov o ladení"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> žiada o nahranie hlásenia chyby z tohto zariadenia vytvoreného <xliff:g id="DATE">%2$s</xliff:g> o <xliff:g id="TIME">%3$s</xliff:g>. Hlásenia chýb zahŕňajú osobné údaje o zariadení alebo osobné údaje zapísané aplikáciami, napríklad používateľské mená, údaje o polohe, identifikátory zariadenia a informácie o sieti. Hlásenia chýb zdieľajte iba s dôveryhodnými osobami a aplikáciami. Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">%4$s</xliff:g> nahrať hlásenie chyby?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Povoliť"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Odmietnuť"</string>
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_title (5699953608028268176) -->
+ <skip />
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_content (6960592986228883592) -->
+ <skip />
+ <!-- no translation found for dismiss_with_acknowledgment (2879819713128822468) -->
+ <skip />
</resources>
diff --git a/res/values-sl-television/strings.xml b/res/values-sl-television/strings.xml
index 3e8e4ea..841cd4d 100644
--- a/res/values-sl-television/strings.xml
+++ b/res/values-sl-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Zavrni in ne sprašuj več"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"To lahko pozneje spremenite v »Nastavitve > Aplikacije«"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Prikaz sistemskih aplikacij"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Dovoljenja za aplikacije"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Dovoljenja za aplikacije"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Dovoljenja za: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Dodatna dovoljenja"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Dovoljenja za: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Zavrni in ne sprašuj več"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"To lahko pozneje spremenite v »Nastavitve > Aplikacije«"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Prikaz sistemskih aplikacij"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Dovoljenja za aplikacije"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Dovoljenja za aplikacije"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Dovoljenja za: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Dodatna dovoljenja"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Dovoljenja za: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-sl-watch/strings.xml b/res/values-sl-watch/strings.xml
index 906a551..9bb48b0 100644
--- a/res/values-sl-watch/strings.xml
+++ b/res/values-sl-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Zavrni, ne sprašuj več"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Prikaz sistemskih aplikacij"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Ni mogoče sprem."</string>
- <string name="generic_yes" msgid="3394094077553763689">"Da"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Prekliči"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Zavrni, ne sprašuj več"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Prikaz sistemskih aplikacij"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Ni mogoče sprem."</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Da"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Prekliči"</string>
</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 1785e80..993ed70 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,138 +16,226 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Namestitveno orodje za paket"</string>
- <string name="next" msgid="3057143178373252333">"Naprej"</string>
- <string name="install" msgid="5896438203900042068">"Namesti"</string>
- <string name="done" msgid="3889387558374211719">"Dokončano"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Dovoli, da ta aplikacija:"</string>
- <string name="cancel" msgid="8360346460165114585">"Prekliči"</string>
- <string name="unknown" msgid="4742479012767208045">"Neznano"</string>
- <string name="installing" msgid="8613631001631998372">"Nameščanje …"</string>
- <string name="installing_app" msgid="4097935682329028894">"Nameščanje aplikacije <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> …"</string>
- <string name="install_done" msgid="3682715442154357097">"Aplikacija je nameščena."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Ali želite namestiti to aplikacijo? Imela bo dostop do:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Ali želite namestiti to aplikacijo? Poseben dostop ni potreben."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Ali želite namestiti posodobitev te obstoječe aplikacije? Obstoječi podatki ne bodo izgubljeni. Posodobljena aplikacija bo imela dostop do:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Ali želite namestiti posodobitev za to vgrajeno aplikacijo? Obstoječi podatki ne bodo izgubljeni. Posodobljena aplikacija bo imela dostop do:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Ali želite namestiti posodobitev te obstoječe aplikacije? Obstoječi podatki ne bodo izgubljeni. Za namestitev ne potrebujete posebnega dostopa."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Ali želite namestiti posodobitev te vgrajene aplikacije? Obstoječi podatki ne bodo izgubljeni. Za namestitev ne potrebujete posebnega dostopa."</string>
- <string name="install_failed" msgid="6579998651498970899">"Aplikacija ni nameščena."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Namestitev paketa je bila blokirana."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Aplikacija ni bila nameščena, ker je paket v navzkrižju z obstoječim paketom."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Aplikacija ni bila nameščena, ker ni združljiva s tabličnim računalnikom."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Ta aplikacija ni združljiva z vašim televizorjem."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Aplikacija ni bila nameščena, ker ni združljiva s telefonom."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Aplikacija ni bila nameščena, ker paket verjetno ni veljaven."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g> ni bilo mogoče namestiti v tablični računalnik."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g> ni bilo mogoče namestiti v vašem televizorju."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g> ni bilo mogoče namestiti v telefon."</string>
- <string name="launch" msgid="4826921505917605463">"Odpri"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Skrbnik ne dovoli nameščanja aplikacij iz neznanih virov."</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Ta uporabnik nima dovoljenja za nameščanje neznanih aplikacij"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Ta uporabnik nima dovoljenja za nameščanje aplikacij"</string>
- <string name="ok" msgid="3468756155452870475">"V redu"</string>
- <string name="settings" msgid="6743583734099755409">"Nastavitve"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Upravljaj aplikacije"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Ali želite zamenjati aplikacijo?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Aplikacija, ki jo nameščate, bo nadomestila drugo. \n \nVsi prejšnji uporabniški podatki bodo shranjeni."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"To je sistemska aplikacija.\n \nVsi prejšnji uporabniški podatki bodo shranjeni."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Zmanjkalo je prostora"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g> ni bilo mogoče namestiti. Sprostite prostor in poskusite znova."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"V redu"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Aplikacije ni bilo mogoče najti"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Aplikacije ni bilo mogoče najti na seznamu nameščenih aplikacij."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Ni dovoljeno"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Trenutni uporabnik nima dovoljenja za izvedbo te odstranitve."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Napaka"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Aplikacije ni bilo mogoče odstraniti."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Odstrani aplikacijo"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Odstrani posodobitev"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> je del te aplikacije:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Ali želite odstraniti to aplikacijo?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Ali želite odstraniti aplikacijo za "<b>"vse"</b>" uporabnike? Aplikacija in njeni podatki bodo odstranjeni iz "<b>"vseh"</b>" uporabnikov v napravi."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Ali želite to aplikacijo odstraniti za uporabnika <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Želite to aplikacijo nadomestiti s tovarniško različico? Odstranjeni bodo vsi podatki."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Želite to aplikacijo nadomestiti s tovarniško različico? Odstranjeni bodo vsi podatki. To vpliva na vse uporabnike te naprave, vključno s tistimi z delovnimi profili."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Odstranitve v teku"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Neuspele odstranitve"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Odstranjevanje ..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Odstranjevanje aplikacije <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> …"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Odstranitev je končana."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Aplikacija <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> je bila odstranjena"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Odstranitev ni uspela."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Odstranjevanje aplikacije <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ni uspelo."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Aktivne skrbniške aplikacije naprave ni mogoče odstraniti"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Aktivne skrbniške aplikacije za uporabnika <xliff:g id="USERNAME">%1$s</xliff:g> ni mogoče odstraniti"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Aplikacija je obvezna za nekatere uporabnike/profile in je odstranjena za druge."</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Ta aplikacija je potrebna za profil in je ni mogoče odstraniti."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"To aplikacijo zahteva skrbnik naprave in je ni mogoče odstraniti."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Upravljanje skrbniških aplikacij naprave"</string>
- <string name="manage_users" msgid="3125018886835668847">"Upravljanje uporabnikov"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g> ni bilo mogoče odstraniti."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Težava pri razčlenjevanju paketa."</string>
- <string name="newPerms" msgid="6039428254474104210">"Novo"</string>
- <string name="allPerms" msgid="1024385515840703981">"Vse"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Zasebnost"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Dostop do naprave"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Za to posodobitev niso potrebna nova dovoljenja."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Ali želite odobriti naslednja dovoljenja? S tem bo omogočen dostop do:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Zavrni"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Več informacij"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Vseeno zavrni"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Ali dovolite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> izvesti to dejanje: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"št. onemogočenih: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"vse onemogočeno"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"nič ni onemogočeno"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Dovoli"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Aplikacije"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Dovoljenja za aplikacije"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Ne sprašuj več"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Ni dovoljenj"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Dodatna dovoljenja"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Upravljalnik dovoljenj"</string>
+ <string name="ok" msgid="4417794827535157922">"V redu"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"dovoljenja"</string>
+ <string name="cancel" msgid="7279939269964834974">"Prekliči"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Aplikacije ni mogoče najti"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Zavrni"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Zavrni in ne sprašuj več"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Več informacij"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Vseeno zavrni"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Ali dovolite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> izvesti to dejanje: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Želite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> vedno dovoliti to dejanje: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Samo med uporabo aplikacije"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Vedno"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Zavrni in ne sprašuj več"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"št. onemogočenih: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"vse onemogočeno"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"nič ni onemogočeno"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Dovoli"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Vedno dovoli"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Dovoli samo, ko je aplikacija v uporabi"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Aplikacije"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Dovoljenja za aplikacije"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Upravitelj dovoljenj"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Ne sprašuj več"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Ni dovoljenj"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Dodatna dovoljenja"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Odpri podatke o aplikaciji"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="one">Še <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="two">Še <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="few">Še <xliff:g id="COUNT_1">%1$d</xliff:g></item>
<item quantity="other">Še <xliff:g id="COUNT_1">%1$d</xliff:g></item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Ta aplikacija je bila zasnovana za starejšo različico sistema Android. Če dovoljenje zavrnete, lahko preneha delovati, kot bi morala."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"izvedba neznanega dejanja"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"Dovoljene aplikacije: <xliff:g id="COUNT_0">%1$d</xliff:g> od <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Prikaz sistemskih aplikacij"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Skrivanje sistemskih aplikacij"</string>
- <string name="permission_title" msgid="6495415273398916381">"Dovoljenja za: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Ni aplikacij"</string>
- <string name="location_settings" msgid="1774875730854491297">"Nastavitve lokacije"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Če zavrnete to dovoljenje, osnovne funkcije naprave morda ne bodo več delovale, kot bi morale."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Uveljavlja pravilnik"</string>
- <string name="loading" msgid="7811651799620593731">"Nalaganje …"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Vsa dovoljenja"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Druge zmožnosti aplikacije"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Zahteva za dovoljenje"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Zaznano prekrivanje zaslona"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Če želite spremeniti nastavitev tega dovoljenja, morate najprej izklopiti prekrivanje zaslona v »Nastavitve > Aplikacije«"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Odpri nastavitve"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Dejanja namestitve in odstranitve v sistemu Android Wear niso podprta."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"Aplikacija <xliff:g id="APP_NAME_0">%1$s</xliff:g> je posodobljena. Dovolite aplikaciji <xliff:g id="APP_NAME_1">%1$s</xliff:g> dostop do tega?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Izberite, do česa aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> dovolite dostop"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"Aplikacija <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> je posodobljena. Izberite, do česa tej aplikaciji dovolite dostop."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Prekliči"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Naprej"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Nova dovoljenja"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Trenutna dovoljenja"</string>
- <string name="message_staging" msgid="6151794817691100003">"Priprava aplikacije …"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Neznano"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Vaš tablični računalnik zaradi varnosti nima dovoljenja za nameščanje neznanih aplikacij iz tega vira."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Vaš televizor zaradi varnosti nima dovoljenja za nameščanje neznanih aplikacij iz tega vira."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Vaš telefon zaradi varnosti nima dovoljenja za nameščanje neznanih aplikacij iz tega vira."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Neznane aplikacije lahko resno ogrozijo varnost telefona in osebnih podatkov. Z namestitvijo te aplikacije se strinjate, da ste sami odgovorni za morebitno škodo, nastalo v telefonu, ali izgubo podatkov, do katerih lahko pride zaradi uporabe te aplikacije."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Neznane aplikacije lahko resno ogrozijo varnost tabličnega računalnika in osebnih podatkov. Z namestitvijo te aplikacije se strinjate, da ste sami odgovorni za morebitno škodo, nastalo v tabličnem računalniku, ali izgubo podatkov, do katerih lahko pride zaradi uporabe te aplikacije."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Neznane aplikacije lahko resno ogrozijo varnost televizorja in osebnih podatkov. Z namestitvijo te aplikacije se strinjate, da ste sami odgovorni za morebitno škodo, nastalo v televizorju, ali izgubo podatkov, do katerih lahko pride zaradi uporabe te aplikacije."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Nadaljuj"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Nastavitve"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Nameščanje/odstranjev. aplikacij za Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Ta aplikacija je bila zasnovana za starejšo različico sistema Android. Če dovoljenje zavrnete, lahko preneha delovati, kot bi morala."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"izvedba neznanega dejanja"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"Dovoljene aplikacije: <xliff:g id="COUNT_0">%1$d</xliff:g> od <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Nedavna uporaba"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Nadzorna plošča dovoljenj"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Prikaz sistemskih procesov"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Skrivanje sistemskih procesov"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Ni aplikacij"</string>
+ <string name="location_settings" msgid="547378321761364906">"Nastavitve lokacije"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Če zavrnete to dovoljenje, osnovne funkcije naprave morda ne bodo več delovale, kot bi morale."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Uveljavlja pravilnik"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Dostop iz ozadja je onemogočen s pravilnikom"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Dostop iz ozadja je omogočen s pravilnikom"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Dostop v ospredju je omogočen s pravilnikom"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Nadzira skrbnik"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Skrbnik je onemogočil dostop iz ozadja"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Skrbnik je omogočil dostop iz ozadja"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Skrbnik je omogočil dostop v ospredju"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Dovoljenje je nastavil sistem"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Vedno"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Samo med uporabo aplikacije"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Nikoli"</string>
+ <string name="loading" msgid="323483393167148377">"Nalaganje …"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Vsa dovoljenja"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Druge zmožnosti aplikacije"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Zahteva za dovoljenje"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Zaznano prekrivanje zaslona"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Če želite spremeniti nastavitev tega dovoljenja, morate najprej izklopiti prekrivanje zaslona v »Nastavitve > Aplikacije«"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Odpri nastavitve"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Dejanja namestitve in odstranitve v sistemu Android Wear niso podprta."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Izberite, do česa aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> dovolite dostop"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"Aplikacija <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> je posodobljena. Izberite, do česa tej aplikaciji dovolite dostop."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Prekliči"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Naprej"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Nova dovoljenja"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Trenutna dovoljenja"</string>
+ <string name="message_staging" msgid="641286607664721291">"Priprava aplikacije …"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Neznano"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Nadzorna plošča"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ <item quantity="few">Zadnji dostop: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> dostopi</item>
+ <item quantity="other">Zadnji dostop: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> dostopov</item>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">Zadnji dostop: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> dostop (<xliff:g id="NUM_5">%3$s</xliff:g> v ozadju)</item>
+ <item quantity="two">Zadnji dostop: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> dostopa (<xliff:g id="NUM_5">%3$s</xliff:g> v ozadju)</item>
+ <item quantity="few">Zadnji dostop: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> dostopi (<xliff:g id="NUM_5">%3$s</xliff:g> v ozadju)</item>
+ <item quantity="other">Zadnji dostop: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> dostopov (<xliff:g id="NUM_5">%3$s</xliff:g> v ozadju)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">Zadnji dostop: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> dostop\nTrajanje: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="two">Zadnji dostop: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> dostopa\nTrajanje: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="few">Zadnji dostop: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> dostopi\nTrajanje: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">Zadnji dostop: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> dostopov\nTrajanje: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">Zadnji dostop: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> dostop (<xliff:g id="NUM_6">%3$s</xliff:g> v ozadju)\nTrajanje: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="two">Zadnji dostop: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> dostopa (<xliff:g id="NUM_6">%3$s</xliff:g> v ozadju)\nTrajanje: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="few">Zadnji dostop: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> dostopi (<xliff:g id="NUM_6">%3$s</xliff:g> v ozadju)\nTrajanje: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">Zadnji dostop: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> dostopov (<xliff:g id="NUM_6">%3$s</xliff:g> v ozadju)\nTrajanje: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Katero koli dovoljenje"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Kadar koli"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Zadnjih 7 dni"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Zadnjih 24 ur"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Zadnja ura"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Zadnjih 15 minut"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Zadnja minuta"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Ni uporabe dovoljenj"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Dostop kadar koli"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Dostop v zadnjih 7 dneh"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Dostop v zadnjih 24 urah"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Dostop v zadnji uri"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Dostop v zadnjih 15 minutah"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Dostop v zadnji minuti"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Najvišja uporaba dovoljenj kadar koli"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Najvišja uporaba dovoljenj v zadnjih 7 dneh"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Najvišja uporaba dovoljenj v zadnjih 24 urah"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Najvišja uporaba dovoljenj v zadnji uri"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Najvišja uporaba dovoljenj v zadnjih 15 minutah"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Najvišja uporaba dovoljenj v zadnji minuti"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Aplikacije"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtrirano po: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Odstrani filter"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtriraj po"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtriraj po dovoljenjih"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Največ dovoljenj"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Največ dostopov"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Nedavno"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Osveži"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Uporaba dovoljenj aplikacije"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Dostop: <xliff:g id="NUM">%1$s</xliff:g>-krat. Nazadnje uporabljeno pred <xliff:g id="TIME">%2$s</xliff:g>."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Dovoli"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Vedno dovoli"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Dovoli samo, ko je aplikacija v uporabi"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Zavrni"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Dovoljenje <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Dostop do dovoljenja <xliff:g id="PERM">%1$s</xliff:g> za aplikacijo <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"Aplikacija <xliff:g id="APP">%1$s</xliff:g> je do dovoljenja <xliff:g id="PERM">%2$s</xliff:g> dostopala pred <xliff:g id="TIME">%3$s</xliff:g>."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"Aplikacija <xliff:g id="APP">%1$s</xliff:g> ni dostopila do: <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Podroben prikaz uporabe dovoljenj"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Zadnji dostop: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Še brez dostopa"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Dovoljeno"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Dovoljeno samo med uporabo"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Zavrnjeno"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Podroben pregled uporabe"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> dnevom</item>
+ <item quantity="two"><xliff:g id="NUMBER">%s</xliff:g> dnevoma</item>
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> dnevi</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dnevi</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> uro</item>
+ <item quantity="two"><xliff:g id="NUMBER">%s</xliff:g> urama</item>
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> urami</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> urami</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> minuto</item>
+ <item quantity="two"><xliff:g id="NUMBER">%s</xliff:g> minutama</item>
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> minutami</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minutami</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> sekundo</item>
+ <item quantity="two"><xliff:g id="NUMBER">%s</xliff:g> sekundama</item>
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> sekundami</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sekundami</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Želite za vlogo <xliff:g id="ROLE_NAME">%2$s</xliff:g> uporabljati aplikacijo <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Želite za vlogo <xliff:g id="ROLE_NAME">%2$s</xliff:g> uporabljati aplikacijo <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> namesto aplikacije <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Opomniki za dovoljenja"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"Aplikacija <xliff:g id="APP_NAME">%s</xliff:g> je uporabljala vašo lokacijo"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Ta aplikacija lahko vedno dostopa do vaše lokacije. Dotaknite se, če želite spremeniti dovoljenje."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Samo, ko je aplikacija v uporabi"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Aplikacija nima nobenih dovoljenj"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Nobeno dovoljenje ni odvzeto"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Nobena aplikacija nima dovoljenja"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Dovoljenje ni odvzeto nobeni aplikaciji"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Odpri"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Odmesti"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Prisilno ustavi"</string>
+ <string name="settings" msgid="2884124136779508907">"Nastavitve"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"Storitev <xliff:g id="SERVICE_NAME">%s</xliff:g> ima poln dostop do naprave"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"Poln dostop do naprave ima toliko storitev za ljudi s posebnimi potrebami: <xliff:g id="NUM_SERVICES">%s</xliff:g>"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"Storitev <xliff:g id="SERVICE_NAME">%s</xliff:g> si lahko ogleduje zaslon, dejanja in vnose, izvaja dejanja in upravlja prikaz."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Te storitve si lahko ogledujejo zaslon, dejanja in vnose, izvajajo dejanja in upravljajo prikaz."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Privzete aplikacije"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Ni privzetih aplikacij"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Privzeto za delo"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Brez"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Ni aplikacij"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Posebni dostop za aplikacije"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Ni posebnega dostopa za aplik."</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Ni aplikacij"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Aplikacija za pomoč"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Brskalnik"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Aplikacija Telefon"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Aplikacija za SMS-je"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Aplikacija v sili"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Aplikacija na začetnem zaslonu"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Aplikacija Glasba"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Aplikacija Galerija"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Apl. Telefon v načinu za avto."</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Aplikacija za preusm. klicev"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Aplikacija za pregled klicev"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Spremljevalna apl. za klicanje"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Apl. za projiciranje v avtu"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Ne podpira delovnega profila"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Opomba: Po vnovičnem zagonu naprave z nastavljenim zaklepanjem zaslona se ta aplikacija ne more zagnati, dokler ne odklenete naprave."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Pomočnik bo lahko bral podatke o aplikacijah, ki se uporabljajo v vašem sistemu, vključno s podatki, ki so vidni na zaslonu ali do katerih je mogoče dostopati v aplikacijah."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Pošiljanje podatkov za odpravljanje napak"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Želite poslati podrobne podatke za odprav. napak?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> želi naložiti podatke za odpravljanje napak."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Pošiljanje podatkov za odpravljanje napak"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"Aplikacija <xliff:g id="APP_NAME_0">%1$s</xliff:g> želi iz te naprave naložiti poročilo o napakah, pripravljeno dne <xliff:g id="DATE">%2$s</xliff:g> ob <xliff:g id="TIME">%3$s</xliff:g>. Poročila o napakah vključujejo osebne podatke o vaši napravi ali osebne podatke, ki so jih zabeležile aplikacije, na primer uporabniška imena, lokacijske podatke, identifikatorje naprave in podatke o omrežju. Poročila o napakah delite samo z osebami in aplikacijami, ki jim te podatke lahko zaupate. Ali aplikaciji <xliff:g id="APP_NAME_1">%4$s</xliff:g> dovolite, da naloži poročilo o napakah?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Dovoli"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Zavrni"</string>
</resources>
diff --git a/res/values-sq-television/strings.xml b/res/values-sq-television/strings.xml
index d66231c..991f9b8 100644
--- a/res/values-sq-television/strings.xml
+++ b/res/values-sq-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Refuzo dhe mos pyet përsëri"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Këtë mund ta ndryshosh më vonë te Cilësimet > Aplikacionet"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Shfaq aplikacionet e sistemit"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Lejet e aplikacionit"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Lejet e aplikacionit"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Lejet për <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Lejet shtesë"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Lejet për <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Refuzo dhe mos pyet përsëri"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Këtë mund ta ndryshosh më vonë te Cilësimet > Aplikacionet"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Shfaq aplikacionet e sistemit"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Lejet e aplikacionit"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Lejet e aplikacionit"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Lejet për <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Lejet shtesë"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Lejet për <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-sq-watch/strings.xml b/res/values-sq-watch/strings.xml
index 772bb7a..b74f1f7 100644
--- a/res/values-sq-watch/strings.xml
+++ b/res/values-sq-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Refuzoje, mos pyet sërish"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Shfaq aplikacionet e sistemit"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Nuk mund të ndryshohet"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Po"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Anulo"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Refuzoje, mos pyet sërish"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Shfaq aplikacionet e sistemit"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Nuk mund të ndryshohet"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Po"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Anulo"</string>
</resources>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index cffec00..1dcbf02 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Instaluesi i paketës"</string>
- <string name="next" msgid="3057143178373252333">"Përpara"</string>
- <string name="install" msgid="5896438203900042068">"Instalo"</string>
- <string name="done" msgid="3889387558374211719">"U krye!"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Lejoje këtë aplikacion të:"</string>
- <string name="cancel" msgid="8360346460165114585">"Anulo"</string>
- <string name="unknown" msgid="4742479012767208045">"E panjohur"</string>
- <string name="installing" msgid="8613631001631998372">"Po instalon…"</string>
- <string name="installing_app" msgid="4097935682329028894">"Po instalon <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Aplikacioni u instalua."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Dëshiron ta instalosh këtë aplikacion? Ai do të ketë qasje në:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Dëshiron ta instalosh këtë aplikacion? Nuk kërkon ndonjë qasje të veçantë."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Dëshiron të instalosh një përditësim në këtë aplikacion ekzistues? Të dhënat e tua ekzistuese nuk do të humbin. Aplikacioni i përditësuar do të ketë qasje në:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Dëshiron të instalosh një përditësim në këtë aplikacion të integruar? Të dhënat e tua ekzistuese nuk do të humbin. Aplikacioni i përditësuar do të ketë qasje në:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Dëshiron të instalosh një përditësim të këtij aplikacioni ekzistues? Të dhënat e tua ekzistuese nuk do të humbasin. Aplikacioni nuk kërkon ndonjë qasje të veçantë."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Dëshiron të instalosh një përditësim të këtij aplikacioni ekzistues? Të dhënat e tua ekzistuese nuk do të humbasin. Aplikacioni nuk kërkon ndonjë qasje të veçantë."</string>
- <string name="install_failed" msgid="6579998651498970899">"Aplikacioni nuk u instalua."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Instalimi paketës u bllokua."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Aplikacioni nuk u instalua pasi paketa është në konflikt me një paketë ekzistuese."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Aplikacioni nuk u instalua pasi nuk është i përputhet me tabletin tënd."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Ky aplikacion është i papërshtatshëm me televizorin tënd."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Aplikacioni nuk u instalua pasi nuk përputhet me telefonin tënd."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Aplikacioni nuk u instalua pasi paketa duket se nuk është e vlefshme."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> nuk mund të instalohej në tablet."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> nuk mund të instalohej në televizor."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> nuk mundi të instalohej në telefon."</string>
- <string name="launch" msgid="4826921505917605463">"Hap"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Administratori nuk lejon instalimin e aplikacioneve nga burime të panjohura."</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Aplikacionet e panjohura nuk mund të instalohen nga ky përdorues"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Ky përdorues nuk lejohet të instalojë aplikacione"</string>
- <string name="ok" msgid="3468756155452870475">"Në rregull"</string>
- <string name="settings" msgid="6743583734099755409">"Cilësimet"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Menaxho aplikacionet"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Të zëvendësohet aplikacioni?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Aplikacioni që po instalon do të zëvendësojë një aplikacion tjetër.\n\nTë gjitha të dhënat e përdoruesit të mëparshëm do të ruhen."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Ky është aplikacion sistemi.\n\nTë gjitha të dhënat e tua të mëparshme si përdorues, do të ruhen."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Nuk ka hapësirë"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> nuk mund të instalohej. Liro pak hapësirë dhe provo përsëri."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"Në rregull"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Aplikacioni nuk u gjet"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Aplikacioni nuk u gjet në listën e aplikacioneve të instaluara."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Nuk lejohet"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Përdoruesi aktual nuk lejohet të kryejë këtë çinstalim."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Gabim"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Aplikacioni nuk mund të instalohej."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Çinstalo aplikacionin"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Çinstalo përditësimin"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> është pjesë e aplikacionit të mëposhtëm:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Dëshiron ta çinstalosh këtë aplikacion?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Dëshiron ta çinstalosh këtë aplikacion për "<b>"të gjithë"</b>" përdoruesit? Aplikacioni dhe të dhënat e tij do të hiqen nga "<b>"të gjithë"</b>" përdoruesit e pajisjes."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Dëshiron ta çinstalosh këtë aplikacion për përdoruesin <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Të zëvendësohet ky aplikacion me versionin e fabrikës? Të gjitha të dhënat do të hiqen."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Të zëvendësohet ky aplikacion me versionin e fabrikës? Të gjitha të dhënat do të hiqen. Kjo ndikon te të gjithë përdoruesit e kësaj pajisjeje, duke përfshirë ata me profile të punës."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Çinstalimet në ekzekutim"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Çinstalimet e dështuara"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Po e çinstalon…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> po çinstalohet…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Çinstalimi përfundoi."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> u çinstalua"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Çinstalimi nuk pati sukses."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Çinstalimi i <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> nuk u krye me sukses."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Nuk mund të çinstalohet aplikacioni aktiv i administratorit të pajisjes"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Nuk mund të çinstalohet aplikacioni aktiv i administratorit të pajisjes për <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Ky aplikacion kërkohet për disa përdorues ose profile dhe është çinstaluar për të tjerët"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Ky aplikacion nevojitet për profilin tënd dhe nuk mund të çinstalohet."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Ky aplikacion kërkohet nga administratori i pajisjes dhe nuk mund të çinstalohet."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Menaxho aplikacionet e administratorit të pajisjes"</string>
- <string name="manage_users" msgid="3125018886835668847">"Menaxho përdoruesit"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> nuk mundi të çinstalohej."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Kishte një problem me analizimin e paketës."</string>
- <string name="newPerms" msgid="6039428254474104210">"E re"</string>
- <string name="allPerms" msgid="1024385515840703981">"Të gjitha"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privatësia"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Qasja në pajisje"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Ky përditësim nuk kërkon leje të reja."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Dëshiron të japësh lejet e mëposhtme? Do të ketë qasje në:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Refuzo"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Informacione të tjera"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Refuzo sidoqoftë"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Të lejohet <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> që të <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> të çaktivizuara"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"të gjitha të çaktivizuara"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"asnjë e çaktivizuar"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Lejo"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Aplikacionet"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Lejet e aplikacionit"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Mos pyet përsëri"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Nuk ka leje"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Lejet shtesë"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Kontrolluesi i lejeve"</string>
+ <string name="ok" msgid="4417794827535157922">"Në rregull"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"lejet"</string>
+ <string name="cancel" msgid="7279939269964834974">"Anulo"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Aplikacioni nuk u gjet"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Refuzo"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Refuzo dhe mos pyet përsëri"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Më shumë info."</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Refuzo sidoqoftë"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Të lejohet <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> që të <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Të lejohet gjithmonë <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> që <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Vetëm gjatë përdorimit të aplikacionit"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Gjithmonë"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Refuzo dhe mos pyet përsëri"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> të çaktivizuara"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"të gjitha të çaktivizuara"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"asnjë e çaktivizuar"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Lejo"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Lejo gjithmonë"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Lejo vetëm kur aplikacioni është në përdorim"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Aplikacionet"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Lejet e aplikacionit"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Menaxheri i lejeve"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Mos pyet më"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Nuk ka leje"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Lejet shtesë"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Hap informacionet e aplikacionit"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> të tjera</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> të tjera</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> tjetër</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Ky aplikacion është projektuar për një version më të vjetër të Android. Refuzimi i lejeve mund të shkaktojë që ai të mos funksionojë më siç duhet."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"kryej një veprim të panjohur"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_0">%1$d</xliff:g> aplikacione nga <xliff:g id="COUNT_1">%2$d</xliff:g> të tilla u lejuan"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Shfaq sistemin"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Fshih sistemin"</string>
- <string name="permission_title" msgid="6495415273398916381">"Lejet për <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Asnjë aplikacion"</string>
- <string name="location_settings" msgid="1774875730854491297">"Cilësimet e vendndodhjeve"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Nëse e refuzon këtë leje, funksionet bazë të pajisjes tënde mund të mos funksionojnë më siç pritet."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Zbatuar nga politika"</string>
- <string name="loading" msgid="7811651799620593731">"Po ngarkon..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"Të gjitha lejet"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Kapacitete të tjera të aplikacionit"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Kërkesa e lejes"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Mbivendosja e ekranit u zbulua"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Për të ndryshuar këtë cilësim të lejes, në fillim duhet të çaktivizosh mbivendosjen e ekranit nga Cilësimet > Aplikacionet"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Hap cilësimet"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Teknologjia \"Android\" që vishet"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Instalo/çinstalo veprimet që nuk mbështeten në teknologjinë që vishet."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> është përditësuar. Të lejohet qasja e <xliff:g id="APP_NAME_1">%1$s</xliff:g> në sa më poshtë?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Zgjidh se ku do të lejohet të ketë qasje <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> është përditësuar. Zgjidh se ku do të lejohet të ketë qasje ky aplikacion."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Anulo"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Vazhdo"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Lejet e reja"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Lejet aktuale"</string>
- <string name="message_staging" msgid="6151794817691100003">"Po vihet në përdorim aplikacioni..."</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"E panjohur"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Për sigurinë tënde, tableti yt nuk lejohet të instalojë aplikacione të panjohura nga ky burim."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Për sigurinë tënde, televizori yt nuk lejohet të instalojë aplikacione të panjohura nga ky burim."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Për sigurinë tënde, telefoni yt nuk lejohet të instalojë aplikacione të panjohura nga ky burim."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Telefoni dhe të dhënat e tua personale janë më të cenueshme për t\'u sulmuar nga aplikacione të panjohura. Duke instaluar këtë aplikacion, ti pranon se je përgjegjës për çdo dëm ndaj telefonit tënd ose çdo humbje të dhënash që mund të rezultojë nga përdorimi i tij."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Tableti dhe të dhënat e tua personale janë më të cenueshme për t\'u sulmuar nga aplikacione të panjohura. Duke instaluar këtë aplikacion, ti pranon se je përgjegjës për çdo dëm ndaj tabletit tënd ose çdo humbje të dhënash që mund të rezultojë nga përdorimi i tij."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Televizori dhe të dhënat e tua personale janë më të cenueshme për t\'u sulmuar nga aplikacione të panjohura. Duke instaluar këtë aplikacion, ti pranon se je përgjegjës për çdo dëm ndaj televizorit tënd ose çdo humbje të dhënash që mund të rezultojë nga përdorimi i tij."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Vazhdo"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Cilësimet"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Instalimi/çinstalimi i aplikacioneve të \"Wear\""</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Ky aplikacion është projektuar për një version më të vjetër të Android. Refuzimi i lejeve mund të shkaktojë që ai të mos funksionojë më siç duhet."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"kryej një veprim të panjohur"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> nga <xliff:g id="COUNT_1">%2$d</xliff:g> aplikacione u lejuan"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Përdorimi së fundi"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Shiko panelin e lejeve"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Shfaq sistemin"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Fshih sistemin"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Asnjë aplikacion"</string>
+ <string name="location_settings" msgid="547378321761364906">"Cilësimet e vendndodhjes"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Nëse e refuzon këtë leje, funksionet bazë të pajisjes tënde mund të mos funksionojnë më siç pritet."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Zbatuar nga politika"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Qasja në sfond është e çaktivizuar sipas politikës"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Qasja në sfond është e aktivizuar sipas politikës"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Qasja në planin e parë është e aktivizuar sipas politikës"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Kontrolluar nga administratori"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Qasja në sfond është e çaktivizuar nga administratori"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Qasja në sfond është e aktivizuar nga administratori"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Qasja në planin e parë është e aktivizuar nga administratori"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Autorizimi i caktuar nga sistemi"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Gjithmonë"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Vetëm gjatë përdorimit të aplikacionit"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Asnjëherë"</string>
+ <string name="loading" msgid="323483393167148377">"Po ngarkohen…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Të gjitha lejet"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Kapacitete të tjera të aplikacionit"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Kërkesa e lejes"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Mbivendosja e ekranit u zbulua"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Për të ndryshuar këtë cilësim të lejes, në fillim duhet të çaktivizosh mbivendosjen e ekranit nga Cilësimet > Aplikacionet"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Hap \"Cilësimet\""</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Instalo/çinstalo veprimet që nuk mbështeten në Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Zgjidh se ku do të lejohet të ketë qasje <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> është përditësuar. Zgjidh se ku do të lejohet të ketë qasje ky aplikacion."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Anulo"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Vazhdo"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Lejet e reja"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Lejet aktuale"</string>
+ <string name="message_staging" msgid="641286607664721291">"Po vihet në përdorim aplikacioni..."</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"I panjohur"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Paneli analitik"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Qasja e fundit: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> qasje (<xliff:g id="NUM_5">%3$s</xliff:g> në sfond)</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 (<xliff:g id="NUM_2">%3$s</xliff:g> në sfond)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Qasja e fundit: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> qasje\nKohëzgjatja: <xliff:g id="TIME_5">%3$s</xliff:g></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\nKohëzgjatja: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Qasja e fundit: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> qasje (<xliff:g id="NUM_6">%3$s</xliff:g> në sfond)\nKohëzgjatja: <xliff:g id="TIME_7">%3$s</xliff:g></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 (<xliff:g id="NUM_2">%3$s</xliff:g> në sfond)\nKohëzgjatja: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Çdo autorizim"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Në çdo kohë"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"7 ditët e fundit"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"24 orët e fundit"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"1 orën e fundit"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"15 minutat e fundit"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Minuta e fundit"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Nuk ka përdorime të lejeve"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Qasja në çdo kohë"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Qasja në 7 ditët e fundit"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Qasja në 24 orët e fundit"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Qasja në orën e fundit"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Qasja në 15 minutat e fundit"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Qasja në minutën e fundit"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Përdorimet kryesore të autorizimeve në çdo kohë"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Përdorimet kryesore të autorizimeve në 7 ditët e fundit"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Përdorimet kryesore të autorizimeve në 24 orët e fundit"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Përdorimet kryesore të autorizimeve në orën e fundit"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Përdorimet kryesore të autorizimeve në 15 minutat e fundit"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Përdorimet kryesore të autorizimeve në minutën e fundit"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Aplikacionet"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtruar sipas: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Hiq filtrin"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtro sipas"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtro sipas autorizimeve"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Shumica e autorizimeve"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Shumica e qasjeve"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Më të fundit"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Rifresko"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Përdorimi i lejeve të apl."</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"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>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Lejo"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Lejo gjithmonë"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Lejo vetëm kur aplikacioni është në përdorim"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Refuzo"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Autorizim te <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Qasje te <xliff:g id="PERM">%1$s</xliff:g> për <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> pati qasje te <xliff:g id="PERM">%2$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g> më parë."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> nuk ka pasur qasje te <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Shiko përdorimin e detajuar të autorizimeve"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Qasja e fundit: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Nuk ka asnjë qasje"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Të lejuara"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Lejohet vetëm kur është në përdorim"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Të refuzuara"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Shiko përdorimin e detajuar"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ditë</item>
+ <item quantity="one">1 ditë</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> orë</item>
+ <item quantity="one">1 orë</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minuta</item>
+ <item quantity="one">1 minutë</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sekonda</item>
+ <item quantity="one">1 sekondë</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Të përdoret <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> si <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Të përdoret <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> në vend të <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> si <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Alarmet rikujtuese për lejet"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> ka përdorur vendndodhjen tënde"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Ky aplikacion mund të qaset gjithmonë te vendndodhja jote. Trokit për ta ndryshuar."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Vetëm kur aplikacioni është në përdorim"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Nuk jepet asnjë leje"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Asnjë leje nuk është refuzuar"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Nuk lejohet asnjë aplikacion"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Asnjë aplikacion nuk është refuzuar"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Hap"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Çinstalo"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Ndalo me forcë"</string>
+ <string name="settings" msgid="2884124136779508907">"Cilësimet"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ka qasje të plotë në pajisjen tënde"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> shërbime qasshmërie kanë qasje të plotë në pajisjen tënde"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> mund të shikojë ekranin tënd, veprimet dhe hyrjet, mund të kryejë veprime dhe kontrollojë ekranin."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Këto shërbime mund të shikojnë ekranin tënd, veprimet dhe hyrjet, mund të kryejnë veprime dhe kontrollojë ekranin."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Aplikacionet e parazgjedhura"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Asnjë aplikacion i parazgjedhur"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Të parazgjedhura për punën"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Asnjë"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Nuk ka aplikacione"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Qasje e veçantë aplikacioni"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Jo qasje e veçantë aplikacioni"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Nuk ka aplikacione"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Aplikacioni i asistentit"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Aplikacioni për shfletim"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Aplikacioni \"Telefoni\""</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Aplikacioni për SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Aplikacioni i urgjencës"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Aplikacioni bazë"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Aplikacioni i muzikës"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Aplikacioni i galerisë"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Apl. i modalitetit \"në makinë\""</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Aplikacioni i ridrejtimit të telefonatave"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Apl. i filtrimit të telefonatave"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Apl. shoqërues i telefonatave"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Aplikacioni i \"Projektimit të makinës\""</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Profili i punës nuk mbështetet"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Shënim: Nëse e rinis pajisjen dhe ke caktuar një kyçje të ekranit, ky aplikacion nuk mund të niset derisa ta shkyçësh pajisjen."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Asistenti do të jetë në gjendje të lexojë informacion rreth aplikacioneve në përdorim në sistemin tënd, duke përfshirë informacionin e dukshëm në ekran ose të qasshëm brenda aplikacioneve."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Ndaj të dhënat e korrigjimit"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Të ndahen të dhënat e detajuara të korrigjimit?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> dëshiron të ngarkojë informacionin e korrigjimit."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Ndaj të dhënat e korrigjimit"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> kërkon të ngarkojë një raport të defekteve në kod nga kjo pajisje të regjistruar më <xliff:g id="DATE">%2$s</xliff:g> në <xliff:g id="TIME">%3$s</xliff:g>. Raportet e defekteve në kod përfshijnë informacione personale rreth pajisjes sate ose të regjistruara nga aplikacionet, për shembull emrat e përdoruesve, të dhënat e vendndodhjes, identifikuesit e pajisjeve, si dhe informacione të rrjetit. Ndaji raportet e defekteve në kod vetëm me personat dhe aplikacionet që i beson me këtë informacion. Të lejohet <xliff:g id="APP_NAME_1">%4$s</xliff:g> të ngarkojë një raport të defekteve në kod?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Lejo"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Refuzo"</string>
</resources>
diff --git a/res/values-sr-television/strings.xml b/res/values-sr-television/strings.xml
index fcfe156..41575dc 100644
--- a/res/values-sr-television/strings.xml
+++ b/res/values-sr-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Одбиј и не питај поново"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Ово можете да промените касније у Подешавањима > Апликације"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Прикажи системске апликације"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Дозволе за апликације"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Дозволе за апликације"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Дозволе за апликацију <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Додатне дозволе"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Дозволе за апликацију <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Одбиј и не питај поново"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Ово можете да промените касније у Подешавањима > Апликације"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Прикажи системске апликације"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Дозволе за апликације"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Дозволе за апликације"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Дозволе за апликацију <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Додатне дозволе"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Дозволе за апликацију <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-sr-watch/strings.xml b/res/values-sr-watch/strings.xml
index 7e15b01..177f818 100644
--- a/res/values-sr-watch/strings.xml
+++ b/res/values-sr-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Одбиј и не питај поново"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Прикажи системске апликације"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Не може да се промени"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Да"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Откажи"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Одбиј и не питај поново"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Прикажи системске апликације"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Не може да се промени"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Да"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Откажи"</string>
</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index b929299..0ff6da5 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,137 +16,217 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Упаковани програм за инсталацију"</string>
- <string name="next" msgid="3057143178373252333">"Следеће"</string>
- <string name="install" msgid="5896438203900042068">"Инсталирај"</string>
- <string name="done" msgid="3889387558374211719">"Готово"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Дозволи да ова апликација:"</string>
- <string name="cancel" msgid="8360346460165114585">"Откажи"</string>
- <string name="unknown" msgid="4742479012767208045">"Непознато"</string>
- <string name="installing" msgid="8613631001631998372">"Инсталирање..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Инсталира се <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Апликација је инсталирана."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Желите ли да инсталирате ову апликацију? Имаће приступ следећем:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Желите ли да инсталирате ову апликацију? Не захтева посебан приступ."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Желите ли да инсталирате ажурирање за ову постојећу апликацију? Постојећи подаци неће бити изгубљени. Ажурирана апликација имаће приступ следећем:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Желите ли да инсталирате ажурирање за ову уграђену апликацију? Постојећи подаци неће бити изгубљени. Ажурирана апликација ће имати приступ следећем:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Да ли желите да инсталирате ажурирање ове постојеће апликације? Постојећи подаци неће бити изгубљени. Није потребан посебан приступ."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Да ли желите да инсталирате ажурирање ове уграђене апликације? Постојећи подаци неће бити изгубљени. Није потребан посебан приступ."</string>
- <string name="install_failed" msgid="6579998651498970899">"Апликација није инсталирана."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Инсталирање пакета је блокирано."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Апликација није инсталирана јер је пакет неусаглашен са постојећим пакетом."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Апликација није инсталирана јер није компатибилна са таблетом."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Ова апликација није компатибилна са ТВ-ом."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Апликација није инсталирана јер није компатибилна са телефоном."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Апликација није инсталирана јер је пакет неважећи."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Није могуће инсталирати апликацију <xliff:g id="APP_NAME">%1$s</xliff:g> на таблет."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Нисмо успели да инсталирамо <xliff:g id="APP_NAME">%1$s</xliff:g> на ТВ."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Није могуће инсталирати апликацију <xliff:g id="APP_NAME">%1$s</xliff:g> на телефон."</string>
- <string name="launch" msgid="4826921505917605463">"Отвори"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Администратор не дозвољава инсталирање апликација добијених из непознатих извора"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Овај корисник не може да инсталира непознате апликације"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Овом кориснику није дозвољено да инсталира апликације"</string>
- <string name="ok" msgid="3468756155452870475">"Потврди"</string>
- <string name="settings" msgid="6743583734099755409">"Подешавања"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Управљање апликацијама"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Желите ли да замените апликацију?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Апликација коју инсталирате замениће другу апликацију.\n\nСви претходни кориснички подаци биће сачувани."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Ово је системска апликација.\n\nСви претходни кориснички подаци биће сачувани."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Нема више места"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Није могуће инсталирати апликацију <xliff:g id="APP_NAME">%1$s</xliff:g>. Ослободите додатни простор и покушајте поново."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"Потврди"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Апликација није пронађена"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Апликација није пронађена на листи инсталираних апликација."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Није дозвољено"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Актуелном кориснику није дозвољено да обави ово деинсталирање."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Грешка"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Деинсталирање апликације није успело."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Деинсталирање апликације"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Деинсталирање ажурирања"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> је део следеће апликације:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Да ли желите да деинсталирате ову апликацију?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Да ли желите да деинсталирате ову апликацију за "<b>"све"</b>" кориснике? Апликација и подаци који се на њу односе биће уклоњени за "<b>"све"</b>" кориснике овог уређаја."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Желите ли да деинсталирате ову апликацију за корисника <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Желите ли да замените ову апликацију фабричком верзијом? Сви подаци ће бити уклоњени."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Желите ли да замените ову апликацију фабричком верзијом? Сви подаци ће бити уклоњени. Ово утиче на све кориснике овог уређаја, укључујући и оне са профилима за Work."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Активна деинсталирања"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Неуспела деинсталирања"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Деинсталирање..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> се деинсталира…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Деинсталирање је завршено."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Апликација <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> је деинсталирана"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Деинсталирање није успело."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Деинсталирање апликације <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> није успело."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Не можете да деинсталирате апликацију за активног администратора уређаја"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Не можете да деинсталирате апликацију за активног администратора уређаја за <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Ова апликација је потребна за неке кориснике или профиле, а деинсталирана је за друге"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Ова апликација је потребна за ваш профил и не може да се деинсталира."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Ова апликација је потребна администратору уређаја и не може да се деинсталира."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Управљај апликацијама за администраторе уређаја"</string>
- <string name="manage_users" msgid="3125018886835668847">"Управљаj корисницима"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Није могуће деинсталирати апликацију <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Дошло је до проблема при рашчлањивању пакета."</string>
- <string name="newPerms" msgid="6039428254474104210">"Ново"</string>
- <string name="allPerms" msgid="1024385515840703981">"Све"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Приватност"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Приступ уређају"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Ово ажурирање не захтева нове дозволе."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Да ли желите да одобрите следеће дозволе? Одобрићете приступ за:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Одбаци"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Више информација"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Ипак одбиј"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Желите ли да дозволите да <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"Онемогућених: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"све су онемогућене"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"ниједна није онемогућена"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Дозволи"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Апликације"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Дозволе за апликације"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Не питај поново"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Нема дозвола"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Додатне дозволе"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Контролер дозвола"</string>
+ <string name="ok" msgid="4417794827535157922">"Потврди"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"дозволе"</string>
+ <string name="cancel" msgid="7279939269964834974">"Откажи"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Апликација није пронађена"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Одбиј"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Одбиј и не питај поново"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Више инфор."</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Ипак одбиј"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Желите ли да дозволите да <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> обави следећу радњу: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Желите ли да увек дозволите да <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> обавља следећу радњу: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Само док се апликација користи"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Увек"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Одбиј и не питај поново"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"Онемогућених: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"све су онемогућене"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"ниједна није онемогућена"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Дозволи"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Дозволи увек"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Дозволи само док се апликација користи"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Апликације"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Дозволе за апликације"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Менаџер дозвола"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Не питај поново"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Нема дозвола"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Додатне дозволе"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Отвори информације о апликацији"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"Ова апликација је дизајнирана за старију верзију Android-а. Ако одбијете дозволу, она можда више неће правилно да функционише."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"обавља непознату радњу"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"Прикажи системске"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Сакриј системске"</string>
- <string name="permission_title" msgid="6495415273398916381">"Дозволе за <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Нема апликација"</string>
- <string name="location_settings" msgid="1774875730854491297">"Подешавања локације"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> пружа услуге локације за овај уређај. Приступ локацији можете да измените у подешавањима локације."</string>
- <string name="system_warning" msgid="7103819124542305179">"Ако одбијете ову дозволу, основне функције уређаја можда неће више функционисати исправно."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Примењује се у складу са смерницама"</string>
- <string name="loading" msgid="7811651799620593731">"Учитава се…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Све дозволе"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Остале могућности апликације"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Захтев за дозволу"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Откривен је елемент који прекрива садржај екрана"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Да бисте променили подешавање ове дозволе, прво треба да искључите елемент који прекрива садржај екрана у одељку Подешавања > Апликације"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Отвори подешавања"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Радње Инсталирај/Деинсталирај нису подржане у Wear-у."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"Апликација <xliff:g id="APP_NAME_0">%1$s</xliff:g> је ажурирана. Желите ли да дозволите да <xliff:g id="APP_NAME_1">%1$s</xliff:g> приступа следећим ставкама?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Изаберите чему <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> може да приступа"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"Апликација <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> је ажурирана. Изаберите чему ова апликација може да приступа."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Откажи"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Настави"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Нове дозволе"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Актуелне дозволе"</string>
- <string name="message_staging" msgid="6151794817691100003">"Апликација се припрема…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Непознато"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Таблету из безбедносних разлога није дозвољено да инсталира непознате апликације из овог извора."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Телевизору из безбедносних разлога није дозвољено да инсталира непознате апликације из овог извора."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Телефону из безбедносних разлога није дозвољено да инсталира непознате апликације из овог извора."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Телефон и лични подаци су подложнији нападу непознатих апликација. Ако инсталирате ову апликацију, прихватате да сте одговорни за евентуална оштећења телефона или губитак података до којих може да дође због њеног коришћења."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Таблет и лични подаци су подложнији нападу непознатих апликација. Ако инсталирате ову апликацију, прихватате да сте одговорни за евентуална оштећења таблета или губитак података до којих може да дође због њеног коришћења."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"ТВ и лични подаци су подложнији нападу непознатих апликација. Ако инсталирате ову апликацију, прихватате да сте одговорни за евентуална оштећења ТВ-а или губитак података до којих може да дође због њеног коришћења."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Настави"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Подешавања"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Инсталирање/деинсталирање Wear апликација"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Ова апликација је дизајнирана за старију верзију Android-а. Ако одбијете дозволу, можда неће радити исправно."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"обавља непознату радњу"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"Апликације са дозволом: <xliff:g id="COUNT_0">%1$d</xliff:g> од <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Недавна употреба"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Прикажи контролну таблу за дозволе"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Прикажи системске"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Сакриј системске"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Нема апликација"</string>
+ <string name="location_settings" msgid="547378321761364906">"Подешавања локације"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> пружа услуге локације за овај уређај. Приступ локацији можете да измените у подешавањима локације."</string>
+ <string name="system_warning" msgid="6868290533389195836">"Ако одбијете ову дозволу, основне функције уређаја можда неће више функционисати исправно."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Примењује се у складу са смерницама"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Приступ у позадини је онемогућен смерницама"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Приступ у позадини је омогућен смерницама"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Приступ у првом плану је омогућен смерницама"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Контролише администратор"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Администратор је онемогућио приступ у позадини"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Администратор је омогућио приступ у позадини"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Администратор је омогућио приступ у првом плану"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Систем је подесио дозволу"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Увек"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Само док се апликација користи"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Никад"</string>
+ <string name="loading" msgid="323483393167148377">"Учитава се…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Све дозволе"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Остале могућности апликације"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Захтев за дозволу"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Откривен је елемент који прекрива садржај екрана"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Да бисте променили подешавање ове дозволе, прво треба да искључите елемент који прекрива садржај екрана у одељку Подешавања > Апликације"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Отвори подешавања"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Радње Инсталирај/Деинсталирај нису подржане у Wear-у."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Изаберите чему <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> може да приступа"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"Апликација <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> је ажурирана. Изаберите чему ова апликација може да приступа."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Откажи"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Настави"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Нове дозволе"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Актуелне дозволе"</string>
+ <string name="message_staging" msgid="641286607664721291">"Апликација се припрема…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Непознато"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Контролна табла"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ <item quantity="other">Последњи приступ: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> приступа</item>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">Последњи приступ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> приступ (<xliff:g id="NUM_5">%3$s</xliff:g> у позадини)</item>
+ <item quantity="few">Последњи приступ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> приступа (<xliff:g id="NUM_5">%3$s</xliff:g> у позадини)</item>
+ <item quantity="other">Последњи приступ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> приступа (<xliff:g id="NUM_5">%3$s</xliff:g> у позадини)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">Последњи приступ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> приступ\nТрајање: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="few">Последњи приступ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> приступа\nТрајање: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">Последњи приступ: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> приступа\nТрајање: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">Последњи приступ: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> приступ (<xliff:g id="NUM_6">%3$s</xliff:g> у позадини)\nТрајање: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="few">Последњи приступ: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> приступа (<xliff:g id="NUM_6">%3$s</xliff:g> у позадини)\nТрајање: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">Последњи приступ: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> приступа (<xliff:g id="NUM_6">%3$s</xliff:g> у позадини)\nТрајање: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Било која дозвола"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Било када"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Последњих 7 дана"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Последња 24 сата"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Последњи сат"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Последњих 15 минута"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Последњи минут"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Дозволе нису коришћене"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Приступ у било ком тренутку"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Приступ у последњих 7 дана"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Приступ у последња 24 сата"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Приступ у последњих сат времена"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Приступ у последњих 15 минута"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Приступ у последњем минуту"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Највише коришћене дозволе у било ком тренутку"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Највише коришћене дозволе у последњих 7 дана"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Највише коришћене дозволе у последња 24 сата"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Највише коришћене дозволе у последњих сат времена"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Највише коришћене дозволе у последњих 24 минута"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Највише коришћене дозволе у последњем минуту"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Апликације"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Филтрирано према: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Уклони филтер"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Филтрирај према"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Филтрирај према дозволама"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Највише дозвола"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Највећи број приступа"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Недавно"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Освежи"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Коришћење дозвола за аплик."</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"Приступ: <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="4040424337831328212">"Приступ: <xliff:g id="NUM">%1$s</xliff:g> пут(а). Последњи пут коришћена пре <xliff:g id="TIME">%2$s</xliff:g>."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Дозволи"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Дозволи увек"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Дозволи само док се апликација користи"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Одбиј"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Дозвола <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Приступ дозволи <xliff:g id="PERM">%1$s</xliff:g> за апликацију <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"Апликација <xliff:g id="APP">%1$s</xliff:g> је приступила дозволи <xliff:g id="PERM">%2$s</xliff:g> пре <xliff:g id="TIME">%3$s</xliff:g>."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"Апликација <xliff:g id="APP">%1$s</xliff:g> није приступила дозволи <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Прегледајте детаљне дозволе за коришћење"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Последњи приступ: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Без приступа"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Дозвољено"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Дозвољено само док се апликација користи"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Одбијено"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Погледајте детаљну употребу"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <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="seconds" formatted="false" msgid="1632909606956324957">
+ <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="role_request_message_add" msgid="1977772335648650272">"Желите ли да <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> буде <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Желите ли да <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> буде <xliff:g id="ROLE_NAME">%2$s</xliff:g> уместо <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Подсетници за дозволе"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> користи вашу локацију"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Ова апликација може увек да приступа локацији. Додирните да бисте то променили."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Само док се апликација користи"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Дозволе нису одобрене"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Ниједна дозвола није одбијена"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Апликације нису дозвољене"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Није одбијена ниједна апликација"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Отвори"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Деинсталирај"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Принудно заустави"</string>
+ <string name="settings" msgid="2884124136779508907">"Подешавања"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> има потпун приступ уређају"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"Услуге приступачности (<xliff:g id="NUM_SERVICES">%s</xliff:g>) имају потпун приступ уређају"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> може да прегледа садржај екрана, радње и уносе, обавља радње и управља екраном."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Ове услуге могу да прегледају садржај екрана, радње и уносе, обављају радње и управљају екраном."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Подразумеване апликације"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Нема подразумеване апликације."</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Подразумевана за посао"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Ништа"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Нема апликација"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Приступ за спец. апликацију"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Нема приступа за спец. апл."</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Нема апликација"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Апликација за помоћ"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Апликација прегледача"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Апликација Телефон"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Апликација за SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Апликација за хитне случајеве"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Апликација почетне странице"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Апликација Музика"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Апликација Галерија"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Апликација за телефон са режимом рада у аутомобилу"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Апликација преусмерава позиве"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Аплик. за управ. долаз. позив."</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Позивање пратеће апликације"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Аплик. Пројекција у аутомобилу"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Не подржава профил за Work"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Напомена: Ако рестартујете уређај и подесили сте закључавање екрана, ова апликација не може да се покрене док не откључате уређај."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Помоћник ће моћи да чита информације о апликацијама које се користе у систему, укључујући информације видљиве на екрану или којима може да се приступа у оквиру апликација."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Дељење података о отклањању грешака"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Делите детаљне податке за отклањање грешака?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> жели да отпреми информације за отклањање грешака."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Дељење података о отклањању грешака"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> тражи да отпреми извештај о грешкама са овог уређаја који је направљен <xliff:g id="DATE">%2$s</xliff:g> у <xliff:g id="TIME">%3$s</xliff:g>. Извештаји о грешкама обухватају личне податке о уређају или податке које су евидентирале апликације, на пример, корисничка имена, податке о локацији, идентификаторе уређаја и информације о мрежи. Делите извештаје о грешкама само са људима и апликацијама којима можете да поверите те информације. Желите ли да дозволите да <xliff:g id="APP_NAME_1">%4$s</xliff:g> отпреми извештај о грешци?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Дозволи"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Одбиј"</string>
</resources>
diff --git a/res/values-sv-television/strings.xml b/res/values-sv-television/strings.xml
index 5f23767..40b443d 100644
--- a/res/values-sv-television/strings.xml
+++ b/res/values-sv-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Neka och fråga inte igen"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Du kan ändra detta senare i Inställningar > Appar"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Visa systemappar"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Appens behörigheter"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Appens behörigheter"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Behörigheter för <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Ytterligare behörigheter"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Behörigheter för <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Neka och fråga inte igen"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Du kan ändra detta senare i Inställningar > Appar"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Visa systemappar"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Appbehörigheter"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Appbehörigheter"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Behörigheter för <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Ytterligare behörigheter"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Behörigheter för <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-sv-watch/strings.xml b/res/values-sv-watch/strings.xml
index f20ec21..753df96 100644
--- a/res/values-sv-watch/strings.xml
+++ b/res/values-sv-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Avvisa och fråga inte igen"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Visa systemappar"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Kan inte ändras"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Ja"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Avbryt"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Avvisa och fråga inte igen"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Visa systemappar"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Kan inte ändras"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Ja"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Avbryt"</string>
</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 1f72dea..dfdc065 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Installationsprogram för paket"</string>
- <string name="next" msgid="3057143178373252333">"Nästa"</string>
- <string name="install" msgid="5896438203900042068">"Installera"</string>
- <string name="done" msgid="3889387558374211719">"Färdig"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Tillåt att appen:"</string>
- <string name="cancel" msgid="8360346460165114585">"Avbryt"</string>
- <string name="unknown" msgid="4742479012767208045">"Okänd"</string>
- <string name="installing" msgid="8613631001631998372">"Installerar…"</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> installeras …"</string>
- <string name="install_done" msgid="3682715442154357097">"Appen har installerats."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Vill du installera den här appen? Den får åtkomst till:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Vill du installera den här appen? Den kräver ingen särskild åtkomst."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Vill du installera en uppdatering till den här befintliga appen? Dina befintliga data försvinner inte. Den uppdaterade appen får åtkomst till:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Vill du installera en uppdatering till den här befintliga förinstallerade appen? Dina befintliga data försvinner inte. Den uppdaterade appen får åtkomst till:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Vill du installera en uppdatering av den befintliga appen? Dina befintliga data försvinner inte. Ingen särskild åtkomst krävs."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Vill du installera en uppdatering av den inbyggda appen? Dina befintliga data försvinner inte. Ingen särskild åtkomst krävs."</string>
- <string name="install_failed" msgid="6579998651498970899">"Appen har inte installerats."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Paketet har blockerats för installation."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Appen har inte installerats på grund av en konflikt mellan detta paket och ett befintligt paket."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Appen har inte installerats eftersom den inte är kompatibel med surfplattan."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Appen är inte kompatibel med din TV."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Appen har inte installerats eftersom den inte är kompatibel med mobilen."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Appen har inte installerats eftersom paketet verkar vara ogiltigt."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Det gick inte att installera <xliff:g id="APP_NAME">%1$s</xliff:g> på surfplattan."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> kunde inte installeras på TV:n."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Det gick inte att installera <xliff:g id="APP_NAME">%1$s</xliff:g> på mobilen."</string>
- <string name="launch" msgid="4826921505917605463">"Öppna"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Administratören tillåter inte installation av appar från okända källor"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Denna användare får inte installera okända appar"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Användaren har inte behörighet att installera appar"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Inställningar"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Hantera appar"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Vill du byta ut appen?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Appen du installerar kommer att ersätta en annan app.\n\nAlla tidigare användardata sparas."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Det här är en systemapp.\n\nAlla tidigare användardata sparas."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Slut på utrymme"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Det gick inte att installera <xliff:g id="APP_NAME">%1$s</xliff:g>. Frigör minne och försök igen."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Appen hittades inte"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Appen fanns inte i listan över installerade appar."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Ingen behörighet"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Den aktuella användaren har inte behörighet att utföra avinstallationen."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Fel"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Det gick inte att installera appen."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Avinstallera appen"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Avinstallera uppdateringen"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> är en del av följande app:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Vill du avinstallera appen?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Vill du avinstallera den här appen för "<b>"alla"</b>" användare? Appen och alla data i den tas bort från "<b>"alla"</b>" användare på enheten."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Vill du avinstallera appen för användaren <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Vill du ersätta den här appen med den version som var installerad när enheten var ny? All information tas bort."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Vill du ersätta den här appen med den version som var installerad när enheten var ny? All information tas bort. Detta påverkar alla som använder enheten, även dem med jobbprofiler."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Avinstallationer som pågår"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Avinstallationer som misslyckats"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Avinstallerar…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> avinstalleras …"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Avinstallationen har slutförts."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> har avinstallerats"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Det gick inte att avinstallera."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Det gick inte att avinstallera <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Det går inte att avinstallera den aktiva appen för enhetsadministratör"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Det går inte att avinstallera den aktiva appen för enhetsadministratör för <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Den här appen är obligatorisk för vissa användare och profiler och har avinstallerats för andra"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Appen behövs i profilen och det går inte att avinstallera den"</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Appen krävs av enhetsadministratören och kan därför inte avinstalleras."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Hantera appar för enhetsadministratör"</string>
- <string name="manage_users" msgid="3125018886835668847">"Hantera användare"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Det gick inte att avinstallera <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Ett problem uppstod när paketet analyserades."</string>
- <string name="newPerms" msgid="6039428254474104210">"Nytt"</string>
- <string name="allPerms" msgid="1024385515840703981">"Alla"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Sekretess"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Enhetsåtkomst"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Det krävs inga nya behörigheter för den här uppdateringen."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Vill du bevilja följande behörigheter? Då godkänner du åtkomst till:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Neka"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Mer information"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Neka ändå"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Tillåter du <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> att <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> har inaktiverats"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"alla har inaktiverats"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"inga har inaktiverats"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Tillåt"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Appar"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Appens behörigheter"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Fråga inte igen"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Inga behörigheter"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Ytterligare behörigheter"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Behörighetsansvarig"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"behörigheter"</string>
+ <string name="cancel" msgid="7279939269964834974">"Avbryt"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Appen hittades inte"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Neka"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Neka och fråga inte igen"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Mer info"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Neka ändå"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Tillåter du <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> att göra följande: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Vill du alltid tillåta att <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Bara när appen används"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Alltid"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Neka och fråga inte igen"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> har inaktiverats"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"alla har inaktiverats"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"inga har inaktiverats"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Tillåt"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Tillåt alltid"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Tillåt bara när appen används"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Appar"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Appbehörigheter"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Behörighetshantering"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Fråga inte igen"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Inga behörigheter"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Ytterligare behörigheter"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Öppna appinformation"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> till</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> till</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Den här appen utformades för en äldre version av Android. Om du nekar appen behörighet kan det hända att den inte längre fungerar som den ska."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"utför en okänd åtgärd"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_0">%1$d</xliff:g> av <xliff:g id="COUNT_1">%2$d</xliff:g> appar tillåts"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Visa systemet"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Dölj systemet"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> behörigheter"</string>
- <string name="no_apps" msgid="1965493419005012569">"Inga appar"</string>
- <string name="location_settings" msgid="1774875730854491297">"Platsinställningar"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Om du nekar appen behörighet kan det hända att grundläggande funktioner på enheten inte fungerar som de ska."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Enligt policyn"</string>
- <string name="loading" msgid="7811651799620593731">"Läser in …"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Alla behörigheter"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Andra appbehörigheter"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Begäran om behörighet"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Skärmöverlagring har upptäckts"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Innan du kan ändra den här behörighetsinställningen måste du inaktivera skärmöverlagring under Inställningar > Appar"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Öppna inställningarna"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Åtgärder för att installera/avinstallera stöds inte på Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> har uppdaterats. Vill du ge <xliff:g id="APP_NAME_1">%1$s</xliff:g> åtkomst till följande?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Välj vad du vill ge <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> åtkomst till"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> har uppdaterats. Välj vad du vill ge appen åtkomst till."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Avbryt"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Fortsätt"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Nya behörigheter"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Nuvarande behörighet"</string>
- <string name="message_staging" msgid="6151794817691100003">"Provkör appen …"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Okänd"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Av säkerhetsskäl får okända appar från den här källan inte installeras av surfplattan."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Av säkerhetsskäl får okända appar från den här källan inte installeras av TV:n."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Av säkerhetsskäl får okända appar från den här källan inte installeras av mobilen."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Din mobil och personliga data är mer sårbara för attacker från okända appar. Genom att installera denna app bekräftar du att du är ansvarig för eventuella skador på mobilen och för dataförlust som kan uppstå vid användning av denna app."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Din surfplatta och personliga data är mer sårbara för attacker från okända appar. Genom att installera denna app bekräftar du att du är ansvarig för eventuella skador på surfplattan och för dataförlust som kan uppstå vid användning av denna app."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Din TV och personliga data är mer sårbara för attacker från okända appar. Genom att installera denna app bekräftar du att du är ansvarig för eventuella skador på TV:n och för dataförlust som kan uppstå vid användning av denna app."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Fortsätt"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Inställningar"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Wear-appar installeras/avinstalleras"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Den här appen utformades för en äldre version av Android. Om du nekar appen behörighet kan det hända att den inte längre fungerar som den ska."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"utför en okänd åtgärd"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> av <xliff:g id="COUNT_1">%2$d</xliff:g> appar tillåts"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Senaste användningen"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Visa behörighetsöversikt"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Visa systemet"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Dölj systemet"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Inga appar"</string>
+ <string name="location_settings" msgid="547378321761364906">"Platsinställningar"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Om du nekar appen behörighet kan det hända att grundläggande funktioner på enheten inte fungerar som de ska."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Enligt policyn"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Åtkomst i bakgrunden har inaktiverats av en princip"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Åtkomst i bakgrunden har aktiverats av en princip"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Åtkomst i förgrunden har aktiverats av en princip"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Styrs av administratören"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Åtkomst i bakgrunden har inaktiverats av administratören"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Åtkomst i bakgrunden har aktiverats av administratören"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Åtkomst i förgrunden har aktiverats av administratören"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Behörigheten har angetts av systemet"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Alltid"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Bara när appen används"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Aldrig"</string>
+ <string name="loading" msgid="323483393167148377">"Läser in …"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Alla behörigheter"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Andra appbehörigheter"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Begäran om behörighet"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Skärmöverlagring har upptäckts"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Innan du kan ändra den här behörighetsinställningen måste du inaktivera skärmöverlagring under Inställningar > Appar"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Öppna inställningarna"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Åtgärder för att installera/avinstallera stöds inte på Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Välj vad du vill ge <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> åtkomst till"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> har uppdaterats. Välj vad du vill ge appen åtkomst till."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Avbryt"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Fortsätt"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Nya behörigheter"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Nuvarande behörighet"</string>
+ <string name="message_staging" msgid="641286607664721291">"Provkör appen …"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Okänd"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Översikt"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Senaste åtkomst: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> åtkomster (<xliff:g id="NUM_5">%3$s</xliff:g> i bakgrunden)</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 (<xliff:g id="NUM_2">%3$s</xliff:g> i bakgrunden)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Senaste åtkomst: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> åtkomster\nVaraktighet: <xliff:g id="TIME_5">%3$s</xliff:g></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\nVaraktighet: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Senaste åtkomst: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> åtkomster (<xliff:g id="NUM_6">%3$s</xliff:g> i bakgrunden)\nVaraktighet: <xliff:g id="TIME_7">%3$s</xliff:g></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 (<xliff:g id="NUM_2">%3$s</xliff:g> i bakgrunden)\nVaraktighet: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Alla behörigheter"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"När som helst"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Senaste 7 dagarna"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Senaste 24 timmarna"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Senaste timmen"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"De senaste 15 minuterna"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Senaste minuten"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Ingen behörighetsanvändning"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Åtkomst när som helst"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Åtkomst de senaste sju dagarna"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Åtkomst det senaste dygnet"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Åtkomst den senaste timmen"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Åtkomst de senaste 15 minuterna"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Åtkomst den senaste minuten"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Vanlig behörighetsanvändning när som helst"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Vanlig behörighetsanvändning de senaste 7 dagarna"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Vanlig behörighetsanvändning det senaste dygnet"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Vanlig behörighetsanvändning den senaste timmen"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Vanlig behörighetsanvändning de senaste 15 min"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Vanlig behörighetsanvändning den senaste minuten"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Appar"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtreras efter: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Ta bort filter"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtrera efter"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Filtrera efter behörigheter"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Flest behörigheter"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Flest åtkomster"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Senaste"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Uppdatera"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Appens behörighetsanvändning"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"Å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="4040424337831328212">"Å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>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Tillåt"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Tillåt alltid"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Tillåt bara när appen används"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Neka"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Behörighet till <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Åtkomst till <xliff:g id="PERM">%1$s</xliff:g> för <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> använde din <xliff:g id="PERM">%2$s</xliff:g> för <xliff:g id="TIME">%3$s</xliff:g> sedan."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> har inte fått åtkomst till <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Visa utförlig information om behörighetsanvändning"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Användes senast: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Aldrig använd"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Tillåts"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Tillåt bara vid användning"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Nekas"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Visa utförlig information om användning"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dagar</item>
+ <item quantity="one">1 dag</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> timmar</item>
+ <item quantity="one">1 timme</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minuter</item>
+ <item quantity="one">1 minut</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sekunder</item>
+ <item quantity="one">1 sekund</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Vill du använda <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> som <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Vill du använda <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> i stället för <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> som <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Behörighetspåminnelser"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> har använt din plats"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Den här appen har alltid åtkomst till din plats. Tryck här om du vill ändra det."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Endast när appen används"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Inga behörigheter har beviljats"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Inga behörigheter har nekats"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Inga appar har tillåtits"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Inga appar har nekats"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Öppna"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Avinstallera"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Tvinga att avsluta"</string>
+ <string name="settings" msgid="2884124136779508907">"Inställningar"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> har fullständig åtkomst till din enhet"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> tillgänglighetstjänster har fullständig åtkomst till din enhet"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> får visa din skärm, dina åtgärder och inmatningar, utföra åtgärder och styra skärmen."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Dessa tjänster får visa din skärm, dina åtgärder och inmatningar, utföra åtgärder och styra skärmen."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Standardappar"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Inga standardappar"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Standardinställning för jobbet"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Ingen"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Inga appar"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Särskild åtkomst för app"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Ingen särskild åtkomst för app"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Inga appar"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Assistentapp"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Webbläsarapp"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Appen Telefon"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Sms-app"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"App för nödsituationer"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Startskärmsapp"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Appen Musik"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Appen Galleri"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Mobilapp för billäge"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Omdirigeringsapp för samtal"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"App för samtalsspärr"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Tillhörande samtalsapp"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"App för projicering i bilen"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Arbetsprofiler stöds inte"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Obs! Om du startar om mobilen och har ställt in ett skärmlås kan appen inte startas förrän du låser upp mobilen."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Assistenten kan läsa information om appar som används i systemet, inklusive information som visas på skärmen eller är åtkomlig i apparna."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Dela felsökningsinformation"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Vill du dela detaljerad felsökningsinformation?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> vill ladda upp felsökningsinformation."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Dela felsökningsinformation"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> begär tillstånd att ladda upp en felrapport som sparades den <xliff:g id="DATE">%2$s</xliff:g> kl. <xliff:g id="TIME">%3$s</xliff:g> från den här enheten. Felrapporter innehåller personlig information om enheten eller information som loggats av appar, t.ex. användarnamn, platsdata, enhetsidentifierare och nätverksinformation. Dela bara felrapporter med personer och appar du litar på. Tillåter du att <xliff:g id="APP_NAME_1">%4$s</xliff:g> laddar upp en felrapport?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Tillåt"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Neka"</string>
</resources>
diff --git a/res/values-sw-television/strings.xml b/res/values-sw-television/strings.xml
index 25fd696..eb3c288 100644
--- a/res/values-sw-television/strings.xml
+++ b/res/values-sw-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Hapana na usiulize tena"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Unaweza kubadilisha hatua hii baadaye kwenye Mipangilio na Programu"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Onyesha programu za mfumo"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Ruhusa za programu"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Ruhusa za programu"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Ruhusa za <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Ruhusa za ziada"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Ruhusa za <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Kataa na usiulize tena"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Unaweza kubadilisha hatua hii baadaye kwenye Mipangilio > Programu"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Onyesha programu za mfumo"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Ruhusa za programu"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Ruhusa za programu"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Ruhusa za <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Ruhusa za ziada"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Ruhusa za <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-sw-watch/strings.xml b/res/values-sw-watch/strings.xml
index 30d68e5..122cea3 100644
--- a/res/values-sw-watch/strings.xml
+++ b/res/values-sw-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Hapana, usiulize tena"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Onyesha programu za mfumo"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Haiwezi kubadilishwa"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Ndiyo"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Ghairi"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Kataa, usiulize tena"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Onyesha programu za mfumo"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Haiwezi kubadilishwa"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Ndiyo"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Ghairi"</string>
</resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 141fd0e..74d5d98 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Kisakinishaji cha furushi"</string>
- <string name="next" msgid="3057143178373252333">"Inayofuata"</string>
- <string name="install" msgid="5896438203900042068">"Sakinisha"</string>
- <string name="done" msgid="3889387558374211719">"Nimemaliza"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Ruhusu programu hii:"</string>
- <string name="cancel" msgid="8360346460165114585">"Ghairi"</string>
- <string name="unknown" msgid="4742479012767208045">"Haijulikani"</string>
- <string name="installing" msgid="8613631001631998372">"inawekwa..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Inasakinisha <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Programu imewekwa."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Je, ungependa kuiweka programu hii? Itaweza:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Je, ungependa kuiweka programu hii? Haihitaji idhini ya kufikia kitu chochote."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Je, unataka kuweka sasisho katika programu hii? Data yako iliyopo haitapotea. Programu iliyosasishwa itaweza:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Je, unataka kuweka sasisho la programu hii iliyojengewa ndani? Data yako iliyopo haitapotea. Programu iliyosasishwa itaweza:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Je, unataka kuweka sasisho la programu hii? Data yako iliyopo haitapotea. Haihitaji idhini yoyote maalum ya kufikia."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Je, unataka kuweka sasisho la programu hii? Data yako iliyopo haitapotea. Haihitaji idhini yoyote maalum ya kufikia."</string>
- <string name="install_failed" msgid="6579998651498970899">"Programu haikusakinishwa."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Kifurushi kimezuiwa kisisakinishwe."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Programu haikusakinishwa kwa sababu haiafikiani na kifurushi kingine kilichopo."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Programu haikusakinishwa kwa sababu haioani na kompyuta kibao yako."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Programu hii haioani na runinga yako."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Programu haikusakinishwa kwa sababu haioani na simu yako."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Programu haikusakinishwa kwa sababu inaonekana kuwa kifurushi si sahihi."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> haikuweza kusakinishwa kwenye kompyuta yako kibao."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> haikuweza kusakinishwa kwenye runinga yako."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> haikuweza kusakinishwa kwenye simu yako."</string>
- <string name="launch" msgid="4826921505917605463">"Fungua"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Msimamizi wako haruhusu usakinishaji wa programu zinazopatikana kutoka vyanzo visivyojulikana"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Mtumiaji huyu hana idhini ya kusakinisha programu ambazo hazijulikani"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Mtumiaji huyu haruhusiwi kusakinisha programu"</string>
- <string name="ok" msgid="3468756155452870475">"Sawa"</string>
- <string name="settings" msgid="6743583734099755409">"Mipangilio"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Dhibiti programu"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Badilisha programu?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Programu unayosakinisha itachukua nafasi ya programu nyingine.\n\nData yako ya mtumiaji wa awali itahifadhiwa."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Huu ni programu ya mfumo.\n\nData yako ya mtumiaji iliyotangulia itahifadhiwa."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Nafasi imeisha"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> haingeweza kusakinishwa. Wezesha nafasi kiasi na ujaribu tena."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"Sawa"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Programu haikupatikana"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Programu haikupatikana katika orodha ya programu zilizosakinishwa."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Hairuhusiwi"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Mtumiaji wa sasa hana ruhusa ya kuondoa kipengee hiki."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Hitilafu"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Imeshindwa kuondoa programu."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Sanidua programu"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Sanidua kisasisho"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> ni sehemu ya programu ifuatayo:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Unataka kusanidua programu hii?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Je, unataka kusanidua programu hii kwa "<b>"watumiaji"</b>" wote? Programu na data yake zitaondolewa kutoka kwa "<b>"watumiaji"</b>" kwenye kifaa."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Je, unataka kuondoa programu hii kwa mtumiaji <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Ungependa kubadilisha programu hii na toleo la kiwanda? Data yote itaondolewa."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Ungependa kubadilisha programu hii na toleo la kiwanda? Data yote itaondolewa. Hatua hii itaathiri watumiaji wote wa kifaa hiki, ikiwa ni pamoja na wale walio na wasifu za kazini."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Mara ambazo programu inaondolewa sasa"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Mara ambazo programu haikuondolewa"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Inasanidua..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Inaondoa <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Imesaniduliwa."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Imeondoa <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Kusanidua hakukufaulu."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Imeshindwa kuondoa <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Imeshindwa kuondoa programu inayotumika ya msimamizi wa kifaa"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Imeshindwa kuondoa programu inayotumika ya msimamizi wa kifaa cha <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Baadhi ya wasifu au watumiaji wanahitaji programu, kwa hivyo haijaondolewa kwa wengine"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Programu hii inahitajika kwa wasifu wako kwa hivyo haiwezi kuondolewa."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Programu hii inahitajika na msimamizi wako wa kifaa na haiwezi kuondolewa."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Dhibiti programu za msimamizi wa kifaa"</string>
- <string name="manage_users" msgid="3125018886835668847">"Dhibiti watumiaji"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> haingeweza kusaniduliwa."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Kulikuwa na tatizo la kuchanganua furushi."</string>
- <string name="newPerms" msgid="6039428254474104210">"Mpya"</string>
- <string name="allPerms" msgid="1024385515840703981">"Zote"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Faragha"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Kufikia Kifaa"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Sasisho hili halihitaji vibali vipya."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Je, unataka kupeana idhini zifuatazo? Itakuwa na ufikiaji kwa:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Hapana"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Maelezo zaidi"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Kataa"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Ungependa kuruhusu <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> zimezimwa"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"zimezimwa zote"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"hakuna zilizozimwa"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Ndiyo"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Programu"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Ruhusa za programu"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Usiulize tena"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Hakuna ruhusa"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Ruhusa za ziada"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Kidhibiti cha ruhusa"</string>
+ <string name="ok" msgid="4417794827535157922">"Sawa"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"ruhusa"</string>
+ <string name="cancel" msgid="7279939269964834974">"Ghairi"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Programu haikupatikana"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Kataa"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Kataa na usiulize tena"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Maelezo zaidi"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Kataa hata hivyo"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Ungependa kuruhusu <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> iweze <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Ungependa kuruhusu <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> itekeleze <xliff:g id="ACTION">%2$s</xliff:g> kila wakati?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Wakati unatumia programu tu"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Kila wakati"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Kataa na usiulize tena"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> zimezimwa"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"zimezimwa zote"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"hakuna zilizozimwa"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Ruhusu"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Ruhusu kila wakati"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Ruhusu tu wakati programu inatumika"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Programu"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Ruhusa za programu"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Kidhibiti cha ruhusa"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Usiniulize tena"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Hakuna ruhusa"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Ruhusa za ziada"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Fungua maelezo ya programu"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> zaidi</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> zaidi</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Programu hii iliundwa kwa ajili ya toleo la zamani la Android. Kuinyima ruhusa kunaweza kusababisha iache kutenda kazi kama ilivyokusudiwa."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"kutekeleza kitendo kisichojulikana"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"Inaruhusu 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="6773743421743728921">"Onyesha mfumo"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Ficha mfumo"</string>
- <string name="permission_title" msgid="6495415273398916381">"Ruhusa za <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Hakuna programu"</string>
- <string name="location_settings" msgid="1774875730854491297">"Mipangilio ya Mahali"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Usipokubali ruhusa hii, huenda vipengele vya msingi vya kifaa chako havitafanya kazi kama ilivyokusudiwa."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Hutekelezwa na sera"</string>
- <string name="loading" msgid="7811651799620593731">"Inapakia…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Ruhusa zote"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Uwezo mwingine wa programu"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Ombi la idhini"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Imetambua tangazo lililowekelewa juu ya skrini"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Ili kubadilisha mpangilio huu wa ruhusa, ni lazima kwanza uzime tangazo lililowekelewa juu ya skrini kwenye Mipangilio na Programu"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Fungua mipangilio"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Huduma ya Android Wear haiwezi kutekeleza vitendo vya Kusakinisha au Kuondoa vipengee."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> imesasishwa. Ungependa kuruhusu <xliff:g id="APP_NAME_1">%1$s</xliff:g> ifikie vipengee vifuatavyo?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Chagua vipengee ambavyo unaruhusu <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ifikie"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> imesasishwa. Chagua vipengee unavyoruhusu programu hii ifikie."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Ghairi"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Endelea"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Ruhusa mpya"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Ruhusa zilizopo"</string>
- <string name="message_staging" msgid="6151794817691100003">"Inatayarisha programu..."</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Isiyojulikana"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Kwa sababu ya usalama wako, kompyuta yako kibao haina ruhusa ya kusakinisha programu ambazo hazijulikani, kutoka kwenye chanzo hiki."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Kwa sababu ya usalama wako, TV yako haina ruhusa ya kusakinisha programu ambazo hazijulikani, kutoka kwenye chanzo hiki."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Kwa sababu ya usalama wako, simu yako haina ruhusa ya kusakinisha programu ambazo hazijulikani, kutoka kwenye chanzo hiki."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Data yako ya binafsi na ya simu yako inaweza kuathiriwa na programu ambazo hazijulikani. Kwa kusakinisha programu hii, unakubali kuwajibika kutokana na uharibifu wowote kwenye simu yako au kupotea kwa data kutokana na matumizi yake."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Data yako ya binafsi na ya kompyuta yako kibao inaweza kuathiriwa na programu ambazo hazijulikani. Kwa kusakinisha programu hii, unakubali kuwajibika kutokana na uharibifu wowote kwenye kompyuta yako kibao au kupotea kwa data kutokana na matumizi yake."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Data yako ya binafsi na ya televisheni yako inaweza kuathiriwa na programu ambazo hazijulikani. Kwa kusakinisha programu hii, unakubali kuwajibika kutokana na uharibifu wowote kwenye televisheni yako au kupotea kwa data kutokana na matumizi yake."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Endelea"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Mipangilio"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Inasakinisha/inaondoa programu za Android Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Programu hii iliundwa kwa ajili ya toleo la zamani la Android. Kuinyima ruhusa kunaweza kusababisha iache kutenda kazi kama ilivyokusudiwa."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"kutekeleza kitendo kisichojulikana"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"Inaruhusu programu <xliff:g id="COUNT_0">%1$d</xliff:g> kati ya <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Matumizi ya hivi majuzi"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Angalia Dashibodi ya Ruhusa"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Onyesha mfumo"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Ficha mfumo"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Hakuna programu"</string>
+ <string name="location_settings" msgid="547378321761364906">"Mipangilio ya Mahali"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Usipokubali ruhusa hii, huenda vipengele vya msingi vya kifaa chako havitafanya kazi kama ilivyokusudiwa."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Hutekelezwa na sera"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Ufikiaji wa chinichini umezimwa na sera"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Ufikiaji wa chinichini umewashwa na sera"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Ufikiaji wa hadharani umewashwa na sera"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Imedhibitiwa na msimamizi"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Msimamizi amezima kipengele cha ufikiaji wa chinichini"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Msimamizi amewasha kipengele cha ufikiaji wa chinichini"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Msimamizi amezima kipengele cha ufikiaji wakati programu inatumika"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Ruhusa imewekwa na mfumo"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Kila wakati"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Wakati unatumia programu tu"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Kamwe"</string>
+ <string name="loading" msgid="323483393167148377">"Inapakia…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Ruhusa zote"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Uwezo mwingine wa programu"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Ombi la idhini"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Imetambua tangazo lililowekelewa juu ya skrini"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Ili kubadilisha mipangilio hii ya ruhusa, ni lazima kwanza uzime tangazo lililowekelewa juu ya skrini kwenye Mipangilio > Programu"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Fungua mipangilio"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Huduma ya Android Wear haiwezi kutekeleza vitendo vya Kusakinisha au Kuondoa vipengee."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Chagua vipengee ambavyo unaruhusu <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ifikie"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> imesasishwa. Chagua vipengee unavyoruhusu programu hii ifikie."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Ghairi"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Endelea"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Ruhusa mpya"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Ruhusa zilizopo"</string>
+ <string name="message_staging" msgid="641286607664721291">"Inatayarisha programu…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Haijulikani"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Dashibodi"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Mwisho kutumiwa: <xliff:g id="TIME_3">%1$s</xliff:g>\nimetumiwa mara <xliff:g id="NUM_4">%2$s</xliff:g>(mara <xliff:g id="NUM_5">%3$s</xliff:g> chinichini)</item>
+ <item quantity="one">Mwisho kutumiwa: <xliff:g id="TIME_0">%1$s</xliff:g>\n imetumiwa mara <xliff:g id="NUM_1">%2$s</xliff:g> (mara <xliff:g id="NUM_2">%3$s</xliff:g> chinichini)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Mwisho kutumiwa: <xliff:g id="TIME_3">%1$s</xliff:g>\n imetumiwa mara <xliff:g id="NUM_4">%2$s</xliff:g> \nMuda: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="one">Mwisho kutumiwa: <xliff:g id="TIME_0">%1$s</xliff:g>\n imetumiwa mara <xliff:g id="NUM_1">%2$s</xliff:g>\nMuda: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Mwisho kutumiwa: <xliff:g id="TIME_4">%1$s</xliff:g>\n imetumia mara <xliff:g id="NUM_5">%2$s</xliff:g> (mara <xliff:g id="NUM_6">%3$s</xliff:g> chinichini \nMuda: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="one">Mwisho kutumiwa: <xliff:g id="TIME_0">%1$s</xliff:g>\n imetumiwa mara <xliff:g id="NUM_1">%2$s</xliff:g> (mara <xliff:g id="NUM_2">%3$s</xliff:g> chinichini)\nMuda: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Ruhusa yoyote"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Wakati wowote"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Siku 7 zilizopita"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Saa 24 zilizopita"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Saa 1 iliyopita"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Dakika 15 zilizopita"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Dakika 1 iliyopita"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Hakuna matumizi ya ruhusa"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Zilizotumiwa wakati wowote"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Ruhusa zilizotumiwa katika siku 7 zilizopita"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Ruhusa zilizotumiwa katika saa 24 zilizopita"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Ruhusa zilizotumika katika saa moja iliyopita"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Ruhusa zilizotumiwa katika dakika 15 zilizopita"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Ruhusa zilizotumika dakika 1 iliyopita"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Ruhusa zinazotumiwa zaidi wakati wowote"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Ruhusa zilizotumiwa zaidi katika siku 7 zilizopita"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Ruhusa zilizotumiwa zaidi katika saa 24 zilizopita"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Ruhusa zilizotumiwa zaidi katika saa 1 iliyopita"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Ruhusa zilizotumiwa zaidi dakika 15 zilizopita"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Ruhusa zilizotumiwa zaidi dakika 1 iliyopita"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Programu"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Zilizochujwa kulingana na: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Ondoa kichujio"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Chuja kulingana na"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Chuja kulingana na ruhusa"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Ruhusa nyingi zaidi"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Zilizotumiwa zaidi"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Za hivi majuzi"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Onyesha upya"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Matumizi ya idhini za programu"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Ufikiaji: mara <xliff:g id="NUM">%1$s</xliff:g>. Mara ya mwisho ilitumika <xliff:g id="TIME">%2$s</xliff:g> zilizopita."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Ruhusu"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Ruhusu kila wakati"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Ruhusu tu wakati programu inatumika"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Kataa"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Ruhusa ya <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Ruhusa ya <xliff:g id="PERM">%1$s</xliff:g> ya kufikia <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> imefikia <xliff:g id="PERM">%2$s</xliff:g> yako <xliff:g id="TIME">%3$s</xliff:g> zilizopita."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> haijafikia <xliff:g id="PERM">%2$s</xliff:g> yako."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Angalia matumizi ya ruhusa za kina"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Imetumiwa mwisho: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Haijawahi kutumiwa"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Zinazoruhusiwa"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Inaruhusiwa tu wakati inatumika"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Imekataliwa"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Ona matumizi ya kina"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other">Siku <xliff:g id="NUMBER">%s</xliff:g></item>
+ <item quantity="one">Siku 1</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other">Saa <xliff:g id="NUMBER">%s</xliff:g></item>
+ <item quantity="one">Saa 1</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other">Dakika <xliff:g id="NUMBER">%s</xliff:g></item>
+ <item quantity="one">Dakika 1</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other">Sekunde <xliff:g id="NUMBER">%s</xliff:g></item>
+ <item quantity="one">Sekunde 1</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Ungependa kutumia <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> kama programu yako ya <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Ungependa kutumia <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> badala ya <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> kama programu yako ya <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Vikumbusho vya ruhusa"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> imekuwa ikitumia maelezo ya mahali ulipo"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Programu hii inaweza kufikia maelezo ya mahali ulipo kila wakati. Gusa ili ubadilishe."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Wakati programu inatumika pekee"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Hakuna ruhusa zilizotolewa"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Hakuna ruhusa ambazo hazijatolewa"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Hakuna programu zilizoruhusiwa"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Hakuna programu zilizokosa ruhusa"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Fungua"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Ondoa"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Lazimisha kuzima"</string>
+ <string name="settings" msgid="2884124136779508907">"Mipangilio"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ina idhini kamili ya kufikia kifaa chako"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"Huduma <xliff:g id="NUM_SERVICES">%s</xliff:g> za ufikivu zina idhini kamili ya kufikia kifaa chako"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> inaweza kuona skrini, vitendo na maudhui unayoweka, kutekeleza vitendo na kudhibiti onyesho."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Huduma hizi zinaweza kuona skrini, vitendo na maudhui unayoweka, kutekeleza vitendo na kudhibiti onyesho."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Programu chaguomsingi"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Hakuna programu chaguomsingi"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Programu chaguomsingi kazini"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Hakuna"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Hakuna programu"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Ufikiaji wa programu maalum"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Hamna kufikia programu maalum"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Hakuna programu"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Programu ya mratibu"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Programu ya kivinjari"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Programu ya simu"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Programu ya SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Programu ya dharura"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Programu ya ukurasa wa mwanzo"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Programu ya muziki"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Programu ya matunzio"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Programu ya simu katika hali ya gari"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Programu ya kuelekeza simu"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Programu ya kuchuja simu"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Programu ya kusaidia kupiga simu"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Programu ya Kuakisi Simu Garini"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Haitumii wasifu wa kazini"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Kumbuka: Kama utazima kisha uwashe kifaa chako na uwe umeweka njia ya kufunga skrini, programu hii haitafanya kazi hadi ufungue kifaa chako."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Programu ya Mratibu itaweza kusoma maelezo kuhusu programu unazotumia katika mfumo wako, ikiwa ni pamoja na maelezo yanayoonekana kwenye skrini yako au yanayoweza kufikiwa ndani ya programu."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Shiriki Data ya Utatuzi"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Ungependa kushiriki data ya kina ya utatuzi?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> inataka kupakia maelezo ya utatuzi."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Shiriki Data ya Utatuzi"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> inaomba kupakua ripoti ya hitilafu kutoka kifaa hiki, iliyochakatwa tarehe <xliff:g id="DATE">%2$s</xliff:g> saa <xliff:g id="TIME">%3$s</xliff:g>. Ripoti za hitilafu hujumuisha taarifa binafsi kuhusu kifaa chako au iliyohifadhiwa na programu, kwa mfano, majina ya watumiaji, data ya mahali, vitambulishi vya vifaa na maelezo ya mtandao. Shiriki tu ripoti za hitilafu na watu au programu unazoamini kupokea maelezo haya. Ungependa kuruhusu <xliff:g id="APP_NAME_1">%4$s</xliff:g> ipakie ripoti ya hitilafu?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Ruhusu"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Kataa"</string>
</resources>
diff --git a/res/values-ta-television/strings.xml b/res/values-ta-television/strings.xml
index 786bbe2..9d98197 100644
--- a/res/values-ta-television/strings.xml
+++ b/res/values-ta-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"நிராகரி, மீண்டும் கேட்காதே"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"அமைப்புகள் > பயன்பாடுகள் என்பதில் பிறகு மாற்றலாம்"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"முறைமைப் பயன்பாடுகளைக் காட்டு"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"பயன்பாட்டு அனுமதிகள்"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"பயன்பாட்டு அனுமதிகள்"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> அனுமதிகள்"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"கூடுதல் அனுமதிகள்"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> அனுமதிகள்"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"நிராகரி, மீண்டும் கேட்காதே"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"\'அமைப்புகள் > ஆப்ஸ்’ என்பதற்குச் சென்று பின்னர் மாற்றிக்கொள்ளலாம்"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"சிஸ்டம் ஆப்ஸைக் காட்டு"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"ஆப்ஸ் அனுமதிகள்"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"ஆப்ஸ் அனுமதிகள்"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> அனுமதிகள்"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"கூடுதல் அனுமதிகள்"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> அனுமதிகள்"</string>
</resources>
diff --git a/res/values-ta-watch/strings.xml b/res/values-ta-watch/strings.xml
index 23dab29..db69b7f 100644
--- a/res/values-ta-watch/strings.xml
+++ b/res/values-ta-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"நிராகரி, மீண்டும் கேட்காதே"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"முறைமைப் பயன்பாடுகளைக் காட்டு"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"மாற்ற முடியாது"</string>
- <string name="generic_yes" msgid="3394094077553763689">"ஆம்"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"ரத்துசெய்"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"நிராகரி, மீண்டும் கேட்காதே"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"சிஸ்டம் ஆப்ஸைக் காட்டு"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"மாற்ற இயலாது"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"சரி"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"வேண்டாம்"</string>
</resources>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index b86e0c0..5b70800 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,286 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"பேக்கேஜ் இன்ஸ்டாலர்"</string>
- <string name="next" msgid="3057143178373252333">"அடுத்து"</string>
- <string name="install" msgid="5896438203900042068">"நிறுவு"</string>
- <string name="done" msgid="3889387558374211719">"முடிந்தது"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"இந்தப் பயன்பாட்டை இதற்கு அனுமதி:"</string>
- <string name="cancel" msgid="8360346460165114585">"ரத்துசெய்"</string>
- <string name="unknown" msgid="4742479012767208045">"அறியப்படாத"</string>
- <string name="installing" msgid="8613631001631998372">"நிறுவுகிறது…"</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>ஐ நிறுவுகிறது…"</string>
- <string name="install_done" msgid="3682715442154357097">"பயன்பாடு நிறுவப்பட்டது."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"இந்தப் பயன்பாட்டை நிறுவ விரும்புகிறீர்களா? அது இதற்கான அணுகலைப் பெறும்:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"இந்தப் பயன்பாட்டை நிறுவ விரும்புகிறீர்களா? இதற்கு எந்தத் தனிப்பட்ட அணுகலும் தேவையில்லை."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"முன்பே உள்ள இந்தப் பயன்பாட்டில் புதுப்பிப்பை நிறுவ விரும்புகிறீர்களா? ஏற்கனவே உள்ள உங்கள் தரவை இழக்க மாட்டீர்கள். புதுப்பிக்கப்பட்ட பயன்பாடு இதற்கான அணுகலைப் பெறும்:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"உள்ளமைக்கப்பட்ட பயன்பாட்டில் புதுப்பிப்பை நிறுவ விரும்புகிறீர்களா? ஏற்கனவே உள்ள உங்கள் தரவை இழக்க மாட்டீர்கள். புதுப்பிக்கப்பட்ட பயன்பாடு இதற்கான அணுகலைப் பெறும்:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"முன்பே உள்ள இந்தப் பயன்பாட்டில் புதுப்பிப்பை நிறுவ விரும்புகிறீர்களா? ஏற்கனவே உள்ள உங்கள் தரவை இழக்கமாட்டீர்கள். இதற்குத் தனிப்பட்ட அணுகல் எதுவும் தேவையில்லை."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"உள்ளமைக்கப்பட்ட பயன்பாட்டில் புதுப்பிப்பை நிறுவ விரும்புகிறீர்களா? ஏற்கனவே உள்ள உங்கள் தரவை இழக்க மாட்டீர்கள். இதற்குத் தனிப்பட்ட அணுகல் எதுவும் தேவையில்லை."</string>
- <string name="install_failed" msgid="6579998651498970899">"பயன்பாடு நிறுவப்படவில்லை."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"இந்தத் தொகுப்பு நிறுவுவதிலிருந்து தடுக்கப்பட்டது."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"தொகுப்பானது தற்போதுள்ள தொகுப்புடன் இணக்கமற்றதாக உள்ளதால், பயன்பாடு நிறுவப்படவில்லை."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"உங்கள் டேப்லெட்டுடன் இணக்கமற்றதாக உள்ளதால், பயன்பாடு நிறுவப்படவில்லை."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"உங்கள் டிவியுடன் இந்தப் பயன்பாடு இணங்கவில்லை."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"உங்கள் மொபைலுடன் இணக்கமற்றதாக உள்ளதால், பயன்பாடு நிறுவப்படவில்லை."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"தொகுப்பு தவறானது போல் உள்ளதால், பயன்பாடு நிறுவப்படவில்லை."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> பயன்பாட்டை உங்கள் டேப்லெட்டில் நிறுவ முடியாது."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"உங்கள் டிவியில் <xliff:g id="APP_NAME">%1$s</xliff:g>ஐ நிறுவ முடியவில்லை."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> பயன்பாட்டை உங்கள் மொபைலில் நிறுவ முடியாது."</string>
- <string name="launch" msgid="4826921505917605463">"திற"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"அறியப்படாத மூலங்களிலிருந்து பெற்ற பயன்பாடுகளை நிறுவ, உங்கள் நிர்வாகி அனுமதிக்கவில்லை"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"அறியப்படாத பயன்பாடுகளை, இந்தப் பயனர் நிறுவ முடியாது"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"பயன்பாடுகளை நிறுவ, இந்தப் பயனருக்கு அனுமதியில்லை"</string>
- <string name="ok" msgid="3468756155452870475">"சரி"</string>
- <string name="settings" msgid="6743583734099755409">"அமைப்பு"</string>
- <string name="manage_applications" msgid="4033876279091996596">"பயன்பாடுகளை நிர்வகிக்கவும்"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"பயன்பாட்டை மாற்றவா?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"நிறுவும் பயன்பாடு மற்றொரு பயன்பாட்டை மாற்றிவிடும்.\n\nமுந்தைய பயனர் தரவு அனைத்தும் சேமிக்கப்படும்."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"இது அமைப்பின் பயன்பாடாகும்.\n\nஉங்கள் முந்தைய பயனர் தரவு அனைத்தும் சேமிக்கப்படும்."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"இடம் இல்லை"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> பயன்பாட்டை நிறுவ முடியாது. சில இடத்தைக் காலி செய்து மீண்டும் முயற்சிக்கவும்."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"சரி"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"பயன்பாடு கண்டறியப்படவில்லை"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"நிறுவிய பயன்பாடுகளின் பட்டியலில் பயன்பாடு இல்லை."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"அனுமதிக்கப்படவில்லை"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"இதை நிறுவல் நீக்குவதற்கு, தற்போதைய பயனர் அனுமதிக்கப்படவில்லை."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"பிழை"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"பயன்பாட்டை நிறுவல் நீக்க முடியவில்லை."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"பயன்பாட்டை நிறுவல் நீக்கு"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"புதுப்பிப்பை நிறுவல் நீக்கு"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> ஆனது பின்வரும் பயன்பாட்டின் பகுதியாகும்:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"இந்தப் பயன்பாட்டை நிறுவல் நீக்க விரும்புகிறீர்களா?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"இந்தப் பயன்பாட்டை "<b>"எல்லா"</b>" பயனர்களுக்கும் நிறுவல் நீக்க விரும்புகிறீர்களா? பயன்பாடும், அதன் தரவும் சாதனத்தில் உள்ள "<b>"எல்லா"</b>" பயனர்களிடமிருந்தும் அகற்றப்படும்."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"<xliff:g id="USERNAME">%1$s</xliff:g> பயனருக்கான இந்தப் பயன்பாட்டை நிறுவல்நீக்க விரும்புகிறீர்களா?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"ஆரம்பநிலைப் பதிப்பாக இந்தப் பயன்பாட்டை மாற்றியமைக்கவா? எல்லா தரவும் அகற்றப்படும்."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"ஆரம்பநிலைப் பதிப்பாக இந்தப் பயன்பாட்டை மாற்றியமைக்கவா? எல்லா தரவும் அகற்றப்படும். பணிச் சுயவிவரங்களுடன் உள்ளவர்கள் உட்பட இந்தச் சாதனத்தின் எல்லா பயனர்களையும் இது பாதிக்கும்."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"இயக்கத்திலுள்ள நிறுவல் நீக்கங்கள்"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"தோல்வியடைந்த நிறுவல் நீக்கங்கள்"</string>
- <string name="uninstalling" msgid="5556217435895938250">"நிறுவலை நீக்குகிறது…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>ஐ நிறுவல் நீக்குகிறது…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"நிறுவல் நீக்குவது முடிந்தது."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> நிறுவல் நீக்கப்பட்டது"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"நிறுவல் நீக்குவதில் தோல்வி."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>ஐ நிறுவல் நீக்க முடியவில்லை."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"செயலில் உள்ள சாதன நிர்வாகிப் பயன்பாட்டை நிறுவல் நீக்க முடியாது"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"<xliff:g id="USERNAME">%1$s</xliff:g>க்கான செயலில் உள்ள சாதன நிர்வாகிப் பயன்பாட்டை நிறுவல் நீக்க முடியாது"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"இது சில பயனர்கள்/சுயவிவரங்களுக்குத் தேவைப்படுவதால், நிறுவல்நீக்க முடியாது, பிறருக்கு நிறுவல் நீக்கப்பட்டது"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"உங்கள் சுயவிவரத்திற்கு இந்தப் பயன்பாடு தேவைப்படுவதால், அதை நிறுவல்நீக்க முடியாது, பிறருக்கு நிறுவல் நீக்கப்பட்டது."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"சாதன நிர்வாகிக்கு இந்தப் பயன்பாடு தேவைப்படுவதால், நிறுவல்நீக்க முடியாது."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"சாதன நிர்வாகிப் பயன்பாடுகளை நிர்வகி"</string>
- <string name="manage_users" msgid="3125018886835668847">"பயனர்களை நிர்வகி"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> பயன்பாட்டை நிறுவல் நீக்க முடியாது."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"தொகுப்பைக் குறியீட்டு ஆய்வு செய்வதில் சிக்கல் ஏற்பட்டது."</string>
- <string name="newPerms" msgid="6039428254474104210">"புதிது"</string>
- <string name="allPerms" msgid="1024385515840703981">"எல்லாம்"</string>
- <string name="privacyPerms" msgid="1850527049572617">"தனியுரிமை"</string>
- <string name="devicePerms" msgid="6733560207731294504">"சாதன அணுகல்"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"இந்தப் புதுப்பிப்பிற்குப் புதிய அனுமதிகள் எதுவும் தேவையில்லை."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"பின்வரும் அனுமதிகளை வழங்க விருப்பமா? அது இதற்கான அணுகலைப் பெறும்:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"நிராகரி"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"மேலும் தகவல்"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"பரவாயில்லை, நிராகரி"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"செயலைச் செய்ய <xliff:g id="ACTION">%2$s</xliff:g>, <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>ஐ அனுமதிக்கவா?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> முடக்கப்பட்டன"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"எல்லாம் முடக்கப்பட்டன"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"எதுவும் முடக்கப்படவில்லை"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"அனுமதி"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"ஆப்ஸ்"</string>
- <string name="app_permissions" msgid="3146758905824597178">"பயன்பாட்டு அனுமதிகள்"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"மீண்டும் கேட்காதே"</string>
- <string name="no_permissions" msgid="3210542466245591574">"அனுமதிகள் இல்லை"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"கூடுதல் அனுமதிகள்"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Permission controller"</string>
+ <string name="ok" msgid="4417794827535157922">"சரி"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"அனுமதிகள்"</string>
+ <string name="cancel" msgid="7279939269964834974">"ரத்துசெய்"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"ஆப்ஸ் இல்லை"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"நிராகரி"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"நிராகரி, மீண்டும் கேட்காதே"</string>
+ <!-- no translation found for grant_dialog_button_deny_background (5378693207810841555) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_deny_background_and_dont_ask_again (1032019626928637454) -->
+ <skip />
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"மேலும் தகவல்"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"நிராகரி"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<xliff:g id="ACTION">%2$s</xliff:g> ஐ மேற்கொள்ள <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ஆப்ஸை அனுமதிக்கவா?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"<xliff:g id="ACTION">%2$s</xliff:g> ஐ மேற்கொள்ள <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ஆப்ஸை எப்போதும் அனுமதிக்கவா?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"ஆப்ஸைப் பயன்படுத்தும்போது மட்டும்"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"எப்போதும்"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"நிராகரி, மீண்டும் கேட்காதே"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> முடக்கப்பட்டன"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"அனைத்தும் முடக்கப்பட்டன"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"எதுவும் முடக்கப்படவில்லை"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"அனுமதி"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"அனைத்து நேரங்களிலும் அனுமதி"</string>
+ <!-- no translation found for grant_dialog_button_allow_foreground (8090382319222429427) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_allow_background (3190568549032350790) -->
+ <skip />
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"ஆப்ஸ்"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"ஆப்ஸ் அனுமதிகள்"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"அனுமதி நிர்வாகம்"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"மீண்டும் கேட்காதே"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"அனுமதிகள் தேவையில்லை"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"கூடுதல் அனுமதிகள்"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"ஆப்ஸ் தகவலைத் திற"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"இந்தப் பயன்பாடு Android இன் பழைய பதிப்புக்காக வடிவமைக்கப்பட்டது. அனுமதியை மறுத்தால் அது சரியாக செயல்படாமல் போகலாம்."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"அறியாத செயலைச் செயல்படுத்தும்"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"அனுமதிக்கப்பட்ட ஆப்ஸ்: <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="6773743421743728921">"எல்லாம் காட்டு"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"முறைமையை மறை"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> அனுமதிகள்"</string>
- <string name="no_apps" msgid="1965493419005012569">"பயன்பாடுகள் இல்லை"</string>
- <string name="location_settings" msgid="1774875730854491297">"இருப்பிட அமைப்புகள்"</string>
- <string name="location_warning" msgid="8778701356292735971">"இந்தச் சாதனத்திற்கான இருப்பிடச் சேவைகளின் வழங்குநர் <xliff:g id="APP_NAME">%1$s</xliff:g> ஆகும். இருப்பிட அமைப்புகளிலிருந்து இருப்பிட அணுகலை மாற்றலாம்."</string>
- <string name="system_warning" msgid="7103819124542305179">"இந்த அனுமதியை நிராகரித்தால், உங்கள் சாதனத்தின் அடிப்படை அம்சங்கள் சரியாகச் செயல்படாமல் போகலாம்."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"கொள்கையின் படி செயல்படுத்தப்பட்டது"</string>
- <string name="loading" msgid="7811651799620593731">"ஏற்றுகிறது..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"எல்லா அனுமதிகளும்"</string>
- <string name="other_permissions" msgid="2016192512386091933">"பயன்பாட்டின் பிற திறன்கள்"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"அனுமதி கோரிக்கை"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"திரையின் மேலே செயல்படும் பயன்பாடுகள் கண்டறியப்பட்டன"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"இந்த அனுமதியை மாற்ற, அமைப்புகள் > பயன்பாடுகள் என்பதற்குச் சென்று, திரையின் மேலே செயல்படும் பயன்பாடுகளை முதலில் முடக்கவும்"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"அமைப்புகளைத் திற"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Wear இல் நிறுவுதல்/நிறுவல் நீக்குதலுக்கு ஆதரவில்லை."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> புதுப்பிக்கப்பட்டது. பின்வருவனவற்றை அணுக <xliff:g id="APP_NAME_1">%1$s</xliff:g>ஐ அனுமதிக்கவா?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> எவற்றை அணுகலாம் என்பதைத் தேர்வுசெய்யவும்"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> புதுப்பிக்கப்பட்டது. இந்தப் பயன்பாடு எவற்றை அணுகலாம் என்பதைத் தேர்வுசெய்யவும்."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"ரத்துசெய்"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"தொடர்க"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"புதிய அனுமதிகள்"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"தற்போதைய அனுமதிகள்"</string>
- <string name="message_staging" msgid="6151794817691100003">"பயன்பாடு தயாராகிறது…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"தெரியாதது"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"உங்கள் பாதுகாப்பிற்காக, இந்த மூலத்திலிருந்து அறியப்படாத பயன்பாடுகளை உங்கள் டேப்லெட்டில் நிறுவ முடியாது."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"உங்கள் பாதுகாப்பிற்காக, இந்த மூலத்திலிருந்து அறியப்படாத பயன்பாடுகளை உங்கள் டிவியில் நிறுவ முடியாது."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"உங்கள் பாதுகாப்பிற்காக, இந்த மூலத்திலிருந்து அறியப்படாத பயன்பாடுகளை உங்கள் மொபைலில் நிறுவ முடியாது."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"அறியப்படாத பயன்பாடுகள், உங்கள் மொபைலையும் தனிப்பட்ட தரவையும் அதிகம் பாதிக்கக்கூடும். இந்தப் பயன்பாட்டை நிறுவுவதால், அவற்றைப் பயன்படுத்தும் போது உங்கள் மொபைலுக்கு ஏதேனும் சேதம் ஏற்பட்டாலோ அல்லது தரவை இழந்தாலோ, அதற்கு நீங்கள்தான் பொறுப்பாவீர்கள் என்பதை ஏற்கிறீர்கள்."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"அறியப்படாத பயன்பாடுகள், உங்கள் டேப்லெட்டையும் தனிப்பட்ட தரவையும் அதிகம் பாதிக்கக்கூடும். இந்தப் பயன்பாட்டை நிறுவுவதால், அவற்றைப் பயன்படுத்தும் போது உங்கள் டேப்லெட்டுக்கு ஏதேனும் சேதம் ஏற்பட்டாலோ அல்லது தரவை இழந்தாலோ, அதற்கு நீங்கள்தான் பொறுப்பாவீர்கள் என்பதை ஏற்கிறீர்கள்."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"அறியப்படாத பயன்பாடுகள், உங்கள் டிவியையும் தனிப்பட்ட தரவையும் அதிகம் பாதிக்கக்கூடும். இந்தப் பயன்பாட்டை நிறுவுவதால், அவற்றைப் பயன்படுத்தும் போது உங்கள் டிவிக்கு ஏதேனும் சேதம் ஏற்பட்டாலோ அல்லது தரவை இழந்தாலோ, அதற்கு நீங்கள்தான் பொறுப்பாவீர்கள் என்பதை ஏற்கிறீர்கள்."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"தொடர்க"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"அமைப்புகள்"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"வியர் ஆப்ஸை நிறுவுதல்/நிறுவல் நீக்குதல்"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Androidன் பழைய பதிப்புக்காக இந்த ஆப்ஸ் வடிவமைக்கப்பட்டது. அனுமதியை மறுத்தால் அது சரியாகச் செயல்படாமல் போகலாம்."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"அறியப்படாத செயலைச் செய்யும்"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"அனுமதிக்கப்பட்ட ஆப்ஸ்: <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="7623002570829860709">"சிஸ்டம் ஆப்ஸைக் காட்டு"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"சிஸ்டம் ஆப்ஸை மறை"</string>
+ <string name="no_apps" msgid="2377153782338039463">"எந்த ஆப்ஸிற்கும் தேவையில்லை"</string>
+ <string name="location_settings" msgid="547378321761364906">"இருப்பிட அமைப்புகள்"</string>
+ <string name="location_warning" msgid="4687406043150343369">"இந்தச் சாதனத்திற்கான இருப்பிடச் சேவைகளை <xliff:g id="APP_NAME">%1$s</xliff:g> வழங்குகிறது. \'இருப்பிட அமைப்புகளுக்குச்\' சென்று \'இருப்பிட அணுகலை\' மாற்றலாம்."</string>
+ <string name="system_warning" msgid="6868290533389195836">"இந்த அனுமதியை நிராகரித்தால் சாதனத்தின் அடிப்படை அம்சங்கள் சரியாகச் செயல்படாமல் போகலாம்."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"கொள்கையின்படி செயல்படுத்தப்பட்டது"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"கொள்கையின்படி \'பின்புல அணுகல்’ முடக்கப்பட்டது"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"கொள்கையின்படி \'பின்புல அணுகல்\' இயக்கப்பட்டது"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"கொள்கையின்படி \'முன்புல அணுகல்\' இயக்கப்பட்டது"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"நிர்வாகி கட்டுப்படுத்துகிறார்"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"\'பின்புல அணுகலை\' நிர்வாகி முடக்கியுள்ளார்"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"\'பின்புல அணுகலை’ நிர்வாகி இயக்கியுள்ளார்"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"\'முன்புல அணுகலை\' நிர்வாகி இயக்கியுள்ளார்"</string>
+ <!-- no translation found for permission_summary_enabled_system_fixed (5463084832974856683) -->
+ <skip />
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <!-- no translation found for permission_access_always (5419580764084361573) -->
+ <skip />
+ <!-- no translation found for permission_access_only_foreground (2857031150724321567) -->
+ <skip />
+ <!-- no translation found for permission_access_never (425385910378172045) -->
+ <skip />
+ <string name="loading" msgid="323483393167148377">"ஏற்றுகிறது…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"அனைத்து அனுமதிகளும்"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"ஆப்ஸிற்கான பிற அனுமதிகள்"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"அனுமதி கோரிக்கை"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"\'திரை மேலடுக்கு\' ஆனில் உள்ளது"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"இந்த அனுமதியை மாற்ற முதலில் \'அமைப்புகள் > ஆப்ஸ்’ என்பதற்குச் சென்று \'திரை மேலடுக்கை\' ஆஃப் செய்யவும்"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"அமைப்புகளைத் திற"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"நிறுவல்/நிறுவல் நீக்குதலை Wearரில் செய்ய இயலாது."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> எவற்றையெல்லாம் அணுகலாம் என்பதைத் தேர்வுசெய்யவும்"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> புதுப்பிக்கப்பட்டது. இந்த ஆப்ஸ் எவற்றையெல்லாம் அணுகலாம் என்பதைத் தேர்வுசெய்யவும்."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"வேண்டாம்"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"தொடர்க"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"புதிய அனுமதிகள்"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"தற்போதைய அனுமதிகள்"</string>
+ <string name="message_staging" msgid="641286607664721291">"ஆப்ஸ் தயாராகிறது…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"தெரியாதது"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"டாஷ்போர்டு"</string>
+ <!-- no translation found for permission_usage_summary_foreground (3203419920107457274) -->
+ <skip />
+ <!-- no translation found for permission_usage_summary_background (5719598203265078254) -->
+ <skip />
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"அனுமதி எதுவாயினும்"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"எந்த நேரமும்"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"கடந்த 7 நாட்கள்"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"கடந்த 24 மணிநேரம்"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"கடந்த ஒரு மணிநேரம்"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"கடந்த 15 நிமிடங்கள்"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"கடந்த 1 நிமிடத்தில்"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"உபயோகிக்கப்படாத அனுமதிகள்"</string>
+ <!-- no translation found for permission_usage_list_title_any_time (5641676869304328239) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_7_days (2972289322203714509) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_day (6298662604046093174) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_hour (7224982939487774388) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_15_minutes (49045607172810502) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_minute (7716966405942817635) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_any_time (862654449303514044) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_7_days (5393381637937213483) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_day (7202567658282481259) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_hour (4672313408976666479) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_15_minutes (1776918144361651860) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_minute (236300476767668315) -->
+ <skip />
+ <!-- no translation found for app_permission_usage_bar_label (7261634017833698654) -->
+ <!-- no translation found for permission_usage_view_details (4728049344017619500) -->
+ <skip />
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"இதன்படி வடிகட்டப்பட்டது: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"வடிப்பானை அகற்று"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"இதன்படி வடிகட்டுதல்"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"அனுமதிகளின்படி வடிகட்டு"</string>
+ <!-- no translation found for filter_by_time (1763143592970195407) -->
+ <skip />
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"அதிகப்படியான அனுமதிகள்"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"அதிகப்படியான அணுகல்கள்"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"சமீபத்தியவை"</string>
+ <!-- no translation found for sort_by_app (1912228966803416485) -->
+ <skip />
+ <!-- no translation found for sort_by_time (8280378662234104410) -->
+ <skip />
+ <!-- no translation found for item_separator (8266062815210378175) -->
+ <skip />
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"புதுப்பி"</string>
+ <!-- no translation found for permission_usage_permission_filter_subtitle (5539392196389332769) -->
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"ஆப்ஸ் அனுமதிகளை உபயோகித்தல்"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"அணுகல்: <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="4040424337831328212">"அணுகல்: <xliff:g id="NUM">%1$s</xliff:g> முறை. கடைசியாகப் பயன்படுத்தியது <xliff:g id="TIME">%2$s</xliff:g> முன்பு."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"அனுமதி"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"அனைத்து நேரங்களிலும் அனுமதி"</string>
+ <!-- no translation found for app_permission_button_allow_foreground (2303741829613210541) -->
+ <skip />
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"நிராகரி"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> என்பதற்கான அனுமதி"</string>
+ <!-- no translation found for app_permission_header (228974007660007656) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_usage_summary (1034436308858219976) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_no_usages (4444374134047275841) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_app_permissions_link (8033278634020892918) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_permission_apps_link (8759141212929298774) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_generic (5479202003136667039) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_activity_recognition (2022880340017289990) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_calendar (2846128908236787586) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_call_log (2429916962093948340) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_camera (6699611334403400091) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_contacts (5169995707720233126) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_location (687820658574645201) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_aural (2102206495149326019) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_visual (3105938942794669520) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_microphone (2300290217308759293) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_phone (3773977614654088578) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sensors (6733606479604624853) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sms (8850213022386508528) -->
+ <skip />
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"கடைசியாகப் பயன்படுத்தியது: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"பயன்படுத்தியதில்லை"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"அனுமதிக்கப்பட்டவை"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"உபயோகத்தில் மட்டுமே அனுமதிக்கப்படும்"</string>
+ <string name="denied_header" msgid="2277998574238617699">"மறுக்கப்பட்டது"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"உபயோகத்தை விவரமாகக் காட்டு"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> நாட்கள்</item>
+ <item quantity="one">1 நாள்</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> மணிநேரம்</item>
+ <item quantity="one">1 மணிநேரம்</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> நிமிடங்கள்</item>
+ <item quantity="one">1 நிமிடம்</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> விநாடிகள்</item>
+ <item quantity="one">1 விநாடி</item>
+ </plurals>
+ <string name="permission_reminders" msgid="8040710767178843151">"அனுமதிக்கான நினைவூட்டல்கள்"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> உங்கள் இருப்பிடத்தைப் பயன்படுத்துகிறது"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"எப்பொழுதும் உங்கள் இருப்பிடத்தை இந்த ஆப்ஸால் பயன்படுத்த இயலும். மாற்றத் தட்டவும்."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"ஆப்ஸ் உபயோகத்தில் இருக்கும்போது மட்டும்"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"எந்த அனுமதிகளும் வழங்கப்படவில்லை"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"எந்த அனுமதிகளும் மறுக்கப்படவில்லை"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"எந்த ஆப்ஸும் அனுமதிக்கப்படவில்லை"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"எந்த ஆப்ஸுக்கும் அனுமதி மறுக்கப்படவில்லை"</string>
+ <string name="settings" msgid="2884124136779508907">"அமைப்புகள்"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"உங்கள் சாதனத்திற்கான முழு அணுகல் <xliff:g id="SERVICE_NAME">%s</xliff:g> சேவைக்கு உள்ளது"</string>
+ <!-- no translation found for accessibility_service_dialog_title_multiple (8129325613496173909) -->
+ <skip />
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"உங்கள் திரை, செயல்கள் மற்றும் உள்ளீடுகளைப் பார்க்கவும், செயல்களை நிறைவேற்றவும், காட்சியைக் கட்டுப்படுத்தவும் <xliff:g id="SERVICE_NAME">%s</xliff:g> சேவையால் இயலும்."</string>
+ <!-- no translation found for accessibility_service_dialog_bottom_text_multiple (1387803460488775887) -->
+ <skip />
+ <!-- no translation found for request_role_title (3611734134669430568) -->
+ <skip />
+ <!-- no translation found for request_role_current_default (7512045433655289638) -->
+ <skip />
+ <!-- no translation found for request_role_set_as_default (5706081295230541240) -->
+ <skip />
+ <!-- no translation found for default_app_search_keyword (6938709626391437391) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_ok (3007005536659549573) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_open_settings (3368892579319881043) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_title (7173961211414061803) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_separator (9008030412869423988) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_last_separator (7455459775266515801) -->
+ <skip />
+ <string name="default_apps" msgid="8554530939151957828">"இயல்புநிலை ஆப்ஸ்"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"இயல்புநிலை ஆப்ஸ் இல்லை"</string>
+ <!-- no translation found for default_apps_manage_domain_urls (3146379064445013719) -->
+ <skip />
+ <string name="default_apps_for_work" msgid="8582151955372061208">"பணிக்கான இயல்பு நிலை ஆப்ஸ்"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"ஏதுமில்லை"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"ஆப்ஸ் இல்லை"</string>
+ <!-- no translation found for special_app_access_search_keyword (462008045110320714) -->
+ <skip />
+ <string name="special_app_access" msgid="2561673957499408877">"ஆப்ஸிற்கான சிறப்பு அணுகல்"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"ஆப்ஸிற்கு சிறப்பு அணுகல் இல்லை"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"ஆப்ஸ் இல்லை"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"அசிஸ்ட் ஆப்ஸ்"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"உலாவி ஆப்ஸ்"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"மொபைல் ஆப்ஸ்"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"மெசேஜ் ஆப்ஸ்"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"அவசரகால ஆப்ஸ்"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"முகப்பு ஆப்ஸ்"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"மியூசிக் ஆப்ஸ்"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"கேலரி ஆப்ஸ்"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"கார் மோடுக்கான மொபைல் ஆப்ஸ்"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"அழைப்பைத் திருப்பிவிடும் ஆப்ஸ்"</string>
+ <!-- no translation found for role_label_call_screening (1089966334646538858) -->
+ <skip />
+ <string name="role_label_call_companion" msgid="7369723859682076467">"அழைப்புக்கான கம்பேனியன் ஆப்ஸ்"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"பணிக் கணக்கிற்கான ஆதரவு இதில் இல்லை"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"கவனத்திற்கு: திரைப் பூட்டு அமைக்கப்பட்டிருக்கும் நிலையில் உங்கள் மொபைலை மீண்டும் தொடங்கினால் அன்லாக் செய்யப்படும்வரை இந்த ஆப்ஸ் இயங்காது."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"திரையில் தெரியும் தகவல் அல்லது ஆப்ஸிற்குள் அணுகக்கூடிய தகவல் உட்பட உங்கள் சிஸ்டத்தில் செயல்பாட்டிலுள்ள ஆப்ஸ் பற்றிய தகவல்களை அசிஸ்டண்ட்டால் படிக்க இயலும்."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"பிழைதிருத்தத் தரவைப் பகிர்தல்"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"விரிவான பிழைதிருத்தத் தகவலைப் பகிரவா?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"பிழைதிருத்தத் தகவலை <xliff:g id="APP_NAME">%1$s</xliff:g> பதிவேற்ற விரும்புகிறது."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"பிழைதிருத்தத் தரவைப் பகிர்தல்"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"இந்தச் சாதனத்திலிருந்து <xliff:g id="DATE">%2$s</xliff:g> அன்று <xliff:g id="TIME">%3$s</xliff:g> மணிக்கு எடுக்கப்பட்ட பிழை அறிக்கையைப் பதிவேற்றுமாறு <xliff:g id="APP_NAME_0">%1$s</xliff:g> கோருகிறது. இதில் பயனர் பெயர்கள், இருப்பிடத் தரவு, சாதன அடையாளங்காட்டிகள் மற்றும் நெட்வொர்க் தகவல்கள் போன்ற உங்கள் சாதனம் அல்லது உள்நுழைந்துள்ள ஆப்ஸ் பற்றிய தனிப்பட்ட தகவல்களும் உள்ளடங்கும். இந்தத் தகவல்களுடனான பிழை அறிக்கைகளை நம்பகமானவர்களுடனும் ஆப்ஸுடனும் மட்டுமே பகிரவும். பிழை அறிக்கையைப் பதிவேற்ற <xliff:g id="APP_NAME_1">%4$s</xliff:g> ஆப்ஸை அனுமதிக்கவா?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"அனுமதி"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"நிராகரி"</string>
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_title (5699953608028268176) -->
+ <skip />
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_content (6960592986228883592) -->
+ <skip />
+ <!-- no translation found for dismiss_with_acknowledgment (2879819713128822468) -->
+ <skip />
</resources>
diff --git a/res/values-te-television/strings.xml b/res/values-te-television/strings.xml
index 51526b7..ce44a6b 100644
--- a/res/values-te-television/strings.xml
+++ b/res/values-te-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"నిరాకరిస్తున్నాను, మళ్లీ అడగవద్దు"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"మీరు దీన్ని తర్వాత సెట్టింగ్లు > అనువర్తనాల్లో మార్చవచ్చు"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"సిస్టమ్ అనువర్తనాలను చూపు"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"యాప్ అనుమతులు"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"యాప్ అనుమతులు"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> అనుమతులు"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"అదనపు అనుమతులు"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> అనుమతులు"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"నిరాకరిస్తున్నాను, మళ్లీ అడగవద్దు"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"మీరు దీన్ని తర్వాత సెట్టింగ్లు > యాప్లలో మార్చవచ్చు"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"సిస్టమ్ యాప్లను చూపు"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"యాప్ అనుమతులు"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"యాప్ అనుమతులు"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> అనుమతులు"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"అదనపు అనుమతులు"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> అనుమతులు"</string>
</resources>
diff --git a/res/values-te-watch/strings.xml b/res/values-te-watch/strings.xml
index d97e970..1b9d8c4 100644
--- a/res/values-te-watch/strings.xml
+++ b/res/values-te-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"నిరాకరిస్తున్నాను,ఇక అడగవద్దు"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"సిస్టమ్ అనువర్తనాలను చూపు"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"మార్చడం సాధ్యపడదు"</string>
- <string name="generic_yes" msgid="3394094077553763689">"అవును"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"రద్దు చేయి"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"నిరాకరిస్తున్నాను,ఇక అడగవద్దు"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"సిస్టమ్ యాప్లను చూపు"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"మార్చడం సాధ్యపడదు"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"అవును"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"రద్దు చేయి"</string>
</resources>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index 61a3475..9d4fade 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"ప్యాకేజీ ఇన్స్టాలర్"</string>
- <string name="next" msgid="3057143178373252333">"తర్వాత"</string>
- <string name="install" msgid="5896438203900042068">"ఇన్స్టాల్ చేయండి"</string>
- <string name="done" msgid="3889387558374211719">"పూర్తయింది"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"ఈ యాప్ను ఇది చేయడానికి అనుమతించండి:"</string>
- <string name="cancel" msgid="8360346460165114585">"రద్దు చేయి"</string>
- <string name="unknown" msgid="4742479012767208045">"తెలియదు"</string>
- <string name="installing" msgid="8613631001631998372">"ఇన్స్టాల్ చేస్తోంది…"</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>ని ఇన్స్టాల్ చేస్తోంది…"</string>
- <string name="install_done" msgid="3682715442154357097">"యాప్ ఇన్స్టాల్ చేయబడింది."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"మీరు ఈ అనువర్తనాన్ని ఇన్స్టాల్ చేయాలనుకుంటున్నారా? ఇది వీటికి ప్రాప్యతను పొందుతుంది:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"మీరు ఈ యాప్ను ఇన్స్టాల్ చేయాలనుకుంటున్నారా? దీనికి ఎటువంటి ప్రత్యేక యాక్సెస్ అవసరం లేదు."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"మీరు ఈ ప్రస్తుత యాప్నకు అప్డేట్ను ఇన్స్టాల్ చేయాలనుకుంటున్నారా? మీ ప్రస్తుత డేటాను కోల్పోవడం సంభవించదు. అప్డేట్ చేసిన యాప్ వీటికి యాక్సెస్ను పొందుతుంది:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"మీరు ఈ అంతర్నిర్మిత యాప్నకు అప్డేట్ను ఇన్స్టాల్ చేయాలనుకుంటున్నారా? మీ ప్రస్తుత డేటాను కోల్పోవడం సంభవించదు. అప్డేట్ చేసిన యాప్ వీటికి యాక్సెస్ పొందుతుంది:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"మీరు ఈ ప్రస్తుత యాప్కు అప్డేట్ను ఇన్స్టాల్ చేయాలనుకుంటున్నారా? మీ ప్రస్తుత డేటాను కోల్పోవడం సంభవించదు. దీనికి ఎటువంటి ప్రత్యేక యాక్సెస్ అవసరం లేదు."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"మీరు ఈ అంతర్నిర్మిత యాప్కు అప్డేట్ను ఇన్స్టాల్ చేయాలనుకుంటున్నారా? మీ ప్రస్తుత డేటాను కోల్పోవడం సంభవించదు. దీనికి ఎటువంటి ప్రత్యేక యాక్సెస్ అవసరం లేదు."</string>
- <string name="install_failed" msgid="6579998651498970899">"యాప్ ఇన్స్టాల్ చేయబడలేదు."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"ప్యాకేజీ ఇన్స్టాల్ కాకుండా బ్లాక్ చేయబడింది."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"ప్యాకేజీ ఇప్పటికే ఉన్న ప్యాకేజీకి వైరుధ్యంగా ఉన్నందున యాప్ ఇన్స్టాల్ చేయబడలేదు."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"యాప్ మీ టాబ్లెట్కు అనుకూలంగా లేని కారణంగా ఇన్స్టాల్ చేయబడలేదు."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"ఈ యాప్ మీ టీవీకి అనుకూలంగా లేదు."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"యాప్ మీ ఫోన్కు అనుకూలంగా లేని కారణంగా ఇన్స్టాల్ చేయబడలేదు."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"ప్యాకేజీ చెల్లుబాటు కాని విధంగా ఉన్నందున యాప్ ఇన్స్టాల్ చేయబడలేదు."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g>ను మీ టాబ్లెట్లో ఇన్స్టాల్ చేయడం సాధ్యపడలేదు."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g>ని మీ టీవీలో ఇన్స్టాల్ చేయడం సాధ్యపడలేదు."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g>ను మీ ఫోన్లో ఇన్స్టాల్ చేయడం సాధ్యపడలేదు."</string>
- <string name="launch" msgid="4826921505917605463">"తెరవండి"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"మీ నిర్వాహకులు తెలియని మూలాల నుండి పొందిన అనువర్తనాల ఇన్స్టాలేషన్ను అనుమతించరు"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"తెలియని అనువర్తనాలను ఈ వినియోగదారు ఇన్స్టాల్ చేయలేరు"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"యాప్లను ఇన్స్టాల్ చేయడానికి ఈ వినియోగదారుకు అనుమతి లేదు"</string>
- <string name="ok" msgid="3468756155452870475">"సరే"</string>
- <string name="settings" msgid="6743583734099755409">"సెట్టింగ్లు"</string>
- <string name="manage_applications" msgid="4033876279091996596">"అనువర్తనాలను నిర్వహించండి"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"యాప్ను భర్తీ చేయాలా?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"మీరు ఇన్స్టాల్ చేస్తున్న యాప్ మరో యాప్ను భర్తీ చేస్తుంది.\n\nమీ మునుపు వినియోగదారు డేటా మొత్తం సేవ్ చేయబడుతుంది."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"ఇది సిస్టమ్ యాప్.\n\nమీ మునుపు వినియోగదారు డేటా మొత్తం సేవ్ చేయబడుతుంది."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"ఖాళీ లేదు"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g>ని ఇన్స్టాల్ చేయడం సాధ్యపడలేదు. కొంత స్థలాన్ని ఖాళీ చేసి మళ్లీ ప్రయత్నించండి."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"సరే"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"యాప్ కనుగొనబడలేదు"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"ఇన్స్టాల్ చేసిన యాప్ల జాబితాలో యాప్ కనుగొనబడలేదు."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"అనుమతించబడలేదు"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"ప్రస్తుత వినియోగదారు ఈ అన్ఇన్స్టాలేషన్ చేసేందుకు అనుమతి లేదు."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"ఎర్రర్"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"అనువర్తనాన్ని అన్ఇన్స్టాల్ చేయడం సాధ్యపడదు."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"యాప్ను అన్ఇన్స్టాల్ చేయండి"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"నవీకరణను అన్ఇన్స్టాల్ చేయండి"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> అనేది క్రింది యాప్లో ఒక భాగం:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"మీరు ఈ యాప్ను అన్ఇన్స్టాల్ చేయాలనుకుంటున్నారా?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"మీరు ఈ యాప్ను "<b>"మొత్తం"</b>" వినియోగదారులకు అన్ఇన్స్టాల్ చేయాలనుకుంటున్నారా? యాప్ మరియు దీని డేటా డివైజ్లోని "<b>"మొత్తం"</b>" వినియోగదారుల నుండి తీసివేయబడుతుంది."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"మీరు వినియోగదారు <xliff:g id="USERNAME">%1$s</xliff:g> కోసం ఈ అనువర్తనాన్ని అన్ఇన్స్టాల్ చేయాలనుకుంటున్నారా?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"ఈ అనువర్తనాన్ని ఫ్యాక్టరీ సంస్కరణతో భర్తీ చేయాలా? మొత్తం డేటా తీసివేయబడుతుంది."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"ఈ అనువర్తనాన్ని ఫ్యాక్టరీ సంస్కరణతో భర్తీ చేయాలా? మొత్తం డేటా తీసివేయబడుతుంది. దీని ప్రభావం కార్యాలయ ప్రొఫైల్లు కలిగి ఉన్నవారితో సహా ఈ పరికర వినియోగదారులందరిపై ఉంటుంది."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"అమల్లో ఉన్న అన్ఇన్స్టాల్లు"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"విఫలమైన అన్ఇన్స్టాల్లు"</string>
- <string name="uninstalling" msgid="5556217435895938250">"అన్ఇన్స్టాల్ చేస్తోంది…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>ని అన్ఇన్స్టాల్ చేస్తోంది…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"అన్ఇన్స్టాల్ చేయడం ముగిసింది."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"అన్ఇన్స్టాల్ చేసిన <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"అన్ఇన్స్టాల్ చేయడం విజయవంతం కాలేదు."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> అన్ఇన్స్టాల్ చేయడంలో విఫలమైంది."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"సక్రియ పరికర నిర్వాహక అనువర్తనాన్ని అన్ఇన్స్టాల్ చేయడం సాధ్యపడదు"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"<xliff:g id="USERNAME">%1$s</xliff:g> కోసం సక్రియ పరికర నిర్వాహక అనువర్తనాన్ని అన్ఇన్స్టాల్ చేయడం సాధ్యపడదు"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"ఈ యాప్ కొందరు వినియోగదారులకు లేదా కొన్ని ప్రొఫైల్లకు అవసరం, ఇతరులకు అన్ఇన్స్టాల్ చేయబడింది"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"మీ ప్రొఫైల్ కోసం ఈ యాప్ అవసరం మరియు దీన్ని అన్ఇన్స్టాల్ చేయలేరు."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"మీ డివైజ్ నిర్వాహకుడికి ఈ యాప్ అవసరం, అందువల్ల దీన్ని అన్ఇన్స్టాల్ చేయడం కుదరదు."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"పరికర నిర్వాహక అనువర్తనాలను నిర్వహించు"</string>
- <string name="manage_users" msgid="3125018886835668847">"వినియోగదారులను నిర్వహించు"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g>ని అన్ఇన్స్టాల్ చేయడం సాధ్యపడలేదు."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"ప్యాకేజీని అన్వయించడంలో సమస్య ఏర్పడింది."</string>
- <string name="newPerms" msgid="6039428254474104210">"కొత్తవి"</string>
- <string name="allPerms" msgid="1024385515840703981">"అన్నీ"</string>
- <string name="privacyPerms" msgid="1850527049572617">"గోప్యత"</string>
- <string name="devicePerms" msgid="6733560207731294504">"పరికరం యాక్సెస్"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"ఈ నవీకరణకు కొత్త అనుమతులు అవసరం లేదు."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"మీరు క్రింది అనుమతులను మంజూరు చేయాలనుకుంటున్నారా? ఇది వీటికి యాక్సెస్ పొందుతుంది:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"తిరస్కరించు"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"మరింత సమాచారం"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"ఏదేమైనా నిరాకరించు"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>ని <xliff:g id="ACTION">%2$s</xliff:g> అనుమతించాలా?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> నిలిపివేయబడ్డాయి"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"అన్నీ నిలిపివేయబడ్డాయి"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"ఏవీ నిలిపివేయబడలేదు"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"అనుమతించు"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"యాప్లు"</string>
- <string name="app_permissions" msgid="3146758905824597178">"యాప్ అనుమతులు"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"మళ్లీ అడగవద్దు"</string>
- <string name="no_permissions" msgid="3210542466245591574">"అనుమతులు లేవు"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"అదనపు అనుమతులు"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"అనుమతి కంట్రోలర్"</string>
+ <string name="ok" msgid="4417794827535157922">"సరే"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"అనుమతులు"</string>
+ <string name="cancel" msgid="7279939269964834974">"రద్దు చేయి"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"యాప్ కనుగొనబడలేదు"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"తిరస్కరించు"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"తిరస్కరించి, ఇకపై మళ్లీ అడగవద్దు"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"మరింత సమాచారం"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"ఏదేమైనా నిరాకరించు"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>ని <xliff:g id="ACTION">%2$s</xliff:g> చేయడానికి అనుమతించాలా?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"<xliff:g id="ACTION">%2$s</xliff:g> చేయడానికి <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>ను ఎల్లప్పుడూ అనుమతించాలా?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"యాప్ను ఉపయోగిస్తున్నప్పుడు మాత్రమే"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"ఎల్లప్పుడూ"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"నిరాకరించు, మళ్లీ అడగవద్దు"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> నిలిపివేయబడ్డాయి"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"అన్నీ నిలిపివేయబడ్డాయి"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"ఏవీ నిలిపివేయబడలేదు"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"అనుమతించు"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"మొత్తం సమయాన్ని చూపు"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"యాప్ వినియోగంలో ఉన్నప్పుడు మాత్రమే అనుమతించు"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"యాప్లు"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"యాప్ అనుమతులు"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"అనుమతి మేనేజర్"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"మళ్లీ అడగవద్దు"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"అనుమతులు లేవు"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"అదనపు అనుమతులు"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"యాప్ సమాచారాన్ని తెరుస్తుంది"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"ఈ యాప్ పాత Android వెర్షన్ కోసం రూపొందించబడింది. అనుమతిని నిరాకరించినట్లయితే ఇది ఇకపై ఉద్దేశించిన రీతిలో పని చేయకపోవచ్చు."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"తెలియని చర్యను చేస్తుంది"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"సిస్టమ్ను చూపు"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"సిస్టమ్ను దాచు"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> అనుమతులు"</string>
- <string name="no_apps" msgid="1965493419005012569">"అనువర్తనాలు లేవు"</string>
- <string name="location_settings" msgid="1774875730854491297">"స్థాన సెట్టింగ్లు"</string>
- <string name="location_warning" msgid="8778701356292735971">"ఈ పరికరం కోసం స్థాన సేవల ప్రదాత <xliff:g id="APP_NAME">%1$s</xliff:g>. స్థాన సెట్టింగ్ల నుండి స్థాన ప్రాప్యతను సవరించవచ్చు."</string>
- <string name="system_warning" msgid="7103819124542305179">"మీరు ఈ అనుమతిని నిరాకరిస్తే, మీ పరికర ప్రాథమిక లక్షణాలు ఇకపై ఉద్దేశించిన రీతిలో పని చేయకపోవచ్చు."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"విధానం ద్వారా అమలు చేయబడింది"</string>
- <string name="loading" msgid="7811651799620593731">"లోడ్ అవుతోంది..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"అన్ని అనుమతులు"</string>
- <string name="other_permissions" msgid="2016192512386091933">"ఇతర అనువర్తన సామర్థ్యాలు"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"అనుమతి అభ్యర్థన"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"స్క్రీన్ అతివ్యాప్తి గుర్తించబడింది"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"ఈ అనుమతి సెట్టింగ్ను మార్చడానికి, మీరు ముందుగా సెట్టింగ్లు > అనువర్తనాల నుండి స్క్రీన్ అతివ్యాప్తిని ఆఫ్ చేయాలి"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"సెట్టింగ్లను తెరువు"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android వేర్"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Wearలో ఇన్స్టాల్/అన్ఇన్స్టాల్ చర్యలకు మద్దతు లేదు."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> అప్డేట్ చేయబడింది. క్రింది వాటిని యాక్సెస్ చేయడానికి <xliff:g id="APP_NAME_1">%1$s</xliff:g>ని అనుమతించాలా?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> యాక్సెస్ చేయడానికి అనుమతించాల్సిన వాటిని ఎంచుకోండి"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> అప్డేట్ చేయబడింది. ఈ యాప్ యాక్సెస్ చేయడానికి అనుమతించాల్సిన వాటిని ఎంచుకోండి."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"రద్దు చేయి"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"కొనసాగించు"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"కొత్త అనుమతులు"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"ప్రస్తుత అనుమతులు"</string>
- <string name="message_staging" msgid="6151794817691100003">"అనువర్తనాన్ని అందిస్తోంది…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"తెలియదు"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"మీకు భద్రతను అందించడం కోసం, ఈ మూలం నుండి తెలియని యాప్లను ఇన్స్టాల్ చేయడానికి మీ టాబ్లెట్ అనుమతించబడదు."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"మీకు భద్రతను అందించడం కోసం, ఈ మూలం నుండి తెలియని యాప్లను ఇన్స్టాల్ చేయడానికి మీ TV అనుమతించబడదు."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"మీకు భద్రతను అందించడం కోసం, ఈ మూలం నుండి తెలియని యాప్లను ఇన్స్టాల్ చేయడానికి మీ ఫోన్ అనుమతించబడదు."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"మీ ఫోన్ మరియు వ్యక్తిగత డేటా తెలియని మూలాల్లోని అనువర్తనాల ద్వారా దాడికి గురి కావడానికి ఎక్కువ అవకాశం ఉంటుంది. ఈ అనువర్తనాన్ని ఇన్స్టాల్ చేయడం ద్వారా, ఈ అనువర్తనాన్ని ఉపయోగించడం వలన మీ ఫోన్కు సంభవించే ఏదైనా నష్టానికి లేదా కోల్పోయే డేటాకి బాధ్యత వహించడానికి మీరు అంగీకరిస్తున్నారు."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"మీ టాబ్లెట్ మరియు వ్యక్తిగత డేటా తెలియని మూలాల్లోని అనువర్తనాల ద్వారా దాడికి గురి కావడానికి ఎక్కువ అవకాశం ఉంటుంది. ఈ అనువర్తనాన్ని ఇన్స్టాల్ చేయడం ద్వారా, ఈ అనువర్తనాన్ని ఉపయోగించడం ద్వారా మీ టాబ్లెట్కు సంభవించే ఏదైనా నష్టానికి లేదా కోల్పోయే డేటాకి బాధ్యత వహించడానికి మీరు అంగీకరిస్తున్నారు."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"మీ TV మరియు వ్యక్తిగత డేటా తెలియని మూలాల్లోని అనువర్తనాల ద్వారా దాడికి గురి కావడానికి ఎక్కువ అవకాశం ఉంటుంది. ఈ అనువర్తనాన్ని ఇన్స్టాల్ చేయడం ద్వారా, ఈ అనువర్తనాన్ని ఉపయోగించడం ద్వారా మీ TVకి సంభవించే ఏదైనా నష్టానికి లేదా కోల్పోయే డేటాకి బాధ్యత వహించడానికి మీరు అంగీకరిస్తున్నారు."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"కొనసాగించు"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"సెట్టింగ్లు"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"వేర్ ఆప్లను ఇన్స్టాల్/అన్ఇన్స్టాల్ చేస్తోంది"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"ఈ యాప్ పాత Android వెర్షన్ కోసం రూపొందించబడింది. అనుమతిని నిరాకరించినట్లయితే ఇది ఇకపై ఉద్దేశించిన రీతిలో పని చేయకపోవచ్చు."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"తెలియని చర్యను చేస్తుంది"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_1">%2$d</xliff:g>లో <xliff:g id="COUNT_0">%1$d</xliff:g> యాప్లు అనుమతించబడ్డాయి"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"ఇటీవలి వినియోగం"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"అనుమతుల డాష్బోర్డ్ను చూడండి"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"సిస్టమ్ను చూపు"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"సిస్టమ్ దాచు"</string>
+ <string name="no_apps" msgid="2377153782338039463">"యాప్లు లేవు"</string>
+ <string name="location_settings" msgid="547378321761364906">"స్థాన సెట్టింగ్లు"</string>
+ <string name="location_warning" msgid="4687406043150343369">"ఈ పరికరం కోసం స్థాన సేవల ప్రదాత <xliff:g id="APP_NAME">%1$s</xliff:g>. స్థాన సెట్టింగ్ల నుండి స్థాన యాక్సెస్ను సవరించవచ్చు."</string>
+ <string name="system_warning" msgid="6868290533389195836">"మీరు ఈ అనుమతిని నిరాకరిస్తే, మీ పరికర ప్రాథమిక లక్షణాలు ఇకపై ఉద్దేశించిన రీతిలో పని చేయకపోవచ్చు."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"విధానం ద్వారా అమలు చేయబడింది"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"విధానం ద్వారా నేపథ్య యాక్సెస్ నిలిపివేయబడింది"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"విధానం ద్వారా నేపథ్య యాక్సెస్ ప్రారంభించబడింది"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"విధానం ద్వారా ముందుభాగం యాక్సెస్ ప్రారంభించబడింది"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"నిర్వాహకుల నియంత్రణలో ఉంటాయి"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"నిర్వాహకులు నేపథ్య యాక్సెస్ను నిలిపివేసారు"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"నిర్వాహకులు నేపథ్య యాక్సెస్ను అనుమతించారు"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"నిర్వాహకులు స్క్రీన్ యాక్సెస్ను అనుమతించారు"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"సిస్టమ్ ద్వారా అనుమతి సెట్ చేయబడింది"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"ఎల్లప్పుడూ"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"యాప్ను ఉపయోగిస్తున్నప్పుడు మాత్రమే"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"ఎన్నడూ వద్దు"</string>
+ <string name="loading" msgid="323483393167148377">"లోడ్ చేస్తోంది…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"అన్ని అనుమతులు"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"ఇతర యాప్ సామర్థ్యాలు"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"అనుమతి అభ్యర్థన"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"స్క్రీన్ అతివ్యాప్తి గుర్తించబడింది"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"ఈ అనుమతి సెట్టింగ్ను మార్చడానికి, మీరు సెట్టింగ్లు > యాప్ల నుండి స్క్రీన్ అతివ్యాప్తిని ఆఫ్ చేయాలి"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"సెట్టింగ్లను తెరువు"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android వేర్"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Wearలో ఇన్స్టాల్/అన్ఇన్స్టాల్ చర్యలకు మద్దతు లేదు."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> యాక్సెస్ చేయడానికి అనుమతించాల్సిన వాటిని ఎంచుకోండి"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> అప్డేట్ చేయబడింది. ఈ యాప్ యాక్సెస్ చేయడానికి అనుమతించాల్సిన వాటిని ఎంచుకోండి."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"రద్దు చేయి"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"కొనసాగించు"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"కొత్త అనుమతులు"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"ప్రస్తుత అనుమతులు"</string>
+ <string name="message_staging" msgid="641286607664721291">"యాప్ను అందిస్తోంది…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"తెలియదు"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"డాష్బోర్డ్"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">చివరి యాక్సెస్: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> యాక్సెస్లు (నేపథ్యంలో <xliff:g id="NUM_5">%3$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> యాక్సెస్ (నేపథ్యంలో <xliff:g id="NUM_2">%3$s</xliff:g>)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">చివరి యాక్సెస్: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> యాక్సెస్లు\nవ్యవధి: <xliff:g id="TIME_5">%3$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> యాక్సెస్\nవ్యవధి: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">చివరి యాక్సెస్: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> యాక్సెస్లు (నేపథ్యంలో <xliff:g id="NUM_6">%3$s</xliff:g>)\nవ్యవధి: <xliff:g id="TIME_7">%3$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> యాక్సెస్ (నేపథ్యంలో <xliff:g id="NUM_2">%3$s</xliff:g>)\nవ్యవధి: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"ఏ అనుమతి అయినా"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"ఎప్పుడైనా"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"గత 7 రోజులు"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"గత 24 గంటలు"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"గత 1 గంట"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"గత 15 నిమిషాలు"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"చివరి 1 నిమిషం"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"అనుమతి వినియోగాలేవీ లేవు"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"ఎప్పుడైనా యాక్సెస్ చేయండి"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"గత ఏడూ రోజులలో యాక్సెస్"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"గత 24 గంటల్లో యాక్సెస్ పొందుతారు"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"గత గంటలో యాక్సస్ చేయబడింది"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"చివరి 15 నిమిషాల్లో యాక్సెస్ చేయండి"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"చివరి నిమిషంలో యాక్సెస్ చేయండి"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"ఏ సమయంలో అయినా అగ్రశ్రేణి అనుమతి వినియోగం"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"గత 7 రోజులలో అగ్ర అనుమతి వాడకం"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"గత 24 గంటల్లో అగ్రశ్రేణి అనుమతి వినియోగం"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"గత గంటలో అగ్రశ్రేణి అనుమతి వినియోగం"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"గత 15 నిమిషాల్లో అగ్రశ్రేణి అనుమతి వినియోగం"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"గత నిమిషంలో అగ్రశ్రేణి అనుమతి వినియోగం"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"యాప్లు"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"దీని ద్వారా ఫిల్టర్ చేయబడింది: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"ఫిల్టర్ తీసివేయి"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"వీటి ద్వారా ఫిల్టర్ చేయి"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"అనుమతుల ఆధారంగా ఫిల్టర్ చేయండి"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"దాదాపుగా అన్ని అనుమతులు"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"మరిన్ని యాక్సెస్లు"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"ఇటీవలివి"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"రిఫ్రెష్ చేయి"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"యాప్ అనుమతుల వినియోగం"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"యాక్సెస్: <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="4040424337831328212">"యాక్సెస్: <xliff:g id="NUM">%1$s</xliff:g> సార్లు. <xliff:g id="TIME">%2$s</xliff:g> క్రితం చివరిగా ఉపయోగించబడింది."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"అనుమతించు"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"అన్ని సమయాలలో అనుమతించు"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"యాప్ వినియోగంలో ఉన్నప్పుడు మాత్రమే అనుమతించు"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"తిరస్కరించు"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> అనుమతి"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="APP">%2$s</xliff:g> కోసం <xliff:g id="PERM">%1$s</xliff:g> యాక్సెస్"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> మీ <xliff:g id="PERM">%2$s</xliff:g>ని <xliff:g id="TIME">%3$s</xliff:g> క్రితం యాక్సెస్ చేసింది."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> మీ <xliff:g id="PERM">%2$s</xliff:g>ని ఉపయోగించలేదు."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"వివరణాత్మక అనుమతుల వినియోగాన్ని చూడండి"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"చివరిసారి యాక్సెస్ చేసింది: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"ఎప్పుడూ యాక్సెస్ చేయలేదు"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"అనుమతించినవి"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"ఉపయోగించేటప్పుడు మాత్రమే అనుమతివ్వబడును"</string>
+ <string name="denied_header" msgid="2277998574238617699">"తిరస్కరించినవి"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"వివరణాత్మక వినియోగాన్ని చూడండి"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> రోజులు</item>
+ <item quantity="one">1 రోజు</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> గంటలు</item>
+ <item quantity="one">1 గంట</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> నిమిషాలు</item>
+ <item quantity="one">1 నిమిషం</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> సెకన్లు</item>
+ <item quantity="one">1 సెకను</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"<b><xliff:g id="APP_NAME">%1$s</xliff:g>ని </b> మీ <xliff:g id="ROLE_NAME">%2$s</xliff:g>గా వాడాలా?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"<b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g> బదులుగా <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b>ని </b> మీ <xliff:g id="ROLE_NAME">%2$s</xliff:g>గా వాడాలా?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"అనుమతి రిమైండర్లు"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> మీ స్థానాన్ని ఉపయోగిస్తోంది"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"ఈ యాప్ మీ స్థానాన్ని ఎల్లప్పుడూ యాక్సెస్ చేయగలదు. మార్చడానికి నొక్కండి."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"యాప్ వినియోగంలో ఉన్నప్పుడు మాత్రమే"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"అనుమతులు ఏవీ ఇవ్వలేదు"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"అన్ని అనుమతులు ఇచ్చారు"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"ఏ యాప్కి ఇవ్వలేదు"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"యాప్లు ఏవీ నిరాకరించలేదు"</string>
+ <string name="launch_app" msgid="5641437562665039291">"తెరవండి"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"అన్ఇన్స్టాల్ చేయి"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"ఫోర్స్ స్టాప్"</string>
+ <string name="settings" msgid="2884124136779508907">"సెట్టింగ్లు"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> మీ పరికరానికి పూర్తి యాక్సెస్ కలిగి ఉంది"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> యాక్సెసబిలిటీ సేవలు మీ పరికరానికి పూర్తి యాక్సెస్ కలిగి ఉన్నాయి"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> మీ స్క్రీన్, చర్యలు మరియు ఇన్పుట్లను చూడగలదు, చర్యలను అమలు చేయగలదు, అలాగే ప్రదర్శనను నియంత్రించగలదు."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"ఈ సేవలు మీ స్క్రీన్, చర్యలు మరియు ఇన్పుట్లను చూడగలవు, చర్యలను అమలు చేయగలవు మరియు ప్రదర్శనను నియంత్రించగలవు."</string>
+ <string name="default_apps" msgid="8554530939151957828">"డిఫాల్ట్ యాప్లు"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"డిఫాల్ట్ యాప్లు ఏవీ లేవు"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"కార్యాలయం కోసం డిఫాల్ట్"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"ఏదీ కాదు"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"ఏ యాప్ లేదు"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"ప్రత్యేక యాప్ యాక్సెస్"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"ప్రత్యేక యాప్ యాక్సెస్ లేదు"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"ఏ యాప్కి లేదు"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"సహాయక యాప్"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"బ్రౌజర్ యాప్"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"ఫోన్ యాప్"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS యాప్"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"అత్యవసర యాప్"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"హోమ్ యాప్"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"సంగీత యాప్"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"గ్యాలరీ యాప్"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"కార్ మోడ్ ఫోన్ యాప్"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"కాల్ మళ్లింపు యాప్"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"కాల్ స్క్రీనింగ్ యాప్"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"కాల్ సహచర యాప్"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"కార్ ప్రొజెక్షన్ యాప్"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"కార్యాలయ ప్రొఫైల్కు మద్దతు ఇవ్వదు"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"చిన్న గమనిక: మీరు భద్రత కోసం స్క్రీన్ లాక్ని సెటప్ చేసి పెట్టుకున్నారు పైగా మీ పరికరాన్ని పునఃప్రారంభించినట్టున్నారు కనుక స్క్రీన్ లాక్ అయ్యిపోయింది. మీరు పాస్వర్డ్ని నమోదు చేసేవరకూ ఈ యాప్ ప్రారంభం కాదు."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"మీ స్క్రీన్పై కనిపించే లేదా యాప్లలో యాక్సెస్ చేసే సమాచారంతో పాటు అసిస్టెంట్ మీ సిస్టమ్లో వినియోగంలో ఉన్న యాప్ల గురించిన సమాచారాన్ని చదవగలుగుతుంది."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"డీబగ్గింగ్ డేటాను షేర్ చేయండి"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"వివరణాత్మక డీబగ్గింగ్ డేటాను షేర్ చేయాలా?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g>డీబగ్గింగ్ సమాచారాన్ని అప్లో డ్ చేయదలుచుకుంటున్నారు."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"డీబగ్గింగ్ డేటాను షేర్ చేయండి"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> <xliff:g id="DATE">%2$s</xliff:g>న <xliff:g id="TIME">%3$s</xliff:g>కు ఈ పరికరంలో తీసిన డీబగ్ నివేదికను అప్లోడ్ చేయమని అభ్యర్థిస్తుంది. బగ్ నివేదికలు మీ పరికరం లేదా లాగిన్ చేసిన యాప్ల వ్యక్తిగత సమాచారం, ఉదాహరణకు వినియోగదారు పేర్లు, స్థాన డేటా, పరికర గుర్తింపులు,మరియి నెట్వర్క్ సమాచారాన్ని కలిగి ఉంటాయి. మీకు ఈ సమాచారం విషయంలో నమ్మకమైన వ్యక్తులకు మరియు యాప్లకు మాత్రమే బగ్ నివేదిక వివరాలను షేర్ చేయండి. బగ్ నివేదికను అప్లోడ్ చేయడానికి <xliff:g id="APP_NAME_1">%4$s</xliff:g>ను అనుమతించాలా?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"అనుమతించు"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"తిరస్కరించు"</string>
</resources>
diff --git a/res/values-television/colors.xml b/res/values-television/colors.xml
index 6afe248..98d6019 100644
--- a/res/values-television/colors.xml
+++ b/res/values-television/colors.xml
@@ -24,6 +24,8 @@
<color name="lb_header_banner_color">#1f292d</color>
+ <color name="lb_preference_decor_list_background">#FF202124</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>
diff --git a/res/values-television/dimens.xml b/res/values-television/dimens.xml
index 0303838..195c79b 100644
--- a/res/values-television/dimens.xml
+++ b/res/values-television/dimens.xml
@@ -15,6 +15,10 @@
-->
<resources>
+ <!-- FIXME: b/112446546 should use the new theme/style attributes with new supportlib prebuilt -->
+ <dimen name="lb_preference_decor_title_margin_start">24dp</dimen>
+ <dimen name="lb_preference_decor_title_margin_end">56dp</dimen>
+
<dimen name="grant_permissions_app_icon_size">64dp</dimen>
<dimen name="grant_permissions_app_icon_margin_top">19dp</dimen>
diff --git a/res/values-th-television/strings.xml b/res/values-th-television/strings.xml
index 042a6f1..30fb3b3 100644
--- a/res/values-th-television/strings.xml
+++ b/res/values-th-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"ปฏิเสธและไม่ต้องถามอีก"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"คุณสามารถเปลี่ยนได้ภายหลังในการตั้งค่า > แอป"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"แสดงแอประบบ"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"สิทธิ์ของแอป"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"สิทธิ์ของแอป"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"สิทธิ์เข้าถึง \"<xliff:g id="PERMISSION">%1$s</xliff:g>\""</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"สิทธิ์เพิ่มเติม"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"สิทธิ์เข้าถึง \"<xliff:g id="PERMISSION">%1$s</xliff:g>\""</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"ปฏิเสธและไม่ต้องถามอีก"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"คุณเปลี่ยนได้ภายหลังในการตั้งค่า > แอป"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"แสดงแอประบบ"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"สิทธิ์ของแอป"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"สิทธิ์ของแอป"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"สิทธิ์ในการใช้ <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"สิทธิ์เพิ่มเติม"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"สิทธิ์ในการใช้ <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-th-watch/strings.xml b/res/values-th-watch/strings.xml
index 05af1e8..83d8607 100644
--- a/res/values-th-watch/strings.xml
+++ b/res/values-th-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"ปฏิเสธ ไม่ต้องถามอีก"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"แสดงแอประบบ"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ไม่สามารถเปลี่ยน"</string>
- <string name="generic_yes" msgid="3394094077553763689">"ใช่"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"ยกเลิก"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"ปฏิเสธ ไม่ต้องถามอีก"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"แสดงแอประบบ"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"เปลี่ยนไม่ได้"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"ใช่"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"ยกเลิก"</string>
</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index e708219..f27c338 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"โปรแกรมติดตั้งแพ็กเกจ"</string>
- <string name="next" msgid="3057143178373252333">"ถัดไป"</string>
- <string name="install" msgid="5896438203900042068">"ติดตั้ง"</string>
- <string name="done" msgid="3889387558374211719">"เสร็จสิ้น"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"อนุญาตให้แอปพลิเคชันนี้:"</string>
- <string name="cancel" msgid="8360346460165114585">"ยกเลิก"</string>
- <string name="unknown" msgid="4742479012767208045">"ไม่ทราบ"</string>
- <string name="installing" msgid="8613631001631998372">"กำลังติดตั้ง..."</string>
- <string name="installing_app" msgid="4097935682329028894">"กำลังติดตั้ง <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"ติดตั้งแอปพลิเคชันแล้ว"</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"คุณต้องการติดตั้งแอปพลิเคชันนี้หรือไม่ แอปพลิเคชันจะเข้าถึง:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"คุณต้องการจะติดตั้งแอปพลิเคชันนี้หรือไม่ แอปพลิเคชันไม่ต้องมีการเข้าถึงพิเศษใดๆ"</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"คุณต้องการติดตั้งการอัปเดตของแอปพลิเคชันที่มีอยู่นี้หรือไม่ ข้อมูลที่มีอยู่ของคุณจะไม่สูญหายไป แอปพลิเคชันที่อัปเดตแล้วจะเข้าถึง:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"คุณต้องการจะติดตั้งการอัปเดตของแอปพลิเคชันในระบบนี้หรือไม่ ข้อมูลที่มีอยู่ของคุณจะไม่สูญหาย แอปพลิเคชันที่อัปเดตแล้วจะเข้าถึง:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"คุณต้องการติดตั้งการอัปเดตไปยังแอปพลิเคชันที่มีอยู่นี้หรือไม่ ข้อมูลที่มีอยู่ของคุณจะไม่สูญหาย การอัปเดตนี้ไม่จำเป็นต้องใช้การเข้าถึงใดๆ เป็นพิเศษ"</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"คุณต้องการติดตั้งการอัปเดตไปยังแอปพลิเคชันในตัวนี้หรือไม่ ข้อมูลที่มีอยู่ของคุณจะไม่สูญหาย การอัปเดตนี้ไม่จำเป็นต้องใช้การเข้าถึงใดๆ เป็นพิเศษ"</string>
- <string name="install_failed" msgid="6579998651498970899">"ไม่ได้ติดตั้งแอปพลิเคชัน"</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"มีการบล็อกแพ็กเกจไม่ให้ติดตั้ง"</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"ไม่ได้ติดตั้งแอปเพราะแพ็กเกจขัดแย้งกับแพ็กเกจที่มีอยู่"</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"ไม่ได้ติดตั้งแอปเพราะแอปใช้งานไม่ได้กับแท็บเล็ตของคุณ"</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"แอปนี้ไม่สามารถใช้งานกับทีวีของคุณ"</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"ไม่ได้ติดตั้งแอปเพราะแอปใช้งานไม่ได้กับโทรศัพท์ของคุณ"</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"ไม่ได้ติดตั้งแอปเพราะดูเหมือนว่าแพ็กเกจจะไม่ถูกต้อง"</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"ไม่สามารถติดตั้ง <xliff:g id="APP_NAME">%1$s</xliff:g> บนแท็บเล็ตของคุณ"</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> ไม่สามารถติดตั้งบนทีวีได้"</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"ไม่สามารถติดตั้ง <xliff:g id="APP_NAME">%1$s</xliff:g> บนโทรศัพท์ของคุณ"</string>
- <string name="launch" msgid="4826921505917605463">"เปิด"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"ผู้ดูแลระบบของคุณไม่อนุญาตให้ติดตั้งแอปที่ได้มาจากแหล่งที่มาที่ไม่รู้จัก"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"ผู้ใช้รายนี้ไม่สามารถติดตั้งแอปที่ไม่รู้จัก"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"ผู้ใช้รายนี้ไม่ได้รับอนุญาตให้ติดตั้งแอป"</string>
- <string name="ok" msgid="3468756155452870475">"ตกลง"</string>
- <string name="settings" msgid="6743583734099755409">"การตั้งค่า"</string>
- <string name="manage_applications" msgid="4033876279091996596">"จัดการแอปพลิเคชัน"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"แทนที่แอปพลิเคชันหรือไม่"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"แอปพลิเคชันที่คุณกำลังติดตั้งจะไปแทนที่แอปพลิเคชันอื่น\n\nข้อมูลผู้ใช้ทั้งหมดของคุณก่อนหน้านี้จะได้รับการบันทึกไว้"</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"นี่เป็นแอปพลิเคชันระบบ\n\nข้อมูลผู้ใช้ทั้งหมดของคุณก่อนหน้านี้จะได้รับการบันทึกไว้"</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"ไม่มีพื้นที่"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"ติดตั้ง <xliff:g id="APP_NAME">%1$s</xliff:g> ไม่ได้ เพิ่มพื้นที่ว่างแล้วลองอีกครั้ง"</string>
- <string name="dlg_ok" msgid="6944357727705699232">"ตกลง"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"ไม่พบแอปพลิเคชัน"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"ไม่พบแอปพลิเคชันนี้ในรายการแอปพลิเคชันที่ติดตั้งไว้"</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"ไม่ได้รับอนุญาต"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"ผู้ใช้ปัจจุบันไม่ได้รับอนุญาตให้ทำการถอนการติดตั้งนี้"</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"พบข้อผิดพลาด"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"ไม่สามารถถอนการติดตั้งแอป"</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"ถอนการติดตั้งแอปพลิเคชัน"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"ถอนการติดตั้งการอัปเดต"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> เป็นส่วนหนึ่งของแอปพลิเคชันต่อไปนี้:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"คุณต้องการถอนการติดตั้งแอปพลิเคชันนี้หรือไม่"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"คุณต้องการถอนการติดตั้งแอปพลิเคชันนี้สำหรับผู้ใช้"<b>"ทั้งหมด"</b>"หรือไม่ แอปพลิเคชันนี้และข้อมูลในแอปพลิเคชันจะถูกลบจากผู้ใช้"<b>"ทั้งหมด"</b>"ในอุปกรณ์"</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"คุณต้องการถอนการติดตั้งแอปนี้สำหรับผู้ใช้ <xliff:g id="USERNAME">%1$s</xliff:g> ไหม"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"แทนที่แอปนี้ด้วยเวอร์ชันเริ่มต้นไหม ระบบจะนำข้อมูลทั้งหมดออก"</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"แทนที่แอปนี้ด้วยเวอร์ชันเริ่มต้นไหม ระบบจะนำข้อมูลทั้งหมดออก วิธีนี้ส่งผลต่อผู้ใช้ทุกคนที่ใช้อุปกรณ์เครื่องนี้ รวมทั้งผู้ที่มีโปรไฟล์งาน"</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"กำลังเรียกใช้การถอนการติดตั้ง"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"การถอนการติดตั้งที่ล้มเหลว"</string>
- <string name="uninstalling" msgid="5556217435895938250">"กำลังถอนการติดตั้ง..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"กำลังถอนการติดตั้ง <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"ถอนการติดตั้งเสร็จแล้ว"</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"ถอนการติดตั้ง <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> แล้ว"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"ถอนการติดตั้งไม่สำเร็จ"</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"การถอนการติดตั้ง <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ไม่สำเร็จ"</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"ไม่สามารถถอนการติดตั้งแอปผู้ดูแลระบบอุปกรณ์ที่มีการใช้งาน"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"ไม่สามารถถอนการติดตั้งแอปผู้ดูแลระบบอุปกรณ์ที่มีการใช้งานสำหรับ <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"แอปนี้จำเป็นสำหรับผู้ใช้หรือโปรไฟล์บางส่วน และถอนการติดตั้งไปแล้วสำหรับส่วนอื่น"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"แอปนี้จำเป็นสำหรับโปรไฟล์ของคุณและไม่สามารถถอนการติดตั้งได้"</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"ผู้ดูแลระบบอุปกรณ์กำหนดให้ใช้แอปนี้ และไม่สามารถถอนการติดตั้งได้"</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"จัดการแอปผู้ดูแลระบบอุปกรณ์"</string>
- <string name="manage_users" msgid="3125018886835668847">"จัดการผู้ใช้"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"ไม่สามารถถอดการติดตั้ง <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"พบปัญหาในการแยกวิเคราะห์แพ็กเกจ"</string>
- <string name="newPerms" msgid="6039428254474104210">"ใหม่"</string>
- <string name="allPerms" msgid="1024385515840703981">"ทั้งหมด"</string>
- <string name="privacyPerms" msgid="1850527049572617">"ข้อมูลส่วนบุคคล"</string>
- <string name="devicePerms" msgid="6733560207731294504">"การเข้าถึงอุปกรณ์"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"การอัปเดตนี้ไม่จำเป็นต้องมีการอนุญาตใหม่"</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"คุณต้องการให้อนุญาตรายการต่อไปนี้หรือไม่ ระบบจะให้สิทธิ์การเข้าถึงแก่"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"ปฏิเสธ"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"ข้อมูลเพิ่มเติม"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"ยืนยันการปฏิเสธ"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"อนุญาตให้ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>ไหม"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"ปิดใช้ <xliff:g id="COUNT">%1$d</xliff:g> สิทธิ์"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"ปิดใช้สิทธิ์ทั้งหมด"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"ไม่มีการปิดใช้สิทธิ์"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"อนุญาต"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"แอป"</string>
- <string name="app_permissions" msgid="3146758905824597178">"สิทธิ์ของแอป"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"ไม่ต้องถามอีก"</string>
- <string name="no_permissions" msgid="3210542466245591574">"ไม่มีสิทธิ์"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"สิทธิ์เพิ่มเติม"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"ตัวควบคุมสิทธิ์"</string>
+ <string name="ok" msgid="4417794827535157922">"ตกลง"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"สิทธิ์"</string>
+ <string name="cancel" msgid="7279939269964834974">"ยกเลิก"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"ไม่พบแอปพลิเคชัน"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"ปฏิเสธ"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"ปฏิเสธและไม่ต้องถามอีก"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"ข้อมูลเพิ่มเติม"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"ปฏิเสธอยู่ต่อไป"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"อนุญาตให้ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>ไหม"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"อนุญาตให้ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>ทุกครั้งใช่ไหม"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"ขณะใช้แอปเท่านั้น"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"ได้เสมอ"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"ปฏิเสธและไม่ต้องถามอีก"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"ปิดใช้ <xliff:g id="COUNT">%1$d</xliff:g> สิทธิ์"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"ปิดใช้สิทธิ์ทั้งหมด"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"ไม่มีการปิดใช้สิทธิ์"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"อนุญาต"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"อนุญาตตลอด"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"อนุญาตเมื่อมีการใช้แอปเท่านั้น"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"แอป"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"สิทธิ์ของแอป"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"เครื่องมือจัดการสิทธิ์"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"ไม่ต้องถามอีก"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"ไม่มีสิทธิ์"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"สิทธิ์เพิ่มเติม"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"เปิดข้อมูลแอป"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"แอปนี้ออกแบบมาเพื่อ Android เวอร์ชันเก่า การปฏิเสธสิทธิ์อาจทำให้แอปไม่ทำงานตามที่ต้องการอีกต่อไป"</string>
- <string name="default_permission_description" msgid="4992892207044156668">"ดำเนินการทำงานที่ไม่รู้จัก"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"อนุญาตแล้ว <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="6773743421743728921">"แสดงระบบ"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"ซ่อนระบบ"</string>
- <string name="permission_title" msgid="6495415273398916381">"สิทธิ์ในการใช้ <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"ไม่มีแอป"</string>
- <string name="location_settings" msgid="1774875730854491297">"การตั้งค่าตำแหน่ง"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> เป็นผู้ให้บริการตำแหน่งสำหรับอุปกรณ์นี้ คุณสามารถแก้ไขสิทธิ์เข้าถึงตำแหน่งได้จากการตั้งค่าตำแหน่ง"</string>
- <string name="system_warning" msgid="7103819124542305179">"หากคุณปฏิเสธสิทธิ์นี้ ฟีเจอร์พื้นฐานของอุปกรณ์อาจไม่ทำงานตามที่ควรจะเป็นอีกต่อไป"</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"บังคับใช้โดยนโยบาย"</string>
- <string name="loading" msgid="7811651799620593731">"กำลังโหลด…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"สิทธิ์ทั้งหมด"</string>
- <string name="other_permissions" msgid="2016192512386091933">"ความสามารถอื่นๆ ของแอป"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"คำขอสิทธิ์"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"ตรวจพบการวางซ้อนหน้าจอ"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"ในการเปลี่ยนแปลงการตั้งค่าสิทธิ์นี้ ก่อนอื่น คุณต้องปิดการวางซ้อนหน้าจอที่การตั้งค่า > แอป"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"เปิดการตั้งค่า"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"ไม่สามารถติดตั้ง/ถอนการติดตั้งบน Wear"</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"อัปเดต <xliff:g id="APP_NAME_0">%1$s</xliff:g> แล้ว อนุญาตให้ <xliff:g id="APP_NAME_1">%1$s</xliff:g> เข้าถึงข้อมูลต่อไปนี้ใช่ไหม"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"โปรดเลือกข้อมูลที่อนุญาตให้ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> เข้าถึง"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"อัปเดต <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> แล้ว โปรดเลือกข้อมูลที่อนุญาตให้แอปนี้เข้าถึง"</string>
- <string name="review_button_cancel" msgid="957906817733578877">"ยกเลิก"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"ต่อไป"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"สิทธิ์ใหม่"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"สิทธิ์ปัจจุบัน"</string>
- <string name="message_staging" msgid="6151794817691100003">"กำลังปรับสภาพแวดล้อมของแอป…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"ไม่ทราบ"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"เพื่อความปลอดภัย ไม่อนุญาตให้ติดตั้งแอปที่ไม่รู้จักจากแหล่งที่มานี้ในแท็บเล็ต"</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"เพื่อความปลอดภัย ไม่อนุญาตให้ติดตั้งแอปที่ไม่รู้จักจากแหล่งที่มานี้ในทีวี"</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"เพื่อความปลอดภัย ไม่อนุญาตให้ติดตั้งแอปที่ไม่รู้จักจากแหล่งที่มานี้ในโทรศัพท์"</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"โทรศัพท์และข้อมูลส่วนบุคคลของคุณมีความเสี่ยงมากขึ้นที่จะถูกโจมตีจากแอปที่ไม่รู้จัก การติดตั้งแอปนี้เป็นการยอมรับว่าคุณจะรับผิดชอบความเสียหายต่อเครื่องโทรศัพท์หรือการสูญเสียข้อมูลที่อาจเกิดจากการใช้งานแอปดังกล่าว"</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"แท็บเล็ตและข้อมูลส่วนบุคคลของคุณมีความเสี่ยงมากขึ้นที่จะถูกโจมตีจากแอปที่ไม่รู้จัก การติดตั้งแอปนี้เป็นการยอมรับว่าคุณจะรับผิดชอบความเสียหายต่อเครื่องแท็บเล็ตหรือการสูญเสียข้อมูลที่อาจเกิดจากการใช้งานแอปดังกล่าว"</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"ทีวีและข้อมูลส่วนบุคคลของคุณมีความเสี่ยงมากขึ้นที่จะถูกโจมตีจากแอปที่ไม่รู้จัก การติดตั้งแอปนี้เป็นการยอมรับว่าคุณจะรับผิดชอบความเสียหายต่อเครื่องทีวีหรือการสูญเสียข้อมูลที่อาจเกิดจากการใช้งานแอปดังกล่าว"</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"ต่อไป"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"การตั้งค่า"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"กำลังติดตั้ง/ถอนการติดตั้งแอป Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"แอปนี้ออกแบบมาเพื่อ Android เวอร์ชันเก่า การปฏิเสธสิทธิ์อาจทำให้แอปไม่ทำงานตามที่ต้องการอีกต่อไป"</string>
+ <string name="default_permission_description" msgid="692254823411049573">"ดำเนินการทำงานที่ไม่รู้จัก"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"อนุญาตแล้ว <xliff:g id="COUNT_0">%1$d</xliff:g> จาก <xliff:g id="COUNT_1">%2$d</xliff:g> แอป"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"การใช้งานล่าสุด"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"ดูหน้าแดชบอร์ดของสิทธิ์"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"แสดงระบบ"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"ซ่อนระบบ"</string>
+ <string name="no_apps" msgid="2377153782338039463">"ไม่มีแอป"</string>
+ <string name="location_settings" msgid="547378321761364906">"การตั้งค่าตำแหน่ง"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> เป็นผู้ให้บริการตำแหน่งสำหรับอุปกรณ์นี้ คุณสามารถแก้ไขสิทธิ์เข้าถึงตำแหน่งได้จากการตั้งค่าตำแหน่ง"</string>
+ <string name="system_warning" msgid="6868290533389195836">"หากคุณปฏิเสธสิทธิ์นี้ ฟีเจอร์พื้นฐานของอุปกรณ์อาจไม่ทำงานตามที่ควรจะเป็นอีกต่อไป"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"บังคับใช้โดยนโยบาย"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"ปิดใช้การเข้าถึงในเบื้องหลังโดยนโยบาย"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"เปิดใช้การเข้าถึงในเบื้องหลังโดยนโยบาย"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"เปิดใช้การเข้าถึงในเบื้องหน้าโดยนโยบาย"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"ผู้ดูแลระบบเป็นผู้ควบคุม"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"ปิดใช้การเข้าถึงเมื่ออยู่เบื้องหลังโดยผู้ดูแลระบบ"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"เปิดใช้การเข้าถึงเมื่ออยู่เบื้องหลังโดยผู้ดูแลระบบ"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"เปิดใช้การเข้าถึงเมื่ออยู่เบื้องหน้าโดยผู้ดูแลระบบ"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"สิทธิ์ที่กำหนดโดยระบบ"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"ได้เสมอ"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"ขณะใช้แอปเท่านั้น"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"ไม่เลย"</string>
+ <string name="loading" msgid="323483393167148377">"กำลังโหลด…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"สิทธิ์ทั้งหมด"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"ความสามารถอื่นๆ ของแอป"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"คำขอสิทธิ์"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"ตรวจพบการวางซ้อนหน้าจอ"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"หากต้องการเปลี่ยนแปลงการตั้งค่าสิทธิ์นี้ ก่อนอื่น คุณต้องปิดการวางซ้อนหน้าจอที่การตั้งค่า > แอป"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"เปิดการตั้งค่า"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"ไม่สามารถติดตั้ง/ถอนการติดตั้งบน Wear"</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"โปรดเลือกข้อมูลที่อนุญาตให้ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> เข้าถึง"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"อัปเดต <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> แล้ว โปรดเลือกข้อมูลที่อนุญาตให้แอปนี้เข้าถึง"</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"ยกเลิก"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"ต่อไป"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"สิทธิ์ใหม่"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"สิทธิ์ปัจจุบัน"</string>
+ <string name="message_staging" msgid="641286607664721291">"กำลังปรับสภาพแวดล้อมของแอป…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"ไม่ทราบ"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"หน้าแดชบอร์ด"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">เข้าถึงล่าสุด: การเข้าถึง <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> รายการ (<xliff:g id="NUM_5">%3$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> รายการ (<xliff:g id="NUM_2">%3$s</xliff:g> รายการในพื้นหลัง)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">เข้าถึงล่าสุด: การเข้าถึง <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> รายการ\nระยะเวลา: <xliff:g id="TIME_5">%3$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> รายการ\nระยะเวลา: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">เข้าถึงล่าสุด: การเข้าถึง <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> รายการ (<xliff:g id="NUM_6">%3$s</xliff:g> รายการในพื้นหลัง)\nระยะเวลา: <xliff:g id="TIME_7">%3$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> รายการ (<xliff:g id="NUM_2">%3$s</xliff:g> รายการในพื้นหลัง)\nระยะเวลา: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"สิทธิ์ใดก็ได้"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"ทุกเวลา"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"7 วันที่ผ่านมา"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"24 ชั่วโมงที่ผ่านมา"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"1 ชั่วโมงที่ผ่านมา"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"15 นาทีที่ผ่านมา"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"1 นาทีที่ผ่านมา"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"ไม่มีการใช้สิทธิ์"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"เข้าถึงได้ทุกเมื่อ"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"การเข้าถึงในช่วง 7 วันที่ผ่านมา"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"เข้าถึงในช่วง 24 ชั่วโมงที่ผ่านมา"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"การเข้าถึงในชั่วโมงที่ผ่านมา"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"การเข้าถึงในช่วง 15 นาทีที่ผ่านมา"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"การเข้าถึงใน 1 นาทีที่ผ่านมา"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"การใช้สิทธิ์สูงสุดในทุกเวลา"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"การใช้สิทธิ์สูงสุดในช่วง 7 วันที่ผ่านมา"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"การใช้สิทธิ์สูงสุดในช่วง 24 ชั่วโมงที่ผ่านมา"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"การใช้สิทธิ์สูงสุดในช่วง 1 ชั่วโมงที่ผ่านมา"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"การใช้สิทธิ์สูงสุดในช่วง 15 นาทีที่ผ่านมา"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"การใช้สิทธิ์สูงสุดในช่วง 1 นาทีที่ผ่านมา"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"แอป"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"กรองตาม: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"นำตัวกรองออก"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"กรองตาม"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"กรองตามสิทธิ์"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"สิทธิ์ที่ใช้มากที่สุด"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"การเข้าถึงมากที่สุด"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"ล่าสุด"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"รีเฟรช"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"การใช้สิทธิ์ของแอป"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"เข้าถึง: <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="4040424337831328212">"เข้าถึง: <xliff:g id="NUM">%1$s</xliff:g> ครั้ง ใช้ล่าสุดเมื่อ <xliff:g id="TIME">%2$s</xliff:g>ที่ผ่านมา"</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"อนุญาต"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"อนุญาตตลอด"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"อนุญาตเมื่อมีการใช้แอปเท่านั้น"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"ปฏิเสธ"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"สิทธิ์เกี่ยวกับ<xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"สิทธิ์การเข้าถึง<xliff:g id="PERM">%1$s</xliff:g>ของ <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> เข้าถึง<xliff:g id="PERM">%2$s</xliff:g>ของคุณเมื่อ <xliff:g id="TIME">%3$s</xliff:g> ที่ผ่านมา"</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> ไม่ได้เข้าถึง <xliff:g id="PERM">%2$s</xliff:g> ของคุณ"</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"ดูรายละเอียดการใช้สิทธิ์"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"เข้าถึงล่าสุด: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"ไม่เคยเข้าถึง"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"ได้รับอนุญาตแล้ว"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"อนุญาตขณะใช้งานอยู่เท่านั้น"</string>
+ <string name="denied_header" msgid="2277998574238617699">"ถูกปฏิเสธ"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"ดูการใช้งานโดยละเอียด"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> วัน</item>
+ <item quantity="one">1 วัน</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ชั่วโมง</item>
+ <item quantity="one">1 ชั่วโมง</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> นาที</item>
+ <item quantity="one">1 นาที</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> วินาที</item>
+ <item quantity="one">1 วินาที</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"ใช้ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> เป็น<xliff:g id="ROLE_NAME">%2$s</xliff:g> ไหม"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"ใช้ <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> แทนที่ <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> เป็น<xliff:g id="ROLE_NAME">%2$s</xliff:g> ไหม"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"การช่วยเตือนเกี่ยวกับสิทธิ์"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> ใช้ตำแหน่งของคุณ"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"แอปนี้เข้าถึงตำแหน่งของคุณได้ตลอดเวลา แตะเพื่อเปลี่ยน"</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"เมื่อมีการใช้แอปเท่านั้น"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"ไม่ได้ให้สิทธิ์ใดเลย"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"ไม่ได้ปฏิเสธสิทธิ์ใดเลย"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"ไม่ได้อนุญาตแอปใดเลย"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"ไม่ได้ปฏิเสธแอปใดเลย"</string>
+ <string name="launch_app" msgid="5641437562665039291">"เปิด"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"ถอนการติดตั้ง"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"บังคับให้หยุด"</string>
+ <string name="settings" msgid="2884124136779508907">"การตั้งค่า"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> มีสิทธิ์เข้าถึงอุปกรณ์ได้โดยสมบูรณ์"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"บริการช่วยเหลือพิเศษ <xliff:g id="NUM_SERVICES">%s</xliff:g> รายการมีสิทธิ์เข้าถึงอุปกรณ์ได้โดยสมบูรณ์"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> จะดูหน้าจอ การทำงาน และอินพุตของคุณได้ รวมถึงดำเนินการต่างๆ และควบคุมหน้าจอ"</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"บริการเหล่านี้จะดูหน้าจอ การทำงาน และอินพุตของคุณได้ รวมถึงดำเนินการต่างๆ และควบคุมหน้าจอ"</string>
+ <string name="default_apps" msgid="8554530939151957828">"แอปเริ่มต้น"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"ไม่มีแอปเริ่มต้น"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"ค่าเริ่มต้นสำหรับงาน"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"ไม่มี"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"ไม่มีแอป"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"สิทธิ์เข้าถึงพิเศษของแอป"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"ไม่มีสิทธิ์เข้าถึงพิเศษของแอป"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"ไม่มีแอป"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"แอปผู้ช่วย"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"แอปเบราว์เซอร์"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"แอปโทรศัพท์"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"แอป SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"แอปฉุกเฉิน"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"แอปหน้าแรก"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"แอปเพลง"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"แอปแกลเลอรี"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"แอปโทรศัพท์ในโหมดรถยนต์"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"แอปเปลี่ยนเส้นทางสายเรียกเข้า"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"แอปสกรีนสายเรียกเข้า"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"แอปที่ใช้ร่วมกับการโทร"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"แอป Car Projection"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"ไม่รองรับโปรไฟล์งาน"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"หมายเหตุ: หากคุณรีสตาร์ทอุปกรณ์และตั้งการล็อกหน้าจอไว้ แอปนี้จะเริ่มทำงานไม่ได้จนกว่าคุณจะปลดล็อกอุปกรณ์"</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Assistant จะอ่านข้อมูลเกี่ยวกับแอปที่ใช้งานอยู่ในระบบของคุณได้ รวมถึงข้อมูลที่ปรากฏบนหน้าจอหรือที่เข้าถึงได้ภายในแอป"</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"แชร์ข้อมูลการแก้ไขข้อบกพร่อง"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"แชร์ร์ข้อมูลการแก้ไขข้อบกพร่องโดยละเอียดไหม"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> ต้องการอัปโหลดข้อมูลการแก้ไขข้อบกพร่อง"</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"แชร์ข้อมูลการแก้ไขข้อบกพร่อง"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> กำลังขออัปโหลดรายงานข้อบกพร่องจากอุปกรณ์นี้ซึ่งบันทึกไว้เมื่อวันที่ <xliff:g id="DATE">%2$s</xliff:g> เวลา <xliff:g id="TIME">%3$s</xliff:g> รายงานข้อบกพร่องมีข้อมูลส่วนบุคคลเกี่ยวกับอุปกรณ์ของคุณหรือที่แอปต่างๆ บันทึกไว้ เช่น ชื่อผู้ใช้ ข้อมูลตำแหน่ง ตัวระบุอุปกรณ์ และข้อมูลเครือข่าย โปรดแชร์รายงานข้อบกพร่องกับบุคคลและแอปที่คุณไว้วางใจให้เห็นข้อมูลนี้เท่านั้น อนุญาตให้ <xliff:g id="APP_NAME_1">%4$s</xliff:g> อัปโหลดรายงานข้อบกพร่องไหม"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"อนุญาต"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"ปฏิเสธ"</string>
</resources>
diff --git a/res/values-tl-television/strings.xml b/res/values-tl-television/strings.xml
index df5b98f..95734ed 100644
--- a/res/values-tl-television/strings.xml
+++ b/res/values-tl-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Tanggihan at huwag nang tatanunging muli"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Mababago mo ito sa ibang pagkakataon sa Mga Setting > Mga App"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Ipakita ang mga app ng system"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Mga pahintulot sa app"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Mga pahintulot sa app"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Mga pahintulot sa <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Mga karagdagang pahintulot"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Mga pahintulot sa <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Tanggihan at huwag nang itanong muli"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Mababago mo ito sa ibang pagkakataon sa Mga Setting > Mga App"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Ipakita ang mga app ng system"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Mga pahintulot sa app"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Mga pahintulot sa app"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Mga pahintulot sa <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Mga karagdagang pahintulot"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Mga pahintulot sa <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-tl-watch/strings.xml b/res/values-tl-watch/strings.xml
index 8597451..2f949f9 100644
--- a/res/values-tl-watch/strings.xml
+++ b/res/values-tl-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Tanggihan, huwag nang tatanunging muli"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Ipakita ang mga app ng system"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Hindi mababago"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Oo"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Kanselahin"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Tanggihan, huwag nang itanong"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Ipakita ang mga app ng system"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Hindi mababago"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Oo"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Kanselahin"</string>
</resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 7f029d1..2775b3b 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Installer ng package"</string>
- <string name="next" msgid="3057143178373252333">"Susunod"</string>
- <string name="install" msgid="5896438203900042068">"Mag-install"</string>
- <string name="done" msgid="3889387558374211719">"Tapos na"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Payagan ang app na ito na:"</string>
- <string name="cancel" msgid="8360346460165114585">"Kanselahin"</string>
- <string name="unknown" msgid="4742479012767208045">"Hindi Kilala"</string>
- <string name="installing" msgid="8613631001631998372">"Nag-i-install…"</string>
- <string name="installing_app" msgid="4097935682329028894">"Ini-install ang <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Na-install ang app."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Nais mo bang i-install ang application na ito? Magkakaroon ito ng access sa:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Nais mo bang i-install ang application na ito? Hindi ito nangangailangan ng anumang espesyal na access."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Nais mo bang mag-install ng update sa umiiral nang application na ito? Hindi mawawala ang iyong umiiral nang data. Magkakaroon ng access ang na-update na application sa:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Nais mo bang mag-install ng update sa built-in na application na ito? Hindi mawawala ang iyong umiiral na data. Magkakaroon ng access ang na-update na application sa:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Nais mo bang mag-install ng update sa umiiral na application na ito? Hindi mawawala ang iyong umiiral na data. Hindi ito nangangailangan ng anumang espesyal na access."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Nais mo bang mag-install ng update sa built-in na application na ito? Hindi mawawala ang iyong umiiral na data. Hindi ito nangangailangan ng anumang espesyal na access."</string>
- <string name="install_failed" msgid="6579998651498970899">"Hindi na-install ang app."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Na-block ang pag-install sa package."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Hindi na-install ang app dahil nagkakaproblema ang package sa isang dati nang package."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Hindi na-install ang app dahil hindi tugma ang app sa iyong tablet."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Hindi compatible ang app na ito sa iyong TV."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Hindi na-install ang app dahil hindi tugma ang app sa iyong telepono."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Hindi na-install ang app dahil lumalabas na di-wasto ang package."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Hindi ma-install ang <xliff:g id="APP_NAME">%1$s</xliff:g> sa iyong tablet."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Ang <xliff:g id="APP_NAME">%1$s</xliff:g> ay hindi ma-install sa iyong TV."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Hindi ma-install ang <xliff:g id="APP_NAME">%1$s</xliff:g> sa iyong telepono."</string>
- <string name="launch" msgid="4826921505917605463">"Buksan"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Hindi pinapayagan ng iyong admin ang pag-install ng mga app na nakuha mula sa mga hindi kilalang pinagmulan"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Hindi maaaring mag-install ang user na ito ng mga hindi kilalang app"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Hindi pinapayagan ang user na mag-install ng mga app"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Mga Setting"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Pamahalaan ang apps"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Palitan ang app?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Papalitan ng app na iyong ini-install ang isa pang app.\n\nMase-save ang lahat ng iyong nakaraang data ng user."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Isa itong app ng system.\n\nMase-save ang lahat ng iyong nakaraang data ng user."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Wala ng espasyo"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Hindi ma-install ang <xliff:g id="APP_NAME">%1$s</xliff:g>. Magbakante ng ilang espasyo at subukang muli."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Hindi makita ang app"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Hindi makita ang app sa listahan ng naka-install na apps."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Hindi pinapayagan"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Hindi pinapayagan ang kasalukuyang user na gawin ang pag-uninstall na ito."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Error"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Hindi ma-uninstall ang app."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"I-uninstall ang app"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"I-uninstall ang update"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"Bahagi ang <xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> ng sumusunod na app:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Nais mo bang i-uninstall ang app na ito?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Nais mo bang i-uninstall ang app na ito para sa "<b>"lahat"</b>" ng user? Aalisin ang application at ang data nito mula sa "<b>"lahat"</b>" ng user sa device."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Gusto mo bang i-uninstall ang app na ito para sa user na si <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Gusto mo bang palitan ang app na ito ng factory na bersyon? Maaalis ang lahat ng data."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Gusto mo bang palitan ang app na ito ng factory na bersyon? Maaalis ang lahat ng data. Nakakaapekto ito sa lahat ng user ng device na ito, kasama ang mga may profile sa trabaho."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Mga nasa proseso ng pag-uninstall"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Mga hindi na-uninstall"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Ina-uninstall…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Ina-uninstall ang <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Natapos ang pag-uninstall."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Na-uninstall ang <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Di-matagumpay ang pag-uninstall."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Hindi na-uninstall ang <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Hindi ma-uninstall ang aktibong app ng admin ng device"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Hindi ma-uninstall ang aktibong app ng admin ng device para kay <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Ang app na ito ay kailangan ng ilang user o profile at na-uninstall na ito sa iba pa"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Ang app na ito ay kailangan para sa iyong profile at hindi maaaring i-uninstall."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Kinakailangan app na ito ng administrator ng device mo at di maaari i-uninstall."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Pamahalaan ang mga app ng admin ng device"</string>
- <string name="manage_users" msgid="3125018886835668847">"Pamahalaan ang mga user"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Hindi ma-install ang <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Nagkaroon ng problema sa pag-parse sa package."</string>
- <string name="newPerms" msgid="6039428254474104210">"Bago"</string>
- <string name="allPerms" msgid="1024385515840703981">"Lahat"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Privacy"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Access sa Device"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Walang kinakailangang mga bagong pagpapahintulot ang update na ito."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Gusto mo bang ibigay ang mga sumusunod na pahintulot? Magkakaroon ito ng access sa:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Tanggihan"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Higit pang impormasyon"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Tanggihan pa rin"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> ng <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
- <string name="permission_warning_template" msgid="7332275268559121742">"Payagan ang <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> na <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> ang naka-disable"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"naka-disable lahat"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"walang naka-disable"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Payagan"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Mga App"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Mga pahintulot sa app"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Huwag nang tatanunging muli"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Walang mga pahintulot"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Mga karagdagang pahintulot"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Controller ng pahintulot"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"mga pahintulot"</string>
+ <string name="cancel" msgid="7279939269964834974">"Kanselahin"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Hindi makita ang app"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Tanggihan"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Tanggihan at huwag nang itanong muli"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Higit pang info"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Tanggihan"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Payagan ang <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> na <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Palaging payagan ang <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> na <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Habang ginagamit lang ang app"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Palagi"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Tanggihan at huwag nang itanong muli"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> ang naka-disable"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"naka-disable lahat"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"walang naka-disable"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Payagan"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Payagan sa lahat ng oras"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Payagan lang habang ginagamit ang app"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Mga App"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Mga pahintulot sa app"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Manager ng pahintulot"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Huwag nang itanong muli"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Walang pahintulot"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Mga karagdagang pahintulot"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Buksan ang impormasyon ng app"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> pa</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> pa</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Ang app na ito ay idinisenyo para sa mas lumang bersyon ng Android. Kapag tinanggihan ang pahintulot, maaaring hindi na ito gumana ayon sa inaasahan."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"gumawa ng hindi kilalang pagkilos"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"Pinapayagan ang <xliff:g id="COUNT_0">%1$d</xliff:g> sa <xliff:g id="COUNT_1">%2$d</xliff:g> (na) app"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Ipakita ang system"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Itago ang system"</string>
- <string name="permission_title" msgid="6495415273398916381">"Mga pahintulot sa <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Walang mga app"</string>
- <string name="location_settings" msgid="1774875730854491297">"Mga Setting ng Lokasyon"</string>
- <string name="location_warning" msgid="8778701356292735971">"Ang <xliff:g id="APP_NAME">%1$s</xliff:g> ay isang provider ng mga serbisyo sa lokasyon para sa device na ito. Mababago ang access sa lokasyon mula sa mga setting ng lokasyon."</string>
- <string name="system_warning" msgid="7103819124542305179">"Kung tatanggihan mo ang pahintulot na ito, maaaring hindi na gumana ang mga pangunahing feature ng iyong device gaya ng inaasahan."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Ipinapatupad sa pamamagitan ng patakaran"</string>
- <string name="loading" msgid="7811651799620593731">"Naglo-load..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"Lahat ng pahintulot"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Iba pang mga kakayahan ng app"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Kahilingan sa pagpapahintulot"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Natukoy ang overlay ng screen"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Upang baguhin ang setting ng pahintulot na ito, kailangan mo munang i-off ang overlay ng screen mula sa Mga Setting > Mga App"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Buksan ang mga setting"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Ang mga pagkilos na I-install/I-uninstall ay hindi sinusuportahan sa Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"Na-update na ang <xliff:g id="APP_NAME_0">%1$s</xliff:g>. Papayagan ang <xliff:g id="APP_NAME_1">%1$s</xliff:g> na i-access ang sumusunod?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Piliin kung ano ang papayagang i-access ng <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"Na-update na ang <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>. Piliin kung ano ang papayagang i-access ng app na ito."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Kanselahin"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Magpatuloy"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Mga bagong pahintulot"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Mga kasalukuyang pahintulot"</string>
- <string name="message_staging" msgid="6151794817691100003">"Inihahanda ang app…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Hindi Alam"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Para sa iyong seguridad, hindi pinapayagan ang tablet mo na mag-install ng mga hindi alam na app mula sa pinagmulang ito."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Para sa iyong seguridad, hindi pinapayagan ang TV mo na mag-install ng mga hindi alam na app mula sa pinagmulang ito."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Para sa iyong seguridad, hindi pinapayagan ang telepono mo na mag-install ng mga hindi alam na app mula sa pinagmulang ito."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Mas nanganganib ang iyong telepono at personal na data sa mga pag-atake mula sa mga hindi kilalang app. Sa pamamagitan ng pag-install ng app na ito, sumasang-ayon ka na ikaw ang responsable sa anumang pinsala sa telepono mo o pagkawala ng data na maaaring magresulta mula sa paggamit nito."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Mas nanganganib ang iyong tablet at personal na data sa mga pag-atake mula sa mga hindi kilalang app. Sa pamamagitan ng pag-install ng app na ito, sumasang-ayon ka na ikaw ang responsable sa anumang pinsala sa tablet mo o pagkawala ng data na maaaring magresulta mula sa paggamit nito."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Mas nanganganib ang iyong TV at personal na data sa mga pag-atake mula sa mga hindi kilalang app. Sa pamamagitan ng pag-install ng app na ito, sumasang-ayon ka na ikaw ang responsable sa anumang pinsala sa TV mo o pagkawala ng data na maaaring magresulta mula sa paggamit nito."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Magpatuloy"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Mga Setting"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Ini-install/ina-uninstall ang wear apps"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Ang app na ito ay idinisenyo para sa mas lumang bersyon ng Android. Kapag tinanggihan ang pahintulot, maaaring hindi na ito gumana gaya ng inaasahan."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"magsagawa ng hindi kilalang pagkilos"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"Pinapayagan ang <xliff:g id="COUNT_0">%1$d</xliff:g> sa <xliff:g id="COUNT_1">%2$d</xliff:g> (na) app"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Kamakailang paggamit"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Tingnan ang Dashboard ng Mga Pahintulot"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Ipakita ang system"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Itago ang system"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Walang app"</string>
+ <string name="location_settings" msgid="547378321761364906">"Mga Setting ng Lokasyon"</string>
+ <string name="location_warning" msgid="4687406043150343369">"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="6868290533389195836">"Kung tatanggihan mo ang pahintulot na ito, maaaring hindi na gumana ang mga pangunahing feature ng iyong device gaya ng inaasahan."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Ipinapatupad ayon sa patakaran"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Na-disable ayon sa patakaran: access habang nasa background"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Na-enable ayon sa patakaran: access habang nasa background"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Na-enable ayon sa patakaran: access habang nasa foreground"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Kinokontrol ng admin"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Na-disable ng admin ang access habang nasa background"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Na-enable ng admin ang access habang nasa background"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Na-enable ng admin ang access habang nasa foreground"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"System ang nagtakda ng pahintulot"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Palagi"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Habang ginagamit lang ang app"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Huwag Kailanman"</string>
+ <string name="loading" msgid="323483393167148377">"Naglo-load…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Lahat ng pahintulot"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Iba pang kakayahan ng app"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Kahilingan sa pagpapahintulot"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Natukoy ang screen overlay"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Para baguhin ang setting ng pahintulot na ito, kailangan mo munang i-off ang screen overlay sa Mga Setting > Mga App"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Buksan ang mga setting"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Ang mga pagkilos na I-install/I-uninstall ay hindi sinusuportahan sa Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Piliin kung ano ang papayagang i-access ng <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"Na-update na ang <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>. Piliin kung ano ang papayagang i-access ng app na ito."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Kanselahin"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Magpatuloy"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Mga bagong pahintulot"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Mga kasalukuyang pahintulot"</string>
+ <string name="message_staging" msgid="641286607664721291">"Inihahanda ang app…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Hindi alam"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Dashboard"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">Huling pag-access: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> pag-access (<xliff:g id="NUM_5">%3$s</xliff:g> sa background)</item>
+ <item quantity="other">Huling pag-access: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> na pag-access (<xliff:g id="NUM_5">%3$s</xliff:g> sa background)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">Huling pag-access: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> pag-access\nTagal: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">Huling pag-access: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> na pag-access\nTagal: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">Huling pag-access: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> pag-access (<xliff:g id="NUM_6">%3$s</xliff:g> sa background)\nTagal: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">Huling pag-access: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> na pag-access (<xliff:g id="NUM_6">%3$s</xliff:g> sa background)\nTagal: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Anumang pahintulot"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Anumang oras"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Nakalipas na 7 araw"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Nakalipas na 24 na oras"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Nakalipas na 1 oras"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Nakalipas na 15 minuto"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Nakalipas na 1 minuto"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Walang paggamit ng pahintulot"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Pag-access anumang oras"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Pag-access sa huling 7 araw"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Pag-access sa huling 24 na oras"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Pag-access sa nakalipas na oras"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Pag-access sa nakalipas na 15 minuto"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Pag-access sa nakalipas na 1 minuto"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Pinakamadalas gamiting pahintulot anumang oras"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Pinakamadalas gamiting pahintulot sa huling 7 araw"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Pinakamadalas gamiting pahintulot, huling 24 oras"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Pinakamadalas gamiting pahintulot sa huling 1 oras"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Pinakamadalas gamiting pahintulot sa huling 15 min"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Pinakamadalas gamiting pahintulot sa huling 1 oras"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Mga App"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Na-filter ng: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Alisin ang filter"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"I-filter ayon sa"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"I-filter ayon sa mga pahintulot"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Pinakamaraming pahintulot"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Pinakamaraming pag-access"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Kamakailan Lang"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"I-refresh"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Paggamit ng pahintulot sa app"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"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>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Payagan"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Payagan sa lahat ng oras"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Payagan lang habang ginagamit ang app"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Tanggihan"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> na pahintulot"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="PERM">%1$s</xliff:g> na access para sa <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"Na-access ng <xliff:g id="APP">%1$s</xliff:g> ang iyong <xliff:g id="PERM">%2$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g> ang nakalipas."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"Hindi na-access ng <xliff:g id="APP">%1$s</xliff:g> ang iyong <xliff:g id="PERM">%2$s</xliff:g>."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Tingnan ang detalyadong paggamit sa mga pahintulot"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Huling na-access: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Hindi na-access kahit kailan"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Pinapayagan"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Pinapayagan lang habang ginagamit"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Tinanggihan"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Tingnan ang detalyadong paggamit"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <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="seconds" formatted="false" msgid="1632909606956324957">
+ <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="role_request_message_add" msgid="1977772335648650272">"Gamitin ang <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> bilang iyong <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Gamitin ang <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> sa halip na ang <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> bilang iyong <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Mga paalala sa pahintulot"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"Ginagamit ng <xliff:g id="APP_NAME">%s</xliff:g> ang iyong lokasyon"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Maa-access ng app na ito ang iyong lokasyon anumang oras. I-tap para baguhin."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Habang ginagamit lang ang app"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Walang pinayagang pahintulot"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Walang tinanggihang pahintulot"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Walang pinayagang app"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Walang tinanggihang app"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Buksan"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"I-uninstall"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Sapilitang ihinto"</string>
+ <string name="settings" msgid="2884124136779508907">"Mga Setting"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"May kumpletong access ang <xliff:g id="SERVICE_NAME">%s</xliff:g> sa iyong device"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> (na) serbisyo sa pagiging naa-access ang may kumpletong access sa iyong device"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"Magagawa ng <xliff:g id="SERVICE_NAME">%s</xliff:g> na tingnan ang iyong screen, mga pagkilos, at mga input, magsagawa ng mga pagkilos, at kontrolin ang display."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Magagawa ng mga serbisyong ito na tingnan ang iyong screen, mga pagkilos, at mga input, magsagawa ng mga pagkilos, at kontrolin ang display."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Mga default na app"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Walang default na app"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Default para sa trabaho"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Wala"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Walang app"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Espesyal na app access"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Walang espesyal na app access"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Walang app"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Assist app"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Browser app"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Phone app"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS app"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Emergency app"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"App sa home"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Music app"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Gallery app"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"App na telepono ng car mode"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"App sa pag-redirect ng tawag"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"App ng pag-screen ng tawag"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Kasamang app sa pagtawag"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Car Projection app"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Hindi sinusuportahan ang profile sa trabaho"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Tandaan: Kung ire-restart mo ang iyong device at may nakatakdang lock ng screen, hindi makakapagsimula ang app na ito hanggang sa i-unlock mo ang iyong device."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Mababasa ng assistant ang impormasyon tungkol sa mga app na ginagamit sa iyong system, kasama ang impormasyong makikita sa screen mo o maa-access sa mga app."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Ibahagi ang Data sa Pag-debug"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Ibahagi ang nakadetalyeng data sa pag-debug?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"Gustong mag-upload ng <xliff:g id="APP_NAME">%1$s</xliff:g> ng impormasyon sa pag-debug."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Ibahagi ang Data sa Pag-debug"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"Hinihiling ng <xliff:g id="APP_NAME_0">%1$s</xliff:g> na mag-upload ng ulat ng bug mula sa device na ito na kinuha noong <xliff:g id="DATE">%2$s</xliff:g> sa ganap na <xliff:g id="TIME">%3$s</xliff:g>. Kabilang sa mga ulat ng bug ang personal na impormasyon tungkol sa iyong device o naka-log ayon sa mga app, halimbawa, mga user name, data ng lokasyon, pagkakakilanlan ng device, at impormasyon ng network. Magbahagi lang ng mga ulat ng bug sa mga tao at app na pinagkakatiwalaan mo ng impormasyong ito. Payagan ang <xliff:g id="APP_NAME_1">%4$s</xliff:g> na mag-upload ng ulat ng bug?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Payagan"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Tanggihan"</string>
</resources>
diff --git a/res/values-tr-television/strings.xml b/res/values-tr-television/strings.xml
index 7ed0a68..47abff3 100644
--- a/res/values-tr-television/strings.xml
+++ b/res/values-tr-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Reddet ve bir daha sorma"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Bu ayarı daha sonra Ayarlar > Uygulamalar\'dan değiştirebilirsiniz"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Sistem uygulamalarını göster"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Uygulama izinleri"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Uygulama izinleri"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> izinleri"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Ek izinler"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> izinleri"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Reddet ve bir daha sorma"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Bu ayarı daha sonra Ayarlar > Uygulamalar\'dan değiştirebilirsiniz"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Sistem uygulamalarını gösterme"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Uygulama izinleri"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Uygulama izinleri"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> izinleri"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Ek izinler"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> izinleri"</string>
</resources>
diff --git a/res/values-tr-watch/strings.xml b/res/values-tr-watch/strings.xml
index fbc5b93..fad3840 100644
--- a/res/values-tr-watch/strings.xml
+++ b/res/values-tr-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Reddet, bir daha sorma"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Sistem uygulamalarını göster"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Değiştirilemez"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Evet"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"İptal"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Reddet, bir daha sorma"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Sistem uygulamalarını gösterme"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Değiştirilemez"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Evet"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"İptal"</string>
</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 0b58c90..7c345f0 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Paket yükleyici"</string>
- <string name="next" msgid="3057143178373252333">"Sonraki"</string>
- <string name="install" msgid="5896438203900042068">"Yükle"</string>
- <string name="done" msgid="3889387558374211719">"Bitti"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Bu uygulamaya şu izni ver:"</string>
- <string name="cancel" msgid="8360346460165114585">"İptal"</string>
- <string name="unknown" msgid="4742479012767208045">"Bilinmiyor"</string>
- <string name="installing" msgid="8613631001631998372">"Yükleniyor…"</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> yükleniyor…"</string>
- <string name="install_done" msgid="3682715442154357097">"Uygulama yüklendi."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Bu uygulamayı yüklemek istiyor musunuz? Uygulama şunlara erişebilecektir:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Bu uygulamayı yüklemek istiyor musunuz? Herhangi bir özel erişim gerektirmez."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Bu mevcut uygulamaya ait bir güncellemeyi yüklemek istiyor musunuz? Mevcut verileriniz silinmeyecektir. Güncellenen uygulama şunlara erişebilecektir:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Bu yerleşik uygulamaya ait bir güncellemeyi yüklemek istiyor musunuz? Mevcut verileriniz silinmeyecektir. Güncellenen uygulama şunlara erişebilecektir:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Bu mevcut uygulamaya ait bir güncellemeyi yüklemek istiyor musunuz? Mevcut verileriniz kaybolacaktır. Herhangi bir özel erişim gerektirmez."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Bu yerleşik uygulamaya ait bir güncellemeyi yüklemek istiyor musunuz? Mevcut verileriniz kaybolacaktır. Herhangi bir özel erişim gerektirmez."</string>
- <string name="install_failed" msgid="6579998651498970899">"Uygulama yüklenmedi."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Paketin yüklemesi engellendi."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Paket, mevcut bir paketle çakıştığından uygulama yüklenemedi."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Tabletinizle uyumlu olmadığından uygulama yüklenemedi."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Bu uygulama TV\'niz ile uyumlu değil."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Telefonunuzla uyumlu olmadığından uygulama yüklenemedi."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Paket geçersiz göründüğünden uygulama yüklenemedi."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> bu tabletinize yüklenemedi."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> TV\'nize yüklenemedi."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> bu telefonunuza yüklenemedi."</string>
- <string name="launch" msgid="4826921505917605463">"Aç"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Yöneticiniz, bilinmeyen kaynaklardan edinilen uygulamaların yüklenmesine izin vermiyor"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Bilinmeyen uygulamalar bu kullanıcı tarafından yüklenemez"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Bu kullanıcının uygulama yüklemesine izin verilmiyor"</string>
- <string name="ok" msgid="3468756155452870475">"Tamam"</string>
- <string name="settings" msgid="6743583734099755409">"Ayarlar"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Uygulamaları yönet"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Uygulama değiştirilsin mi?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Yüklemekte olduğunuz uygulama, başka bir uygulamanın yerini alacak.\n\nÖnceki kullanıcı verileriniz kaydedilecektir."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Bu bir sistem uygulamasıdır.\n\nÖnceki tüm kullanıcı verileriniz kaydedilecektir."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Yer kalmadı"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> yüklenemedi. Boş alan açın ve yeniden deneyin."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"Tamam"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Uygulama bulunamadı"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Uygulama, yüklü uygulamalar listesinde bulunamadı."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"İzin verilmiyor"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Geçerli kullanıcının bu yüklemeyi kaldırma izni yok."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Hata"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Uygulamanın yüklemesi kaldırılamadı."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Uygulamayı kaldır"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Güncelleme kaldırılsın mı?"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g>, şu uygulamanın bir parçasıdır:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Bu uygulamanın yüklemesini kaldırmak istiyor musunuz?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Bu uygulamanın yüklemesini "<b>"tüm"</b>" kullanıcılar için kaldırmak istiyor musunuz? Uygulama ve verileri cihazdan "<b>"tüm"</b>" kullanıcılar için kaldırılacaktır."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"<xliff:g id="USERNAME">%1$s</xliff:g> adlı kullanıcı için bu uygulamanın yüklemesini kaldırmak istiyor musunuz?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Bu uygulamayı fabrika sürümüyle değiştirmek istiyor musunuz? Tüm veriler silinecektir."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Bu uygulamayı fabrika sürümüyle değiştirmek istiyor musunuz? Tüm veriler silinecektir. Bu, çalışma profilleri olan kullanıcılar da dahil olmak üzere cihazı kullanan tüm kullanıcıları etkiler."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Devam eden yükleme kaldırma işlemleri"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Başarısız yükleme kaldırma işlemleri"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Kaldırılıyor…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> uygulamasının yüklemesi kaldırılıyor…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Kaldırma işlemi tamamlandı."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> uygulamasının yüklemesi kaldırıldı"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Yükleme kaldırılamadı."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> uygulamasının yüklemesi kaldırılamadı."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Etkin cihaz yönetimi uygulamasının yüklemesi kaldırılamıyor"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"<xliff:g id="USERNAME">%1$s</xliff:g> adlı kullanıcı için etkin cihaz yönetimi uygulamasının yüklemesi kaldırılamıyor"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Bu uygulama bazı kullanıcılar veya profiller için gerekli ve diğerleri için uygulamanın yüklemesi kaldırıldı"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Profiliniz için bu uygulama gerekli ve yüklemesi kaldırılamaz."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Bu uygulama, cihazınızın yöneticisi için gereklidir ve yüklemesi kaldırılamaz."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Cihaz yönetimi uygulamalarını yönet"</string>
- <string name="manage_users" msgid="3125018886835668847">"Kullanıcıları yönetme"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> kaldırılamadı."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Paketin ayrıştırılmasında bir sorun oluştu."</string>
- <string name="newPerms" msgid="6039428254474104210">"Yeni"</string>
- <string name="allPerms" msgid="1024385515840703981">"Tümü"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Gizlilik"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Cihaz Erişimi"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Bu güncelleme yeni izin gerektirmiyor."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Aşağıdaki izinleri vermek istiyor musunuz? Şunlara erişebilecektir:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Reddet"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Daha fazla bilgi"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Yine de reddet"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uygulamasına <xliff:g id="ACTION">%2$s</xliff:g> izni verilsin mi?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> izin devre dışı"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"tümü devre dışı"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"hiçbiri devre dışı değil"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"İzin ver"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Uygulamalar"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Uygulama izinleri"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Tekrar sorma"</string>
- <string name="no_permissions" msgid="3210542466245591574">"İzin yok"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Ek izinler"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"İzin denetleyici"</string>
+ <string name="ok" msgid="4417794827535157922">"Tamam"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"izinler"</string>
+ <string name="cancel" msgid="7279939269964834974">"İptal"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Uygulama bulunamadı"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Reddet"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Reddet ve bir daha sorma"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Daha fazla bilgi"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Yine de reddet"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uygulamasına <xliff:g id="ACTION">%2$s</xliff:g> için izin verilsin mi?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> 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="7444689446874060511">"Sadece uygulama kullanılırken"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Her zaman"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Reddet ve bir daha sorma"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> izin devre dışı"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"tümü devre dışı"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"hiçbiri devre dışı değil"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"İzin ver"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Her zaman izin ver"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Yalnızca uygulama kullanılırken izin ver"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Uygulamalar"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Uygulama izinleri"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"İzin yöneticisi"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Tekrar sorma"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"İzin yok"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Ek izinler"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Uygulama bilgilerini aç"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> tane daha</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> tane daha</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Bu uygulama, Android\'in daha eski bir sürümü için tasarlandı. İznin reddedilmesi, uygulamanın bundan sonra amaçlandığı gibi çalışmamasına neden olabilir."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"bilinmeyen bir işlem gerçekleştirme"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"Sistemi göster"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Sistemi gizle"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> izinleri"</string>
- <string name="no_apps" msgid="1965493419005012569">"Uygulama yok"</string>
- <string name="location_settings" msgid="1774875730854491297">"Konum Ayarları"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Bu izni reddederseniz cihazınızın temel özellikleri artık beklendiği gibi çalışmayabilir."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Politika tarafından zorunlu tutuldu"</string>
- <string name="loading" msgid="7811651799620593731">"Yükleniyor..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"Tüm izinler"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Diğer uygulama özellikleri"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"İzin isteği"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Ekran yer paylaşımı tespit edildi"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Bu izin ayarını değiştirmek için ilk olarak Ayarlar > Uygulamalar\'dan ekran yer paylaşımını kapatmanız gerekir"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Ayarları aç"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Yükleme/Yüklemeyi Kaldırma işlemleri Wear\'da desteklenmiyor."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> güncellendi. <xliff:g id="APP_NAME_1">%1$s</xliff:g> uygulamasının aşağıdakilere erişmesine izin verilsin mi?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uygulamasının nelere erişmesine izin vereceğinizi seçin"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> güncellendi. Bu uygulamanın nelere erişmesine izin verileceğini seçin."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"İptal"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Devam"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Yeni izinler"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Geçerli izinler"</string>
- <string name="message_staging" msgid="6151794817691100003">"Uygulama hazırlanıyor…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Bilinmiyor"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Güvenlik nedeniyle tabletinizin bu kaynaktan bilinmeyen uygulamalar yüklemesine izin verilmez."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Güvenlik nedeniyle TV\'nizin bu kaynaktan bilinmeyen uygulamalar yüklemesine izin verilmez."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Güvenlik nedeniyle telefonunuzun bu kaynaktan bilinmeyen uygulamalar yüklemesine izin verilmez."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Telefonunuz ve kişisel verileriniz, bilinmeyen uygulamaların saldırılarına karşı daha savunmasızdır. Bu uygulamayı yükleyerek, uygulama kullanımından dolayı telefonunuzda oluşabilecek hasarın veya uğrayabileceğiniz veri kaybının sorumluluğunu kabul etmiş olursunuz."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Tabletiniz ve kişisel verileriniz, bilinmeyen uygulamaların saldırılarına karşı daha savunmasızdır. Bu uygulamayı yükleyerek, uygulama kullanımından dolayı tabletinizde oluşabilecek hasarın veya uğrayabileceğiniz veri kaybının sorumluluğunu kabul etmiş olursunuz."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"TV\'niz ve kişisel verileriniz, bilinmeyen uygulamaların saldırılarına karşı daha savunmasızdır. Bu uygulamayı yükleyerek, uygulama kullanımından dolayı TV\'nizde oluşabilecek hasarın veya uğrayabileceğiniz veri kaybının sorumluluğunu kabul etmiş olursunuz."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Devam"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Ayarlar"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Wear uyg. yükleme/yüklemesini kaldırma"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Bu uygulama, Android\'in daha eski bir sürümü için tasarlandı. İznin reddedilmesi, uygulamanın bundan sonra amaçlandığı gibi çalışmamasına neden olabilir."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"bilinmeyen bir işlem gerçekleştirme"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="COUNT_1">%2$d</xliff:g> uygulamaya izin veriliyor"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Son kullanım"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"İzin Kontrol Panelini göster"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Sistemi göster"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Sistemi gizle"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Uygulama yok"</string>
+ <string name="location_settings" msgid="547378321761364906">"Konum Ayarları"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Bu izni reddederseniz cihazınızın temel özellikleri artık beklendiği gibi çalışmayabilir."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Politika tarafından zorunlu tutuldu"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Arka planda erişim politika tarafından devre dışı bırakıldı"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Arka planda erişim politika tarafından etkinleştirildi"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Ön planda erişim politika tarafından etkinleştirildi"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Yönetici tarafından kontrol ediliyor"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Arka planda erişim yönetici tarafından devre dışı bırakıldı"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Arka planda erişim yönetici tarafından etkinleştirildi"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Ön planda erişim yönetici tarafından etkinleştirildi"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Sistem tarafından ayarlanan izin"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Her zaman"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Sadece uygulama kullanılırken"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Hiçbir zaman"</string>
+ <string name="loading" msgid="323483393167148377">"Yükleniyor…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Tüm izinler"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Diğer uygulama özellikleri"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"İzin isteği"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Ekran yer paylaşımı tespit edildi"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Bu izin ayarını değiştirmek için ilk olarak Ayarlar > Uygulamalar\'dan ekran yer paylaşımını kapatmanız gerekir"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Ayarları aç"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Yükleme/Yüklemeyi Kaldırma işlemleri Wear\'da desteklenmiyor."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uygulamasının nelere erişmesine izin vereceğinizi seçin"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> güncellendi. Bu uygulamanın nelere erişmesine izin verileceğini seçin."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"İptal"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Devam"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Yeni izinler"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Geçerli izinler"</string>
+ <string name="message_staging" msgid="641286607664721291">"Uygulama hazırlanıyor…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Bilinmiyor"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Kontrol paneli"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Son erişim: <xliff:g id="TIME_3">%1$s</xliff:g> - \n <xliff:g id="NUM_4">%2$s</xliff:g> erişim (arka planda <xliff:g id="NUM_5">%3$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 (arka planda <xliff:g id="NUM_2">%3$s</xliff:g>erişim)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Son erişim: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> erişim\nSüre: <xliff:g id="TIME_5">%3$s</xliff:g></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\nSüre: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Son erişim: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> erişim (arka planda <xliff:g id="NUM_6">%3$s</xliff:g> erişim)\nSüre: <xliff:g id="TIME_7">%3$s</xliff:g></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 (arka planda <xliff:g id="NUM_2">%3$s</xliff:g> erişim)\nSüre: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Tüm izinler"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Her zaman"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Son 7 gün"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Son 24 saat"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Son 1 saat"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Son 15 dakika"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Son 1 dakika"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"İzin kullanılmadı"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"İstediğiniz zaman erişin"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Son 7 gün içindeki erişimler"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Son 24 saat içindeki erişimler"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Son bir saat içindeki erişimler"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Son 15 dakika içindeki erişimler"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Son 1 dakika içindeki erişimler"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Herhangi bir zamanda en çok kullanılan izinler"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Son 7 gün içinde en çok kullanılan izinler"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Son 24 saat içinde en çok kullanılan izinler"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Son 1 saat içinde en çok kullanılan izinler"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Son 15 dakika içinde en çok kullanılan izinler"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Son 1 dakika içinde en çok kullanılan izinler"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Uygulamalar"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtre ölçütü: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Filtreyi kaldır"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtre uygulama ölçütü"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"İzinlere göre filtrele"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"En çok kullanılan izinler"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"En yüksek erişim"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Son erişilenler"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Yenile"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Uygulama izinleri kullanımı"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"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>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"İzin ver"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Her zaman izin ver"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Yalnızca uygulama kullanılırken izin ver"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Reddet"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> izni"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="APP">%2$s</xliff:g> için <xliff:g id="PERM">%1$s</xliff:g> erişimi"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g> önce cihazınızın <xliff:g id="PERM">%2$s</xliff:g> özelliğine erişti."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g>, <xliff:g id="PERM">%2$s</xliff:g> izninize erişmedi."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Ayrıntılı izin kullanımını göster"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Son erişim:<xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Hiç erişilmedi"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"İzin verildi"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Yalnızca kullanımdayken izin verilenler"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Reddedildi"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Ayrıntılı kullanımı göster"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> gün</item>
+ <item quantity="one">1 gün</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> saat</item>
+ <item quantity="one">1 saat</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dakika</item>
+ <item quantity="one">1 dakika</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> saniye</item>
+ <item quantity="one">1 saniye</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uygulaması <xliff:g id="ROLE_NAME">%2$s</xliff:g> olarak kullanılsın mı?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"<xliff:g id="ROLE_NAME">%2$s</xliff:g> olarak <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> yerine <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> kullanılsın mı?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"İzin hatırlatıcılar"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g>, konumunuzu kullanıyor"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Bu uygulama, konumunuza her zaman erişebilir. Değiştirmek için dokunun."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Yalnızca uygulama kullanılırken"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Hiçbir izin verilmedi"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Hiçbir izin reddedilmedi"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Hiçbir uygulamaya izin verilmedi"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Hiçbir uygulama reddedilmedi"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Aç"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Yüklemeyi Kaldır"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Zorla durdur"</string>
+ <string name="settings" msgid="2884124136779508907">"Ayarlar"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> hizmetinin cihazınıza tam erişimi var"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> erişilebilirlik hizmetinin, cihazınıza tam erişimi var"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ekranınızı, işlemlerinizi ve girişlerinizi görebilir, işlemler gerçekleştirebilir ve ekranı kontrol edebilir."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Bu hizmetler ekranınızı, işlemlerinizi ve girişlerinizi görebilir, işlemler gerçekleştirebilir ve ekranı kontrol edebilir."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Varsayılan uygulamalar"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Varsayılan uygulama yok"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"İş için varsayılan"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Yok"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Uygulama yok"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Özel uygulama erişimi"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Özel uygulama erişimi yok"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Uygulama yok"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Yardım uygulaması"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Tarayıcı uygulaması"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Telefon uygulaması"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS uygulaması"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Acil durum uygulaması"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Ana ekran uygulaması"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Müzik uygulaması"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Galeri uygulaması"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Araba modu telefon uygulaması"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Arama yönlendirme uygulaması"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Arama süzme uygulaması"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Arama tamamlayıcı uygulaması"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Car Projection uygulaması"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"İş profili desteklenmiyor"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Not: Cihazınızı yeniden başlatırsanız ve ekran kilidi kullanıyorsanız, cihazınızın kilidini açmadan bu uygulama başlayamaz."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Asistan, ekranınızda görünür olan veya uygulamaların içinden erişilebilen bilgiler dahil olmak üzere sisteminizde kullanılan uygulamalar hakkındaki bilgileri okuyabilecektir."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Hata Ayıklama Verilerini Paylaş"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Ayrıntılı hata ayıklama verileri paylaşılsın mı?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g>, hata ayıklama bilgilerini yüklemek istiyor."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Hata Ayıklama Verilerini Paylaş"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g>, bu cihazda <xliff:g id="DATE">%2$s</xliff:g> saat <xliff:g id="TIME">%3$s</xliff:g> itibarıyla kaydedilen hata raporunu yüklemek istiyor. Hata raporları cihazınızla ilgili veya uygulamalar tarafından günlüğe kaydedilmiş kişisel bilgiler (örneğin kullanıcı adları, konum verisi, cihaz tanımlayıcılar ve ağ bilgileri) içerir. Hata raporlarını yalnızca bu bilgileri verme konusunda güvendiğiniz kişi ve uygulamalarla paylaşın. <xliff:g id="APP_NAME_1">%4$s</xliff:g> uygulamasının hata raporu yüklemesine izin verilsin mi?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"İzin ver"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Reddet"</string>
</resources>
diff --git a/res/values-uk-television/strings.xml b/res/values-uk-television/strings.xml
index f4b002f..a3e85b1 100644
--- a/res/values-uk-television/strings.xml
+++ b/res/values-uk-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Відмовити й більше не запитувати"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Можна змінити згодом у меню \"Налаштування\" > \"Додатки\""</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Показати системні додатки"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Дозволи додатка"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Дозволи додатка"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g>: дозволи"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Додаткові дозволи"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g>: дозволи"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Відмовити й більше не запитувати"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Можна змінити пізніше в меню \"Налаштування\" > \"Додатки\""</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Показати системні додатки"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Дозволи додатка"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Дозволи додатка"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Дозволи додатка <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Додаткові дозволи"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Дозволи додатка <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-uk-watch/strings.xml b/res/values-uk-watch/strings.xml
index e539d83..7dab92b 100644
--- a/res/values-uk-watch/strings.xml
+++ b/res/values-uk-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Відхилити й більше не запитувати"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Показати системні додатки"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Не можна змінити"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Так"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Скасувати"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Відмовити й не запитувати"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Показати системні додатки"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Не можна змінити"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Так"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Скасувати"</string>
</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 02d0a67..fc38349 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,138 +16,233 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Програма встановлення пакета"</string>
- <string name="next" msgid="3057143178373252333">"Далі"</string>
- <string name="install" msgid="5896438203900042068">"Установити"</string>
- <string name="done" msgid="3889387558374211719">"Готово"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Дозволити цій програмі:"</string>
- <string name="cancel" msgid="8360346460165114585">"Скасувати"</string>
- <string name="unknown" msgid="4742479012767208045">"Невідомо"</string>
- <string name="installing" msgid="8613631001631998372">"Встановлення…"</string>
- <string name="installing_app" msgid="4097935682329028894">"Установлюється <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Додаток установлено."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Установити цей додаток? Він отримає такі дозволи:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Установити цей додаток? Йому не потрібні спеціальні дозволи."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Дійсно встановити оновлення для цієї наявної програми? Існуючі дані втрачено не буде. Оновлена програма отримає доступ до:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Дійсно встановити оновлення для цієї вбудованої програми? Існуючі дані втрачено не буде. Оновлена програма отримає доступ до:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Хочете встановити оновлення для наявної програми? Ваші наявні дані не зникнуть. Спеціальний доступ не потрібен."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Хочете встановити оновлення для цієї вбудованої програми? Ваші наявні дані не зникнуть. Спеціальний доступ не потрібен."</string>
- <string name="install_failed" msgid="6579998651498970899">"Додаток не встановлено."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Встановлення пакета заблоковано."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Додаток не встановлено, оскільки пакет конфліктує з наявним пакетом."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Додаток не встановлено, оскільки він несумісний із вашим планшетом."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Цей додаток несумісний із вашим телевізором."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Додаток не встановлено, оскільки він несумісний із вашим телефоном."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Додаток не встановлено, оскільки пакет недійсний."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Програму <xliff:g id="APP_NAME">%1$s</xliff:g> неможливо встановити у вашому планшетному ПК."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Не вдалося встановити додаток <xliff:g id="APP_NAME">%1$s</xliff:g> на ваш телевізор."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Програму <xliff:g id="APP_NAME">%1$s</xliff:g> неможливо встановити у вашому телефоні."</string>
- <string name="launch" msgid="4826921505917605463">"Відкрити"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Ваш адміністратор заборонив установлювати додатки з невідомих джерел"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Цей користувач не може встановлювати невідомі додатки"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Цей користувач не може встановлювати додатки"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Налаштування"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Керувати програмами"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Замінити програму?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Програма, яку ви встановлюєте, замінить іншу програму.\n\nУсі попередні дані користувача буде збережено."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Це системна програма.\n\nУсі попередні дані користувача буде збережено."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Недостат. місця"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Програму <xliff:g id="APP_NAME">%1$s</xliff:g> неможливо встановити. Звільніть місце та повторіть спробу."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Програму не знайдено"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Програму не знайдено в списку встановлених програм."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Заборонено"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Поточний користувач не може видалити цей додаток."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Помилка"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Не вдалося видалити додаток."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Видалити програму"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Видалити оновлення"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"Дія <xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> є частиною такої програми:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Видалити цю програму?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Хочете видалити цю програму для "<b>"всіх"</b>" користувачів? Програму та її дані буде видалено для "<b>"всіх"</b>" користувачів цього пристрою."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Видалити цей додаток для користувача <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Відновити заводську версію цього додатка? Усі дані буде видалено."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Відновити заводську версію цього додатка? Усі дані буде видалено. Це вплине на всіх користувачів цього пристрою, зокрема на користувачів із робочими профілями."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Активні видалення"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Невиконані видалення"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Видалення..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Видалення додатка <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Видалення завершено."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Додаток <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> видалено"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Видалення не здійснено."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Не вдалося видалити додаток <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Не вдається видалити активний додаток адміністратора пристрою"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Не вдається видалити активний додаток адміністратора пристрою для користувача <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Цей додаток потрібен для деяких користувачів чи профілів, але його було видалено для інших"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Цей додаток потрібен для вашого профілю, тому його не можна видалити."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Цей додаток не можна видалити – не дозволяє адміністратор пристрою."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Керувати додатками адміністратора пристрою"</string>
- <string name="manage_users" msgid="3125018886835668847">"Керувати користувачами"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Програму <xliff:g id="APP_NAME">%1$s</xliff:g> неможливо видалити."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Під час аналізу пакету виникла помилка."</string>
- <string name="newPerms" msgid="6039428254474104210">"Нові"</string>
- <string name="allPerms" msgid="1024385515840703981">"Усі"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Конфіденційність"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Доступ до пристрою"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Для цього оновлення не потрібні нові дозволи."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Надати перелічені нижче дозволи? Програма отримає доступ до:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Відхилити"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Докладніше"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Усе одно заборонити"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Дозволити додатку <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> скасовано"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"усі скасовано"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"нічого не скасовано"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Дозволити"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Додатки"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Дозволи додатків"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Не запитувати знову"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Немає дозволів"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Додаткові дозволи"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Контролер дозволів"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"дозволи"</string>
+ <string name="cancel" msgid="7279939269964834974">"Скасувати"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Додаток не знайдено"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Відмовити"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Відмовити й не запитувати"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Докладніше"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Відмовити"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Дозволити додатку <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> таке: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Завжди дозволяти додатку <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> таке: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Лише коли додаток активний"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Завжди"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Відмовити й більше не запитувати"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"скасовано <xliff:g id="COUNT">%1$d</xliff:g>"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"усі скасовано"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"нічого не скасовано"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Надати дозвіл"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Завжди дозволяти"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Дозволяти, лише коли додаток використовується"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Додатки"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Дозволи додатка"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Диспетчер дозволів"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Більше не запитувати"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Немає дозволів"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Додаткові дозволи"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Відкрити інформацію про додаток"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"Цей додаток створено для старішої версії ОС Android. Якщо скасувати дозвіл, він може працювати неналежним чином."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"виконувати невідому дію"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"Додатки з дозволом: <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="6773743421743728921">"Показати системні додатки"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Сховати системні додатки"</string>
- <string name="permission_title" msgid="6495415273398916381">"Дозволи: <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Немає додатків"</string>
- <string name="location_settings" msgid="1774875730854491297">"Налаштування геоданих"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> є постачальником служб локації для цього пристрою. Доступом до місцезнаходження можна керувати в налаштуваннях геоданих."</string>
- <string name="system_warning" msgid="7103819124542305179">"Якщо скасувати цей дозвіл, основні функції вашого пристрою можуть працювати неналежним чином."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Застосовується правилом"</string>
- <string name="loading" msgid="7811651799620593731">"Завантаження…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Усі дозволи"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Інші дозволи додатка"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Запит на дозвіл"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Виявлено накладання на екрані"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Щоб змінити налаштування цього дозволу, спершу вимкніть накладання на екрані в меню \"Налаштування\" > \"Додатки\""</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Відкрити налаштування"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Дії \"установити\" або \"видалити\" не підтримуються на пристроях Android Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> оновлено. Надати додатку <xliff:g id="APP_NAME_1">%1$s</xliff:g> вказані нижче дозволи?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Виберіть, до чого <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> матиме доступ"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> оновлено. Виберіть, до чого цей додаток матиме доступ."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Скасувати"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Продовжити"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Нові дозволи"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Поточні дозволи"</string>
- <string name="message_staging" msgid="6151794817691100003">"Підготовка додатка…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Невідомо"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"З міркувань безпеки на вашому планшеті заборонено встановлювати невідомі додатки з цього джерела."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"З міркувань безпеки на вашому телевізорі заборонено встановлювати невідомі додатки з цього джерела."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"З міркувань безпеки на вашому телефоні заборонено встановлювати невідомі додатки з цього джерела."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Ваш телефон і особисті дані більш уразливі до атак невідомих додатків. Установлюючи цей додаток, ви берете на себе відповідальність за пошкодження телефона чи втрату даних унаслідок використання додатка."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Ваш планшет і особисті дані більш уразливі до атак невідомих додатків. Установлюючи цей додаток, ви берете на себе відповідальність за пошкодження планшета чи втрату даних унаслідок використання додатка."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Ваш телевізор і особисті дані більш уразливі до атак невідомих додатків. Установлюючи цей додаток, ви берете на себе відповідальність за пошкодження телевізора чи втрату даних унаслідок використання додатка."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Продовжити"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Налаштування"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Встановлення або видалення додатків Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Цей додаток створено для старішої версії ОС Android. Якщо скасувати дозвіл, він може працювати неналежним чином."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"виконувати невідому дію"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"Додатки з дозволом: <xliff:g id="COUNT_0">%1$d</xliff:g> з <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Нещодавно використано"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Переглянути панель дозволів"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Показати системні додатки"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Сховати системні додатки"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Немає додатків"</string>
+ <string name="location_settings" msgid="547378321761364906">"Доступ до моїх геоданих"</string>
+ <string name="location_warning" msgid="4687406043150343369">"Додаток <xliff:g id="APP_NAME">%1$s</xliff:g> є постачальником служб локації для цього пристрою. Доступом до місцезнаходження можна керувати в налаштуваннях геоданих."</string>
+ <string name="system_warning" msgid="6868290533389195836">"Якщо ви не надасте цей дозвіл, основні функції пристрою можуть працювати неналежним чином."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Застосовується правилом"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Доступ у фоновому режимі вимкнено правилом"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Доступ у фоновому режимі ввімкнено правилом"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Доступ в активному режимі ввімкнено правилом"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Керує адміністратор"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Адміністратор вимкнув доступ у фоновому режимі"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Адміністратор увімкнув доступ у фоновому режимі"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Адміністратор увімкнув доступ в активному режимі"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Дозвіл надала система"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Завжди"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Лише коли додаток активний"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Ніколи"</string>
+ <string name="loading" msgid="323483393167148377">"Завантаження…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Усі дозволи"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Інші дозволи додатка"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Запит на дозвіл"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Виявлено показ поверх інших вікон"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Щоб змінити налаштування цього дозволу, спершу вимкніть показ додатка поверх інших вікон у меню \"Налаштування\" > \"Додатки\""</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Відкрити налаштування"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Встановлення й видалення не підтримуються на пристроях Android Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Виберіть, до чого додаток <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> матиме доступ"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"Додаток <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> оновлено. Виберіть, до чого він матиме доступ."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Скасувати"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Продовжити"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Нові дозволи"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Поточні дозволи"</string>
+ <string name="message_staging" msgid="641286607664721291">"Підготовка додатка…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Невідомо"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Інформаційна панель"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ <item quantity="many">Останні сеанси доступу: <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">Останні сеанси доступу: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> сеанс (<xliff:g id="NUM_5">%3$s</xliff:g> у фоновому режимі)</item>
+ <item quantity="few">Останні сеанси доступу: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> сеанси (<xliff:g id="NUM_5">%3$s</xliff:g> у фоновому режимі)</item>
+ <item quantity="many">Останні сеанси доступу: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> сеансів (<xliff:g id="NUM_5">%3$s</xliff:g> у фоновому режимі)</item>
+ <item quantity="other">Останні сеанси доступу: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> сеансу (<xliff:g id="NUM_5">%3$s</xliff:g> у фоновому режимі)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">Останні сеанси доступу: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> сеанс\nТривалість: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="few">Останні сеанси доступу: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> сеанси\nТривалість: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="many">Останні сеанси доступу: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> сеансів\nТривалість: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">Останні сеанси доступу: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> сеансу\nТривалість: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">Останні сеанси доступу: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> сеанс (<xliff:g id="NUM_6">%3$s</xliff:g> у фоновому режимі)\nТривалість: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="few">Останні сеанси доступу: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> сеанси (<xliff:g id="NUM_6">%3$s</xliff:g> у фоновому режимі)\nТривалість: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="many">Останні сеанси доступу: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> сеансів (<xliff:g id="NUM_6">%3$s</xliff:g> у фоновому режимі)\nТривалість: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">Останні сеанси доступу: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> сеансу (<xliff:g id="NUM_6">%3$s</xliff:g> у фоновому режимі)\nТривалість: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Будь-який дозвіл"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"У будь-який час"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Останні 7 днів"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Останні 24 години"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Остання година"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Останні 15 хвилин"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Остання хвилина"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Дозволи не використовувалися"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Доступ за весь час"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Доступ за останні 7 днів"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Доступ за останні 24 години"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Доступ за останню годину"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Доступ за останні 15 хвилин"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Доступ за останню хвилину"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Найбільш уживані дозволи за весь час"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Найбільш уживані дозволи за останні 7 днів"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Найбільш уживані дозволи за останні 24 години"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Найбільш уживані дозволи за останню годину"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Найбільш уживані дозволи за останні 15 хвилин"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Найбільш уживані дозволи за останню хвилину"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Додатки"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Відфільтровано за параметром: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Вилучити фільтр"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Фільтр"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Фільтрувати за дозволами"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Найбільше дозволів"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Найбільше сеансів доступу"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Нещодавні сеанси доступу"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Оновити"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Використання дозволів додатка"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"Доступ: <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="4040424337831328212">"Доступ: <xliff:g id="NUM">%1$s</xliff:g> раз. Востаннє використано <xliff:g id="TIME">%2$s</xliff:g> тому."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Дозволити"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Дозволяти завжди"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Дозволяти, лише коли додаток використовується"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Заборонити"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Дозвіл – <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"Доступ (<xliff:g id="PERM">%1$s</xliff:g>) для додатка <xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"Додаток <xliff:g id="APP">%1$s</xliff:g> отримав доступ <xliff:g id="TIME">%3$s</xliff:g> тому (<xliff:g id="PERM">%2$s</xliff:g>)."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> не приймає дозвіл \"<xliff:g id="PERM">%2$s</xliff:g>\"."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Переглянути детальну інформацію про використання дозволів"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Останній сеанс доступу: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Не отримував доступу"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Дозволено"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Дозволено лише за активності додатка"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Відхилено"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Переглянути дані про використання"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <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="hours" formatted="false" msgid="2123927014975877155">
+ <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="minutes" formatted="false" msgid="4331145652577957044">
+ <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="seconds" formatted="false" msgid="1632909606956324957">
+ <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="role_request_message_add" msgid="1977772335648650272">"Чи має <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> працювати як <xliff:g id="ROLE_NAME">%2$s</xliff:g>?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Чи має <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> працювати як <xliff:g id="ROLE_NAME">%2$s</xliff:g> замість додатка <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b>?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Нагадування про дозволи"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> використовує геодані пристрою"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Цей додаток завжди має доступ до геоданих пристрою. Торкніться, щоб змінити це."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Лише коли додаток використовується"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Немає наданих дозволів"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Немає відхилених дозволів"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Немає дозволених додатків"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Немає додатків, дозвіл для яких було відхилено"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Відкрити"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Видалити"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Примусово припинити"</string>
+ <!-- no translation found for settings (2884124136779508907) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_title_single (1613456964930225277) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_title_multiple (1262608280562255761) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_bottom_text_single (6932810943462703517) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_bottom_text_multiple (817809209968536329) -->
+ <skip />
+ <string name="default_apps" msgid="8554530939151957828">"Додатки за умовчанням"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Немає додатків за умовчанням"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Для роботи за умовчанням"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Немає"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Немає додатків"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Спеціальний доступ"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Немає спеціального доступу"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Немає додатків"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Помічник"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Додаток для веб-перегляду"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Додаток Телефон"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Додаток для SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Додаток для екстрених викликів"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Додаток Home"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Додаток Музика"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Додаток Галерея"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Телефонний додаток для режиму авто"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Додаток для переспрямування викликів"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Додаток для керування викликами"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Супутній додаток для викликів"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Додаток для проекції на екран авто"</string>
+ <!-- no translation found for home_missing_work_profile_support (1439466272746259937) -->
+ <skip />
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Примітка. Якщо після перезавантаження ввімкнеться екран блокування, цей додаток не запуститься, доки ви не розблокуєте пристрій."</string>
+ <!-- no translation found for assistant_confirmation_message (4529925223796676824) -->
+ <skip />
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Поділитися даними про налагодження"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Поділитися детальними даними про налагодження?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"Додаток <xliff:g id="APP_NAME">%1$s</xliff:g> хоче завантажити інформацію про налагодження."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Поділитися даними про налагодження"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"Додаток <xliff:g id="APP_NAME_0">%1$s</xliff:g> запитує, чи можна завантажити повідомлення про помилку, створене на цьому пристрої <xliff:g id="TIME">%3$s</xliff:g> <xliff:g id="DATE">%2$s</xliff:g>. Повідомлення про помилки містять особисту інформацію про ваш пристрій або відомості, записані додатками, як-от імена користувачів, місцеположення, ідентифікатори пристроїв та інформацію про мережу. Діліться повідомленнями про помилки лише з тими людьми й додатками, яким довіряєте. Дозволити додатку <xliff:g id="APP_NAME_1">%4$s</xliff:g> завантажити повідомлення про помилку?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Дозволити"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Відмовити"</string>
</resources>
diff --git a/res/values-ur-television/strings.xml b/res/values-ur-television/strings.xml
index 27089dd..623e2f9 100644
--- a/res/values-ur-television/strings.xml
+++ b/res/values-ur-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"انکار کریں اور دوبارہ مت پوچھیں"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"آپ بعد میں ترتیبات > ایپس میں جا کر اسے تبدیل کرسکتے ہیں"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"سسٹم ایپس دکھائیں"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"ایپ کی اجازتیں"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"ایپ کی اجازتیں"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> اجازتیں"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"اضافی اجازتیں"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> اجازتیں"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"انکار کریں اور دوبارہ نہ پوچھیں"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"آپ بعد میں ترتیبات > ایپس میں جا کر اسے تبدیل کر سکتے ہیں"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"سسٹم ایپس دکھائیں"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"ایپ کی اجازتیں"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"ایپ کی اجازتیں"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> اجازتیں"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"اضافی اجازتیں"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> اجازتیں"</string>
</resources>
diff --git a/res/values-ur-watch/strings.xml b/res/values-ur-watch/strings.xml
index 197ac84..3f3c20c 100644
--- a/res/values-ur-watch/strings.xml
+++ b/res/values-ur-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"انکار کریں، دوبارہ مت پوچھیں"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"سسٹم ایپس دکھائیں"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ناقابل تبدیل"</string>
- <string name="generic_yes" msgid="3394094077553763689">"ہاں"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"منسوخ کریں"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"انکار کریں، دوبارہ نہ پوچھیں"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"سسٹم ایپس دکھائیں"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"ناقابل تبدیل"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"ہاں"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"منسوخ کریں"</string>
</resources>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 005fb33..fbd8ab1 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"پیکیج انسٹال کنندہ"</string>
- <string name="next" msgid="3057143178373252333">"اگلا"</string>
- <string name="install" msgid="5896438203900042068">"انسٹال کریں"</string>
- <string name="done" msgid="3889387558374211719">"ہو گیا"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"اس ایپ کو مندرجہ ذیل کی اجازت دیں:"</string>
- <string name="cancel" msgid="8360346460165114585">"منسوخ کریں"</string>
- <string name="unknown" msgid="4742479012767208045">"نامعلوم"</string>
- <string name="installing" msgid="8613631001631998372">"انسٹال کیا جا رہا ہے…"</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> کو انسٹال کیا جا رہا ہے…"</string>
- <string name="install_done" msgid="3682715442154357097">"ایپ انسٹال ہوگئی۔"</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"کیا آپ یہ ایپلیکیشن انسٹال کرنا چاہتے ہیں؟ اس کو مندرجہ ذیل تک رسائی حاصل ہوگی:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"کیا آپ یہ ایپلیکیشن انسٹال کرنا چاہتے ہیں؟ اس کو کوئی خاص رسائی درکار نہیں۔"</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"کیا آپ اس موجودہ ایپلیکیشن میں ایک اپ ڈیٹ انسٹال کرنا چاہتے ہیں؟ آپ کا موجودہ ڈیٹا ضائع نہیں ہوگا۔ اپ ڈیٹ کردہ ایپلیکیشن کو مندرجہ ذیل تک رسائی حاصل ہوگی:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"کیا آپ پہلے سے شامل اس ایپلیکیشن میں ایک اپ ڈیٹ انسٹال کرنا چاہتے ہیں؟ آپ کا موجودہ ڈیٹا ضائع نہیں ہوگا۔ اپ ڈیٹ کردہ ایپلیکیشن کو مندرجہ ذیل تک رسائی حاصل ہوگی:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"کیا آپ اس موجودہ ایپلیکیشن میں ایک اپ ڈیٹ انسٹال کرنا چاہتے ہیں؟ آپ کا موجودہ ڈیٹا ضائع نہیں ہوگا۔ اس کو کوئی خاص رسائی درکار نہیں۔"</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"کیا آپ پہلے سے شامل اس ایپلیکیشن میں ایک اپ ڈیٹ انسٹال کرنا چاہتے ہیں؟ آپ کا موجودہ ڈیٹا ضائع نہیں ہوگا۔ اس کو کوئی خاص رسائی درکار نہیں۔"</string>
- <string name="install_failed" msgid="6579998651498970899">"ایپ انسٹال نہیں ہوئی۔"</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"پیکج کو انسٹال ہونے سے روک دیا گیا۔"</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"ایپ کو پیکج کے بطور انسٹال نہیں کیا گیا کیونکہ پیکج ایک موجودہ پیکیج سے متصادم ہے۔"</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"ایپ انسٹال نہیں ہوئی کیونکہ ایپ آپ کے ٹیبلیٹ کے ساتھ مطابقت پذیر نہیں ہے۔"</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"یہ ایپ آپ کے TV کے ساتھ مطابقت پذیر نہیں ہے۔"</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"ایپ انسٹال نہیں ہوئی کیونکہ ایپ آپ کے فون کے ساتھ مطابقت پذیر نہیں ہے۔"</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"ایپ انسٹال نہیں ہوئی کیونکہ پیکیج غلط معلوم ہوتا ہے۔"</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> کو آپ کے ٹیبلیٹ پر انسٹال نہیں کیا جا سکا۔"</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> کو آپ کے TV پر انسٹال نہیں کیا جا سکا۔"</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> کو آپ کے فون پر انسٹال نہیں کیا جا سکا۔"</string>
- <string name="launch" msgid="4826921505917605463">"کھولیں"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"آپ کا منتظم نامعلوم ذرائع سے اخذ کردہ ایپس کو انسٹال کرنے کی اجازت نہیں دیتا ہے"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"اس صارف کے ذریعے نامعلوم ایپس کو انسٹال نہیں کیا جا سکتا"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"اس صارف کو ایپس انسٹال کرنے کی اجازت نہیں ہے"</string>
- <string name="ok" msgid="3468756155452870475">"ٹھیک ہے"</string>
- <string name="settings" msgid="6743583734099755409">"ترتیبات"</string>
- <string name="manage_applications" msgid="4033876279091996596">"ایپس کا نظم کریں"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"ایپ کو بدلیں؟"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"آپ جو ایپ انسٹال کر رہے ہیں وہ دوسری ایپ کی جگہ لے لے گی۔\n\nآپ کا سبھی پچھلا صارف کا ڈیٹا محفوظ رہے گا۔"</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"یہ ایک سسٹم ایپ ہے۔\n\nآپ کا سبھی پچھلا صارف کا ڈیٹا محفوظ رہے گا۔"</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"جگہ ختم ہو گئی ہے"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> کو انسٹال نہیں کیا جا سکا۔ کچھ جگہ خالی کریں اور دوبارہ کوشش کریں۔"</string>
- <string name="dlg_ok" msgid="6944357727705699232">"ٹھیک ہے"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"ایپ نہیں ملی"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"ایپ انسٹال کردہ ایپس کی فہرست میں نہیں ملی۔"</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"اجازت نہیں ہے"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"موجودہ صارف کو اس ان انسٹالیشن کو سرانجام دینے کی اجازت نہیں ہے۔"</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"خرابی"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"ایپ ان انسٹال نہیں ہو سکی۔"</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"ایپ کو اَن انسٹال کریں"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"اپ ڈیٹ اَن انسٹال کریں"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> درج ذیل ایپ کا حصہ ہے:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"کیا آپ یہ ایپ اَن انسٹال کرنا چاہتے ہیں؟"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"کیا آپ "<b>"سبھی"</b>" صارفین کیلئے یہ ایپ اَن انسٹال کرنا چاہتے ہیں؟ ایپلیکیشن اور اس کا ڈیٹا آلے پر موجود "<b>"سبھی"</b>" صارفین سے ہٹا دیا جائے گا۔"</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"کیا آپ اس ایپ کو صارف <xliff:g id="USERNAME">%1$s</xliff:g> کیلئے اَن انسٹال کرنا چاہتے ہیں؟"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"اس ایپ کو فیکٹری ورژن سے تبدیل کریں؟ تمام ڈیٹا ہٹا دیا جائے گا۔"</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"اس ایپ کو فیکٹری ورژن سے تبدیل کریں؟ تمام ڈیٹا ہٹا دیا جائے گا۔ اس سے اس آلہ کے تمام صارف متاثر ہوں گے بشمول ان کے جن کے پاس دفتری پروفائلز ہیں۔"</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"چل رہے اَن انسٹالس"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"ناکام اَن انسٹالس"</string>
- <string name="uninstalling" msgid="5556217435895938250">"اَن انسٹال ہو رہا ہے…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ان انسٹال ہو رہی ہے…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"اَن انسٹال پورا ہوگیا۔"</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ان انسٹال ہو گیا"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"اَن انسٹال ناکام۔"</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> کو ان انسٹال کرنا کامیاب نہیں ہوا۔"</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"فعال آلہ کے منتظم کی ایپ اَن انسٹال نہیں کر سکتے"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"فعال آلہ کے منتظم کی ایپ <xliff:g id="USERNAME">%1$s</xliff:g> کیلئے اَن انسٹال نہیں کر سکتے"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"یہ ایپ کچھ صارفین اور پروفائلوں کیلئے درکار ہے اور دیگر کیلئے ان انسٹال ہو گئی"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"یہ ایپ آپ کے پروفائل کیلئے درکار ہے اور یہ ان انسٹال نہیں ہو سکتی۔"</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"یہ ایپ آپ کے آلہ کے منتظم کو درکار ہے اور اسے اَن انسٹال نہیں کیا جا سکتا ہے۔"</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"آلہ کے منتظم کی ایپس کا نظم کریں"</string>
- <string name="manage_users" msgid="3125018886835668847">"صارفین کا نظم کریں"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> کو اَن انسٹال نہیں کیا جا سکا۔"</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"پیکیج کو پارس کرنے میں ایک دشواری پیش آگئی۔"</string>
- <string name="newPerms" msgid="6039428254474104210">"نئی"</string>
- <string name="allPerms" msgid="1024385515840703981">"سبھی"</string>
- <string name="privacyPerms" msgid="1850527049572617">"رازداری"</string>
- <string name="devicePerms" msgid="6733560207731294504">"آلہ کی رسائی"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"اس اپ ڈیٹ کو کوئی نئی اجازتیں درکار نہیں۔"</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"کیا آپ مندرجہ ذیل اجازتیں دینا چاہتے ہیں؟ اس سے اس تک رسائی حاصل ہو جائے گی:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"مسترد کریں"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"مزید معلومات"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"بہرصورت انکار کریں"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> کو <xliff:g id="ACTION">%2$s</xliff:g> کی اجازت دیں؟"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> غیر فعال ہو گئیں"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"تمام غیر فعال ہو گئیں"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"کچھ بھی غیر فعال نہیں ہوا"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"اجازت دیں"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"ایپس"</string>
- <string name="app_permissions" msgid="3146758905824597178">"ایپ کی اجازتیں"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"دوبارہ مت پوچھیں"</string>
- <string name="no_permissions" msgid="3210542466245591574">"کوئی اجازتیں نہیں ہیں"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"اضافی اجازتیں"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"اجازت کنٹرولر"</string>
+ <string name="ok" msgid="4417794827535157922">"ٹھیک ہے"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"اجازتیں"</string>
+ <string name="cancel" msgid="7279939269964834974">"منسوخ کریں"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"ایپ نہیں ملی"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"انکار کریں"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"مستردکریں اور دوبارہ نہ پوچھیں"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"مزید معلومات"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"بہرصورت انکار کریں"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> کو <xliff:g id="ACTION">%2$s</xliff:g> کی اجازت دیں؟"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"ہمیشہ <b><xliff:g id="APP_NAME">%1$s</xliff:g><b> کو <xliff:g id="ACTION">%2$s</xliff:g> کی اجازت دیں؟"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"صرف ایپ استعمال کرنے کے دوران"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"ہمیشہ"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"انکار کریں اور دوبارہ نہ پوچھیں"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> غیر فعال ہے"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"سبھی غیر فعال ہیں"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"کوئی بھی غیر فعال نہیں ہے"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"اجازت دیں"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"ہر بار اجازت دیں"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"صرف اسی وقت اجازت دیں جب ایپ استعمال میں ہو"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"ایپس"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"ایپ کی اجازتیں"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"اجازت کا مینیجر"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"دوبارہ نہ پوچھیں"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"کوئی اجازت نہیں ہے"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"اضافی اجازتیں"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"ایپ کی معلومات کھولیں"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"یہ ایپ Android کے ایک پرانے ورژن کیلئے ڈیزائن کی گئی تھی۔ اجازت دینے سے انکار کرنے پر ممکن ہے کہ وہ مزید ٹھیک سے کام نہ کرے۔"</string>
- <string name="default_permission_description" msgid="4992892207044156668">"ایک نامعلوم کارروائی کو انجام دیں"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<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="6773743421743728921">"سسٹم دکھائیں"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"سسٹم چھپائیں"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> اجازتیں"</string>
- <string name="no_apps" msgid="1965493419005012569">"کوئی ایپس نہیں ہیں"</string>
- <string name="location_settings" msgid="1774875730854491297">"مقام کی ترتیبات"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> اس آلہ کیلئے مقام کی سروسز کا فراہم کنندہ ہے۔ مقام کی رسائی میں مقام کی ترتیبات سے ترمیم کی جا سکتی ہے۔"</string>
- <string name="system_warning" msgid="7103819124542305179">"اگرآپ اس اجازت کو مسترد کرتے ہیں تو شاید آپ کے آلہ کی بنیادی خصوصیات ٹھیک سے کام نہ کریں۔"</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"پالیسی کی طرف سے نافذ کردہ"</string>
- <string name="loading" msgid="7811651799620593731">"لوڈ ہورہا ہے…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"تمام اجازاتیں"</string>
- <string name="other_permissions" msgid="2016192512386091933">"دوسری ایپ اہلیتیں"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"اجازت کی درخواست"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"اسکرین اورلے کا پتہ چلا ہے"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"اس اجازت کی ترتیب کو تبدیل کرنے کیلئے آپ کو پہلے ترتیبات > Apps سے سکرین اورلے آف کرنا ہوگا"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"ترتیبات کھولیں"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"\'کاروائیاں انسٹال/ان انسٹال کریں\' Wear پر تعاون یافتہ نہیں ہے۔"</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> اپ ڈیٹ ہو گئی ہے۔ <xliff:g id="APP_NAME_1">%1$s</xliff:g> کو مندرجہ ذیل تک رسائی کی اجازت دیں؟"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"انتخاب کریں کہ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> کو کس تک رسائی کی اجازت دینی ہے"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> اپ ڈیٹ ہو گئی ہے۔ انتخاب کریں کہ اس ایپ کو کس تک رسائی کی اجازت دینی ہے۔"</string>
- <string name="review_button_cancel" msgid="957906817733578877">"منسوخ کریں"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"جاری رکھیں"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"نئی اجازتیں"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"موجودہ اجازتیں"</string>
- <string name="message_staging" msgid="6151794817691100003">"ایپ کی مرحلہ بندی ہو رہی ہے…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"نامعلوم"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"آپ کی سیکیوریٹی کیلئے، آپ کے ٹیبلیٹ کو اس ذریعے سے نامعلوم ایپس انسٹال کرنے کی اجازت نہیں ہے۔"</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"آپ کی سیکیوریٹی کیلئے، آپ کے TV کو اس ذریعے سے نامعلوم ایپس انسٹال کرنے کی اجازت نہیں ہے۔"</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"آپ کی سیکیوریٹی کیلئے، آپ کے فون کو اس ذریعے سے نامعلوم ایپس انسٹال کرنے کی اجازت نہیں ہے۔"</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"آپ کے فون اور ذاتی ڈیٹا کو نامعلوم ایپس کی جانب سے حملے کا زیادہ خطرہ ہے۔ اس ایپ کو انسٹال کر کے، آپ اس بات سے اتفاق کرتے ہیں کہ آپ اس سے اپنے فون کو ہونے والے کسی بھی نقصان یا ڈیٹا کے نقصان کیلئے خود ذمہ دار ہیں۔"</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"آپ کے ٹیبلیٹ اور ذاتی ڈیٹا کو نامعلوم ایپس کی جانب سے حملے کا زیادہ خطرہ ہے۔ اس ایپ کو انسٹال کر کے، آپ اس بات سے اتفاق کرتے ہیں کہ آپ اس سے اپنے ٹیبلیٹ کو ہونے والے کسی بھی نقصان یا ڈیٹا کے نقصان کیلئے خود ذمہ دار ہیں۔"</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"آپ کے TV اور ذاتی ڈیٹا کو نامعلوم ایپس کی جانب سے حملے کا زیادہ خطرہ ہے۔ اس ایپ کو انسٹال کر کے، آپ اس بات سے اتفاق کرتے ہیں کہ آپ اس سے اپنے TV کو ہونے والے کسی بھی نقصان یا ڈیٹا کے نقصان کیلئے خود ذمہ دار ہیں۔"</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"جاری رکھیں"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"ترتیبات"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"wear ایپس کا انسٹال/ان انسٹال کرنا"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"یہ ایپ Android کے ایک پرانے ورژن کیلئے ڈیزائن کی گئی تھی۔ اجازت دینے سے انکار کرنے پر ممکن ہے کہ یہ مزید ٹھیک سے کام نہ کرے۔"</string>
+ <string name="default_permission_description" msgid="692254823411049573">"ایک نامعلوم کارروائی انجام دیں"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_1">%2$d</xliff:g> میں سے <xliff:g id="COUNT_0">%1$d</xliff:g> ایپس کو اجازت دے دی گئی"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"حالیہ استعمال"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"اجازتوں کا ڈیش بورڈ دیکھیں"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"سسٹم دکھائیں"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"سسٹم چھپائیں"</string>
+ <string name="no_apps" msgid="2377153782338039463">"کوئی ایپ نہیں ہے"</string>
+ <string name="location_settings" msgid="547378321761364906">"مقام کی ترتیبات"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g> اس آلہ کیلئے مقام کی سروسز کا فراہم کنندہ ہے۔ مقام کی رسائی میں مقام کی ترتیبات سے ترمیم کی جا سکتی ہے۔"</string>
+ <string name="system_warning" msgid="6868290533389195836">"اگرآپ اس اجازت کو مسترد کرتے ہیں تو شاید آپ کے آلہ کی بنیادی خصوصیات ٹھیک سے کام نہ کریں۔"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"پالیسی کے تحت نافذ کردہ"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"پالیسی کے تحت پس منظر کی رسائی غیر فعال ہو گئی ہے"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"پالیسی کے تحت پس منظر کی رسائی فعال ہو گئی ہے"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"پالیسی کے تحت پیش منظر کی رسائی فعال ہو گئی ہے"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"کنٹرول کردہ بذریعہ منتظم"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"منتظم نے پس منظر کی رسائی غیر فعال کر دی ہے"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"منتظم نے پس منظر کی رسائی فعال کر دی ہے"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"منتظم نے پیش منظر کی رسائی فعال کر دی ہے"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"اجازت سسٹم نے سیٹ کی ہے"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"ہمیشہ"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"صرف ایپ استعمال کرنے کے دوران"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"کبھی نہیں"</string>
+ <string name="loading" msgid="323483393167148377">"لوڈ ہو رہا ہے…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"تمام اجازتیں"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"ایپ کی دوسری اہلیتیں"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"اجازت کی درخواست"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"اسکرین اورلے کا پتا چلا ہے"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"اس اجازت کی ترتیب کو تبدیل کرنے کیلئے آپ کو پہلے ترتیبات > ایپس سے اسکرین اورلے کو آف کرنا ہوگا"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"ترتیبات کھولیں"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"\'کارروائیاں انسٹال/اَن انسٹال کریں\' Wear پر تعاون یافتہ نہیں ہے۔"</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"منتخب کریں کہ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> کو کس چیز تک رسائی کی اجازت دینی ہے"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> اپ ڈیٹ ہو گئی ہے۔ منتخب کریں کہ اس ایپ کو کس تک رسائی کی اجازت دینی ہے۔"</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"منسوخ کریں"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"جاری رکھیں"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"نئی اجازتیں"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"موجودہ اجازتیں"</string>
+ <string name="message_staging" msgid="641286607664721291">"ایپ کی مرحلہ بندی ہو رہی ہے…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"نامعلوم"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"ڈیش بورڈ"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">آخری بار رسائی: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> رسائیاں (<xliff:g id="NUM_5">%3$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> رسائی (<xliff:g id="NUM_2">%3$s</xliff:g> پس منظر میں)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">آخری بار رسائی: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> رسائیوں کی\nمدت: <xliff:g id="TIME_5">%3$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> رسائی کی\nمدت: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">آخری بار رسائی: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> رسائیوں کی (<xliff:g id="NUM_6">%3$s</xliff:g> پس منظر میں)\nمدت:<xliff:g id="TIME_7">%3$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> رسائی (<xliff:g id="NUM_2">%3$s</xliff:g> پس منظر میں)\nمدت: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"کوئی اجازت"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"کسی بھی وقت"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"آخری 7 دن"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"آخری 24 گھنٹے"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"آخری 1 گھنٹہ"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"آخری 15 منٹ"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"آخری 1 منٹ"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"اجازت کا استعمال نہیں ہوا ہے"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"کسی بھی وقت رسائی حاصل کی جا سکتی ہے"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"آخر کے 7 دنوں میں رسائی"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"آخر کے 24 گھنٹے میں رسائی"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"آخر کے گھنٹے میں رسائی"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"آخر کے 15 منٹ میں رسائی"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"آخر کے 1 منٹ میں رسائی حاصل کریں"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"کسی بھی وقت اعلٰی اجازت کا استعمال"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"آخر کے 7 دنوں میں اعلٰی اجازت کا استعمال"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"آخر کے 24 گھنٹے میں اعلٰی اجازت کا استعمال"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"آخر کے 1 گھنٹے میں اعلٰی اجازت کا استعمال"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"آخر کے 15 منٹ میں اعلٰی اجازت کا استعمال"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"آخر کے 1 گھنٹے میں سرفہرست اجازت کا استعمال"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"ایپس"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"فلٹر کردہ بلحاظ: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"فلٹر ہٹائیں"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"فلٹر کریں بہ لحاظ"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"اجازتوں کے لحاظ سے فلٹر کریں"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"زیادہ تر اجازتیں"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"زیادہ تر رسائی"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"حالیہ"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"ریفریش کریں"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"ایپ کی اجازتوں کا استعمال"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"رسائی: <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="4040424337831328212">"رسائی: <xliff:g id="NUM">%1$s</xliff:g> مرتبہ۔ <xliff:g id="TIME">%2$s</xliff:g> پہلے آخری بار استعمال کیا گیا۔"</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"اجازت دیں"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"ہر وقت اجازت دیں"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"صرف اسی وقت اجازت دیں جب ایپ استعمال کی جا رہی ہو"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"مسترد کریں"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> کی اجازت"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="PERM">%1$s</xliff:g> نے <xliff:g id="APP">%2$s</xliff:g> کیلئے رسائی حاصل کی"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> نے <xliff:g id="TIME">%3$s</xliff:g> پہلے <xliff:g id="PERM">%2$s</xliff:g> تک رسائی حاصل کی۔"</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> نے آپ کے <xliff:g id="PERM">%2$s</xliff:g> تک رسائی نہیں کی ہے۔"</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"تفصیلی اجازتوں کا استعمال دیکھیں"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"آخری رسائی: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"کبھی بھی رسائی حاصل نہیں کی"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"اجازت ہے"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"صرف استعمال کے دوران اجازت ہے"</string>
+ <string name="denied_header" msgid="2277998574238617699">"مسترد ہو گئی"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"تفصیلی استعمال دیکھیں"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> دن</item>
+ <item quantity="one">1 دن</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> گھنٹے</item>
+ <item quantity="one">1 گھنٹہ</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> منٹ</item>
+ <item quantity="one">1 منٹ</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> سیکنڈ</item>
+ <item quantity="one">1 سیکنڈ</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"کیا آپ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> کا استعمال اپنے <xliff:g id="ROLE_NAME">%2$s</xliff:g> کے طور پر کرنا چاہتے ہیں؟"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"کیا آپ <b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> کی بجائے <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> کا استعمال اپنے <xliff:g id="ROLE_NAME">%2$s</xliff:g> کے طور پر کرنا چاہتے ہیں؟"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"اجازت کی یاددہانیاں"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> آپ کے مقام کا استعمال کر رہی ہے"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"یہ ایپ ہمیشہ آپ کے مقام تک رسائی حاصل کر سکتی ہے۔ تبدیل کرنے کے لیے تھپتھپائیں۔"</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"صرف اپپ کے زیر استعمال ہونے کے دوران"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"کوئی اجازت نہیں دی گئی"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"کوئی بھی اجازت مسترد نہیں ہے"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"کسی ایپ کو منظوری نہیں ہے"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"کوئی اپپ مسترد نہیں ہے"</string>
+ <string name="launch_app" msgid="5641437562665039291">"کھولیں"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"اَن انسٹال کریں"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"زبردستی روکیں"</string>
+ <string name="settings" msgid="2884124136779508907">"ترتیبات"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> کو آپ کے آلہ تک مکمل رسائی حاصل ہے"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> ایکسیسبیلٹی سروسز کو آپ کے آلہ تک مکمل رسائی حاصل ہے"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> آپ کی اسکرین، کارروائیوں اور ان پٹس کو دیکھ، کارروائیاں کر اور ڈسپلے کو کنٹرول کر سکتی ہے۔"</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"یہ سروسز آپ کی اسکرین، کارروائیوں اور ان پٹس کو دیکھ، کارروائیاں کر اور ڈسپلے کو کنٹرول کر سکتی ہیں۔"</string>
+ <string name="default_apps" msgid="8554530939151957828">"ڈیفالٹ ایپس"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"کوئی ڈیفالٹ ایپ نہیں ہے"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"کام کیلئے ڈیفالٹ"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"کوئی نہیں"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"کوئی ایپس نہیں ہیں"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"خاص ایپ تک رسائی"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"خاص ایپ تک کوئی رسائی نہیں ہے"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"کوئی ایپ نہیں ہے"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"معاون ایپ"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"براؤزر ایپ"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"فون ایپ"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS ایپ"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"ہنگامی ایپ"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"ہوم ایپ"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"موسیقی ایپ"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"گیلری ایپ"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"کار موڈ والی فون ایپ"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"کال ری ڈائریکٹنگ اپپ"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"کال اسکریننگ اپپ"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"ساتھی اپپ برائے کال"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Car Projection ایپ"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"دفتری پروفائل کا تعاون نہیں کرتا ہے"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"نوٹ: اگر آپ اپنے آلہ کو دوبارہ شروع کرتے ہیں اور آپ کے پاس اسکرین لاک کا سیٹ ہے تو یہ ایپ تب تک شروع نہیں ہو سکتی جب تک آپ اپنا آلہ غیر مقفل نہ کر لیں۔"</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"اسسٹنٹ آپ کے سسٹم پر زیر استعمال ایپس کے بارے میں معلومات، بشمول آپ کی اسکرین پر نظر آنے والی یا ایپس کے اندر قابل رسائی معلومات پڑھ سکے گی۔"</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"ڈیبگنگ ڈیٹا کا اشتراک کریں"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"ڈیبگنگ کے تفصیلی ڈیٹا کا اشتراک کریں؟"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> ڈیبگنگ کی معلومات اپ لوڈ کرنا چاہتی ہے۔"</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"ڈیبگنگ ڈیٹا کا اشتراک کریں"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> <xliff:g id="DATE">%2$s</xliff:g> کو <xliff:g id="TIME">%3$s</xliff:g> پر اس آلہ سے لی گئی بگ رپورٹ اپ لوڈ کرنے کی درخواست کر رہی ہے۔ بگ رپورٹس میں آپ کے آلہ کے بارے میں یا ایپس کے ذریعے لاگ کی گئی ذاتی معلومات، جیسے کہ صارف کے نام، مقام کا ڈیٹا، آلہ کے شناخت کاران اور نیٹ ورک کی معلومات شامل ہوتی ہیں۔ صرف ان ہی لوگوں اور ایپس کے ساتھ بگ رپورٹس کا اشتراک کریں جن پر آپ کو اس معلومات کے تعلق سے بھروسہ ہے۔ <xliff:g id="APP_NAME_1">%4$s</xliff:g> کو بگ رپورٹ اپ لوڈ کرنے کی اجازت دیں؟"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"اجازت دیں"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"رَد کریں"</string>
</resources>
diff --git a/res/values-uz-television/strings.xml b/res/values-uz-television/strings.xml
index b86c57f..66d14f4 100644
--- a/res/values-uz-television/strings.xml
+++ b/res/values-uz-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Rad etilsin va boshqa so‘ralmasin"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Siz buni keyinroq Sozlamalar > Ilovalar bo‘limi orqali ham o‘zgartirishingiz mumkin"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Tizim ilovalarini ko‘rsatish"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Ilova uchun ruxsatlar"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Ilova uchun ruxsatlar"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Ruxsatlar (<xliff:g id="PERMISSION">%1$s</xliff:g>)"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Qo‘shimcha ruxsatlar"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Ruxsatlar (<xliff:g id="PERMISSION">%1$s</xliff:g>)"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Rad etilsin va boshqa so‘ralmasin"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Siz buni keyinroq Sozlamalar > Ilovalar bo‘limi orqali ham o‘zgartirishingiz mumkin"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Tizim ilovalarini ko‘rsatish"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Ilovalar uchun ruxsatlar"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Ilovalar uchun ruxsatlar"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> uchun ruxsat"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Qo‘shimcha ruxsatlar"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> uchun ruxsat"</string>
</resources>
diff --git a/res/values-uz-watch/strings.xml b/res/values-uz-watch/strings.xml
index 83f8da7..4ba5143 100644
--- a/res/values-uz-watch/strings.xml
+++ b/res/values-uz-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Rad etilsin va boshqa so‘ralmasin"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Tizim ilovalarini ko‘rsatish"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"O‘zgartirilmaydi"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Ha"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Bekor qilish"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Rad etilsin, yana so‘ralmasin"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Tizim ilovalarini ko‘rsatish"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"O‘zgartirilmaydi"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Ha"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Bekor q-sh"</string>
</resources>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 9266ac6..32cfa0e 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Paket o‘rnatish vositasi"</string>
- <string name="next" msgid="3057143178373252333">"Keyingisi"</string>
- <string name="install" msgid="5896438203900042068">"O‘rnatish"</string>
- <string name="done" msgid="3889387558374211719">"Tayyor"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Ushbu ilovaga quyidagi amallar uchun ruxsat berish:"</string>
- <string name="cancel" msgid="8360346460165114585">"Bekor qilish"</string>
- <string name="unknown" msgid="4742479012767208045">"Noma’lum"</string>
- <string name="installing" msgid="8613631001631998372">"O‘rnatilmoqda…"</string>
- <string name="installing_app" msgid="4097935682329028894">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> o‘rnatilmoqda…"</string>
- <string name="install_done" msgid="3682715442154357097">"Ilova o‘rnatildi."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Bu ilovani o‘rnatmoqchimisiz? U quyidagi ruxsatlarga ega:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Bu ilovani o‘rnatmoqchimisiz? U hech qanday maxsus ruxsat talab qilmaydi."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Bu ilova uchun yangilanishni o‘rnatmoqchimisiz? Yangilanganidan keyin u quyidagi ruxsatlarga ega bo‘ladi:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Bu ilova uchun yangilanishni o‘rnatmoqchimisiz? Yangilanganidan keyin u quyidagi ruxsatlarga ega bo‘ladi:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Ushbu mavjud ilovaga yangilanish o‘rnatilsinmi? Mavjud ma’lumotlaringiz o‘chib ketmaydi. U hech qanday maxsus ruxsat talab qilmaydi."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Ushbu tizim ilovasiga yangilanish o‘rnatilsinmi? Mavjud ma’lumotlaringiz o‘chib ketmaydi. U hech qanday maxsus ruxsat talab qilmaydi."</string>
- <string name="install_failed" msgid="6579998651498970899">"Ilova o‘rnatilmadi."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Paket o‘rnatilishga qarshi bloklangan."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Paket mavjud paket bilan zid kelganligi uchun ilovani o‘rnatib bo‘lmadi."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Ilova planshetingizga mos kelmaganligi uchun uni o‘rnatib bo‘lmadi."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Bu ilova televizoringiz bilan mos emas."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Ilova telefoningizga mos kelmaganligi uchun uni o‘rnatib bo‘lmadi."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Paket yaroqsiz bo‘lganligi uchun ilovani o‘rnatib bo‘lmadi."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"<xliff:g id="APP_NAME">%1$s</xliff:g> planshetingizga o‘rnatilmadi."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> ilovasini televizoringizga o‘rnatib bo‘lmadi."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"<xliff:g id="APP_NAME">%1$s</xliff:g> telefoningizga o‘rnatilmadi."</string>
- <string name="launch" msgid="4826921505917605463">"Ochish"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Administratoringiz begona manbalardan olingan ilovalarni o‘rnatishga ruxsat bermagan"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Notanish ilovalarni bu foydalanuvchi tomonidan o‘rnatib bo‘lmaydi"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Bu foydalanuvchiga ilovalarni o‘rnatish uchun ruxsat berilmagan"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Sozlamalar"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Ilovalarni boshqarish"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Ilova almashtirilsinmi?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Siz o‘rnatayotgan ilova boshqa ilovaning o‘rnini almashtiradi.\n\nBarcha eski ma’lumotlaringiz saqlanib qoladi."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Bu tizim ilovasi.\n\nBarcha eski ma’lumotlaringiz saqlanib qoladi."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Joy qolmadi"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g> o‘rnatilmadi. Xotiradan biroz joy bo‘shating va qaytadan urinib ko‘ring."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Ilova topilmadi"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Ilova o‘rnatilgan ilovalar ro‘yxatidan topilmadi."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Ruxsat berilmagan"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Joriy foydalanuvchiga bu o‘chirishni amalga oshirishi uchun ruxsat berilmagan."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Xato"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Ilovani o‘chirib bo‘lmadi"</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Ilovani o‘chirish"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Yangilanishni o‘chirish"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> quyidagi ilovaning bir qismidir:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Bu ilova o‘chirib tashlansinmi?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Ushbu ilova "<b>"barcha"</b>" foydalanuvchilar uchun o‘chirilsinmi? Ilova va uning ma’lumotlari qurilmadagi "<b>"barcha"</b>" foydalanuvchilardan o‘chib ketadi."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Haqiqatdan ham <xliff:g id="USERNAME">%1$s</xliff:g> foydalanuvchi uchun ushbu ilovani olib tashlamoqchimisiz?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Bu ilova boshlang‘ich versiyasi bilan almashtirilsinmi? Barcha ma’lumotlar o‘chirib tashlanadi."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Bu ilova boshlang‘ich versiyasi bilan almashtirilsinmi? Barcha ma’lumotlar o‘chirib tashlanadi. Bu qurilmaning barcha foydalanuvchilariga, jumladan, ularning ishchi profillariga ham ta’sir qiladi."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Davom etayotganlar"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Amalga oshmaganlar"</string>
- <string name="uninstalling" msgid="5556217435895938250">"O‘chirilmoqda…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> o‘chirilmoqda…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"O‘chirib tashlandi."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> o‘chirib tashlandi"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"O‘chirish muvaffaqiyatsizlikka uchradi."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ilovasini o‘chirib bo‘lmadi."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Faol qurilma administratori ilovasini o‘chirib bo‘lmaydi"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"<xliff:g id="USERNAME">%1$s</xliff:g> profilida faol qurilma administratori ilovasini o‘chirib bo‘lmaydi"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Bu ilova ba’zi foydalanuvchi yoki profillar uchun zarur, boshqalar uchun esa o‘chirib tashlangan"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Bu ilova profilingiz uchun kerak va uni o‘chirib bo‘lmaydi."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Ushbu ilova qurilmangiz ma\'muri tomonidan ishlatiladi, shuning uchun uni olib tashlab bo\'lmaydi."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Qurilma administratori ilovalarini boshqarish"</string>
- <string name="manage_users" msgid="3125018886835668847">"Foydalanuvchilarni boshqarish"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g> o‘chirilmadi."</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Paketni tahlil qilishda muammo yuz berdi."</string>
- <string name="newPerms" msgid="6039428254474104210">"Yangi"</string>
- <string name="allPerms" msgid="1024385515840703981">"Barchasi"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Maxfiylik"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Qurilmalardan foydalanish"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Ushbu yangilanish hech qanday yangi ruxsatlarni talab qilmaydi."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Quyidagi ruxsatlar berilishiga rozimisiz? U quyidagilarga ruxsat beradi:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Rad etish"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Qo‘shimcha ma’lumot"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Baribir rad etilsin"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ilovasiga <xliff:g id="ACTION">%2$s</xliff:g> uchun ruxsat berilsinmi?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> tasi o‘chiq"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"hammasi o‘chiq"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"hech qaysi o‘chirilmagan"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Ruxsat berish"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Ilovalar"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Ilovalar uchun ruxsatlar"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Boshqa so‘ralmasin"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Hech qanday ruxsat talab qilinmaydi"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Qo‘shimcha ruxsatlar"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Ruxsatlar kontrolleri"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"ruxsatlar"</string>
+ <string name="cancel" msgid="7279939269964834974">"Bekor qilish"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Ilova topilmadi"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Rad etish"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Rad etilsin va boshqa soʻralmasin"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Batafsil"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Rad etilsin"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ilovasiga <xliff:g id="ACTION">%2$s</xliff:g> uchun ruxsat berilsinmi?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ilovasiga bu amalga bajarishga doim ruxsat berilsinmi: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Faqat ilova ishlatilayotganda"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Har doim"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Rad etilsin va boshqa so‘ralmasin"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> ta nofaol"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"hammasi o‘chiq"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"hech biri o‘chirilmagan"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Ruxsat"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Har qanday rejimda ruxsat berish"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Faqat ilova faolligida ruxsat berish"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Ilovalar"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Ilovalar uchun ruxsatlar"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Ruxsatlar menejeri"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Boshqa so‘ralmasin"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Ruxsat talab qilinmaydi"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Qo‘shimcha ruxsatlar"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Ilovaga oid axborotni ochish"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other">Yana <xliff:g id="COUNT_1">%1$d</xliff:g> ta</item>
<item quantity="one">Yana <xliff:g id="COUNT_0">%1$d</xliff:g> ta</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Bu ilova Androidning eskiroq versiyasiga mo‘ljallab ishlab chiqilgan. Agar ruxsat bermasangiz, u kutilganidek ishlamasligi mumkin."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"noma’lum amalni bajarish"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"Ruxsat berilgan: <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="6773743421743728921">"Tizimga oid jarayonlar"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Tizimga oid jarayonlarni berkitish"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> uchun ruxsatlar"</string>
- <string name="no_apps" msgid="1965493419005012569">"Hech qanday ilova yo‘q"</string>
- <string name="location_settings" msgid="1774875730854491297">"Joylashuv sozlamalari"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> bu qurilma uchun joylashuvni aniqlash xizmatini taqdim etuvchi ilova hisoblanadi. Joylashuv ma’lumotlariga kirish vakolatini joylashuv sozlamalaridan o‘zgartirish mumkin."</string>
- <string name="system_warning" msgid="7103819124542305179">"Agar bu ruxsatni rad qilsangiz, qurilmangizning asosiy funksiyalari bundan buyon kutilganidek ishlamasligi mumkin."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Qoidaga muvofiq"</string>
- <string name="loading" msgid="7811651799620593731">"Yuklanmoqda…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Barcha ruxsatnomalar"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Ilovaning boshqa imkoniyatlari"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Ruxsatnoma so‘rovi"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Boshqa oynalar ustidan ochiladigan ilova aniqlandi"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Bu ruxsatnoma parametrini o‘zgartirish uchun avval Sozlamalar > Ilovalar bo‘limidan ekran ustidan ochilish funksiyasini o‘chirib qo‘ying"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Sozlamalarni ochish"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Wear qurilmasi o‘rnatish/o‘chirish amallarini qo‘llab-quvvatlamaydi."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ilovasi yangilandi. <xliff:g id="APP_NAME_1">%1$s</xliff:g> ilovasiga quyidagi ruxsatnomalar taqdim etilsinmi?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uchun beriladigan ruxsatlarni tanlang"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> yangilandi. Unga beriladigan ruxsatlarni tanlang."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Bekor qilish"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Davom etish"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Yangi ruxsatnomalar"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Joriy ruxsatnomalar"</string>
- <string name="message_staging" msgid="6151794817691100003">"Kutib turing…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Noma’lum"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Xavfsizlik yuzasidan, planshetingizga bu manbadan notanish ilovalarni o‘rnatishga ruxsat berilmagan."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Xavfsizlik yuzasidan, televizoringizga bu manbadan notanish ilovalarni o‘rnatishga ruxsat berilmagan."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Xavfsizlik yuzasidan, telefoningizga bu manbadan notanish ilovalarni o‘rnatishga ruxsat berilmagan."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Telefoningiz va shaxsiy ma‘lumotlaringiz notanish ilovalar xujumiga zaif bo‘ladi. Bu ilovani o‘rnatish bilan telefoningizga yetkaziladigan shikast va ma‘lumotlaringizni o‘chirib yuborilishiga javobgarlikni o‘z zimmangizga olasiz."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Planshetingiz va shaxsiy ma‘lumotlaringiz notanish ilovalar xujumiga zaif bo‘ladi. Bu ilovani o‘rnatish bilan planshetingizga yetkaziladigan shikast va ma‘lumotlaringizni o‘chirib yuborilishiga javobgarlikni o‘z zimmangizga olasiz."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"TV va shaxsiy ma‘lumotlaringiz notanish ilovalar xujumiga zaif bo‘ladi. Bu ilovani o‘rnatish bilan televizoringizga yetkaziladigan shikast va ma‘lumotlaringizni o‘chirib yuborilishiga javobgarlikni o‘z zimmangizga olasiz."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Davom etish"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Sozlamalar"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Wear ilovalarini o‘rnatish/o‘chirish"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Bu ilova Androidning eskiroq versiyasiga mo‘ljallab ishlab chiqilgan. Agar ruxsat bermasangiz, u kutilganidek ishlamasligi mumkin."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"noma’lum amalni bajarish"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"Ruxsat berilgan ilovalar: <xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Oxirgi statistika"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Ruxsatlar panelini ochish"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Tizimga oid jarayonlar"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Tizimga oid jarayonlarni berkitish"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Hech qanday ilova topilmadi"</string>
+ <string name="location_settings" msgid="547378321761364906">"Joylashuv sozlamalari"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Agar bu ruxsatni rad qilsangiz, qurilmangizning asosiy funksiyalari bundan buyon kutilganidek ishlamasligi mumkin."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Qoidaga muvofiq"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Fon rejimida kirish qoidaga muvofiq taqiqlangan"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Fon rejimida kirish qoidaga muvofiq yoqilgan"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Faol rejimda kirish qoidaga muvofiq yoqilgan"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Administrator tomonidan boshqariladi"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Fon rejimida kirish administrator tomonidan taqiqlangan"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Fon rejimida kirish administrator tomonidan yoqilgan"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Faol rejimda kirish administrator tomonidan yoqilgan"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Ruxsatni tizim sozlagan"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Har doim"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Faqat ilova ishlatilayotganda"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Hech qachon"</string>
+ <string name="loading" msgid="323483393167148377">"Yuklanmoqda…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Barcha ruxsatlar"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Ilovaning boshqa imkoniyatlari"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Ruxsat olish talabi"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Ekran ustidan ochiladigan ilova aniqlandi"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Bu ruxsat parametrini o‘zgartirish uchun avval Sozlamalar > Ilovalar ruknidan ekran ustidan ochilish funksiyasini faolsizlantiring"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Sozlamalarni ochish"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Wear qurilmasi o‘rnatish/o‘chirish amallarini qo‘llab-quvvatlamaydi."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uchun beriladigan ruxsatlarni tanlang"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> yangilandi. Unga beriladigan ruxsatlarni tanlang."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Bekor qilish"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Keyingisi"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Yangi ruxsatlar"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Joriy ruxsatlar"</string>
+ <string name="message_staging" msgid="641286607664721291">"Kutib turing…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Noaniq"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Shaxsiy kabinet"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">Oxirgi ishlatish: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> marta (fonda <xliff:g id="NUM_5">%3$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 (fonda: <xliff:g id="NUM_2">%3$s</xliff:g> marta)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">Oxirgi ishlatish: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> marta \nDavomiyligi: <xliff:g id="TIME_5">%3$s</xliff:g></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 \nDavomiyligi: <xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">Oxirgi ishlatish: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> marta (fonda: <xliff:g id="NUM_6">%3$s</xliff:g> ta)\nDavomiyligi:<xliff:g id="TIME_7">%3$s</xliff:g></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 (fonda: <xliff:g id="NUM_2">%3$s</xliff:g> ta)\nDavomiyligi: <xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Har qanday ruxsat"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Har qanday vaqt"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Oxirgi 7 kun"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Oxirgi 24 soat"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Oxirgi 1 soat"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Oxirgi 15 daqiqa"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Oxirgi 1 daqiqa"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Ruxsatlardan foydalanilmagan"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Har qachon ishlatilganlar"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Oxirgi 7 kunda ishlatilganlar"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Oxirgi 24 soatda ishlatilganlar"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Oxirgi soatda ishlatilganlar"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Oxirgi 15 daqiqada ishlatilganlar"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Oxirgi daqiqada ishlatilgan ruxsat"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Har qachon eng koʻp ishlatilganlar"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Oxirgi 7 kunda eng koʻp ishlatilganlar"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Oxirgi 24 soatda eng koʻp ishlatilganlar"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Oxirgi 1 soatda eng koʻp ishlatilganlar"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Oxirgi 15 daqiqada eng koʻp ishlatilganlar"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Oxirgi 1 daqiqada eng koʻp ishlatilganlar"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Ilovalar"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Filtrlar: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Filtrni olib tashlash"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Filtrlash"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Ruxsatlar asosida filtrlash"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Eng koʻp ishlatilganlar"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Eng koʻp ishlatilganlar"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Yaqinda"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Yangilash"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Ilovalar uchun ruxsatlar"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Kirish talabi: <xliff:g id="NUM">%1$s</xliff:g> marta. Oxirgi marta <xliff:g id="TIME">%2$s</xliff:g> oldin foydalanilgan."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Ruxsat berish"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Har qanday rejimda ruxsat berish"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Faqat faol rejimda ruxsat berish"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Rad etish"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> ruxsati"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="APP">%2$s</xliff:g> uchun <xliff:g id="PERM">%1$s</xliff:g> ruxsati"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g> oldin <xliff:g id="PERM">%2$s</xliff:g> ruxsatidan foydalandi."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> ilovasi uchun <xliff:g id="PERM">%2$s</xliff:g> ruxsati berilmagan."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Ruxsatlardan foydalanish haqida batafsil axborotni ochish"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Oxirgi marta ishlatilgan: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Hech qachon ishlatilmagan"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Taqdim etilgan ruxsat"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Foydalanilayotganda ruxsat beriladi"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Taqdim etilmagan ruxsatlar"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Batafsil statistika"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> kun</item>
+ <item quantity="one">1 kun</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> soat</item>
+ <item quantity="one">1 soat</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> daqiqa</item>
+ <item quantity="one">1 daqiqa</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> soniya</item>
+ <item quantity="one">1 soniya</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ilovasidan <xliff:g id="ROLE_NAME">%2$s</xliff:g> rolida foydalanasizmi?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"<b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> oʻrniga <b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> ilovasidan <xliff:g id="ROLE_NAME">%2$s</xliff:g> rolida foydalanasizmi?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Ruxsat eslatmalari"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> joylashuvingiz axborotidan foydalanmoqda"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Bu ilova joylashuv axborotingizdan foydalana oladi. Oʻzgartirish uchun bosing."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Faqat ilova faolligida ruxsat berish"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Hech qanday ruxsat berilmagan"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Hech qanday taqiq yoʻq"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Hech qaysi ilovaga ruxsat berilmagan"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Hech qaysi ilova taqiqlanmagan"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Ochiq"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Olib tashlash"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Majburan toʻxtatish"</string>
+ <string name="settings" msgid="2884124136779508907">"Sozlamalar"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> xizmati qurilmangizdan butunlay foydalana oladi"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> ta maxsus xizmat qurilmangizdan butunlay foydalana oladi"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ekran, bajargan amallaringiz va kiritgan matnlaringizni koʻra oladi hamda ekraningizni boshqa oladi."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Bu xizmatlar ekran, bajargan amallaringiz va kiritgan matnlaringizni koʻra oladi hamda ekraningizni boshqara oladi"</string>
+ <string name="default_apps" msgid="8554530939151957828">"Birlamchi ilovalar"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Birlamchi ilovalar mavjud emas"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Ish uchun birlamchi"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Hech qanday"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Hech qanday ilova topilmadi"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Maxsus ruxsatlar"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Maxsus ilova ruxsatlari yoʻq"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Hech qanday ilova topilmadi"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Yordamchi ilova"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Brauzer ilovasi"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Telefon ilovasi"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"SMS ilovasi"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Favqulodda holatlar ilovasi"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Home ilovasi"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Musiqa ilovasi"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Galereya ilovasi"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Mashina uchun telefon ilovasi"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Chaqiruvlarni uzatish ilovasi"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"Kiruvchi chaqiruvlar ilovasi"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Chaqiruvlar ilovasiga sherik"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Car Projection ilovasi"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Ishchi profildan foydalanish imkonsiz"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Eslatma: Agar qurilmani qayta ishga tushirsangiz va ekran qulfi sozlangan boʻlsa, bu ilova to qurilmangiz qulfdan chiqarilmaguncha ishga tushmaydi."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Assistent tizimda ishlatilayotgan ilovalar haqidagi axborotni, masalan, ekranga chiqib turgan yoki ilovalar orqali kiriladigan axborotlarni oʻqiy oladi."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Nosozliklarni aniqlash axborotini ulashish"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Nosozliklarni aniqlashga oid axborot ulashilsinmi?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> ilovasi nosozliklarni aniqlash axborotini yuklamoqchi."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Nosozliklarni aniqlash axborotini ulashish"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ilovasi bu qurilmadan <xliff:g id="DATE">%2$s</xliff:g> sanasida <xliff:g id="TIME">%3$s</xliff:g> da olingan xatoliklar hisobotini yuklashni talab etmoqda. Xatoliklar hisobotiga foydalanuvchi nomlari, joylashuv axboroti, qurilma identifikatorlari va tarmoq maʼlumotlari kabi qurilmangiz yoki qayd qilingan ilovalar haqida shaxsiy maʼlumotlar kiradi. Bunday maʼlumotlarni faqat ishonchli odamlar va ilovalarga yuboring. <xliff:g id="APP_NAME_1">%4$s</xliff:g> ilovasiga xatoliklar hisobotini yuklashga ruxsat berilsinmi?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Ruxsat"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Rad etish"</string>
</resources>
diff --git a/res/values-vi-television/strings.xml b/res/values-vi-television/strings.xml
index 574bde7..af71232 100644
--- a/res/values-vi-television/strings.xml
+++ b/res/values-vi-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Từ chối và không hỏi lại"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Bạn có thể thay đổi cài đặt này sau trong Cài đặt > Ứng dụng"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Hiển thị ứng dụng hệ thống"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Quyền của ứng dụng"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Quyền của ứng dụng"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"Quyền <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Quyền bổ sung"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"Quyền <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Từ chối và không hỏi lại"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Bạn có thể thay đổi tùy chọn cài đặt này trong mục Cài đặt > Ứng dụng"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Hiển thị ứng dụng hệ thống"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Quyền ứng dụng"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Quyền ứng dụng"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"Quyền <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Quyền bổ sung"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"Quyền <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-vi-watch/strings.xml b/res/values-vi-watch/strings.xml
index d63ef28..5fd9394 100644
--- a/res/values-vi-watch/strings.xml
+++ b/res/values-vi-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Từ chối, không hỏi lại"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Hiển thị ứng dụng hệ thống"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Ko thể thay đổi"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Có"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Hủy"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Từ chối, không hỏi lại"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Hiển thị ứng dụng hệ thống"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Không thể thay đổi"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Có"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Hủy"</string>
</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 3855c61..9c95f4d 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,286 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Trình cài đặt gói"</string>
- <string name="next" msgid="3057143178373252333">"Tiếp theo"</string>
- <string name="install" msgid="5896438203900042068">"Cài đặt"</string>
- <string name="done" msgid="3889387558374211719">"Xong"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Cho phép ứng dụng này:"</string>
- <string name="cancel" msgid="8360346460165114585">"Hủy"</string>
- <string name="unknown" msgid="4742479012767208045">"Không xác định"</string>
- <string name="installing" msgid="8613631001631998372">"Đang cài đặt…"</string>
- <string name="installing_app" msgid="4097935682329028894">"Đang cài đặt <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"Ứng dụng đã được cài đặt."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Bạn có muốn cài đặt ứng dụng này không? Ứng dụng sẽ có quyền truy cập vào:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Bạn có muốn cài đặt ứng dụng này không? Ứng dụng này không yêu cầu bất kỳ quyền truy cập đặc biệt nào."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Bạn có muốn cài đặt bản cập nhật cho ứng dụng hiện tại này không? Dữ liệu hiện tại của bạn sẽ không bị mất. Ứng dụng đã cập nhật sẽ có quyền truy cập vào:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Bạn có muốn cài đặt bản cập nhật cho ứng dụng được cài sẵn này không? Dữ liệu hiện tại của bạn sẽ không bị mất. Ứng dụng được cập nhật sẽ có quyền truy cập vào:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Bạn có muốn cài đặt bản cập nhật cho ứng dụng hiện có này không? Dữ liệu hiện có của bạn sẽ không bị mất. Việc cài đặt không yêu cầu bất kỳ quyền truy cập đặc biệt nào."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Bạn có muốn cài đặt bản cập nhật cho ứng dụng cài sẵn này không? Dữ liệu hiện có của bạn sẽ không bị mất. Việc cài đặt không yêu cầu quyền truy cập đặc biệt nào."</string>
- <string name="install_failed" msgid="6579998651498970899">"Ứng dụng chưa được cài đặt."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Đã chặn cài đặt gói."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Ứng dụng chưa được cài đặt dưới dạng gói xung đột với gói hiện có."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Ứng dụng chưa được cài đặt dưới dạng ứng dụng không tương thích với máy tính bảng của bạn."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Ứng dụng này không tương thích với TV của bạn."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Ứng dụng chưa được cài đặt dưới dạng ứng dụng không tương thích với điện thoại của bạn."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Ứng dụng chưa được cài đặt dưới dạng gói dường như không hợp lệ."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"Không thể cài đặt <xliff:g id="APP_NAME">%1$s</xliff:g> trên máy tính bảng của bạn."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"Không cài đặt được <xliff:g id="APP_NAME">%1$s</xliff:g> trên TV của bạn."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"Không thể cài đặt <xliff:g id="APP_NAME">%1$s</xliff:g> trên điện thoại này."</string>
- <string name="launch" msgid="4826921505917605463">"Mở"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Quản trị viên của bạn không cho phép cài đặt ứng dụng từ nguồn không xác định"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Người dùng này không thể cài đặt ứng dụng không xác định"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Người dùng này không được phép cài đặt ứng dụng"</string>
- <string name="ok" msgid="3468756155452870475">"OK"</string>
- <string name="settings" msgid="6743583734099755409">"Cài đặt"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Quản lý ứng dụng"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Thay thế ứng dụng?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Ứng dụng bạn đang cài đặt sẽ thay thế một ứng dụng khác.\n\nTất cả dữ liệu người dùng trước của bạn sẽ được lưu."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Đây là ứng dụng hệ thống.\n\nTất cả dữ liệu người dùng trước của bạn sẽ được lưu."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Hết dung lượng"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"Không thể cài đặt <xliff:g id="APP_NAME">%1$s</xliff:g>. Hãy giải phóng dung lượng và thử lại."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"Không tìm thấy ứng dụng"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Không tìm thấy ứng dụng trong danh sách các ứng dụng đã cài đặt."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Không được phép"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Người dùng hiện tại không được phép thực hiện quá trình gỡ cài đặt này."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Lỗi"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Không thể gỡ cài đặt ứng dụng."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Gỡ cài đặt ứng dụng"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Gỡ cài đặt cập nhật"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> là một phần của ứng dụng sau:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Bạn có muốn gỡ cài đặt ứng dụng này không?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Bạn có muốn gỡ cài đặt ứng dụng này cho "<b>"tất cả"</b>" người dùng không? Ứng dụng và dữ liệu của ứng dụng sẽ bị xóa khỏi "<b>"tất cả"</b>" người dùng trên thiết bị."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Bạn có muốn gỡ cài đặt ứng dụng này cho người dùng <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Thay thế ứng dụng này bằng phiên bản gốc? Tất cả dữ liệu sẽ bị xóa."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Thay thế ứng dụng này bằng phiên bản gốc? Tất cả dữ liệu sẽ bị xóa. Điều này ảnh hưởng đến tất cả người dùng thiết bị này, bao gồm cả những người có hồ sơ công việc."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Gỡ cài đặt đang chạy"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Gỡ cài đặt không thành công"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Đang gỡ cài đặt..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Đang gỡ cài đặt <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Gỡ cài đặt đã hoàn tất."</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Đã gỡ cài đặt <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Gỡ cài đặt không thành công."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Gỡ cài đặt <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> không thành công."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Không thể gỡ cài đặt ứng dụng dành cho quản trị viên thiết bị đang hoạt động"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Không thể gỡ cài đặt ứng dụng dành cho quản trị viên thiết bị đang hoạt động cho <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Ứng dụng này bắt buộc với một số người dùng hoặc hồ sơ và được gỡ cài đặt cho người khác"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Ứng dụng này là cần thiết cho hồ sơ của bạn và không thể gỡ cài đặt."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Ứng dụng này được quản trị viên thiết bị của bạn yêu cầu và không thể gỡ cài đặt."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Quản lý ứng dụng dành cho quản trị viên thiết bị"</string>
- <string name="manage_users" msgid="3125018886835668847">"Quản lý người dùng"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"Không thể gỡ cài đặt <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Đã xảy ra sự cố khi phân tích cú pháp gói."</string>
- <string name="newPerms" msgid="6039428254474104210">"Mới"</string>
- <string name="allPerms" msgid="1024385515840703981">"Tất cả"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Bảo mật"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Truy cập thiết bị"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Bản cập nhật này không yêu cầu quyền mới."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Bạn có muốn cấp quyền sau không? Ứng dụng sẽ có quyền truy cập:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Từ chối"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Thông tin khác"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Vẫn từ chối"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Cho phép <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"Đã vô hiệu hóa <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"tất cả quyền đều bị vô hiệu hóa"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"không có quyền nào bị vô hiệu hóa"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Cho phép"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Ứng dụng"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Quyền của ứng dụng"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Không hỏi lại"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Không có quyền"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Quyền khác"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Trình điều khiển quyền"</string>
+ <string name="ok" msgid="4417794827535157922">"OK"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"quyền"</string>
+ <string name="cancel" msgid="7279939269964834974">"Hủy"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"Không tìm thấy ứng dụng"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Từ chối"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Từ chối và không hỏi lại"</string>
+ <!-- no translation found for grant_dialog_button_deny_background (5378693207810841555) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_deny_background_and_dont_ask_again (1032019626928637454) -->
+ <skip />
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Thông tin khác"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Vẫn từ chối"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Bạn có muốn cho phép <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g> không?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Bạn có muốn luôn cho phép <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g> không?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Chỉ khi dùng ứng dụng"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Luôn luôn"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Từ chối và không hỏi lại"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"Đã tắt <xliff:g id="COUNT">%1$d</xliff:g> quyền"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"đã tắt tất cả các quyền"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"chưa tắt quyền nào"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Cho phép"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Luôn cho phép"</string>
+ <!-- no translation found for grant_dialog_button_allow_foreground (8090382319222429427) -->
+ <skip />
+ <!-- no translation found for grant_dialog_button_allow_background (3190568549032350790) -->
+ <skip />
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Ứng dụng"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Quyền ứng dụng"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Người quản lý quyền"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Không hỏi lại"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Không có quyền"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Quyền bổ sung"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Mở thông tin về ứng dụng"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> quyền khác</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> quyền khác</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Ứng dụng này được thiết kế cho các phiên bản Android cũ hơn. Từ chối quyền có thể làm cho ứng dụng không còn hoạt động như mong muốn."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"thực hiện hành động không xác định"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"Đã cho phép <xliff:g id="COUNT_0">%1$d</xliff:g> trong số <xliff:g id="COUNT_1">%2$d</xliff:g> ứng dụng"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Hiển thị hệ thống"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Ẩn hệ thống"</string>
- <string name="permission_title" msgid="6495415273398916381">"Quyền <xliff:g id="PERMISSION">%1$s</xliff:g>"</string>
- <string name="no_apps" msgid="1965493419005012569">"Không có ứng dụng"</string>
- <string name="location_settings" msgid="1774875730854491297">"Cài đặt vị trí"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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ị trí từ cài đặt vị trí."</string>
- <string name="system_warning" msgid="7103819124542305179">"Nếu bạn từ chối quyền này, các tính năng cơ bản trên thiết bị của bạn có thể không còn hoạt động như dự kiến."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Được thực thi bằng chính sách"</string>
- <string name="loading" msgid="7811651799620593731">"Đang tải…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"Tất cả các quyền"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Các khả năng khác của ứng dụng"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Yêu cầu quyền"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Đã phát hiện lớp phủ màn hình"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Để thay đổi cài đặt quyền này, trước tiên bạn phải tắt lớp phủ màn hình từ Cài đặt > Ứng dụng"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Mở cài đặt"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Không hỗ trợ tác vụ Cài đặt/Gỡ cài đặt trên Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"Đã cập nhật <xliff:g id="APP_NAME_0">%1$s</xliff:g>. Cho phép <xliff:g id="APP_NAME_1">%1$s</xliff:g> truy cập những nội dung sau?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Chọn cho phép <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> truy cập những gì"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"Đã cập nhật <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>. Chọn cho phép ứng dụng này truy cập những gì."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Hủy"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Tiếp tục"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Các quyền mới"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Các quyền hiện tại"</string>
- <string name="message_staging" msgid="6151794817691100003">"Đang sắp xếp ứng dụng…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Không xác định"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Để bảo mật, máy tính bảng của bạn không được phép cài đặt các ứng dụng không xác định từ nguồn này."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Để bảo mật, TV của bạn không được phép cài đặt các ứng dụng không xác định từ nguồn này."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Để bảo mật, điện thoại của bạn không được phép cài đặt các ứng dụng không xác định từ nguồn này."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Điện thoại và dữ liệu cá nhân của bạn dễ bị các ứng dụng không xác định tấn công hơn. Bằng cách cài đặt ứng dụng này, bạn đồng ý tự chịu trách nhiệm cho mọi hỏng hóc đối với điện thoại của mình hoặc mất mát dữ liệu có thể phát sinh do sử dụng ứng dụng này."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Máy tính bảng và dữ liệu cá nhân của bạn dễ bị các ứng dụng không xác định tấn công hơn. Bằng cách cài đặt ứng dụng này, bạn đồng ý tự chịu trách nhiệm cho mọi hỏng hóc đối với máy tính bảng của mình hoặc mất mát dữ liệu có thể phát sinh do sử dụng ứng dụng này."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"TV và dữ liệu cá nhân của bạn dễ bị các ứng dụng không xác định tấn công hơn. Bằng cách cài đặt ứng dụng này, bạn đồng ý tự chịu trách nhiệm cho mọi hỏng hóc đối với TV của mình hoặc mất mát dữ liệu có thể phát sinh do sử dụng ứng dụng này."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Tiếp tục"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Cài đặt"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Cài đặt/gỡ cài đặt ứng dụng Wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Ứng dụng này được thiết kế cho các phiên bản Android cũ hơn. Nếu bạn từ chối quyền, thì ứng dụng này có thể không còn hoạt động như dự kiến."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"thực hiện hành động không xác định"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"Đã 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="7623002570829860709">"Hiển thị hệ thống"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Ẩn hệ thống"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Không có ứng dụng"</string>
+ <string name="location_settings" msgid="547378321761364906">"Cài đặt vị trí"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"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="permission_summary_enforced_by_policy" msgid="632945329450867948">"Thực thi theo chính sách"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"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="2699118232240494204">"Quyền truy cập khi ở nền sau đã bật theo chính sách"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Quyền truy cập khi ở nền trước đã bật theo chính sách"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Do quản trị viên kiểm soát"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Quản trị viên đã tắt quyền truy cập khi ở nền sau"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Quản trị viên đã bật quyền truy cập khi ở nền sau"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Quản trị viên đã bật quyền truy cập khi ở nền trước"</string>
+ <!-- no translation found for permission_summary_enabled_system_fixed (5463084832974856683) -->
+ <skip />
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <!-- no translation found for permission_access_always (5419580764084361573) -->
+ <skip />
+ <!-- no translation found for permission_access_only_foreground (2857031150724321567) -->
+ <skip />
+ <!-- no translation found for permission_access_never (425385910378172045) -->
+ <skip />
+ <string name="loading" msgid="323483393167148377">"Đang tải…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Tất cả các quyền"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Các khả năng khác của ứng dụng"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Yêu cầu quyền"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Đã phát hiện lớp phủ màn hình"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Để thay đổi tùy chọn cài đặt quyền này, trước tiên, bạn phải tắt lớp phủ màn hình trong phần Cài đặt > Ứng dụng"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Mở cài đặt"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Các hành động Cài đặt/Gỡ cài đặt không được hỗ trợ trên Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Chọn nội dung <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> được phép truy cập vào"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"Đã cập nhật <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>. Chọn nội dung ứng dụng này được phép truy cập vào."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Hủy"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Tiếp tục"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Các quyền mới"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Các quyền hiện tại"</string>
+ <string name="message_staging" msgid="641286607664721291">"Đang thử nghiệm ứng dụng…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Không xác định"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Trang tổng quan"</string>
+ <!-- no translation found for permission_usage_summary_foreground (3203419920107457274) -->
+ <skip />
+ <!-- no translation found for permission_usage_summary_background (5719598203265078254) -->
+ <skip />
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Mọi quyền"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Mọi lúc"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"7 ngày qua"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"24 giờ qua"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"1 giờ qua"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"15 phút trước"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"1 phút qua"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Không sử dụng quyền"</string>
+ <!-- no translation found for permission_usage_list_title_any_time (5641676869304328239) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_7_days (2972289322203714509) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_day (6298662604046093174) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_hour (7224982939487774388) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_15_minutes (49045607172810502) -->
+ <skip />
+ <!-- no translation found for permission_usage_list_title_last_minute (7716966405942817635) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_any_time (862654449303514044) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_7_days (5393381637937213483) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_day (7202567658282481259) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_hour (4672313408976666479) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_15_minutes (1776918144361651860) -->
+ <skip />
+ <!-- no translation found for permission_usage_bar_chart_title_last_minute (236300476767668315) -->
+ <skip />
+ <!-- no translation found for app_permission_usage_bar_label (7261634017833698654) -->
+ <!-- no translation found for permission_usage_view_details (4728049344017619500) -->
+ <skip />
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Đã lọc bởi: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Xóa bộ lọc"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Lọc theo"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Lọc theo quyền"</string>
+ <!-- no translation found for filter_by_time (1763143592970195407) -->
+ <skip />
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Nhiều quyền nhất"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Nhiều lần truy cập nhất"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Gần đây"</string>
+ <!-- no translation found for sort_by_app (1912228966803416485) -->
+ <skip />
+ <!-- no translation found for sort_by_time (8280378662234104410) -->
+ <skip />
+ <!-- no translation found for item_separator (8266062815210378175) -->
+ <skip />
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Làm mới"</string>
+ <!-- no translation found for permission_usage_permission_filter_subtitle (5539392196389332769) -->
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Sử dụng quyền ứng dụng"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"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>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Cho phép"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Luôn cho phép"</string>
+ <!-- no translation found for app_permission_button_allow_foreground (2303741829613210541) -->
+ <skip />
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Từ chối"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"Quyền <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <!-- no translation found for app_permission_header (228974007660007656) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_usage_summary (1034436308858219976) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_no_usages (4444374134047275841) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_app_permissions_link (8033278634020892918) -->
+ <skip />
+ <!-- no translation found for app_permission_footer_permission_apps_link (8759141212929298774) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_generic (5479202003136667039) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_activity_recognition (2022880340017289990) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_calendar (2846128908236787586) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_call_log (2429916962093948340) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_camera (6699611334403400091) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_contacts (5169995707720233126) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_location (687820658574645201) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_aural (2102206495149326019) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_media_visual (3105938942794669520) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_microphone (2300290217308759293) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_phone (3773977614654088578) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sensors (6733606479604624853) -->
+ <skip />
+ <!-- no translation found for permission_description_summary_sms (8850213022386508528) -->
+ <skip />
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Lần truy cập gần đây nhất: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Chưa bao giờ truy cập"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Được phép"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Chỉ cho phép khi đang sử dụng"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Bị từ chối"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Xem mức sử dụng chi tiết"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ngày</item>
+ <item quantity="one">1 ngày</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> giờ</item>
+ <item quantity="one">1 giờ</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> phút</item>
+ <item quantity="one">1 phút</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> giây</item>
+ <item quantity="one">1 giây</item>
+ </plurals>
+ <string name="permission_reminders" msgid="8040710767178843151">"Lời nhắc về quyền"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g> đã sử dụng thông tin vị trí của bạn"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Ứng dụng này luôn có thể truy cập vào thông tin vị trí của bạn. Hãy nhấn để thay đổi."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Chỉ khi đang sử dụng ứng dụng"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Chưa cấp quyền nào"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Chưa từ chối quyền nào"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Chưa cho phép ứng dụng nào"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Chưa từ chối ứng dụng nào"</string>
+ <string name="settings" msgid="2884124136779508907">"Cài đặt"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g> có quyền truy cập đầy đủ vào thiết bị của bạn"</string>
+ <!-- no translation found for accessibility_service_dialog_title_multiple (8129325613496173909) -->
+ <skip />
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g> có thể xem màn hình, hành động và dữ liệu nhập của bạn cũng như thực hiện hành động và điều khiển màn hình."</string>
+ <!-- no translation found for accessibility_service_dialog_bottom_text_multiple (1387803460488775887) -->
+ <skip />
+ <!-- no translation found for request_role_title (3611734134669430568) -->
+ <skip />
+ <!-- no translation found for request_role_current_default (7512045433655289638) -->
+ <skip />
+ <!-- no translation found for request_role_set_as_default (5706081295230541240) -->
+ <skip />
+ <!-- no translation found for default_app_search_keyword (6938709626391437391) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_ok (3007005536659549573) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_open_settings (3368892579319881043) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_title (7173961211414061803) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_separator (9008030412869423988) -->
+ <skip />
+ <!-- no translation found for ongoing_usage_dialog_last_separator (7455459775266515801) -->
+ <skip />
+ <string name="default_apps" msgid="8554530939151957828">"Ứng dụng mặc định"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Không có ứng dụng mặc định"</string>
+ <!-- no translation found for default_apps_manage_domain_urls (3146379064445013719) -->
+ <skip />
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Ứng dụng mặc định cho công việc"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Không có"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Không có ứng dụng nào"</string>
+ <!-- no translation found for special_app_access_search_keyword (462008045110320714) -->
+ <skip />
+ <string name="special_app_access" msgid="2561673957499408877">"Quyền truy cập đặc biệt"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Không có quyền truy cập đặc biệt"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Không có ứng dụng"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Ứng dụng trợ lý"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Ứng dụng trình duyệt"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Ứng dụng điện thoại"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Ứng dụng SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Ứng dụng khẩn cấp"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Ứng dụng Home"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Ứng dụng âm nhạc"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Ứng dụng thư viện"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"Ứng dụng điện thoại cho chế độ ô tô"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Ứng dụng chuyển hướng cuộc gọi"</string>
+ <!-- no translation found for role_label_call_screening (1089966334646538858) -->
+ <skip />
+ <string name="role_label_call_companion" msgid="7369723859682076467">"Ứng dụng đồng hành cuộc gọi"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Không hỗ trợ hồ sơ công việc"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Lưu ý: Nếu bạn khởi động lại thiết bị và đặt khóa màn hình, thì ứng dụng này sẽ không thể khởi động cho đến khi bạn mở khóa thiết bị."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Trợ lý sẽ có thể đọc thông tin về ứng dụng mà bạn đang dùng trên hệ thống, bao gồm cả thông tin hiển thị trên màn hình hoặc thông tin có thể truy cập trong ứng dụng."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Chia sẻ dữ liệu gỡ lỗi"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Bạn muốn chia sẻ dữ liệu gỡ lỗi chi tiết?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g> muốn tải thông tin gỡ lỗi lên."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Chia sẻ dữ liệu gỡ lỗi"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> đang yêu cầu tải lên từ thiết bị này một báo cáo lỗi được thực hiện vào <xliff:g id="DATE">%2$s</xliff:g> lúc <xliff:g id="TIME">%3$s</xliff:g>. Báo cáo lỗi bao gồm thông tin cá nhân về thiết bị của bạn hoặc do ứng dụng ghi nhật ký, ví dụ như tên người dùng, dữ liệu vị trí, giá trị nhận dạng thiết bị và thông tin mạng. Chỉ chia sẻ báo cáo lỗi với người và ứng dụng bạn tin cậy đối với thông tin này. Bạn muốn cho phép <xliff:g id="APP_NAME_1">%4$s</xliff:g> tải báo cáo lỗi lên?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Cho phép"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Từ chối"</string>
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_title (5699953608028268176) -->
+ <skip />
+ <!-- no translation found for grandfathered_modern_storage_permission_deny_warning_content (6960592986228883592) -->
+ <skip />
+ <!-- no translation found for dismiss_with_acknowledgment (2879819713128822468) -->
+ <skip />
</resources>
diff --git a/res/values-watch/themes.xml b/res/values-watch/themes.xml
index 3adcfc5..a8186dd 100644
--- a/res/values-watch/themes.xml
+++ b/res/values-watch/themes.xml
@@ -16,8 +16,6 @@
-->
<resources>
- <style name="DialogWhenLarge" parent="@android:style/Theme.DeviceDefault.NoActionBar"/>
-
<style name="Settings" parent="@android:style/Theme.DeviceDefault.NoActionBar" />
<style name="GrantPermissions" parent="@android:style/Theme.DeviceDefault.NoActionBar">
diff --git a/res/values-zh-rCN-television/strings.xml b/res/values-zh-rCN-television/strings.xml
index 9b43370..eb8a2ef 100644
--- a/res/values-zh-rCN-television/strings.xml
+++ b/res/values-zh-rCN-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"拒绝,不要再询问"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"您以后可以在“设置”>“应用”中更改此设置"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"显示系统应用"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"应用权限"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"应用权限"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g>权限"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"其他权限"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g>权限"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"拒绝,不要再询问"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"您以后可以在“设置”>“应用”中更改此设置"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"显示系统应用"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"应用权限"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"应用权限"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g>权限"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"其他权限"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g>权限"</string>
</resources>
diff --git a/res/values-zh-rCN-watch/strings.xml b/res/values-zh-rCN-watch/strings.xml
index 2525619..f122adc 100644
--- a/res/values-zh-rCN-watch/strings.xml
+++ b/res/values-zh-rCN-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"拒绝,不要再询问"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"显示系统应用"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"无法更改"</string>
- <string name="generic_yes" msgid="3394094077553763689">"是"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"取消"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"拒绝,不要再询问"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"显示系统应用"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"无法更改"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"是"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"取消"</string>
</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 0b53a1c..795b576 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"软件包安装程序"</string>
- <string name="next" msgid="3057143178373252333">"下一步"</string>
- <string name="install" msgid="5896438203900042068">"安装"</string>
- <string name="done" msgid="3889387558374211719">"完成"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"允许此应用获取:"</string>
- <string name="cancel" msgid="8360346460165114585">"取消"</string>
- <string name="unknown" msgid="4742479012767208045">"未知"</string>
- <string name="installing" msgid="8613631001631998372">"正在安装..."</string>
- <string name="installing_app" msgid="4097935682329028894">"正在安装<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"应用安装完成。"</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"要安装此应用吗?它将获得以下权限:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"您要安装此应用吗?此应用不需要任何特殊权限。"</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"您要安装此应用的新版本吗?您现有的数据不会丢失。更新后的应用将具备以下权限:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"您要安装此内置应用的新版本吗?您现有的数据不会丢失。更新后的应用将具备以下权限:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"是否要为这一现有应用安装更新?您现有的数据不会丢失,且安装过程无需任何特殊权限。"</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"是否要为这一内置应用安装更新?您现有的数据不会丢失,且安装过程无需任何特殊权限。"</string>
- <string name="install_failed" msgid="6579998651498970899">"应用未安装。"</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"系统禁止安装该软件包。"</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"应用未安装:软件包与现有软件包存在冲突。"</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"应用未安装:应用与您的平板电脑不兼容。"</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"此应用与您的电视不兼容。"</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"应用未安装:应用与您的手机不兼容。"</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"应用未安装:软件包似乎无效。"</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"无法在您的平板电脑上安装“<xliff:g id="APP_NAME">%1$s</xliff:g>”。"</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"无法将<xliff:g id="APP_NAME">%1$s</xliff:g>安装到您的电视上。"</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"无法在您的手机上安装“<xliff:g id="APP_NAME">%1$s</xliff:g>”。"</string>
- <string name="launch" msgid="4826921505917605463">"打开"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"您的管理员不允许安装来源不明的应用"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"该用户无法安装未知应用"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"此用户不能安装应用"</string>
- <string name="ok" msgid="3468756155452870475">"确定"</string>
- <string name="settings" msgid="6743583734099755409">"设置"</string>
- <string name="manage_applications" msgid="4033876279091996596">"管理应用"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"要替换该应用吗?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"您要安装的应用将替换另一应用。\n\n系统将保存您以前的所有用户数据。"</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"这是系统应用。\n\n系统将保存您以前的所有用户数据。"</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"没有存储空间"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"无法安装“<xliff:g id="APP_NAME">%1$s</xliff:g>”,请释放一些存储空间并重试。"</string>
- <string name="dlg_ok" msgid="6944357727705699232">"确定"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"未找到应用"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"未在已安装应用的列表中找到该应用。"</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"不允许"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"当前用户无法执行这项卸载操作。"</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"错误"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"无法卸载应用。"</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"卸载应用"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"卸载更新"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g>属于以下应用:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"要卸载此应用吗?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"是否要为"<b>"所有"</b>"用户卸载此应用?系统将为设备上的"<b>"所有"</b>"用户删除此应用及其数据。"</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"您要为用户<xliff:g id="USERNAME">%1$s</xliff:g>卸载此应用吗?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"要将此应用替换为出厂版本吗?这样会移除所有数据。"</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"要将此应用替换为出厂版本吗?这样会移除所有数据,并会影响此设备的所有用户(包括已设置工作资料的用户)。"</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"进行中的卸载操作"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"失败的卸载操作"</string>
- <string name="uninstalling" msgid="5556217435895938250">"正在卸载..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"正在卸载<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"卸载完成。"</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"已卸载<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"卸载失败。"</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"卸载<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>失败。"</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"无法卸载正在使用中的设备管理应用"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"无法为<xliff:g id="USERNAME">%1$s</xliff:g>卸载正在使用中的设备管理应用"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"这是部分用户或个人资料所需的应用;已为其他用户或个人资料卸载此应用"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"这是您的个人资料所需的应用,因此无法卸载。"</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"这是您的设备管理员要求必须安装的应用,因此无法卸载。"</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"管理设备管理应用"</string>
- <string name="manage_users" msgid="3125018886835668847">"管理用户"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"无法卸载“<xliff:g id="APP_NAME">%1$s</xliff:g>”。"</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"解析软件包时出现问题。"</string>
- <string name="newPerms" msgid="6039428254474104210">"新权限"</string>
- <string name="allPerms" msgid="1024385515840703981">"全部"</string>
- <string name="privacyPerms" msgid="1850527049572617">"隐私相关权限"</string>
- <string name="devicePerms" msgid="6733560207731294504">"设备相关权限"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"新版本不需要任何新的权限。"</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"要向该应用授予以下权限吗?"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"拒绝"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"详情"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"仍然拒绝"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"第 <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="7332275268559121742">"要允许<b><xliff:g id="APP_NAME">%1$s</xliff:g></b><xliff:g id="ACTION">%2$s</xliff:g>吗?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> 项已停用"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"全部已停用"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"均未停用"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"允许"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"应用"</string>
- <string name="app_permissions" msgid="3146758905824597178">"应用权限"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"不再询问"</string>
- <string name="no_permissions" msgid="3210542466245591574">"没有权限"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"其他权限"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"权限控制器"</string>
+ <string name="ok" msgid="4417794827535157922">"确定"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"权限"</string>
+ <string name="cancel" msgid="7279939269964834974">"取消"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"未找到应用"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"拒绝"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"拒绝,不要再询问"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"更多信息"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"仍然拒绝"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"第 <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="1353228984024423745">"要允许<b><xliff:g id="APP_NAME">%1$s</xliff:g></b><xliff:g id="ACTION">%2$s</xliff:g>吗?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"要一律允许<b><xliff:g id="APP_NAME">%1$s</xliff:g></b><xliff:g id="ACTION">%2$s</xliff:g>吗?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"仅限使用应用时"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"始终"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"拒绝,不要再询问"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> 项已停用"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"全部已停用"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"均未停用"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"允许"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"始终允许"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"仅在使用该应用期间允许"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"应用"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"应用权限"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"权限管理器"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"不再询问"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"没有权限"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"其他权限"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"打开应用信息"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"此应用专为旧版 Android 打造。拒绝权限可能会导致其无法正常运行。"</string>
- <string name="default_permission_description" msgid="4992892207044156668">"执行未知操作"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"已授权 <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="6773743421743728921">"显示系统应用"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"隐藏系统应用"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g>权限"</string>
- <string name="no_apps" msgid="1965493419005012569">"没有应用"</string>
- <string name="location_settings" msgid="1774875730854491297">"位置信息设置"</string>
- <string name="location_warning" msgid="8778701356292735971">"“<xliff:g id="APP_NAME">%1$s</xliff:g>”是此设备的一个位置信息服务提供程序。您可以在位置信息设置中修改位置信息使用权。"</string>
- <string name="system_warning" msgid="7103819124542305179">"如果您拒绝此权限,您设备的基本功能可能会无法正常使用。"</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"依据政策强制执行"</string>
- <string name="loading" msgid="7811651799620593731">"正在加载…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"所有权限"</string>
- <string name="other_permissions" msgid="2016192512386091933">"其他应用功能"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"权限请求"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"检测到屏幕叠加层"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"要更改此权限设置,您必须首先在“设置”>“应用”中关闭屏幕叠加层"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"打开设置"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Wear 不支持安装/卸载操作。"</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g>已更新。要向<xliff:g id="APP_NAME_1">%1$s</xliff:g>授予以下权限吗?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"请选择要向<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>授予哪些权限"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>已更新。请选择要向此应用授予哪些权限。"</string>
- <string name="review_button_cancel" msgid="957906817733578877">"取消"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"继续"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"新权限"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"当前权限"</string>
- <string name="message_staging" msgid="6151794817691100003">"正在准备安装应用…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"未知"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"出于安全考虑,已禁止您的平板电脑安装来自此来源的未知应用。"</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"出于安全考虑,已禁止您的电视安装来自此来源的未知应用。"</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"出于安全考虑,已禁止您的手机安装来自此来源的未知应用。"</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"来历不明的应用很可能会损害您的手机和个人数据。安装该应用即表示,您同意对于因使用该应用可能导致的任何手机损坏或数据丢失情况,您负有全部责任。"</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"来历不明的应用很可能会损害您的平板电脑和个人数据。安装该应用即表示,您同意对于因使用该应用可能导致的任何平板电脑损坏或数据丢失情况,您负有全部责任。"</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"来历不明的应用很可能会损害您的电视和个人数据。安装该应用即表示,您同意对于因使用该应用可能导致的任何电视损坏或数据丢失情况,您负有全部责任。"</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"继续"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"设置"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"正在安装/卸载 Android Wear 应用"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"此应用专为旧版 Android 系统打造。拒绝权限可能会导致该应用无法正常运行。"</string>
+ <string name="default_permission_description" msgid="692254823411049573">"执行未知操作"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"已授权 <xliff:g id="COUNT_0">%1$d</xliff:g> 个应用(共 <xliff:g id="COUNT_1">%2$d</xliff:g> 个)"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"最近的使用情况"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"查看权限信息中心"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"显示系统应用"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"隐藏系统应用"</string>
+ <string name="no_apps" msgid="2377153782338039463">"没有应用"</string>
+ <string name="location_settings" msgid="547378321761364906">"位置信息设置"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<xliff:g id="APP_NAME">%1$s</xliff:g>是此设备的一个位置信息服务提供程序。您可以在位置信息设置中修改位置信息使用权。"</string>
+ <string name="system_warning" msgid="6868290533389195836">"如果您拒绝此权限,您设备的基本功能可能会无法正常使用。"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"依据相关政策强制执行"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"已根据相关政策停用后台使用权"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"已根据相关政策启用后台使用权"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"已根据相关政策启用前台使用权"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"由管理员控制"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"管理员已停用后台使用权"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"管理员已启用后台使用权"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"管理员已启用前台使用权"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"系统设置的权限"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"始终"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"仅限使用应用时"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"永不"</string>
+ <string name="loading" msgid="323483393167148377">"正在加载…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"所有权限"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"其他应用功能"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"权限请求"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"检测到屏幕叠加层"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"要更改此权限设置,您必须首先在“设置”>“应用”中关闭屏幕叠加层"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"打开“设置”"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Wear 不支持安装/卸载操作。"</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"请选择要向<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>授予哪些权限"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>已更新。请选择要向此应用授予哪些权限。"</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"取消"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"继续"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"新权限"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"当前权限"</string>
+ <string name="message_staging" msgid="641286607664721291">"正在准备安装应用…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"未知"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"信息中心"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">上次访问时间:<xliff:g id="TIME_3">%1$s</xliff:g>\n访问次数:<xliff:g id="NUM_4">%2$s</xliff:g> 次(其中有 <xliff:g id="NUM_5">%3$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> 次(其中有 <xliff:g id="NUM_2">%3$s</xliff:g> 次是后台访问)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">上次访问时间:<xliff:g id="TIME_3">%1$s</xliff:g>\n访问次数:<xliff:g id="NUM_4">%2$s</xliff:g> 次,\n时长:<xliff:g id="TIME_5">%3$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> 次,\n时长:<xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">上次访问时间:<xliff:g id="TIME_4">%1$s</xliff:g>\n访问次数:<xliff:g id="NUM_5">%2$s</xliff:g> 次(其中有 <xliff:g id="NUM_6">%3$s</xliff:g> 次是后台访问)\n时长:<xliff:g id="TIME_7">%3$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> 次(其中有 <xliff:g id="NUM_2">%3$s</xliff:g> 次是后台访问)\n时长:<xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"不限权限"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"不限时间"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"过去 7 天"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"过去 24 小时"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"过去 1 小时"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"过去 15 分钟"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"过去 1 分钟内"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"没有使用此权限的应用"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"使用过的访问权限(不限时间)"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"过去 7 天内使用过的访问权限"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"过去 24 小时内使用过的访问权限"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"过去 1 小时内使用过的访问权限"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"过去 15 分钟内使用过的访问权限"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"过去 1 分钟内使用过的访问权限"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"常用权限的使用频率(不限时间)"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"过去 7 天内常用权限的使用频率"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"过去 24 小时内常用权限的使用频率"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"过去 1 小时内常用权限的使用频率"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"过去 15 分钟内常用权限的使用频率"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"过去 1 分钟内常用权限的使用频率"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"应用"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"过滤条件:<xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"移除过滤条件"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"过滤条件"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"按权限过滤"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"使用的权限数量最多"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"访问次数最多"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"最近"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"刷新"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"应用权限使用情况"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"访问次数:<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="4040424337831328212">"访问次数:<xliff:g id="NUM">%1$s</xliff:g> 次。上次使用时间:<xliff:g id="TIME">%2$s</xliff:g>前。"</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"允许"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"始终允许"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"仅在使用该应用期间允许"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"拒绝"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g>权限"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="APP">%2$s</xliff:g>的<xliff:g id="PERM">%1$s</xliff:g>访问权限"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> <xliff:g id="TIME">%3$s</xliff:g>前访问过您的<xliff:g id="PERM">%2$s</xliff:g>。"</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g>尚未取得您的<xliff:g id="PERM">%2$s</xliff:g>访问权限。"</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"查看权限使用情况详情"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"上次访问时间:<xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"从未访问"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"已允许"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"仅在使用时允许"</string>
+ <string name="denied_header" msgid="2277998574238617699">"已拒绝"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"查看详细的使用情况信息"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 天</item>
+ <item quantity="one">1 天</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 小时</item>
+ <item quantity="one">1 小时</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 分钟</item>
+ <item quantity="one">1 分钟</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 秒</item>
+ <item quantity="one">1 秒</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"要使用<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>作为您的<xliff:g id="ROLE_NAME">%2$s</xliff:g>吗?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"要使用<b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b>(而非<b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b>)作为您的<xliff:g id="ROLE_NAME">%2$s</xliff:g>吗?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"权限提醒"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g>一直在使用您的位置信息"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"此应用随时可以使用您的位置信息。点按即可更改。"</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"仅在使用该应用期间允许"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"未允许任何权限"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"未拒绝任何权限"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"未允许任何应用"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"未拒绝任何应用"</string>
+ <string name="launch_app" msgid="5641437562665039291">"打开"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"卸载"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"强行停止"</string>
+ <string name="settings" msgid="2884124136779508907">"设置"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g>对您的设备拥有完整访问权限"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"有 <xliff:g id="NUM_SERVICES">%s</xliff:g> 项无障碍服务对您的设备拥有完整访问权限"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"<xliff:g id="SERVICE_NAME">%s</xliff:g>不但可以查看您的屏幕、操作和输入内容,而且还能执行操作和控制显示内容。"</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"这些服务不但可以查看您的屏幕、操作和输入内容,而且还能执行操作和控制显示内容。"</string>
+ <string name="default_apps" msgid="8554530939151957828">"默认应用"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"没有任何默认应用"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"默认工作应用"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"无"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"没有应用"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"特殊应用权限"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"没有特殊应用权限"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"没有应用"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"辅助应用"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"浏览器应用"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"电话应用"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"短信应用"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"紧急警报应用"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"主屏幕应用"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"音乐应用"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"图库应用"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"车载模式手机应用"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"通话转接应用"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"选接电话应用"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"通话配套应用"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"汽车投影应用"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"不支持工作资料"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"注意:如果您重启设备并设置了屏幕锁定,则必须将设备解锁才能运行此应用。"</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Google 助理将可读取您系统中使用的应用的相关信息,其中包括您屏幕上显示的信息或应用中可使用的信息。"</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"分享调试数据"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"是否分享详细调试数据?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"<xliff:g id="APP_NAME">%1$s</xliff:g>请求上传调试信息。"</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"分享调试数据"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"<xliff:g id="APP_NAME_0">%1$s</xliff:g>正在请求上传此设备在 <xliff:g id="DATE">%2$s</xliff:g><xliff:g id="TIME">%3$s</xliff:g> 获取的错误报告。错误报告包含与您设备有关或由应用记录的个人信息,例如:用户名、位置数据、设备标识符和网络信息。请务必只与您认为可以向其透露这些信息的人和应用分享错误报告。是否允许<xliff:g id="APP_NAME_1">%4$s</xliff:g>上传错误报告?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"允许"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"拒绝"</string>
</resources>
diff --git a/res/values-zh-rHK-television/strings.xml b/res/values-zh-rHK-television/strings.xml
index 52c3d30..be98671 100644
--- a/res/values-zh-rHK-television/strings.xml
+++ b/res/values-zh-rHK-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"拒絕,不要再問我"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"您日後可以在 [設定] > [應用程式] 中變更這項設定"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"顯示系統應用程式"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"應用程式權限"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"應用程式權限"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g>權限"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"其他權限"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g>權限"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"拒絕,不要再詢問"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"您稍後可以在 [設定] > [應用程式] 中變更這項設定"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"顯示系統應用程式"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"應用程式權限"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"應用程式權限"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g>權限"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"其他權限"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g>權限"</string>
</resources>
diff --git a/res/values-zh-rHK-watch/strings.xml b/res/values-zh-rHK-watch/strings.xml
index 6d0226f..1c70bfb 100644
--- a/res/values-zh-rHK-watch/strings.xml
+++ b/res/values-zh-rHK-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"拒絕,不要再問我"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"顯示系統應用程式"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"不可變更"</string>
- <string name="generic_yes" msgid="3394094077553763689">"是"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"取消"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"拒絕,不要再詢問"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"顯示系統應用程式"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"不可變更"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"是"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"取消"</string>
</resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index c633997..ccaa70b 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"程式安裝器"</string>
- <string name="next" msgid="3057143178373252333">"下一步"</string>
- <string name="install" msgid="5896438203900042068">"安裝"</string>
- <string name="done" msgid="3889387558374211719">"完成"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"允許這個應用程式:"</string>
- <string name="cancel" msgid="8360346460165114585">"取消"</string>
- <string name="unknown" msgid="4742479012767208045">"未知"</string>
- <string name="installing" msgid="8613631001631998372">"正在安裝..."</string>
- <string name="installing_app" msgid="4097935682329028894">"正在安裝 <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"已安裝應用程式。"</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"您要安裝這個應用程式嗎?應用程式將取得以下存取權:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"您要安裝這個應用程式嗎?應用程式不需任何特殊存取權。"</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"您要為這個現有的應用程式安裝更新嗎?您的現有資料將會喪失,更新後的應用程式將取得以下存取權:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"您要為這個內置的應用程式安裝更新嗎?您的現有資料將會喪失,更新後的應用程式將取得以下存取權:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"您要為這個現有的應用程式安裝更新嗎?您不會遺失現有的資料,而應用程式無需任何特殊的存取權限。"</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"您要為這個內置應用程式安裝更新嗎?您不會遺失現有的資料,而應用程式無需任何特殊的存取權限。"</string>
- <string name="install_failed" msgid="6579998651498970899">"未安裝應用程式。"</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"套件已遭封鎖,無法安裝。"</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"套件與現有的套件發生衝突,無法安裝應用程式。"</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"應用程式與平板電腦不兼容,無法安裝應用程式。"</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"此應用程式與您的電視不相容。"</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"應用程式與手機不兼容,無法安裝應用程式。"</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"套件好像無效,無法安裝應用程式。"</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"無法在您的平板電腦上安裝「<xliff:g id="APP_NAME">%1$s</xliff:g>」。"</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"無法在您的電視上安裝 <xliff:g id="APP_NAME">%1$s</xliff:g>。"</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"無法在您的手機上安裝「<xliff:g id="APP_NAME">%1$s</xliff:g>」。"</string>
- <string name="launch" msgid="4826921505917605463">"開啟"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"您的管理員不允許安裝來自不明來源的應用程式"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"此使用者無法安裝不明的應用程式"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"此使用者無法安裝應用程式"</string>
- <string name="ok" msgid="3468756155452870475">"確定"</string>
- <string name="settings" msgid="6743583734099755409">"設定"</string>
- <string name="manage_applications" msgid="4033876279091996596">"管理應用程式"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"取代應用程式?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"您所要安裝的應用程式將取代另一個應用程式。\n\n系統將儲存所有您先前的使用者資料。"</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"這是系統應用程式。\n\n系統將儲存所有您先前的使用者資料。"</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"空間不足"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"無法解除安裝「<xliff:g id="APP_NAME">%1$s</xliff:g>」。請先騰出一些空間,然後再試一次。"</string>
- <string name="dlg_ok" msgid="6944357727705699232">"確定"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"找不到應用程式"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"在已安裝的應用程式清單中找不到這個應用程式。"</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"不允許"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"目前的使用者不允許執行這項解除安裝操作。"</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"錯誤"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"應用程式無法解除安裝。"</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"解除安裝應用程式"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"解除安裝更新"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"「<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g>」隸屬於以下應用程式:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"您要解除安裝這個應用程式嗎?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"您要為"<b>"所有"</b>"使用者解除安裝這個應用程式嗎?應用程式及其資料會從裝置上的"<b>"所有"</b>"使用者設定檔中移除。"</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"您要為使用者 <xliff:g id="USERNAME">%1$s</xliff:g> 解除安裝這個應用程式嗎?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"要將此應用程式回復至原廠版本嗎?所有資料將會刪除。"</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"要將此應用程式回復至原廠版本嗎?所有資料將會刪除,此裝置的所有使用者 (包括使用工作設定檔的使用者) 亦會受影響。"</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"正在執行的解除安裝操作"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"失敗的解除安裝操作"</string>
- <string name="uninstalling" msgid="5556217435895938250">"正在解除安裝..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"正在解除安裝「<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>」…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"完成解除安裝。"</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"已解除安裝「<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>」"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"解除安裝失敗。"</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"解除安裝「<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>」失敗。"</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"無法解除安裝可用的裝置管理員應用程式"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"無法為<xliff:g id="USERNAME">%1$s</xliff:g>解除安裝可用的裝置管理員應用程式"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"這是部分使用者或設定檔所需的應用程式,其他使用者或設定檔已解除安裝此應用程式"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"這是您設定檔所需的應用程式,因此無法解除安裝。"</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"這是您的裝置管理員要求安裝的應用程式,因此無法解除安裝。"</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"管理裝置管理員應用程式"</string>
- <string name="manage_users" msgid="3125018886835668847">"管理使用者"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"無法解除安裝「<xliff:g id="APP_NAME">%1$s</xliff:g>」。"</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"剖析套件時發生問題。"</string>
- <string name="newPerms" msgid="6039428254474104210">"新增"</string>
- <string name="allPerms" msgid="1024385515840703981">"全部"</string>
- <string name="privacyPerms" msgid="1850527049572617">"私隱權"</string>
- <string name="devicePerms" msgid="6733560207731294504">"裝置存取權"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"這項更新不需新權限。"</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"您想授予下列權限嗎?應用程式將可獲得下列存取權:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"拒絕"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"更多資訊"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"一律拒絕"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"第 <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="7332275268559121742">"允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」<xliff:g id="ACTION">%2$s</xliff:g>嗎?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> 個權限已停用"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"所有權限已停用"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"沒有權限已停用"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"允許"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"應用程式"</string>
- <string name="app_permissions" msgid="3146758905824597178">"應用程式權限"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"不要再問我"</string>
- <string name="no_permissions" msgid="3210542466245591574">"沒有權限"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"其他權限"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"權限控制器"</string>
+ <string name="ok" msgid="4417794827535157922">"確定"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"權限"</string>
+ <string name="cancel" msgid="7279939269964834974">"取消"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"找不到應用程式"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"拒絕"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"拒絕,不要再詢問"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"更多資料"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"仍要拒絕"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"第 <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="1353228984024423745">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g><b></b>」<xliff:g id="ACTION">%2$s</xliff:g>嗎?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"要一律允許「<xliff:g id="APP_NAME">%1$s</xliff:g><b></b>」<xliff:g id="ACTION">%2$s</xliff:g>嗎?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"只在使用應用程式時"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"一律"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"拒絕,不要再詢問"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> 個權限已停用"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"所有權限已停用"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"沒有停用任何權限"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"允許"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"一律允許"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"只在使用應用程式時允許"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"應用程式"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"應用程式權限"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"權限管理員"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"不要再詢問"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"沒有權限"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"其他權限"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"打開應用程式資料"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"這個應用程式專為舊版本的 Android 設計。拒絕權限可能會導致它無法如預期 運作。"</string>
- <string name="default_permission_description" msgid="4992892207044156668">"執行不明的操作"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"已允許 <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="6773743421743728921">"顯示系統"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"隱藏系統"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g>權限"</string>
- <string name="no_apps" msgid="1965493419005012569">"沒有應用程式"</string>
- <string name="location_settings" msgid="1774875730854491297">"位置設定"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g>為此裝置提供位置資訊服務。您可以在位置設定中更改位置存取權。"</string>
- <string name="system_warning" msgid="7103819124542305179">"如果您拒絕這個權限,您的裝置的基本功能可能無法正常運作。"</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"由政策強制執行"</string>
- <string name="loading" msgid="7811651799620593731">"正在載入…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"所有權限"</string>
- <string name="other_permissions" msgid="2016192512386091933">"其他應用程式功能"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"權限要求"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"已偵測到螢幕重疊功能"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"如要變更此權限設定,請先前往 [設定] > [應用程式],以關閉螢幕重疊功能"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"開啟設定"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Wear 不支援安裝/解除安裝操作。"</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"已更新「<xliff:g id="APP_NAME_0">%1$s</xliff:g>」。允許「<xliff:g id="APP_NAME_1">%1$s</xliff:g>」存取以下內容嗎?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"選擇允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」存取的內容"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"已更新「<xliff:g id="APP_NAME">%1$s</xliff:g>」。選擇允許此應用程式存取的內容。"</string>
- <string name="review_button_cancel" msgid="957906817733578877">"取消"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"繼續"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"新權限"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"目前權限"</string>
- <string name="message_staging" msgid="6151794817691100003">"正在準備安裝應用程式…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"不明"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"為安全起見,您的平板電腦不得安裝此來源的不明應用程式。"</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"為安全起見,您的電視不得安裝此來源的不明應用程式。"</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"為安全起見,您的手機不得安裝此來源的不明應用程式。"</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"來源不明的應用程式可能會侵害您的手機和個人資料。安裝此應用程式,即表示您同意承擔因使用這個應用程式而導致手機損壞或資料遺失的責任。"</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"來源不明的應用程式可能會侵害您的平板電腦和個人資料。安裝此應用程式,即表示您同意承擔因使用這個應用程式而導致平板電腦損壞或資料遺失的責任。"</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"來源不明的應用程式可能會侵害您的電視和個人資料。安裝此應用程式,即表示您同意承擔因使用這個應用程式而導致電視損壞或資料遺失的責任。"</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"繼續"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"設定"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"正在安裝/解除安裝 Wear 應用程式"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"此應用程式專為舊版 Android 而設。拒絕授予權限可能會導致應用程式無法如預期般運作。"</string>
+ <string name="default_permission_description" msgid="692254823411049573">"執行不明的操作"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"已允許 <xliff:g id="COUNT_0">%1$d</xliff:g> 個應用程式 (共 <xliff:g id="COUNT_1">%2$d</xliff:g> 個)"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"近期使用情況"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"查看權限資訊主頁"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"顯示系統"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"隱藏系統"</string>
+ <string name="no_apps" msgid="2377153782338039463">"沒有應用程式"</string>
+ <string name="location_settings" msgid="547378321761364906">"位置設定"</string>
+ <string name="location_warning" msgid="4687406043150343369">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」為此裝置提供定位服務。您可以在位置設定中更改位置存取權。"</string>
+ <string name="system_warning" msgid="6868290533389195836">"如果您拒絕授予此權限,裝置的基本功能或會無法正常運作。"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"已根據政策執行"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"已根據政策停用背景存取權"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"已根據政策啟用背景存取權"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"已根據政策啟用前景存取權"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"由管理員控制"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"管理員已停用背景存取權"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"管理員已啟用背景存取權"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"管理員已啟用前景存取權"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"系統設定的權限"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"一律"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"只在使用應用程式時"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"永不"</string>
+ <string name="loading" msgid="323483393167148377">"載入中…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"所有權限"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"其他應用程式功能"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"權限要求"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"偵測到重疊式畫面功能"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"如要變更此權限設定,請先前往 [設定] > [應用程式],以關閉重疊式畫面功能"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"開啟設定"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Wear 不支援安裝/解除安裝操作。"</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"選擇允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」<b></b>存取的內容"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"已更新「<xliff:g id="APP_NAME">%1$s</xliff:g>」<b></b>。選擇允許此應用程式存取的內容。"</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"取消"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"繼續"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"新權限"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"目前權限"</string>
+ <string name="message_staging" msgid="641286607664721291">"正在準備安裝應用程式…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"不明"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"資訊主頁"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">上次存取時間:<xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> 次存取 (<xliff:g id="NUM_5">%3$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> 次存取 (<xliff:g id="NUM_2">%3$s</xliff:g> 次在背景存取)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">上次存取時間:<xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> 次存取\n時長:<xliff:g id="TIME_5">%3$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> 次存取\n時長:<xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">上次存取時間:<xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> 次存取 (<xliff:g id="NUM_6">%3$s</xliff:g> 次在背景存取)\n時長:<xliff:g id="TIME_7">%3$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> 次存取 (<xliff:g id="NUM_2">%3$s</xliff:g> 次在背景存取)\n時長:<xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"任何權限"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"不限時間"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"過去 7 天"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"過去 24 小時"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"過去 1 小時"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"過去 15 分鐘"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"過去 1 分鐘"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"沒有應用程式使用要求的權限"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"隨時存取"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"過去 7 天內的存取情況"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"過去 24 小時內的存取情況"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"過去 1 小時內的存取情況"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"過去 15 分鐘內的存取情況"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"過去 1 分鐘內的存取情況"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"最常用權限在任意時間的使用情況"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"最常用權限在過去 7 天內的使用情況"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"最常用權限在過去 24 小時內的使用情況"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"最常用權限在過去 1 小時內的使用情況"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"最常用權限在過去 15 分鐘內的使用情況"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"最常用權限在過去 1 分鐘內的使用情況"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"應用程式"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"篩選條件:<xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"移除篩選器"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"篩選方式"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"按權限篩選"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"使用最多權限"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"存取次數最多"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"最近"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"重新整理"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"應用程式權限使用情況"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"存取次數:<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="4040424337831328212">"存取次數:<xliff:g id="NUM">%1$s</xliff:g> 次。上次使用時間:<xliff:g id="TIME">%2$s</xliff:g>前。"</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"允許"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"一律允許"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"只在使用應用程式時允許"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"拒絕"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g>權限"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"「<xliff:g id="APP">%2$s</xliff:g>」的<xliff:g id="PERM">%1$s</xliff:g>存取權"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"「<xliff:g id="APP">%1$s</xliff:g>」在 <xliff:g id="TIME">%3$s</xliff:g>前存取了您的<xliff:g id="PERM">%2$s</xliff:g>。"</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"「<xliff:g id="APP">%1$s</xliff:g>」沒有存取<xliff:g id="PERM">%2$s</xliff:g>。"</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"查看詳細的權限使用情況"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"上次存取時間:<xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"從未存取過"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"已允許"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"只在使用時允許"</string>
+ <string name="denied_header" msgid="2277998574238617699">"已拒絕"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"查看詳細的使用情況"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 天</item>
+ <item quantity="one">1 天</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 小時</item>
+ <item quantity="one">1 小時</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 分鐘</item>
+ <item quantity="one">1 分鐘</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 秒</item>
+ <item quantity="one">1 秒</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"要將「<xliff:g id="APP_NAME">%1$s</xliff:g>」<b></b>作為<xliff:g id="ROLE_NAME">%2$s</xliff:g>使用嗎?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"要將「<xliff:g id="NEW_APP_NAME">%1$s</xliff:g>」<b></b>代替「<xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g>」<b></b>作為<xliff:g id="ROLE_NAME">%2$s</xliff:g>使用嗎?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"權限提醒"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"<xliff:g id="APP_NAME">%s</xliff:g>在使用您的位置資訊"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"此應用程式可隨時存取您的位置資訊。輕按即可變更權限。"</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"只在使用應用程式時"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"不允許任何權限"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"沒有拒絕任何權限"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"不允許任何應用程式"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"沒有拒絕任何應用程式"</string>
+ <string name="launch_app" msgid="5641437562665039291">"開啟"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"解除安裝"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"強制停止"</string>
+ <string name="settings" msgid="2884124136779508907">"設定"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"<xliff:g id="SERVICE_NAME">%s</xliff:g>可以取得您裝置的完整存取權"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> 個無障礙服務可以取得您裝置的完整存取權"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"「<xliff:g id="SERVICE_NAME">%s</xliff:g>」可以查看您的螢幕、操作和輸入內容、執行操作以及控制顯示屏。"</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"這些服務可以查看您的螢幕、操作和輸入內容、執行操作以及控制顯示屏。"</string>
+ <string name="default_apps" msgid="8554530939151957828">"預設應用程式"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"沒有預設應用程式"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"預設用於工作"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"無"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"沒有應用程式"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"特別應用程式權限"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"沒有特別應用程式權限"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"沒有應用程式"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"小幫手應用程式"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"瀏覽器應用程式"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"手機應用程式"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"短訊應用程式"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"緊急應用程式"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"主畫面應用程式"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"音樂應用程式"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"相片集應用程式"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"車用模式手機應用程式"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"通話重新導向應用程式"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"來電篩選應用程式"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"通話隨附應用程式"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"「汽車投影」應用程式"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"不支援工作設定檔"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"請注意:如果您重新啟動裝置並設定了螢幕鎖定,就必須先將裝置解鎖,才可執行這個應用程式。"</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"這個小幫手將能讀取系統目前使用的應用程式資料,包括螢幕顯示的資料或可在應用程式中存取的資料。"</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"分享偵錯資料"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"要分享詳細的偵錯資料嗎?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」要求上載偵錯資料。"</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"分享偵錯資料"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"「<xliff:g id="APP_NAME_0">%1$s</xliff:g>」要求上載此裝置於 <xliff:g id="DATE">%2$s</xliff:g><xliff:g id="TIME">%3$s</xliff:g>傳送的錯誤報告。錯誤報告包括您的裝置或應用程式記錄的個人資料,例如使用者名稱、位置資料、裝置識別碼和網絡資訊。只與您信任可存取這些資料的使用者和應用程式分享錯誤報告。要允許「<xliff:g id="APP_NAME_1">%4$s</xliff:g>」上載錯誤報告嗎?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"允許"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"拒絕"</string>
</resources>
diff --git a/res/values-zh-rTW-television/strings.xml b/res/values-zh-rTW-television/strings.xml
index 59266f9..6283651 100644
--- a/res/values-zh-rTW-television/strings.xml
+++ b/res/values-zh-rTW-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"拒絕且不要再詢問"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"你日後可在 [設定] > [應用程式] 中進行變更"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"顯示系統應用程式"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"應用程式權限"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"應用程式權限"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g>權限"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"其他權限"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g>權限"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"拒絕且不要再詢問"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"你日後可前往 [設定] > [應用程式] 進行變更"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"顯示系統應用程式"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"應用程式權限"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"應用程式權限"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g>權限"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"其他權限"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g>權限"</string>
</resources>
diff --git a/res/values-zh-rTW-watch/strings.xml b/res/values-zh-rTW-watch/strings.xml
index edaf7ea..19173e4 100644
--- a/res/values-zh-rTW-watch/strings.xml
+++ b/res/values-zh-rTW-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"拒絕且不要再詢問"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"顯示系統應用程式"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"無法變更"</string>
- <string name="generic_yes" msgid="3394094077553763689">"是"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"取消"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"拒絕且不要再詢問"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"顯示系統應用程式"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"無法變更"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"是"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"取消"</string>
</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 953f582..5e0d20e 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,215 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"程式安裝器"</string>
- <string name="next" msgid="3057143178373252333">"下一步"</string>
- <string name="install" msgid="5896438203900042068">"安裝"</string>
- <string name="done" msgid="3889387558374211719">"完成"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"允許這個應用程式:"</string>
- <string name="cancel" msgid="8360346460165114585">"取消"</string>
- <string name="unknown" msgid="4742479012767208045">"不明"</string>
- <string name="installing" msgid="8613631001631998372">"安裝中…"</string>
- <string name="installing_app" msgid="4097935682329028894">"正在安裝「<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>」…"</string>
- <string name="install_done" msgid="3682715442154357097">"已安裝應用程式。"</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"你要安裝這個應用程式嗎?應用程式將取得以下權限:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"你要安裝這個應用程式嗎?應用程式不需任何特殊權限。"</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"你要為這個現有的應用程式安裝更新嗎?你的現有資料不會遺失,而更新後的應用程式將取得以下權限:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"你要為這個內建的應用程式安裝更新嗎?你的現有資料不會遺失,而更新後的應用程式將取得以下權限:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"你要為這個現有的應用程式安裝更新嗎?你不會遺失現有的資料,且應用程式不需任何特殊權限。"</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"你要為這個現有的內建應用程式安裝更新嗎?你不會遺失現有的資料,且應用程式不需任何特殊權限。"</string>
- <string name="install_failed" msgid="6579998651498970899">"未安裝應用程式。"</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"這個套件已遭到封鎖,因此無法安裝。"</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"應用程式套件與現有套件衝突,因此未能完成安裝。"</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"應用程式與你的平板電腦不相容,因此未能完成安裝。"</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"這個應用程式與你的電視不相容。"</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"應用程式與你的手機不相容,因此未能完成安裝。"</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"應用程式套件無效,因此未能完成安裝。"</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"無法在你的平板電腦上安裝「<xliff:g id="APP_NAME">%1$s</xliff:g>」。"</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"無法在你的電視上安裝「<xliff:g id="APP_NAME">%1$s</xliff:g>」。"</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"無法在你的手機上安裝「<xliff:g id="APP_NAME">%1$s</xliff:g>」。"</string>
- <string name="launch" msgid="4826921505917605463">"開啟"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"你的管理員不允許安裝來源不明的應用程式"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"這位使用者無法安裝不明的應用程式"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"這位使用者無法安裝應用程式"</string>
- <string name="ok" msgid="3468756155452870475">"確定"</string>
- <string name="settings" msgid="6743583734099755409">"設定"</string>
- <string name="manage_applications" msgid="4033876279091996596">"管理應用程式"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"取代應用程式?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"你所要安裝的應用程式將取代其他應用程式。\n\n系統將儲存所有先前的使用者資料。"</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"這是系統應用程式。\n\n系統將儲存所有先前的使用者資料。"</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"空間不足"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"無法安裝「<xliff:g id="APP_NAME">%1$s</xliff:g>」。請先釋出部分空間,然後再試一次。"</string>
- <string name="dlg_ok" msgid="6944357727705699232">"確定"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"找不到應用程式"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"在已安裝的應用程式清單中找不到這個應用程式。"</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"不允許此操作"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"目前的使用者無法執行這項解除安裝作業。"</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"發生錯誤"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"無法解除安裝應用程式。"</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"解除安裝應用程式"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"解除安裝更新"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"「<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g>」屬於下列應用程式:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"你要解除安裝這個應用程式嗎?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"你要為"<b>"所有"</b>"使用者解除安裝這個應用程式嗎?該應用程式及其資料會從裝置上的"<b>"所有"</b>"使用者設定檔移除。"</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"你要為使用者 <xliff:g id="USERNAME">%1$s</xliff:g> 解除安裝這個應用程式嗎?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"要將應用程式換成原廠版本嗎?這麼做會移除所有資料。"</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"要將應用程式換成原廠版本嗎?這麼做會移除所有資料。凡是這個裝置的使用者 (包括設置 Work 設定檔的使用者),皆會受到影響。"</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"執行中的解除安裝作業"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"失敗的解除安裝作業"</string>
- <string name="uninstalling" msgid="5556217435895938250">"解除安裝中…"</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"正在解除安裝「<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>」…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"解除安裝完成。"</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"已解除安裝「<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>」"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"解除安裝失敗。"</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"無法解除安裝「<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>」。"</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"無法解除安裝使用中的裝置管理員應用程式"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"無法為<xliff:g id="USERNAME">%1$s</xliff:g>解除安裝使用中的裝置管理員應用程式"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"部分使用者或設定檔需要使用這個應用程式;已為其他使用者解除安裝"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"你的設定檔需要使用這個應用程式,因此無法解除安裝。"</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"這是你的裝置管理員要求安裝的應用程式,因此無法解除安裝。"</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"管理裝置管理員應用程式"</string>
- <string name="manage_users" msgid="3125018886835668847">"管理使用者"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"無法解除安裝「<xliff:g id="APP_NAME">%1$s</xliff:g>」。"</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"剖析套件時發生問題。"</string>
- <string name="newPerms" msgid="6039428254474104210">"新增"</string>
- <string name="allPerms" msgid="1024385515840703981">"全部"</string>
- <string name="privacyPerms" msgid="1850527049572617">"隱私權"</string>
- <string name="devicePerms" msgid="6733560207731294504">"裝置存取權"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"這項更新不需新權限。"</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"你要授予下列權限嗎?將會開放下列存取權:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"拒絕"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"瞭解詳情"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"直接拒絕"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」<xliff:g id="ACTION">%2$s</xliff:g>嗎?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"已停用 <xliff:g id="COUNT">%1$d</xliff:g> 項權限"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"已停用所有權限"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"未停用任何權限"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"允許"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"應用程式"</string>
- <string name="app_permissions" msgid="3146758905824597178">"應用程式權限"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"不要再詢問"</string>
- <string name="no_permissions" msgid="3210542466245591574">"沒有權限"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"其他權限"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"權限控制器"</string>
+ <string name="ok" msgid="4417794827535157922">"確定"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"權限"</string>
+ <string name="cancel" msgid="7279939269964834974">"取消"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"找不到應用程式"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"拒絕"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"拒絕且不要再詢問"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"更多資訊"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"直接拒絕"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"要允許「<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="1046864917164159751">"要一律允許「<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="7444689446874060511">"僅限使用應用程式時"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"一律授予權限"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"拒絕且不要再詢問"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"已停用 <xliff:g id="COUNT">%1$d</xliff:g> 項權限"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"已停用所有權限"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"未停用任何權限"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"允許"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"一律允許"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"僅限應用程式使用期間"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"應用程式"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"應用程式權限"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"權限管理員"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"不要再詢問"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"沒有權限"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"其他權限"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"開啟應用程式資訊"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<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="old_sdk_deny_warning" msgid="3872277112584842615">"這個應用程式是為舊版 Android 所開發。拒絕授予權限可能導致應用程式無法正常運作。"</string>
- <string name="default_permission_description" msgid="4992892207044156668">"執行不明的動作"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"已授權 <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="6773743421743728921">"顯示系統"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"隱藏系統"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g>權限"</string>
- <string name="no_apps" msgid="1965493419005012569">"沒有應用程式"</string>
- <string name="location_settings" msgid="1774875730854491297">"位置資訊設定"</string>
- <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> 是這台裝置的定位服務供應商。你可以在位置資訊設定中修改位置資訊存取權。"</string>
- <string name="system_warning" msgid="7103819124542305179">"如果你拒絕這項權限,裝置的基本功能可能無法正常運作。"</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"依據政策規定執行"</string>
- <string name="loading" msgid="7811651799620593731">"載入中…"</string>
- <string name="all_permissions" msgid="5156669007784613042">"所有權限"</string>
- <string name="other_permissions" msgid="2016192512386091933">"其他應用程式功能"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"權限要求"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"偵測到畫面重疊圖層"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"如要變更這項權限設定,你必須先依序前往 [設定] > [應用程式],關閉裝置畫面重疊圖層"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"開啟設定"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Wear 不支援安裝及解除安裝操作。"</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"「<xliff:g id="APP_NAME_0">%1$s</xliff:g>」已更新,要將下列項目的存取權授予「<xliff:g id="APP_NAME_1">%1$s</xliff:g>」嗎?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"選擇要將哪些存取權限授予「<xliff:g id="APP_NAME">%1$s</xliff:g>」"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」已更新。請選擇要將哪些存取權限授予這個應用程式。"</string>
- <string name="review_button_cancel" msgid="957906817733578877">"取消"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"繼續"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"新權限"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"目前權限"</string>
- <string name="message_staging" msgid="6151794817691100003">"正在啟動應用程式安裝程序…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"不明"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"為了安全起見,你的平板電腦禁止安裝這個來源提供的不明應用程式。"</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"為了安全起見,你的電視禁止安裝這個來源提供的不明應用程式。"</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"為了安全起見,你的手機禁止安裝這個來源提供的不明應用程式。"</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"來歷不明的應用程式可能會損害你的手機和個人資料。如因安裝及使用這個應用程式,導致你的手機受損或資料遺失,請自行負責。"</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"來歷不明的應用程式可能會損害你的平板電腦和個人資料。如因安裝及使用這個應用程式,導致你的平板電腦受損或資料遺失,請自行負責。"</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"來歷不明的應用程式可能會損害你的電視和個人資料。如因安裝及使用這個應用程式,導致你的電視受損或資料遺失,請自行負責。"</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"繼續"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"設定"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"安裝/解除安裝 Wear 應用程式"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"這個應用程式是為舊版 Android 所開發。拒絕授予權限可能導致應用程式無法正常運作。"</string>
+ <string name="default_permission_description" msgid="692254823411049573">"執行不明的動作"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"已授權給 <xliff:g id="COUNT_0">%1$d</xliff:g> 個應用程式 (共 <xliff:g id="COUNT_1">%2$d</xliff:g> 個)"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"最近的權限使用資料"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"查看權限資訊主頁"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"顯示系統"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"隱藏系統"</string>
+ <string name="no_apps" msgid="2377153782338039463">"沒有應用程式"</string>
+ <string name="location_settings" msgid="547378321761364906">"位置資訊設定"</string>
+ <string name="location_warning" msgid="4687406043150343369">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」是這個裝置的定位服務供應商。你可以在位置資訊設定中修改位置資訊存取權。"</string>
+ <string name="system_warning" msgid="6868290533389195836">"如果你拒絕這項權限,裝置的基本功能可能無法正常運作。"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"依據政策規定強制執行"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"已根據政策停用背景存取權"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"已根據政策啟用背景存取權"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"已根據政策啟用前景存取權"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"由管理員控管"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"管理員已停用背景存取權"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"管理員已啟用背景存取權"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"管理員已啟用前景存取權"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"系統設定的權限"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"一律允許"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"僅限使用應用程式時"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"一律不允許"</string>
+ <string name="loading" msgid="323483393167148377">"載入中…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"所有權限"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"其他應用程式功能"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"權限要求"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"偵測到畫面重疊顯示"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"如要變更這項權限設定,你必須先依序前往 [設定] > [應用程式] 停用畫面重疊顯示"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"開啟設定"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Wear 不支援安裝及解除安裝操作。"</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"選擇要授予「<xliff:g id="APP_NAME">%1$s</xliff:g>」的存取權"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」已更新。請選擇要授予這個應用程式的存取權。"</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"取消"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"繼續"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"新權限"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"目前權限"</string>
+ <string name="message_staging" msgid="641286607664721291">"正在準備應用程式安裝程序…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"不明"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"資訊主頁"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="other">上次存取時間:<xliff:g id="TIME_3">%1$s</xliff:g>\n存取次數:<xliff:g id="NUM_4">%2$s</xliff:g> 次 (有 <xliff:g id="NUM_5">%3$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> 次 (有 <xliff:g id="NUM_2">%3$s</xliff:g> 次在背景存取)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="other">上次存取時間:<xliff:g id="TIME_3">%1$s</xliff:g>\n存取次數:<xliff:g id="NUM_4">%2$s</xliff:g> 次\n持續時間:<xliff:g id="TIME_5">%3$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> 次\n持續時間:<xliff:g id="TIME_2">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="other">上次存取時間:<xliff:g id="TIME_4">%1$s</xliff:g>\n存取次數:<xliff:g id="NUM_5">%2$s</xliff:g> 次 (有 <xliff:g id="NUM_6">%3$s</xliff:g> 次在背景存取)\n持續時間:<xliff:g id="TIME_7">%3$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> 次 (有 <xliff:g id="NUM_2">%3$s</xliff:g> 次在背景存取)\n持續時間:<xliff:g id="TIME_3">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"任意權限"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"不限時間"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"過去 7 天"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"過去 24 小時"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"過去 1 小時"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"過去 15 分鐘"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"過去 1 分鐘內"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"沒有使用此權限的應用程式"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"使用過的存取權 (不限時間)"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"過去 7 天內使用過的存取權"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"過去 24 小時內使用過的存取權"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"過去 1 小時內使用過的存取權"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"過去 15 分鐘內使用過的存取權"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"過去 1 分鐘內使用過的存取權"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"常用權限的使用頻率 (不限時間)"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"過去 7 天內常用權限的使用頻率"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"過去 24 小時內常用權限的使用頻率"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"過去 1 小時內常用權限的使用頻率"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"過去 15 分鐘內常用權限的使用頻率"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"過去 1 分鐘內常用權限的使用頻率"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"應用程式"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"篩選依據:<xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"移除篩選器"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"篩選依據"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"依權限篩選"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"使用的權限數量最多"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"存取次數最多"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"最近使用過的存取權"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"重新整理"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"應用程式權限使用情況"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"使用次數:<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="4040424337831328212">"使用次數:<xliff:g id="NUM">%1$s</xliff:g> 次。上次使用時間:<xliff:g id="TIME">%2$s</xliff:g>前。"</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"允許"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"一律允許"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"僅在使用該應用程式時允許"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"拒絕"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g>權限"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"「<xliff:g id="APP">%2$s</xliff:g>」的<xliff:g id="PERM">%1$s</xliff:g>存取權"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"「<xliff:g id="APP">%1$s</xliff:g>」在 <xliff:g id="TIME">%3$s</xliff:g>前存取了你的<xliff:g id="PERM">%2$s</xliff:g>。"</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"「<xliff:g id="APP">%1$s</xliff:g>」尚未取得你的<xliff:g id="PERM">%2$s</xliff:g>存取權。"</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"查看詳細的權限使用情況"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"上次存取時間:<xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"從未存取"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"已允許"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"僅在使用時允許"</string>
+ <string name="denied_header" msgid="2277998574238617699">"已拒絕"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"查看詳細使用資料"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 天</item>
+ <item quantity="one">1 天</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 小時</item>
+ <item quantity="one">1 小時</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 分鐘</item>
+ <item quantity="one">1 分鐘</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 秒</item>
+ <item quantity="one">1 秒</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"要將「<xliff:g id="APP_NAME">%1$s</xliff:g>」<b></b>設為你的<xliff:g id="ROLE_NAME">%2$s</xliff:g>嗎?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"要將你的<xliff:g id="ROLE_NAME">%2$s</xliff:g>從「<xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g>」<b></b>改為「<xliff:g id="NEW_APP_NAME">%1$s</xliff:g>」<b></b>嗎?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"權限提醒"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"「<xliff:g id="APP_NAME">%s</xliff:g>」正在使用你的位置資訊"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"這個應用程式隨時都能存取你的位置資訊。輕觸即可變更設定。"</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"僅在應用程式使用期間"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"未授予任何權限"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"未拒絕授予任何權限"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"未授權給任何應用程式"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"未拒絕授權給任何應用程式"</string>
+ <string name="launch_app" msgid="5641437562665039291">"開啟"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"解除安裝"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"強制停止"</string>
+ <!-- no translation found for settings (2884124136779508907) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_title_single (1613456964930225277) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_title_multiple (1262608280562255761) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_bottom_text_single (6932810943462703517) -->
+ <skip />
+ <!-- no translation found for accessibility_service_dialog_bottom_text_multiple (817809209968536329) -->
+ <skip />
+ <string name="default_apps" msgid="8554530939151957828">"預設應用程式"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"沒有任何預設應用程式"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"預設的工作應用程式"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"無"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"沒有可用的應用程式"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"特殊應用程式存取權"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"沒有特殊應用程式存取權"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"沒有可用的應用程式"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"小幫手應用程式"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"瀏覽器應用程式"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"「電話」應用程式"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"簡訊應用程式"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"緊急應用程式"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"主螢幕應用程式"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"音樂應用程式"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"圖片庫應用程式"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"車用模式手機應用程式"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"通話轉接應用程式"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"來電過濾應用程式"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"通話隨附應用程式"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"車輛投影應用程式"</string>
+ <!-- no translation found for home_missing_work_profile_support (1439466272746259937) -->
+ <skip />
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"注意:如果你重新啟動裝置並設定了螢幕鎖定,你必須先將裝置解鎖,才能執行這個應用程式。"</string>
+ <!-- no translation found for assistant_confirmation_message (4529925223796676824) -->
+ <skip />
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"分享除錯資料"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"要分享詳細的除錯資料嗎?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」要求上傳除錯資訊。"</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"分享除錯資料"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"「<xliff:g id="APP_NAME_0">%1$s</xliff:g>」要求上傳這個裝置在 <xliff:g id="DATE">%2$s</xliff:g><xliff:g id="TIME">%3$s</xliff:g> 取得的錯誤報告。錯誤報告包含裝置的相關個人資訊或由應用程式記錄的個人資訊,例如:使用者名稱、位置資料、裝置 ID 和網路資訊。請務必只與你信任的使用者和應用程式分享這項資訊。要允許「<xliff:g id="APP_NAME_1">%4$s</xliff:g>」上傳錯誤報告嗎?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"允許"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"拒絕"</string>
</resources>
diff --git a/res/values-zu-television/strings.xml b/res/values-zu-television/strings.xml
index a07ad2e..2c652b4 100644
--- a/res/values-zu-television/strings.xml
+++ b/res/values-zu-television/strings.xml
@@ -16,13 +16,13 @@
<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="5694574989758145558">"Yenqaba futhi ungasabuzi"</string>
- <string name="grant_dialog_how_to_change" msgid="615414835189256888">"Ungashintsha lokhu kamuva kuzilungiselelo > izinhlelo zokusebenza"</string>
- <string name="current_permission_template" msgid="4793247012451594523">"<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="7330308025768596149">"Bonisa izinhlelo zokusebenza zesistimu"</string>
- <string name="app_permissions_decor_title" msgid="1461057434211920209">"Izimvume zohlelo lokusebenza"</string>
- <string name="manage_permissions_decor_title" msgid="4823785025722958092">"Izimvume zohlelo lokusebenza"</string>
- <string name="permission_apps_decor_title" msgid="3644363529649579576">"<xliff:g id="PERMISSION">%1$s</xliff:g> izimvume"</string>
- <string name="additional_permissions_decor_title" msgid="7000432624396037882">"Izimvume ezingeziwe"</string>
- <string name="system_apps_decor_title" msgid="5292119639812561805">"<xliff:g id="PERMISSION">%1$s</xliff:g> izimvume"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="7721279038965659947">"Yenqaba futhi ungasabuzi"</string>
+ <string name="grant_dialog_how_to_change" msgid="1457823911185462983">"Ungashintsha lokhu kamuva kuzilungiselelo > izinhlelo zokusebenza"</string>
+ <string name="current_permission_template" msgid="4118665041847213236">"<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="4678781389736017160">"Bonisa izinhlelo zokusebenza zesistimu"</string>
+ <string name="app_permissions_decor_title" msgid="6741131742122538279">"Izimvume zohlelo lokusebenza"</string>
+ <string name="manage_permissions_decor_title" msgid="2141772075499530041">"Izimvume zohlelo lokusebenza"</string>
+ <string name="permission_apps_decor_title" msgid="8174296221656857830">"<xliff:g id="PERMISSION">%1$s</xliff:g> izimvume"</string>
+ <string name="additional_permissions_decor_title" msgid="481207295679483982">"Izimvume ezingeziwe"</string>
+ <string name="system_apps_decor_title" msgid="6907923614189992830">"<xliff:g id="PERMISSION">%1$s</xliff:g> izimvume"</string>
</resources>
diff --git a/res/values-zu-watch/strings.xml b/res/values-zu-watch/strings.xml
index 38fe1c8..9d91387 100644
--- a/res/values-zu-watch/strings.xml
+++ b/res/values-zu-watch/strings.xml
@@ -16,10 +16,10 @@
<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="5828565432145544298">"Yenqaba, ungangibuzi futhi"</string>
- <string name="current_permission_template" msgid="6691830243038105737">"<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="7042886929865431207">"Bonisa izinhlelo zokusebenza zesistimu"</string>
- <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Akukwazi ukushintshwa"</string>
- <string name="generic_yes" msgid="3394094077553763689">"Yebo"</string>
- <string name="generic_cancel" msgid="6384078447202012984">"Khansela"</string>
+ <string name="grant_dialog_button_deny_dont_ask_again" msgid="2362190433398675134">"Yenqaba, ungangibuzi futhi"</string>
+ <string name="current_permission_template" msgid="2021373647237300894">"<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="4294454268471039411">"Bonisa izinhlelo zokusebenza zesistimu"</string>
+ <string name="permission_summary_enforced_by_policy" msgid="4585829669508910191">"Akukwazi ukushintshwa"</string>
+ <string name="generic_yes" msgid="4382007256855869198">"Yebo"</string>
+ <string name="generic_cancel" msgid="1201376302604725627">"Khansela"</string>
</resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 8aa70fc..86de659 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -16,136 +16,208 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2738748390251381682">"Isifaki sephakheji"</string>
- <string name="next" msgid="3057143178373252333">"Okulandelayo"</string>
- <string name="install" msgid="5896438203900042068">"Faka"</string>
- <string name="done" msgid="3889387558374211719">"Kwenziwe"</string>
- <string name="security_settings_desc" msgid="2706691034244052604">"Vumela le-app uku:"</string>
- <string name="cancel" msgid="8360346460165114585">"Khansela"</string>
- <string name="unknown" msgid="4742479012767208045">"Akwaziwa"</string>
- <string name="installing" msgid="8613631001631998372">"Iyafaka..."</string>
- <string name="installing_app" msgid="4097935682329028894">"Ifaka i-<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="install_done" msgid="3682715442154357097">"I-App ifakiwe."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Ngabe ufuna ukufaka lolu hlelo lokusebenza? Lizothola ukufinyelela ku:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Ngabe ufuna ukufaka lolu hlelo lokusebenza? Alidingi ukufinyelela okukhethekile."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Ngabe ufuna ukufaka isibuyekezo ohlelweni lokusebenza olukhona? Idatha yakho ekhona izolahleka. Uhlelo lokusebenza olubuyekeziwe lizothola ukufinyelela ku:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Ngabe ufuna ukufaka isibuyekezo kulolu hlelo lokusebenza olakhelwe phakathi? Idatha yakho ekhona izolahleka. Uhlelo lokusebenza olubuyekeziwe luzothola ukufinyelela ku:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Ingabe ufuna ukufaka isibuyekezo kulolu hlelo lokusebenza olukhona? Idatha yakho ekhona ngeke ilahleke. Akudingi ukufinyelela okukhethekile."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Ungabe ufuna ukukhipha isibuyekezo kulolu hlelo lokusebenza olakhelwe ngaphakathi? Idatha yakho ekhona ngeke ilahleke. Akudingi ukufinyelela okukhethekile."</string>
- <string name="install_failed" msgid="6579998651498970899">"I-app ayifakiwe."</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"Iphakheji livinjiwe kusukela ekufakweni."</string>
- <string name="install_failed_conflict" msgid="5336045235168070954">"Uhlelo lokusebenza alufakiwe njengoba ukuphakheja kushayisana nephakheji elikhona."</string>
- <string name="install_failed_incompatible" product="tablet" msgid="6682387386242708974">"Uhlelo lokusebenza alufakiwe njengoba uhlelo lokusebenza lungahambisani nethebulethi yakho."</string>
- <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"Lolu hlelo lokusebenza aluhambisani ne-TV yakho."</string>
- <string name="install_failed_incompatible" product="default" msgid="7917996365659426872">"Uhlelo lokusebenza alufakiwe njengoba uhlelo lokusebenza lungahambisani nefoni yakho."</string>
- <string name="install_failed_invalid_apk" msgid="269885385245534742">"Uhlelo lokusebenza alufakiwe njengoba iphakheji ibonakala ingavumelekile."</string>
- <string name="install_failed_msg" product="tablet" msgid="8368835262605608787">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> ayikwazanga ukufakwa kuthebhulethi."</string>
- <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> ayikwazanga ukufakwa ku-TV yakho."</string>
- <string name="install_failed_msg" product="default" msgid="8554909560982962052">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> ayikwazanga ukufakwa efonini."</string>
- <string name="launch" msgid="4826921505917605463">"Vula"</string>
- <string name="unknown_apps_admin_dlg_text" msgid="7488386758312008790">"Umlawuli wakho akavumeli ukufakwa kwezinhlelo zokusebenza ezitholwe kusukela kumithombo engaziwa"</string>
- <string name="unknown_apps_user_restriction_dlg_text" msgid="5785226253054083336">"Izinhlelo zokusebenza ezingaziwa azikwazi ukufakwa ilo msebenzisi"</string>
- <string name="install_apps_user_restriction_dlg_text" msgid="5041150186260066212">"Lo msebenzisi akavunyelwe ukufaka izinhlelo zokusebenza"</string>
- <string name="ok" msgid="3468756155452870475">"KULUNGILE"</string>
- <string name="settings" msgid="6743583734099755409">"Izilungiselelo"</string>
- <string name="manage_applications" msgid="4033876279091996596">"Phatha izinhlelo zokusebenza"</string>
- <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Miselela i-app?"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"I-app oyifakayo izomiselela enye i-app.\n\nYonke idatha yakho yomsebenzisi yangaphambilini izogcinwa."</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Le i-app yohlelo.\n\nYonke idatha yakho yomsebenzisi yangaphambilini izogcinwa."</string>
- <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Iphelelwe yisikhala"</string>
- <string name="out_of_space_dlg_text" msgid="4774775404294282216">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> ayikwazanga ukufakwa. Khulula isikhala bese uzama futhi."</string>
- <string name="dlg_ok" msgid="6944357727705699232">"KULUNGILE"</string>
- <string name="app_not_found_dlg_title" msgid="2692335460569505484">"I-App ayitholakalanga"</string>
- <string name="app_not_found_dlg_text" msgid="6107465056055095930">"Uhlelo lokusebenza alutholakalanga ohlwini lwezinhlelo zokusebenza ezifakiwe."</string>
- <string name="user_is_not_allowed_dlg_title" msgid="118128026847201582">"Akuvumelekile"</string>
- <string name="user_is_not_allowed_dlg_text" msgid="739716827677987545">"Umsebenzisi wamanje akavunyelwe ukwenza lokhu kukhipha."</string>
- <string name="generic_error_dlg_title" msgid="2684806600635296961">"Iphutha"</string>
- <string name="generic_error_dlg_text" msgid="4288738047825333954">"Amafu ohlelo lokusebenza angakhishwa."</string>
- <string name="uninstall_application_title" msgid="1860074100811653963">"Khipha i-app"</string>
- <string name="uninstall_update_title" msgid="4146940097553335390">"Khipha isibuyekezo"</string>
- <string name="uninstall_activity_text" msgid="6680688689803932550">"I-<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> ingxenye yohlelo lokusebenza olulandelayo:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Ufuna ukukhipha le-app?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Ingabe ufuna ukukhipha lolu hlelo lokusebenza kubo "<b>"bonke"</b>" abasebenzisi? Uhlelo lokusebenza nedatha yalo kuzosuswa kubo "<b>"bonke"</b>" abasebenzisi kudivayisi."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Ingabe ufuna ukukhiphela lolu hlelo lokusebenza kumsebenzisi ongu-<xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
- <string name="uninstall_update_text" msgid="1394549691152728409">"Shintshanisa lolu hlelo lokusebenza ngenguqulo yasekuqaleni? Yonke idatha izosuswa."</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Shintshanisa lolu hlelo lokusebenza ngenguqulo yasekuqaleni? Yonke idatha izosuswa. Lokhu kuthinta bonke abasebenzisi bale divayisi, abafaka labo abanamaphrofayela wokusebenza."</string>
- <string name="uninstalling_notification_channel" msgid="5698369661583525583">"Ukukhishwa okuqhubekayo"</string>
- <string name="uninstall_failure_notification_channel" msgid="8224276726364132314">"Ukukhishwa okuhlulekile"</string>
- <string name="uninstalling" msgid="5556217435895938250">"Iyakhipha..."</string>
- <string name="uninstalling_app" msgid="2773617614877719294">"Ikhipha i-<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
- <string name="uninstall_done" msgid="3792487853420281888">"Ukukhipha kuqedile"</string>
- <string name="uninstall_done_app" msgid="775837862728680479">"Kukhishwe i-<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="uninstall_failed" msgid="631122574306299512">"Ukukhipha akuphumelelanga."</string>
- <string name="uninstall_failed_app" msgid="945277834056527022">"Ukukhipha i-<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> akuphumelele."</string>
- <string name="uninstall_failed_device_policy_manager" msgid="2727361164694743362">"Ayikwazi ukukhipha uhlelo lokusebenza lomlawuli ledivayisi esebenzayo"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="2161462242935805756">"Ayikwazi ukukhipha uhlelo lokusebenza lomlawuli ledivayisi esebenzayo lika-<xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Lolu hlelo lokusebenza luyadingeka kwabanye abasebenzisi noma amaphrofayela futhi lukhishelwe abanye"</string>
- <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Lolu hlelo lokusebenza ludingelwa iphrofayela yakho futhi alikwazi ukukhishwa."</string>
- <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Lolu hlelo lokusebenza ludingwa umlawuli wedivayisi yakho futhi alukwazi ukukhishwa."</string>
- <string name="manage_device_administrators" msgid="118178632652346535">"Phatha izinhlelo zokusebenza zedivayisi yomlawuli"</string>
- <string name="manage_users" msgid="3125018886835668847">"Phatha abasebenzisi"</string>
- <string name="uninstall_failed_msg" msgid="8969754702803951175">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> ayikwazanga ukukhishwa"</string>
- <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Kube nenkinga yokwehlukanisa iphakheji."</string>
- <string name="newPerms" msgid="6039428254474104210">"Okusha"</string>
- <string name="allPerms" msgid="1024385515840703981">"Konke"</string>
- <string name="privacyPerms" msgid="1850527049572617">"Ubumfihlo"</string>
- <string name="devicePerms" msgid="6733560207731294504">"Ukufinyelela kwedivayisi"</string>
- <string name="no_new_perms" msgid="6657813692169565975">"Lesi sibuyekezo asidingi zimvume."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Ufuna ukunikeza lezi zimvume ezilandelayo? Izothola ukufinyelela ku-:"</string>
- <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Phika"</string>
- <string name="grant_dialog_button_more_info" msgid="2218220771432058426">"Olunye ulwazi"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Yenqaba noma kunjalo"</string>
- <string name="current_permission_template" msgid="6378304249516652817">"<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="7332275268559121742">"Vumela i-<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ukuthi <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
- <string name="permission_revoked_count" msgid="7386129423432613024">"<xliff:g id="COUNT">%1$d</xliff:g> kukhutshaziwe"</string>
- <string name="permission_revoked_all" msgid="8595742638132863678">"konke kukhutshaziwe"</string>
- <string name="permission_revoked_none" msgid="2059511550181271342">"Lutho olukhutshaziwe"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Vumela"</string>
- <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Izinhlelo zokusebenza"</string>
- <string name="app_permissions" msgid="3146758905824597178">"Izimvume zohlelo lokusebenza"</string>
- <string name="never_ask_again" msgid="1089938738199748687">"Ungaphindi ubuze"</string>
- <string name="no_permissions" msgid="3210542466245591574">"Akukho zimvume"</string>
- <string name="additional_permissions" msgid="6667573114240111763">"Izimvume ezingeziwe"</string>
- <plurals name="additional_permissions_more" formatted="false" msgid="945127158155064388">
+ <string name="app_name" msgid="2792757108872430971">"Isilawuli semvume"</string>
+ <string name="ok" msgid="4417794827535157922">"KULUNGILE"</string>
+ <string name="permission_search_keyword" msgid="1652964722383449182">"izimvume"</string>
+ <string name="cancel" msgid="7279939269964834974">"Khansela"</string>
+ <string name="app_not_found_dlg_title" msgid="8897078571059217849">"I-App ayitholakalanga"</string>
+ <string name="grant_dialog_button_deny" msgid="1649644200597601964">"Phika"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="5716583584580362144">"Yenqaba futhi ungasabuza"</string>
+ <string name="grant_dialog_button_more_info" msgid="6933952978344714007">"Olunye ulwazi"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="6134672842863824171">"Yenqaba yize kunjalo"</string>
+ <string name="current_permission_template" msgid="5642540253562598515">"<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="1353228984024423745">"Vumela i-<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ukuthi <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_add_background_warning_template" msgid="1046864917164159751">"Njalo vumela i-<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ukwenza <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="allow_permission_foreground_only" msgid="7444689446874060511">"Kuphela ngenkathi usebenzisa uhlelo lokusebenza"</string>
+ <string name="allow_permission_always" msgid="4089537686339013930">"Njalo"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="8131547398883397878">"Yenqaba futhi ungasabuzi"</string>
+ <string name="permission_revoked_count" msgid="5556125174203696709">"<xliff:g id="COUNT">%1$d</xliff:g> kukhutshaziwe"</string>
+ <string name="permission_revoked_all" msgid="6356577996164232918">"konke kukhutshaziwe"</string>
+ <string name="permission_revoked_none" msgid="266013103540772023">"Lutho olukhutshaziwe"</string>
+ <string name="grant_dialog_button_allow" msgid="2137542756625939532">"Vumela"</string>
+ <string name="grant_dialog_button_allow_always" msgid="4201473810650722162">"Vumela sonke isikhathi"</string>
+ <string name="grant_dialog_button_allow_foreground" msgid="2929490670369819475">"Vumela kuphela ngenkathi uhlelo lokusebenza lusebenza"</string>
+ <string name="app_permissions_breadcrumb" msgid="6174723486639913311">"Izinhlelo zokusebenza"</string>
+ <string name="app_permissions" msgid="2778362347879465223">"Izimvume zohlelo lokusebenza"</string>
+ <string name="app_permission_manager" msgid="3802609813311662642">"Isiphathi semvume"</string>
+ <string name="never_ask_again" msgid="7645304182523160030">"Ungaphindi ubuze"</string>
+ <string name="no_permissions" msgid="2193893107241172888">"Akukho zimvume"</string>
+ <string name="additional_permissions" msgid="7124470111123472154">"Izimvume ezingeziwe"</string>
+ <string name="app_permissions_info_button_label" msgid="6566057048862462066">"Vula ulwazi lohlelo lokusebenza"</string>
+ <plurals name="additional_permissions_more" formatted="false" msgid="2232860610746920222">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> okuningi</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> okuningi</item>
</plurals>
- <string name="old_sdk_deny_warning" msgid="3872277112584842615">"Lolu hlelo lokusebenza ludizayinelwe inguqulo endala ye-Android. Ukwala imvume kungalibangela ukuthi lingasasebenzi njengoba kuhlosiwe."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"Yenza isenzo esingaziwa"</string>
- <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_0">%1$d</xliff:g> kuzinhlelo zokusebenza ezingu-<xliff:g id="COUNT_1">%2$d</xliff:g> ezivunyelwe"</string>
- <string name="menu_show_system" msgid="6773743421743728921">"Bonisa isistimu"</string>
- <string name="menu_hide_system" msgid="7595471742649432977">"Fihla isistimu"</string>
- <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> izimvume"</string>
- <string name="no_apps" msgid="1965493419005012569">"Azikho izinhlelo zokusebenza"</string>
- <string name="location_settings" msgid="1774875730854491297">"Izilungiselelo Zendawo"</string>
- <string name="location_warning" msgid="8778701356292735971">"<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="7103819124542305179">"Uma unqabela le mvume, izici eziyisisekelo zedivayisi yakho zingahle zingasasebenzi njengoba zihlosiwe."</string>
- <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Isetshenziswe yinqubomgomo"</string>
- <string name="loading" msgid="7811651799620593731">"Iyalayisha..."</string>
- <string name="all_permissions" msgid="5156669007784613042">"Zonke izimvume"</string>
- <string name="other_permissions" msgid="2016192512386091933">"Amanye amakhono wohlelo lokusebenza"</string>
- <string name="permission_request_title" msgid="1204446718549121199">"Isicelo semvume"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Kutholwe imbondela yesikrini"</string>
- <string name="screen_overlay_message" msgid="2141944461571677331">"Ukuze uguqule lesi silungiselelo semvume, kuzomele uqale uvale imbondela yesikrini kusukela ku-Izilungiselelo > Izinhlelo zokusebenza"</string>
- <string name="screen_overlay_button" msgid="4344544843349937743">"Vula izilungiselelo"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"I-Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Izenzo zokufaka/ukukhipha azisekelwe ku-Wear."</string>
- <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ibuyekeziwe. Vumela i-<xliff:g id="APP_NAME_1">%1$s</xliff:g> ukufinyelela okulandelayo?"</string>
- <string name="permission_review_title_template_install" msgid="6819338441305295479">"Khetha ukuthi uzovumela ini ukuthi i-<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ifinyelele kuyo"</string>
- <string name="permission_review_title_template_update" msgid="8632233603161669426">"I-<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ibuyekeziwe. Khetha ukuthi uzovumela ini ukuthi ifinyelelwe ilolu hlelo lokusebenza."</string>
- <string name="review_button_cancel" msgid="957906817733578877">"Khansela"</string>
- <string name="review_button_continue" msgid="4809162078179371370">"Qhubeka"</string>
- <string name="new_permissions_category" msgid="3213523410139204183">"Izimvume ezintsha"</string>
- <string name="current_permissions_category" msgid="998210994450606094">"Izimvume zamanje"</string>
- <string name="message_staging" msgid="6151794817691100003">"Ifaka kusiteji uhlelo lokusebenza…"</string>
- <string name="app_name_unknown" msgid="8931522764510159105">"Akwaziwa"</string>
- <string name="untrusted_external_source_warning" product="tablet" msgid="1483151219938173935">"Ukuze uvikelwe, ithebulethi yakho ayivunyelwe ukuthi ifake izinhlelo zokusebenza ezingaziwa kusukela kulo mthombo."</string>
- <string name="untrusted_external_source_warning" product="tv" msgid="5373768281884328560">"Ukuze uvikelwe, i-TV yakho ayivunyelwe ukuthi ifake izinhlelo zokusebenza ezingaziwa kusukela kulo mthombo."</string>
- <string name="untrusted_external_source_warning" product="default" msgid="2223486836232706553">"Ukuze uvikelwe, ifoni yakho ayivunyelwe ukuthi ifake izinhlelo zokusebenza kusukela kulo mthombo."</string>
- <string name="anonymous_source_warning" product="default" msgid="7700263729981815614">"Idatha yakho yefoni neyohlelo lwakho lokusebenza isengcupheni kakhulu ekuhlaselweni izinhlelo zokusebenza ezingaziwa. Ngokufaka lolu hlelo lokusebenza, uyavuma ukuthi unesibopho sanoma ikuphi ukonakala kufoni yakho noma ukulahlekelwa kwedatha okungabangelwa ukusetshenziswa kwayo."</string>
- <string name="anonymous_source_warning" product="tablet" msgid="8854462805499848630">"Ithebulethi yakho nedatha yomuntu siqu zisengcupheni kakhulu ekuhlaselweni izinhlelo zokusebenza ezingaziwa. Ngokufaka lolu hlelo lokusebenza, uyavuma ukuthi unesibopho sanoma ikuphi ukonakala kuthebulethi yakho noma ukulahleka kwedatha okungabangelwa ukusetshenziswa kwayo."</string>
- <string name="anonymous_source_warning" product="tv" msgid="1291472686734385872">"Idatha yakho ye-TV neyomuntu siqu isengcupheni kakhulu ekuhlaselweni izinhlelo zokusebenza ezingaziwa. Ngokufaka lolu hlelo lokusebenza, uyavuma ukuthi unesibopho sanoma ikuphi ukonakala ku-TV yakho noma ukulahlekelwa kwedatha okungabangelwa ukusetshenziswa kwayo."</string>
- <string name="anonymous_source_continue" msgid="2094381167954332292">"Qhubeka"</string>
- <string name="external_sources_settings" msgid="8601453744517291632">"Izilungiselelo"</string>
- <string name="wear_app_channel" msgid="6200840123672949356">"Ifaka/ikhipha izinhlelo zokusebenza ze-wear"</string>
+ <string name="old_sdk_deny_warning" msgid="6018489265342857714">"Lolu hlelo lokusebenza ludizayinelwe inguqulo endala ye-Android. Ukwala imvume kungalibangela ukuthi lingasasebenzi njengoba kuhlosiwe."</string>
+ <string name="default_permission_description" msgid="692254823411049573">"Yenza isenzo esingaziwa"</string>
+ <string name="app_permissions_group_summary" msgid="5019625174481872207">"<xliff:g id="COUNT_0">%1$d</xliff:g> kuzinhlelo zokusebenza ezingu-<xliff:g id="COUNT_1">%2$d</xliff:g> ezivunyelwe"</string>
+ <string name="permission_usage_header" msgid="8802963718365732792">"Ukusebenzisa kwakamuva"</string>
+ <string name="permission_usage_view_details" msgid="7398825662321010957">"Buka izimvume zedeshibhodi"</string>
+ <string name="menu_show_system" msgid="7623002570829860709">"Bonisa isistimu"</string>
+ <string name="menu_hide_system" msgid="2274204366405029090">"Fihla isistimu"</string>
+ <string name="no_apps" msgid="2377153782338039463">"Azikho izinhlelo zokusebenza"</string>
+ <string name="location_settings" msgid="547378321761364906">"Izilungiselelo Zendawo"</string>
+ <string name="location_warning" msgid="4687406043150343369">"<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="6868290533389195836">"Uma unqabela le mvume, izici eziyisisekelo zedivayisi yakho zingahle zingasasebenzi njengoba zihlosiwe."</string>
+ <string name="permission_summary_enforced_by_policy" msgid="632945329450867948">"Isetshenziswe yinqubomgomo"</string>
+ <string name="permission_summary_disabled_by_policy_background_only" msgid="137178879402491132">"Ukufinyelela kwangemuva kukhutshazwe inqubomgomo"</string>
+ <string name="permission_summary_enabled_by_policy_background_only" msgid="2699118232240494204">"Ukufinyelela kwangemuva kunikwe amandla ngenqubomgomo"</string>
+ <string name="permission_summary_enabled_by_policy_foreground_only" msgid="8652417310534780420">"Ukufinyelela kwangaphambili kunikwe amandla ngenqubomgomo"</string>
+ <string name="permission_summary_enforced_by_admin" msgid="5156952484229154563">"Kulawulwa umqondisi"</string>
+ <string name="permission_summary_disabled_by_admin_background_only" msgid="3580805532594984554">"Ukufinyelela kwangemuva kukhutshazwe umlawuli"</string>
+ <string name="permission_summary_enabled_by_admin_background_only" msgid="5087543391647053237">"Ukufinyelela kwangemuva kunikwe amandla umlawuli"</string>
+ <string name="permission_summary_enabled_by_admin_foreground_only" msgid="4566755547230479934">"Ukufinyelela kwangaphambili kunikwe amandla umlawuli"</string>
+ <string name="permission_summary_enabled_system_fixed" msgid="1648259601814176611">"Imvume esethwe isistimu"</string>
+ <!-- no translation found for background_access_chooser_dialog_choices:0 (2093938392538894210) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:1 (3927338369513373750) -->
+ <!-- no translation found for background_access_chooser_dialog_choices:2 (8438068599173343936) -->
+ <string name="permission_access_always" msgid="2315256378850460955">"Njalo"</string>
+ <string name="permission_access_only_foreground" msgid="8109903552082630801">"Kuphela ngenkathi usebenzisa uhlelo lokusebenza"</string>
+ <string name="permission_access_never" msgid="4717648645876576508">"Soze"</string>
+ <string name="loading" msgid="323483393167148377">"Iyalayisha…"</string>
+ <string name="all_permissions" msgid="7813580062403112957">"Zonke izimvume"</string>
+ <string name="other_permissions" msgid="1956312685853070715">"Amanye amakhono wohlelo lokusebenza"</string>
+ <string name="permission_request_title" msgid="6779348653783761548">"Isicelo semvume"</string>
+ <string name="screen_overlay_title" msgid="1632732130312696010">"Kutholwe imbondela yesikrini"</string>
+ <string name="screen_overlay_message" msgid="3222033787364955006">"Ukuze uguqule lesi silungiselelo semvume, kuzomele uqale uvale imbondela yesikrini kusukela ku-Izilungiselelo > Izinhlelo zokusebenza"</string>
+ <string name="screen_overlay_button" msgid="3554849308322944411">"Vula izilungiselelo"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="6923880912091041609">"I-Android Wear"</string>
+ <string name="wear_not_allowed_dlg_text" msgid="8731817202551430387">"Izenzo zokufaka/ukukhipha azisekelwe ku-Wear."</string>
+ <string name="permission_review_title_template_install" msgid="8131698354985303888">"Khetha ukuthi uzovumela ini ukuthi i-<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ifinyelele kuyo"</string>
+ <string name="permission_review_title_template_update" msgid="7597155653571395485">"I-<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ibuyekeziwe. Khetha ukuthi uzovumela ini ukuthi ifinyelelwe ilolu hlelo lokusebenza."</string>
+ <string name="review_button_cancel" msgid="7108377593627664194">"Khansela"</string>
+ <string name="review_button_continue" msgid="1367925420132212571">"Qhubeka"</string>
+ <string name="new_permissions_category" msgid="7242713808413888679">"Izimvume ezintsha"</string>
+ <string name="current_permissions_category" msgid="3835461245150972589">"Izimvume zamanje"</string>
+ <string name="message_staging" msgid="641286607664721291">"Ifaka kusiteji uhlelo lokusebenza…"</string>
+ <string name="app_name_unknown" msgid="8288360585728122735">"Akwaziwa"</string>
+ <string name="permission_usage_title" msgid="6808284837306026819">"Ideshibhodi"</string>
+ <plurals name="permission_usage_summary" formatted="false" msgid="5323807746329287417">
+ <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>
+ </plurals>
+ <plurals name="permission_usage_summary_background" formatted="false" msgid="7596001658859120646">
+ <item quantity="one">Ukufinyelela kokugcina: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> iyafinyelela (<xliff:g id="NUM_5">%3$s</xliff:g> ngemuva)</item>
+ <item quantity="other">Ukufinyelela kokugcina: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> iyafinyelela (<xliff:g id="NUM_5">%3$s</xliff:g> ngemuva)</item>
+ </plurals>
+ <plurals name="permission_usage_summary_duration" formatted="false" msgid="896006189476160370">
+ <item quantity="one">Ukufinyelela kokugcina: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> iyafinyelela\nUbude besikhathi: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ <item quantity="other">Ukufinyelela kokugcina: <xliff:g id="TIME_3">%1$s</xliff:g>\n<xliff:g id="NUM_4">%2$s</xliff:g> iyafinyelela\nUbude besikhathi: <xliff:g id="TIME_5">%3$s</xliff:g></item>
+ </plurals>
+ <plurals name="permission_usage_summary_background_duration" formatted="false" msgid="6112860268441134618">
+ <item quantity="one">Ukufinyelela kokugcina: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> iyafinyelela (<xliff:g id="NUM_6">%3$s</xliff:g> ngemuva)\nUbude besikhathi: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ <item quantity="other">Ukufinyelela kokugcina: <xliff:g id="TIME_4">%1$s</xliff:g>\n<xliff:g id="NUM_5">%2$s</xliff:g> iyafinyelela (<xliff:g id="NUM_6">%3$s</xliff:g> ngemuva)\nUbude besikhathi: <xliff:g id="TIME_7">%3$s</xliff:g></item>
+ </plurals>
+ <string name="permission_usage_any_permission" msgid="7824062114364689751">"Noma iyiphi imvume"</string>
+ <string name="permission_usage_any_time" msgid="313857697004329939">"Noma yisiphi isikhathi"</string>
+ <string name="permission_usage_last_7_days" msgid="4553199171543115540">"Izinsuku zokugcina ezingu-7"</string>
+ <string name="permission_usage_last_day" msgid="4149912805759768249">"Amahora angu-24 okugcina"</string>
+ <string name="permission_usage_last_hour" msgid="2907717357748648755">"Ihora lokugcina elingu-1"</string>
+ <string name="permission_usage_last_15_minutes" msgid="8092341409350314280">"Amaminithi angu-15 okugcina"</string>
+ <string name="permission_usage_last_minute" msgid="1712931459994781087">"Iminithi lokugcina elingu-1"</string>
+ <string name="no_permission_usages" msgid="698858628357371611">"Akukho ukusetshenziswa kwemvume"</string>
+ <string name="permission_usage_list_title_any_time" msgid="3769244144339672988">"Finyelela noma kunini"</string>
+ <string name="permission_usage_list_title_last_7_days" msgid="3727861046378775818">"Ukufinyelela ezinsukwini zokugcina ezingu-7"</string>
+ <string name="permission_usage_list_title_last_day" msgid="5342320924730492471">"Ukufinyelela emahoreni okugcina angu-24"</string>
+ <string name="permission_usage_list_title_last_hour" msgid="2815783501799574220">"Ukufinyelela ehoreni lokugcina"</string>
+ <string name="permission_usage_list_title_last_15_minutes" msgid="6355340673284923840">"Finyelela kumaminithi angu-15 wokugcina"</string>
+ <string name="permission_usage_list_title_last_minute" msgid="8035799852985876841">"Ukufinyelela ngeminithi lokugcina elingu-1"</string>
+ <string name="permission_usage_bar_chart_title_any_time" msgid="8198031767207481138">"Ukusetshenziswa kwemvume ephezulu noma kunini"</string>
+ <string name="permission_usage_bar_chart_title_last_7_days" msgid="1383253721624697737">"Ukusetshenziswa kwemvume ephezulu kuzinsuku ezingu-7 zokugcina"</string>
+ <string name="permission_usage_bar_chart_title_last_day" msgid="4961033178274179547">"Ukusetshenziswa kwemvume okuphezulu emahoreni angu-24 okugcina"</string>
+ <string name="permission_usage_bar_chart_title_last_hour" msgid="652067970457696948">"Ukusetshenziswa kwemvume ephezulu ehoreni elingu-1 lokugcina"</string>
+ <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="605482005070580571">"Ukusetshenziswa kwemvume ephezulu kumaminithi okugcina angu-15"</string>
+ <string name="permission_usage_bar_chart_title_last_minute" msgid="7503220317255343929">"Ukusetshenziswa kwemvume ephezulu kuminithi lokugcina elingu-1"</string>
+ <string name="app_permission_usage_bar_label" msgid="5471180291634450396">"Izinhlelo zokusebenza"</string>
+ <string name="app_permission_usage_filter_label" msgid="8700139296200468389">"Kuhlungwe ngalokhu: <xliff:g id="PERM">%1$s</xliff:g>"</string>
+ <string name="app_permission_usage_remove_filter" msgid="2046234519591857627">"Susa isihlungi"</string>
+ <string name="filter_by_title" msgid="5940302511365561845">"Hlunga nge-"</string>
+ <string name="filter_by_permissions" msgid="7761207093643478436">"Hlunga ngezimvume"</string>
+ <string name="sort_spinner_most_permissions" msgid="7512752810135216720">"Izimvume eziningi"</string>
+ <string name="sort_spinner_most_accesses" msgid="8939431242431209447">"Efinyelelwe kakhulu"</string>
+ <string name="sort_spinner_recent" msgid="8391312947480880412">"Okwakamuva"</string>
+ <string name="permission_usage_refresh" msgid="2182775682810005148">"Vuselela"</string>
+ <string name="app_permission_usage_title" msgid="5641038589468666526">"Ukusetshenziswa kwezimvume zohlelo lokusebenza"</string>
+ <string name="app_permission_usage_summary" msgid="8560461104458882198">"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="4040424337831328212">"Ukufinyelela: <xliff:g id="NUM">%1$s</xliff:g> izikhathi. Kugcinwe ukusetshenziswa u-<xliff:g id="TIME">%2$s</xliff:g> odlule."</string>
+ <string name="app_permission_button_allow" msgid="1358817292836175593">"Vumela"</string>
+ <string name="app_permission_button_allow_always" msgid="4313513946865105788">"Vumela sonke isikhathi"</string>
+ <string name="app_permission_button_allow_foreground" msgid="6366222217615376397">"Vumela kuphela ngenkathi uhlelo lokusebenza lusebenza"</string>
+ <string name="app_permission_button_deny" msgid="5716368368650638408">"Phika"</string>
+ <string name="app_permission_title" msgid="2453000050669052385">"<xliff:g id="PERM">%1$s</xliff:g> imvume"</string>
+ <string name="app_permission_header" msgid="5704679725169517493">"<xliff:g id="PERM">%1$s</xliff:g> ukufinyelela kwe-<xliff:g id="APP">%2$s</xliff:g>"</string>
+ <string name="app_permission_footer_usage_summary" msgid="2944747878556477852">"<xliff:g id="APP">%1$s</xliff:g> ufinyelele u-<xliff:g id="PERM">%2$s</xliff:g> yakho isikhathi esingu-<xliff:g id="TIME">%3$s</xliff:g> esedlule."</string>
+ <string name="app_permission_footer_no_usages" msgid="8176256750330679454">"<xliff:g id="APP">%1$s</xliff:g> ayifinyelele i-<xliff:g id="PERM">%2$s</xliff:g> yakho."</string>
+ <string name="app_permission_footer_usage_link" msgid="5912236275600923326">"Buka ukusetshenziswa kwezimvume ezinemininingwane"</string>
+ <string name="app_permission_most_recent_summary" msgid="7435245857128891808">"Kugcine ukufinyelelwa: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
+ <string name="app_permission_never_accessed_summary" msgid="594285912530635023">"Akukaze kwafinyelelwa"</string>
+ <string name="allowed_header" msgid="6279244592227088158">"Kuvumelekile"</string>
+ <string name="allowed_foreground_header" msgid="7553595563464819175">"Kuvunyelwe kuphela ngenkathi kusetshenziswa"</string>
+ <string name="denied_header" msgid="2277998574238617699">"Kunqatshiwe"</string>
+ <string name="detailed_usage_link" msgid="3990452346369247944">"Bona ukusebenzisa okunemininingwane"</string>
+ <plurals name="days" formatted="false" msgid="3903419301028414979">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> izinsuku</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> izinsuku</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="2123927014975877155">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> amahora</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> amahora</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="4331145652577957044">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> amaminithi</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> amaminithi</item>
+ </plurals>
+ <plurals name="seconds" formatted="false" msgid="1632909606956324957">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> amasekhondi</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> amasekhondi</item>
+ </plurals>
+ <string name="role_request_message_add" msgid="1977772335648650272">"Sebenzisa i-<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> njenge-<xliff:g id="ROLE_NAME">%2$s</xliff:g> yakho?"</string>
+ <string name="role_request_message_replace" msgid="6367571247558110210">"Sebenzisa i-<b><xliff:g id="NEW_APP_NAME">%1$s</xliff:g></b> esikhundleni se-<b><xliff:g id="CURRENT_APP_NAME">%1$s</xliff:g></b> njenge-<xliff:g id="ROLE_NAME">%2$s</xliff:g> yakho?"</string>
+ <string name="permission_reminders" msgid="8040710767178843151">"Izikhumbuzi zemvume"</string>
+ <string name="background_location_access_reminder_notification_title" msgid="3986986240015907758">"I-<xliff:g id="APP_NAME">%s</xliff:g> ibikade isebenzisa indawo yakho"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="2715202570602748060">"Lolu hlelo lokusebenza lungahlala lufinyelela indawo yakho. Thepha ukuze ushintshe."</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="3101936262905298459">"Kuphela ngenkathi uhlelo lokusebenza lusebenza"</string>
+ <string name="no_permissions_allowed" msgid="5781278485002145993">"Azikho izimvume ezivunyelwe"</string>
+ <string name="no_permissions_denied" msgid="2449583707612365442">"Azikho izimvume ezinqatshelwe"</string>
+ <string name="no_apps_allowed" msgid="4529095928504611810">"Azikho izinhlelo zokusebenza ezivunyelwe"</string>
+ <string name="no_apps_denied" msgid="2736758388618487796">"Azikho izinhlelo zokusebenza ezinqatshelwe"</string>
+ <string name="launch_app" msgid="5641437562665039291">"Vula"</string>
+ <string name="uninstall_app" msgid="8756507666995809214">"Khipha"</string>
+ <string name="force_stop_app" msgid="4253426323145479826">"Phoqelela ukuma"</string>
+ <string name="settings" msgid="2884124136779508907">"Izilungiselelo"</string>
+ <string name="accessibility_service_dialog_title_single" msgid="1613456964930225277">"I-<xliff:g id="SERVICE_NAME">%s</xliff:g> inokufinyelela okugcwele kudivayisi yakho"</string>
+ <string name="accessibility_service_dialog_title_multiple" msgid="1262608280562255761">"<xliff:g id="NUM_SERVICES">%s</xliff:g> amasevisi okufinyeleleka anokufinyelela okugcwele kudivayisi yakho"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="6932810943462703517">"I-<xliff:g id="SERVICE_NAME">%s</xliff:g> ingabuka isikrini sakho, izenzo, nokokufaka, yenze izenzo, iphinde ilawule isiboniso."</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="817809209968536329">"Lawa masevisi angabuka isikrini sakho, izenzo, nokokufaka, enze izenzo, aphinde alawule isiboniso."</string>
+ <string name="default_apps" msgid="8554530939151957828">"Izinhlelo zokusebenza ezizenzakalelayo"</string>
+ <string name="no_default_apps" msgid="5642715159090903032">"Azikho izinhlelo zokusebenza ezizenzakalelayo"</string>
+ <string name="default_apps_for_work" msgid="8582151955372061208">"Okuzenzakalelayo kokusebenza"</string>
+ <string name="default_app_none" msgid="7671097769303174666">"Lutho"</string>
+ <string name="default_app_no_apps" msgid="5344668465735677271">"Azikho izinhlelo zokusebenza"</string>
+ <string name="special_app_access" msgid="2561673957499408877">"Ukungena kohlelo okukhethekile"</string>
+ <string name="no_special_app_access" msgid="994977666694457811">"Akukho ukungena okukhethekile"</string>
+ <string name="special_app_access_no_apps" msgid="3934763650592564818">"Azikho izinhlelo zokusebenza"</string>
+ <string name="role_label_assistant" msgid="456685142560727172">"Uhlelo lokusebenza lokusiza"</string>
+ <string name="role_label_browser" msgid="6266502234308421457">"Uhlelo lokusebenza lwesiphequluli"</string>
+ <string name="role_label_dialer" msgid="3345895090725237533">"Uhlelo lokusebenza lwefoni"</string>
+ <string name="role_label_sms" msgid="2262769075496017522">"Uhlelo lokusebenza lwe-SMS"</string>
+ <string name="role_label_emergency" msgid="2226651888638211616">"Uhlelo lesimo esiphuthumayo"</string>
+ <string name="role_label_home" msgid="7672863812639457378">"Uhelo lokusebenza lasekhaya"</string>
+ <string name="role_label_music" msgid="5900245414865932272">"Uhlelo lokusebenza lomculo"</string>
+ <string name="role_label_gallery" msgid="6939560238495155209">"Uhlelo lokusebenza lwegalari"</string>
+ <string name="role_label_car_mode_dialer" msgid="5807291243320384807">"I-app yefoni yemoti yemoto"</string>
+ <string name="role_label_call_redirection" msgid="8902197181113231577">"Uhlelo lokusebenza lokuqondisa kabusha ikholi"</string>
+ <string name="role_label_call_screening" msgid="411212589764916370">"I-app lokuskrina lokushaya"</string>
+ <string name="role_label_call_companion" msgid="7369723859682076467">"I-app lokuhambisana lokushaya"</string>
+ <string name="role_label_car_projection" msgid="3792929094325391213">"Uhlelo lokusebenza lokuphrojektha kwemoto"</string>
+ <string name="home_missing_work_profile_support" msgid="1439466272746259937">"Ayisekeli iphrofayela yokusebenza"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="1366058948707595596">"Qaphela: Uma uqala kabusha idivayisi yakho futhi usethe ukukhiya kwesikrini, lolu hlelo lokusebenza alukwazi ukuqala uze uvule idivayisi yakho."</string>
+ <string name="assistant_confirmation_message" msgid="4529925223796676824">"Isilekeleli sizokwazi ukufunda ulwazi mayelana nezinhlelo zokusebenza ezisetshenziswayo kusistimu yakho, ezifaka ulwazi olubonakala kusikrini sakho noma ezifinyeleleka ngaphakathi kwezinhlelo zokusebenza."</string>
+ <string name="incident_report_channel_name" msgid="2405001892012870358">"Yabelana ngedatha yokususa iphutha"</string>
+ <string name="incident_report_notification_title" msgid="8506385602505147862">"Yabelana ngedatha enemininingwane yokususa iphutha?"</string>
+ <string name="incident_report_notification_text" msgid="8316657912290049576">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> ingathanda ukulayisha ulwazi lokususa iphutha."</string>
+ <string name="incident_report_dialog_title" msgid="6147075171471634629">"Yabelana ngedatha yokususa iphutha"</string>
+ <string name="incident_report_dialog_text" msgid="6838105320223101131">"I-<xliff:g id="APP_NAME_0">%1$s</xliff:g> icela ukulayisha umbiko wesiphazamisi kusukela kule divayisi othathwe ngomhla ka-<xliff:g id="DATE">%2$s</xliff:g> ngo-<xliff:g id="TIME">%3$s</xliff:g>. Imibiko yesiphazamisi ifaka ulwazi lomuntu siqu olumayelana nedivayisi yakho noma olufakwe ngezinhlelo zokusebenza, isibonelo, amagama abasebenzisi, idatha yendawo, izikhombi zedivayisi, nolwazi lwedivayisi. Yabelana kuphela ngemibiko yesiphazamisi nabantu nezinhlelo zokusebenza ozithembayo ngalolu lwazi. Vumela i-<xliff:g id="APP_NAME_1">%4$s</xliff:g> ukuthi ilayishe umbiko wesiphazamisi?"</string>
+ <string name="incident_report_dialog_allow_label" msgid="6863130835544805205">"Vumela"</string>
+ <string name="incident_report_dialog_deny_label" msgid="1297192379930944676">"Phika"</string>
</resources>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index e220f4c..cc93eff 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -32,4 +32,9 @@
<attr name="circle_radius_pressed_percent" format="fraction" />
</declare-styleable>
<!-- END: Ported from WearableSupport -->
+
+ <!-- START: Car Settings Preferences -->
+ <attr name="carDividerColor" format="color"/>
+ <!-- END: Car Settings Preferences -->
+
</resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 01a0c9a..277c8b8 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -17,4 +17,7 @@
<resources>
<color name="bigIconColor">#C8CCCE</color>
+ <color name="google_grey_800">#3C4043</color>
+ <color name="system_notification_accent_color">#ff607D8B</color>
+ <color name="incident_reason_bullet_color">#de000000</color>
</resources>
diff --git a/res/values/config.xml b/res/values/config.xml
new file mode 100644
index 0000000..9c26d3e
--- /dev/null
+++ b/res/values/config.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 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.
+-->
+
+<resources>
+ <bool name="config_showBrowserRole">true</bool>
+ <bool name="config_showDialerRole">true</bool>
+ <bool name="config_showSmsRole">true</bool>
+</resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 112723f..42c0fbe 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -23,6 +23,9 @@
<dimen name="header_margin_start">16dp</dimen>
<dimen name="header_margin_end">16dp</dimen>
+ <dimen name="permission_icon_size">24dp</dimen>
+ <dimen name="permission_icon_header_size">32dp</dimen>
+
<dimen name="lb_action_section_width">384dp</dimen>
<dimen name="lb_content_section_width">576dp</dimen>
@@ -41,4 +44,22 @@
<dimen name="wear_permission_review_pref_padding">8dp</dimen>
<dimen name="wear_permission_review_icon_size">24dp</dimen>
+
+ <!-- Dialog button bar width -->
+ <dimen name="alert_dialog_button_bar_width">64dp</dimen>
+ <!-- Dialog button bar height -->
+ <dimen name="alert_dialog_button_bar_height">48dp</dimen>
+
+ <!-- Incident report confirmation -->
+ <dimen name="incident_image_width">150dp</dimen>
+ <dimen name="incident_image_height">200dp</dimen>
+ <dimen name="incident_reason_padding">32dp</dimen>
+ <dimen name="incident_reason_bullet_size">3dp</dimen>
+ <dimen name="incident_reason_bullet_indent">10dp</dimen>
+
+ <!-- Auto related dimensions -->
+ <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>
+
</resources>
diff --git a/res/values/overlayable.xml b/res/values/overlayable.xml
new file mode 100644
index 0000000..82708ed
--- /dev/null
+++ b/res/values/overlayable.xml
@@ -0,0 +1,264 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<resources>
+
+ <!-- TODO(evanseverson) rename this overlayable -->
+ <overlayable name="PermissionControllerStyles">
+
+ <policy type="product|system|vendor">
+
+ <!-- START HELP LINKS -->
+ <item type="string" name="help_app_permissions" />
+ <item type="string" name="help_permission_usage" />
+ <!-- END HELP LINKS -->
+
+ <!-- START PERMISSION GRANT DIALOG -->
+ <item type="style" name="PermissionGrantScrollView" />
+ <item type="style" name="PermissionGrantSingleton" />
+ <item type="style" name="PermissionGrantDialog" />
+
+ <item type="style" name="PermissionGrantContent" />
+ <item type="style" name="PermissionGrantDescription" />
+ <item type="style" name="PermissionGrantTitleIcon" />
+ <item type="style" name="PermissionGrantTitleMessage" />
+ <item type="style" name="PermissionGrantDetailMessage" />
+
+ <item type="style" name="PermissionGrantButtonList" />
+ <item type="style" name="PermissionGrantButtonBarSpace" />
+ <item type="style" name="PermissionGrantButton" />
+ <item type="style" name="PermissionGrantButtonAllow" />
+ <item type="style" name="PermissionGrantButtonAllowAlways" />
+ <item type="style" name="PermissionGrantButtonAllowForeground" />
+ <item type="style" name="PermissionGrantButtonDeny" />
+ <item type="style" name="PermissionGrantButtonDenyDontAskAgain" />
+ <!-- END PERMISSION GRANT DIALOG -->
+
+
+ <!-- START PERMISSION REVIEW SCREEN -->
+ <item type="style" name="PermissionReview" />
+
+ <item type="style" name="PermissionReviewDescription" />
+ <item type="style" name="PermissionReviewTitleIcon" />
+ <item type="style" name="PermissionReviewTitleMessage" />
+
+ <item type="style" name="PermissionReviewSettings" />
+ <item type="style" name="PermissionReviewSwitchStyle" />
+
+ <item type="style" name="PermissionReviewButtonBar" />
+ <item type="style" name="PermissionReviewButtonBarSpace" />
+ <item type="style" name="PermissionReviewButton" />
+ <item type="style" name="PermissionReviewButtonMoreInfo" />
+ <item type="style" name="PermissionReviewButtonCancel" />
+ <item type="style" name="PermissionReviewButtonContinue" />
+ <!-- END PERMISSION REVIEW SCREEN -->
+
+ <!-- START PERMISSIONS FRAME -->
+ <item type="style" name="PermissionsFrameNoPermissionsText" />
+ <!-- END PERMISSIONS FRAME -->
+
+ <!-- START HEADER -->
+ <item type="style" name="Header" />
+ <item type="style" name="HeaderIcon" />
+ <item type="style" name="HeaderName" />
+ <item type="style" name="HeaderInfo" />
+ <!-- END HEADER -->
+
+ <!-- START APP PERMISSION SCREEN -->
+ <item type="style" name="AppPermission" />
+
+ <item type="style" name="LargeHeader" />
+ <item type="style" name="LargeHeaderText" />
+ <item type="style" name="LargeHeaderLink" />
+ <item type="style" name="LargeHeaderDivider" />
+
+ <item type="style" name="AppPermissionSelection" />
+ <item type="style" name="AppPermissionMessage" />
+ <item type="style" name="AppPermissionRadioButton" />
+ <item type="style" name="AppPermissionDetails" />
+ <item type="style" name="AppPermissionTwoTargetDivider" />
+ <item type="style" name="AppPermissionWidgetFrame" />
+
+ <item type="style" name="AppPermissionFooter" />
+ <item type="style" name="AppPermissionFooterDivider" />
+ <item type="style" name="AppPermissionFooterText" />
+ <item type="style" name="AppPermissionFooterLink" />
+ <!-- END APP PERMISSION SCREEN -->
+
+ <!-- START PERMISSION FILTER SCREEN -->
+ <item type="style" name="PermissionFilterDialogContainer" />
+ <item type="style" name="PermissionFilterDialogTitleContainer" />
+ <item type="style" name="PermissionFilterDialogTitle" />
+ <item type="style" name="PermissionFilterDialogScrollView" />
+ <item type="style" name="PermissionFilterDialogInnerContainer" />
+ <item type="style" name="PermissionFilterDialogItemsContainer" />
+ <item type="style" name="PermissionFilterDialogItemContainer" />
+ <item type="style" name="PermissionFilterDialogItemTextFrame" />
+ <item type="style" name="PermissionFilterDialogItemTitle" />
+ <item type="style" name="PermissionFilterDialogItemSummary" />
+ <!-- END PERMISSION FILTER SCREEN -->
+
+ <!-- START PREFERENCE USAGE -->
+ <item type="style" name="PreferenceUsage" />
+ <item type="style" name="PreferenceUsageTitleWidgetFrame" />
+ <item type="style" name="PreferenceUsageImageFrame" />
+ <item type="style" name="PreferenceUsageTitle" />
+ <item type="style" name="PreferenceUsageSummaryWidgetFrame" />
+ <item type="style" name="PreferenceUsageSummary" />
+ <item type="style" name="PreferenceUsageWidgetFrame" />
+ <!-- END PREFERENCE USAGE -->
+
+ <!-- START TITLE SUMMARY IMAGE VIEW -->
+ <item type="style" name="TitleSummaryImageViewIcon" />
+ <!-- END TITLE SUMMARY IMAGE VIEW -->
+
+ <!-- START IMAGE VIEW -->
+ <item type="style" name="ImageView" />
+ <item type="style" name="ImageViewIcon" />
+ <!-- END IMAGE VIEW -->
+
+ <!-- START LOADING CONTAINER -->
+ <item type="style" name="LoadingContainerTextView" />
+ <!-- END LOADING CONTAINER -->
+
+ <!-- START ONGOING USAGE DIALOG -->
+ <item type="style" name="PermissionUsageDialogContainerScrollView" />
+ <item type="style" name="PermissionUsageDialogContainerLayout" />
+ <item type="style" name="PermissionUsageDialogTitle" />
+ <item type="style" name="PermissionUsageDialogItemsContainer" />
+
+ <item type="style" name="PermissionUsageDialogItemContainer" />
+ <item type="style" name="PermissionUsageDialogItemIconFrame" />
+ <item type="style" name="PermissionUsageDialogItemIcon" />
+ <item type="style" name="PermissionUsageDialogItemAppName" />
+ <item type="style" name="PermissionUsageDialogItemIconsContainer" />
+ <!-- END ONGOING USAGE DIALOG -->
+
+ <!-- START REQUEST ROLE DIALOG TITLE -->
+ <item type="style" name="RequestRoleTitle" />
+ <item type="style" name="RequestRoleTitleIcon" />
+ <item type="style" name="RequestRoleTitleText" />
+ <!-- END REQUEST ROLE DIALOG TITLE -->
+
+ <!-- START REQUEST ROLE DIALOG ITEM -->
+ <item type="style" name="RequestRoleItem" />
+ <item type="style" name="RequestRoleItemIcon" />
+ <item type="style" name="RequestRoleItemTitleLayout" />
+ <item type="style" name="RequestRoleItemTitleText" />
+ <item type="style" name="RequestRoleItemSubtitleText" />
+ <item type="style" name="RequestRoleItemRadioButton" />
+ <!-- END REQUEST ROLE DIALOG ITEM -->
+
+ <!-- START REQUEST ROLE DIALOG VIEW -->
+ <item type="style" name="RequestRoleView" />
+ <item type="style" name="RequestRoleViewCheckbox" />
+ <!-- END REQUEST ROLE DIALOG VIEW -->
+
+ <!-- START SETTINGS BUTTON PREFERENCE WIDGET -->
+ <item type="style" name="SettingsButtonPreferenceWidgetDivider" />
+ <item type="style" name="SettingsButtonPreferenceWidgetButton" />
+ <!-- END SETTINGS BUTTON PREFERENCE WIDGET -->
+
+ <!-- START ACCESSIBILITY SERVICE DIALOG -->
+ <item type="style" name="AccessibilityServiceDialogScrollView" />
+ <item type="style" name="AccessibilityServiceDialog" />
+ <item type="style" name="AccessibilityServiceDialogHeader" />
+ <item type="style" name="AccessibilityServiceDialogHeaderIcon" />
+ <item type="style" name="AccessibilityServiceDialogTitle" />
+
+ <item type="style" name="AccessibilityServiceDialogItemsContainer" />
+ <item type="style" name="AccessibilityServiceDialogMiddleText" />
+ <item type="style" name="AccessibilityServiceDialogBottomText" />
+ <!-- END ACCESSIBILITY SERVICE DIALOG -->
+
+ <!-- START ACCESSIBILITY SERVICE DIALOG ITEM -->
+ <item type="style" name="AccessibilityServiceDialogItem" />
+ <item type="style" name="AccessibilityServiceDialogItemIcon" />
+ <item type="style" name="AccessibilityServiceDialogItemDescription" />
+ <item type="style" name="AccessibilityServiceDialogItemTitle" />
+ <item type="style" name="AccessibilityServiceDialogItemSummary" />
+ <!-- END ACCESSIBILITY SERVICE DIALOG ITEM -->
+
+ <!-- START LOCATION ACCESS CHECK PIN DROP -->
+ <item type="color" name="system_notification_accent_color" />
+ <!-- END LOCATION ACCESS CHECK PIN DROP -->
+
+ <!-- START SETTINGSLIB BARCHARTPREFERENCE -->
+ <item type="style" name="SettingsBarChart" />
+ <item type="style" name="SettingsBarChartTitle" />
+
+ <item type="style" name="SettingsBarViewStyle" />
+ <!-- COLORS -->
+ <item type="color" name="settings_bar_view_1_color" />
+ <item type="color" name="settings_bar_view_2_color" />
+ <item type="color" name="settings_bar_view_3_color" />
+ <item type="color" name="settings_bar_view_4_color" />
+
+ <item type="style" name="SettingsBarChartDetailsButton" />
+ <item type="style" name="SettingsBarChartEmptyText" />
+
+ <item type="style" name="SettingsBarChartBar" />
+ <item type="style" name="SettingsBarChartBarIcon" />
+ <item type="style" name="SettingsBarChartBarTitle" />
+ <item type="style" name="SettingsBarChartBarSummary" />
+ <!-- END SETTINGSLIB BARCHARTPREFERENCE -->
+
+ <!-- START SETTINGSLIB APPPREFERENCE -->
+ <!-- DIMEN -->
+ <item type="dimen" name="secondary_app_icon_size" />
+ <!-- END SETTINGSLIB APPPREFERENCE -->
+
+ <!-- START THEMES -->
+ <item type="style" name="Settings" />
+ <item type="style" name="TextAppearance.CategoryTitle" />
+ <item type="style" name="ReviewPermissions" />
+ <item type="style" name="GrantPermissions" />
+ <item type="style" name="Header.Settings" />
+ <item type="style" name="RequestRole" />
+ <item type="style" name="Theme.PermissionGrantDialog" />
+ <item type="style" name="PermissionDialog" />
+ <!-- END THEMES -->
+
+ <!-- START VISIBILITY CONFIGS -->
+ <!-- Assistant role uses: config_showDefaultAssistant -->
+ <!-- Home role uses: config_showDefaultHome -->
+ <!-- Emergency role uses: config_showDefaultEmergency -->
+ <item type="bool" name="config_showBrowserRole" />
+ <item type="bool" name="config_showDialerRole" />
+ <item type="bool" name="config_showSmsRole" />
+ <!-- END VISIBILITY CONFIGS -->
+
+ <!-- START CAR DIMENS -->
+ <item type="dimen" name="car_action_bar_height" />
+ <item type="dimen" name="car_margin" />
+ <item type="dimen" name="car_icon_size" />
+ <!-- END CAR DIMENS -->
+
+ <!-- START CAR STYLES -->
+ <item type="style" name="CarPreferenceFragment" />
+ <item type="style" name="CarPreferenceFragmentList" />
+ <!-- END CAR STYLES -->
+
+ <!-- START CAR THEMES -->
+ <item type="style" name="CarSettings" />
+ <item type="style" name="CarPreferenceTheme" />
+ <!-- END CAR THEMES -->
+
+ </policy>
+
+ </overlayable>
+
+</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 8a2f878..f146be8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -4,9 +4,9 @@
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.
@@ -15,217 +15,107 @@
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name">Package installer</string>
- <string name="next">Next</string>
- <string name="install">Install</string>
- <string name="done">Done</string>
- <!-- TODO REMOVE LATER -->
- <string name="security_settings_desc">Allow this app to:</string>
- <string name="cancel">Cancel</string>
- <string name="unknown">Unknown</string>
- <string name="installing">Installing\u2026</string>
- <string name="installing_app">Installing <xliff:g id="package_label">%1$s</xliff:g>\u2026</string>
- <string name="install_done">App installed.</string>
- <!-- Message for installing a new app that requires some permissions [CHAR LIMIT=NONE] -->
- <string name="install_confirm_question">Do you want to install this application?
- It will get access to:</string>
- <!-- Message for installing a new app that does not require permissions [CHAR LIMIT=NONE] -->
- <string name="install_confirm_question_no_perms">Do you want to install this application?
- It does not require any special access.</string>
- <!-- Message for updating an existing app [CHAR LIMIT=NONE] -->
- <string name="install_confirm_question_update">Do you want to install an update
- to this existing application? Your existing data will not
- be lost. The updated application will get access to:</string>
- <!-- Message for updating an existing system app [CHAR LIMIT=NONE] -->
- <string name="install_confirm_question_update_system">Do you want to install an update
- to this built-in application? Your existing data will not
- be lost. The updated application will get access to:</string>
- <!-- Message for updating an existing app, no permissions [CHAR LIMIT=NONE] -->
- <string name="install_confirm_question_update_no_perms">Do you want to install an update
- to this existing application? Your existing data will not
- be lost. It does not require any special access.</string>
- <!-- Message for updating an existing system app, no permissions [CHAR LIMIT=NONE] -->
- <string name="install_confirm_question_update_system_no_perms">Do you want to install an update
- to this built-in application? Your existing data will not
- be lost. It does not require any special access.</string>
- <string name="install_failed">App not installed.</string>
- <!-- Reason displayed when installation fails because the package was blocked
- from being installed (e.g., device policy, verification, ...) [CHAR LIMIT=100] -->
- <string name="install_failed_blocked">The package was blocked from being installed.</string>
- <!-- Reason displayed when installation fails because the package conflicts with
- an existing application (e.g., incompatible certificates) [CHAR LIMIT=100] -->
- <string name="install_failed_conflict">App not installed as package conflicts with an existing package.</string>
- <!-- Reason displayed when installation fails because the package is incompatible with
- the current tablet (e.g., missing native code for the current ABI, newer SDK, ...) [CHAR LIMIT=100] -->
- <string name="install_failed_incompatible" product="tablet">App not installed as app isn\'t
- compatible with your tablet.</string>
- <!-- Reason displayed when installation fails because the package is incompatible with
- the current TV (e.g., missing native code for the current ABI, newer SDK, ...) [CHAR LIMIT=100] -->
- <string name="install_failed_incompatible" product="tv">This app isn\'t
- compatible with your TV.</string>
- <!-- Reason displayed when installation fails because the package is incompatible with
- the current phone (e.g., missing native code for the current ABI, newer SDK, ...) [CHAR LIMIT=100] -->
- <string name="install_failed_incompatible" product="default">App not installed as app isn\'t
- compatible with your phone.</string>
- <!-- Reason displayed when installation fails because the installation package itself is invalid
- in some way (e.g., corrupt) [CHAR LIMIT=100] -->
- <string name="install_failed_invalid_apk">App not installed as package appears to be invalid.</string>
- <!-- Message presented when an application could not be installed on the tablet for some reason. [CHAR LIMIT=100] -->
- <string name="install_failed_msg" product="tablet"><xliff:g id="app_name">%1$s</xliff:g> couldn\'t be installed on your tablet.</string>
- <!-- Message presented when an application could not be installed on the TV for some reason. [CHAR LIMIT=100] -->
- <string name="install_failed_msg" product="tv"><xliff:g id="app_name">%1$s</xliff:g> couldn\'t be installed on your TV.</string>
- <!-- Message presented when an application could not be installed on the phone for some reason. [CHAR LIMIT=100] -->
- <string name="install_failed_msg" product="default"><xliff:g id="app_name">%1$s</xliff:g> couldn\'t be installed on your phone.</string>
- <string name="launch">Open</string>
+ <!-- [CHAR LIMIT=60] -->
+ <string name="app_name">Permission controller</string>
- <!-- Message presented in a dialog box when the device administrator restricts the installation of apps from unknown sources. [CHAR LIMIT=none] -->
- <string name="unknown_apps_admin_dlg_text">Your admin doesn\'t allow installation of apps
- obtained from unknown sources</string>
- <!-- Message presented in a dialog box when the user restriction set by the system restricts the installation of apps from unknown sources. [CHAR LIMIT=none] -->
- <string name="unknown_apps_user_restriction_dlg_text">Unknown apps can\'t be installed by this
- user</string>
- <!-- Message presented in a dialog box when the user restriction set by the system restricts the installation of apps. [CHAR LIMIT=none] -->
- <string name="install_apps_user_restriction_dlg_text">This user is not allowed to install apps</string>
-
-
+ <!-- [CHAR LIMIT=15] -->
<string name="ok">OK</string>
- <string name="settings">Settings</string>
- <string name="manage_applications">Manage apps</string>
- <string name="dlg_app_replacement_title">Replace app?</string>
- <string name="dlg_app_replacement_statement">The app you\'re installing will replace another app.\n\nAll your previous user data will be saved.</string>
- <!-- Dialog attributes when replacing system app -->
- <string name="dlg_sys_app_replacement_statement">This is a system app.\n\nAll your previous user data will be saved.</string>
- <string name="out_of_space_dlg_title">Out of space</string>
- <string name="out_of_space_dlg_text"><xliff:g id="app_name">%1$s</xliff:g> couldn\'t be installed. Free up some space and try again.</string>
- <!-- strings related to uninstall activity -->
- <string name="dlg_ok">OK</string>
+
+ <!-- Keyword in the Settings app's search functionality that can be used to find links to the permissions management screens [CHAR LIMIT=none] -->
+ <string name="permission_search_keyword">permissions</string>
+
+ <!-- Button label for generic cancel action [CHAR LIMIT=20] -->
+ <string name="cancel">Cancel</string>
+
+ <!-- [CHAR LIMIT=30] -->
<string name="app_not_found_dlg_title">App not found</string>
- <string name="app_not_found_dlg_text"> The app wasn\'t found in the list of installed apps.</string>
- <string name="user_is_not_allowed_dlg_title">Not allowed</string>
- <string name="user_is_not_allowed_dlg_text">The current user is not allowed to perform this uninstallation.</string>
- <string name="generic_error_dlg_title">Error</string>
- <string name="generic_error_dlg_text">App could not be uninstalled.</string>
- <string name="uninstall_application_title">Uninstall app</string>
- <string name="uninstall_update_title">Uninstall update</string>
- <string name="uninstall_activity_text"><xliff:g id="activity_name">%1$s</xliff:g> is part of the following app:</string>
- <string name="uninstall_application_text">Do you want to uninstall this app?</string>
- <string name="uninstall_application_text_all_users">Do you want to uninstall this app for <b>all</b>
- users? The application and its data will be removed from <b>all</b> users on the device.</string>
- <string name="uninstall_application_text_user">Do you want to uninstall this app for the user <xliff:g id="username">%1$s</xliff:g>?</string>
- <string name="uninstall_update_text">Replace this app with the factory version? All data will be removed.</string>
- <string name="uninstall_update_text_multiuser">Replace this app with the factory version? All data will be removed. This affects all users of this device, including those with work profiles.</string>
- <!-- Label for the notification channel containing notifications for current uninstall operations [CHAR LIMIT=40] -->
- <string name="uninstalling_notification_channel">Running uninstalls</string>
- <!-- Label for the notification channel containing notifications for failed uninstall operations [CHAR LIMIT=40] -->
- <string name="uninstall_failure_notification_channel">Failed uninstalls</string>
-
- <string name="uninstalling">Uninstalling\u2026</string>
- <string name="uninstalling_app">Uninstalling <xliff:g id="package_label">%1$s</xliff:g>\u2026</string>
- <string name="uninstall_done">Uninstall finished.</string>
- <string name="uninstall_done_app">Uninstalled <xliff:g id="package_label">%1$s</xliff:g></string>
- <string name="uninstall_failed">Uninstall unsuccessful.</string>
- <string name="uninstall_failed_app">Uninstalling <xliff:g id="package_label">%1$s</xliff:g> unsuccessful.</string>
- <!-- String presented to the user when uninstalling a package failed because the target package
- is a current device administrator [CHAR LIMIT=80] -->
- <string name="uninstall_failed_device_policy_manager">Can\'t uninstall active device admin
- app</string>
- <!-- String presented to the user when uninstalling a package failed because the target package
- is a current device administrator for some user [CHAR LIMIT=100] -->
- <string name="uninstall_failed_device_policy_manager_of_user">Can\'t uninstall active device
- admin app for <xliff:g id="username">%1$s</xliff:g></string>
- <!-- String presented to the admin user when uninstalling a package for all users failed
- because a profile owner has marked the target package as not able to be uninstalled
- [CHAR LIMIT=120] -->
- <string name="uninstall_all_blocked_profile_owner">This app is required for some users or
- profiles and was uninstalled for others</string>
- <!-- String presented to the user when uninstalling a package failed because a profile owner
- has marked the target package as not able to be uninstalled [CHAR LIMIT=120] -->
- <string name="uninstall_blocked_profile_owner">This app is needed for
- your profile and can\'t be uninstalled.</string>
- <!-- String presented to the user when uninstalling a package failed because a device owner
- has marked the the target package as not able to be uninstalled [CHAR LIMIT=80] -->
- <string name="uninstall_blocked_device_owner">This app is required
- by your device administrator and can\'t be uninstalled.</string>
- <!-- String on a button that leads to the "device admin apps" configuration setting where a
- user will be able to disable the device admin app in order to uninstall
- it. [CHAR LIMIT=50] -->
- <string name="manage_device_administrators">Manage device admin apps</string>
- <!-- String on a button that leads to the "Users" page in Settings where a
- user will be able to remove the secondary user(s) in order to uninstall
- the app. [CHAR LIMIT=50] -->
- <string name="manage_users">Manage users</string>
- <string name="uninstall_failed_msg"><xliff:g id="app_name">%1$s</xliff:g> couldn\'t be uninstalled.</string>
-
- <!-- Dialog attributes to indicate parse errors -->
- <string name="Parse_error_dlg_text">There was a problem parsing the package.</string>
-
- <!-- Tab label for new permissions being added to an existing app [CHAR LIMIT=20] -->
- <string name="newPerms">New</string>
- <!-- Tab label for all permissions of an app being installed [CHAR LIMIT=20] -->
- <string name="allPerms">All</string>
- <!-- Tab label for permissions related to user privacy [CHAR LIMIT=20] -->
- <string name="privacyPerms">Privacy</string>
- <!-- Tab label for permissions related to device behavior [CHAR LIMIT=20] -->
- <string name="devicePerms">Device Access</string>
-
- <!-- Body text for new tab when there are no new permissions [CHAR LIMIT=NONE] -->
- <string name="no_new_perms">This update requires no new permissions.</string>
-
- <string name="grant_confirm_question">Do you want to grant the following permissions?
- It will get access to:</string>
-
- <!-- Title for the dialog button to deny a permission grant. -->
+ <!-- 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 get more info about a permission. -->
+ <!-- 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">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_deny_background">Keep while-in-use access</string>
+
+ <!-- Title for the dialog button to always deny a change from foreground to background permission grant from now on. [CHAR LIMIT=60] -->
+ <string name="grant_dialog_button_deny_background_and_dont_ask_again">Keep and don\u2019t ask again</string>
+
+ <!-- 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. -->
+ <!-- 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>
- <!-- Template for the current permission from the total number of permissions. -->
+ <!-- Template for the current permission from the total number of permissions. [CHAR LIMIT=100] -->
<string name="current_permission_template">
<xliff:g id="current_permission_index" example="1">%1$s</xliff:g> of
<xliff:g id="permission_count" example="2">%2$s</xliff:g></string>
- <!-- Template for the warning message when an app requests a permission. -->
+ <!-- Template for the warning message when an app requests a permission. [CHAR LIMIT=100] -->
<string name="permission_warning_template">Allow
<b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g></b> to
<xliff:g id="action" example="do something">%2$s</xliff:g>?</string>
- <!-- Template for the message how many permissions are disabled. -->
+ <!-- Template for the warning message when an app requests the permission to access a
+ resource even while in the background (i.e. always). [CHAR LIMIT=100] -->
+ <string name="permission_add_background_warning_template">Always allow
+ <b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g></b> to
+ <xliff:g id="action" example="do something">%2$s</xliff:g>?</string>
+
+ <!-- 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 only gets the permission while in
+ foreground [CHAR LIMIT=50] -->
+ <string name="allow_permission_foreground_only">Only while using app</string>
+
+ <!-- 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 always gets the permission (while in
+ foreground _and_ while in background) [CHAR LIMIT=50] -->
+ <string name="allow_permission_always">Always</string>
+
+ <!-- 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">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>
- <!-- Message that all permissions are disabled. -->
+ <!-- Message that all permissions are disabled. [CHAR LIMIT=30] -->
<string name="permission_revoked_all">all disabled</string>
- <!-- Message that no permissions are disabled. -->
+ <!-- Message that no permissions are disabled. [CHAR LIMIT=30] -->
<string name="permission_revoked_none">none disabled</string>
<!-- Permissions -->
- <!-- Title for the dialog button to allow a permission grant. -->
+ <!-- Title for the dialog button to allow a permission grant. [CHAR LIMIT=15] -->
<string name="grant_dialog_button_allow">Allow</string>
- <!-- Title of an application permission, listed so the user can choose whether they want
- to allow the application to do this. -->
- <string name="permlab_togglePermissions" translatable="false">toggle permissions</string>
- <!-- Description of an application permission, listed so the user can choose whether
- they want to allow the application to do this. -->
- <string name="permdesc_togglePermissions" translatable="false">Allows the holder to launch
- the UI for toggling app permissions. Should never be needed for normal apps.</string>
+ <!-- Title for the dialog button to allow a permission grant when you can also only allow in the foreground. [CHAR LIMIT=60] -->
+ <string name="grant_dialog_button_allow_always">Allow all the time</string>
+
+ <!-- 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">Allow only while using the app</string>
+
+ <!-- Title for the dialog button to allow a change from foreground to background permission grant. [CHAR LIMIT=60] -->
+ <string name="grant_dialog_button_allow_background">Allow all the time</string>
<!-- Breadcrumb for page of managing application permissions [CHAR LIMIT=50] -->
<string name="app_permissions_breadcrumb">Apps</string>
- <!-- Title for page of managing application permissions -->
+ <!-- Title for page of managing application permissions [CHAR LIMIT=30] -->
<string name="app_permissions">App permissions</string>
+
+ <!-- Title for page of managing application permissions [CHAR LIMIT=30] -->
+ <string name="app_permission_manager">Permission manager</string>
+
<!-- Checkbox that allows user to not be questioned about this permission
- request again -->
+ request again [CHAR LIMIT=30] -->
<string name="never_ask_again">Don\'t ask again</string>
- <!-- Label when app requests no permissions -->
+ <!-- Label when app requests no permissions [CHAR LIMIT=30] -->
<string name="no_permissions">No permissions</string>
<!-- Label for button that leads to more permissions [CHAR LIMIT=40] -->
@@ -240,7 +130,7 @@
<item quantity="other"><xliff:g id="count" example="2">%1$d</xliff:g> more</item>
</plurals>
- <!-- Warning for turning off permissions on older apps -->
+ <!-- Warning for turning off permissions on older apps [CHAR LIMIT=none] -->
<string name="old_sdk_deny_warning">This app was designed for an older version of Android. Denying permission may cause it to no longer function as intended.</string>
<!-- The default description of a permission, i.e. what it does. [CHAR LIMIT=40] -->
@@ -254,9 +144,6 @@
<!-- [CHAR LIMIT=NONE] Menu for manage permissions to control whether system apps are hidden -->
<string name="menu_hide_system">Hide system</string>
- <!-- [CHAR LIMIT=30] Title for page managing what apps have a permission granted -->
- <string name="permission_title"><xliff:g id="permission" example="Camera">%1$s</xliff:g> permissions</string>
-
<!-- [CHAR LIMIT=NONE] Label when no apps requesting this permission -->
<string name="no_apps">No apps</string>
@@ -272,7 +159,46 @@
<!-- [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>
- <!-- Text displayed until loading is done -->
+ <!-- [CHAR LIMIT=60] Summary of a permission switch when the background access is denied by policy -->
+ <string name="permission_summary_disabled_by_policy_background_only">Background access disabled by policy</string>
+
+ <!-- [CHAR LIMIT=60] Summary of a permission switch when the background access is enabled by policy -->
+ <string name="permission_summary_enabled_by_policy_background_only">Background access enabled by policy</string>
+
+ <!-- [CHAR LIMIT=60] Summary of a permission switch when the background access is enabled by policy -->
+ <string name="permission_summary_enabled_by_policy_foreground_only">Foreground access enabled by policy</string>
+
+ <!-- [CHAR LIMIT=60] Summary of a permission switch when it's enforced by an administrator -->
+ <string name="permission_summary_enforced_by_admin">Controlled by admin</string>
+
+ <!-- [CHAR LIMIT=60] Summary of a permission switch when the background access is denied by an admin -->
+ <string name="permission_summary_disabled_by_admin_background_only">Background access disabled by admin</string>
+
+ <!-- [CHAR LIMIT=60] Summary of a permission switch when the background access is enabled an admin -->
+ <string name="permission_summary_enabled_by_admin_background_only">Background access enabled by admin</string>
+
+ <!-- [CHAR LIMIT=60] Summary of a permission switch when the background access is enabled an admin -->
+ <string name="permission_summary_enabled_by_admin_foreground_only">Foreground access enabled by admin</string>
+
+ <!-- [CHAR LIMIT=60] Summary of a permission switch when the access is enabled by the system -->
+ <string name="permission_summary_enabled_system_fixed">Device requires this permission to operate</string>
+
+ <string-array name="background_access_chooser_dialog_choices">
+ <item>@string/permission_access_always</item>
+ <item>@string/permission_access_only_foreground</item>
+ <item>@string/permission_access_never</item>
+ </string-array>
+
+ <!-- [CHAR LIMIT=60] App can always (when app is in foreground or background) access the resource protected by the permission -->
+ <string name="permission_access_always">Allow all the time</string>
+
+ <!-- [CHAR LIMIT=60] App can only access the resource protected by the permission while app is in foreground -->
+ <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">Deny</string>
+
+ <!-- Text displayed until loading is done [CHAR LIMIT=50] -->
<string name="loading">Loading\u2026</string>
<!-- [CHAR LIMIT=45] Title of all permissions settings -->
@@ -296,89 +222,641 @@
before permissions can be changed. [CHAR LIMIT=NONE] -->
<string name="screen_overlay_button">Open settings</string>
- <!-- Title of dialog telling users that Install/Uninstall action is not supported on Android Wear. -->
+ <!-- Title of dialog telling users that Install/Uninstall action is not supported on Android Wear. [CHAR LIMIT=30] -->
<string name="wear_not_allowed_dlg_title">Android Wear</string>
- <!-- Title of dialog telling users that Install/Uninstall action is not supported on Android Wear. -->
+ <!-- Title of dialog telling users that Install/Uninstall action is not supported on Android Wear. [CHAR LIMIT=none] -->
<string name="wear_not_allowed_dlg_text">Install/Uninstall actions not supported on Wear.</string>
<!-- Review of runtime permissions for legacy apps -->
- <!-- Template for the warning title when an updated app's requested permissions are reviewed. -->
- <string name="permission_review_warning_title_template_update">
- <xliff:g id="app_name" example="Gmail">%1$s</xliff:g> has been updated.
- Allow <xliff:g id="app_name" example="Gmail">%1$s</xliff:g> to
- access the following?</string>
-
- <!-- Template for the screen title when app permissions are reviewed on install. -->
+ <!-- Template for the screen title when app permissions are reviewed on install. [CHAR LIMIT=none] -->
<string name="permission_review_title_template_install">Choose what to allow
<b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g></b> to access</string>
- <!-- Template for the screen title when app permissions are reviewed on update. -->
+ <!-- Template for the screen title when app permissions are reviewed on update. [CHAR LIMIT=none] -->
<string name="permission_review_title_template_update">
<b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g></b> has been updated.
Choose what to allow this app to access.</string>
- <!-- Title for the dialog button to cancel the detailed permission review. -->
+ <!-- Title for the dialog button to cancel the detailed permission review. [CHAR LIMIT=15] -->
<string name="review_button_cancel">Cancel</string>
- <!-- Title for the dialog button to continue accepting the detailed permission review. -->
+ <!-- Title for the dialog button to continue accepting the detailed permission review. [CHAR LIMIT=15] -->
<string name="review_button_continue">Continue</string>
- <!-- Title for the category listing the new permissions used by an app. -->
+ <!-- Title for the category listing the new permissions used by an app. [CHAR LIMIT=30] -->
<string name="new_permissions_category">New permissions</string>
- <!-- Title for the category listing the current permissions used by an app. -->
+ <!-- Title for the category listing the current permissions used by an app. [CHAR LIMIT=30] -->
<string name="current_permissions_category">Current permissions</string>
- <!-- Message that the app to be installed is being staged -->
+ <!-- Message that the app to be installed is being staged [CHAR LIMIT=50] -->
<string name="message_staging">Staging app…</string>
- <!-- Placeholder for an app name when it is unknown -->
+ <!-- Placeholder for an app name when it is unknown [CHAR LIMIT=50] -->
<string name="app_name_unknown">Unknown</string>
<!-- Help URL, application permissions [DO NOT TRANSLATE] -->
<string name="help_app_permissions" translatable="false"></string>
- <!-- Text to show in warning dialog on the tablet when the app source is not trusted [CHAR LIMIT=NONE] -->
- <string name="untrusted_external_source_warning" product="tablet">For your security, your tablet is not allowed to install unknown apps from this source.</string>
+ <!-- Title for permission usage [CHAR LIMIT=30] -->
+ <string name="permission_usage_title">Dashboard</string>
- <!-- Text to show in warning dialog on the tv when the app source is not trusted [CHAR LIMIT=NONE] -->
- <string name="untrusted_external_source_warning" product="tv">For your security, your TV is not allowed to install unknown apps from this source.</string>
+ <!-- Summary for showing a single permission access and the time of the last access when it was in the foreground [CHAR LIMIT=80] -->
+ <string name="permission_usage_summary_foreground">Last access: <xliff:g id="time" example="12:10 PM">%1$s</xliff:g>\nLast accessed while app was in use</string>
- <!-- Text to show in warning dialog on the phone when the app source is not trusted [CHAR LIMIT=NONE] -->
- <string name="untrusted_external_source_warning" product="default">For your security, your phone is not allowed to install unknown apps from this source.</string>
+ <!-- Summary for showing a single permission access and the time of the last access when it was in the background [CHAR LIMIT=80] -->
+ <string name="permission_usage_summary_background">Last access: <xliff:g id="time" example="12:10 PM">%1$s</xliff:g>\nLast accessed in the background</string>
- <!-- Text to show in warning dialog on the phone when the app source cannot be identified [CHAR LIMIT=NONE] -->
- <string name="anonymous_source_warning" product="default">
- Your phone and personal data are more vulnerable
- to attack by unknown apps. By installing this app, you
- agree that you are responsible for any damage to your
- phone or loss of data that may result from its use.
- </string>
+ <!-- Description for showing permission accesses with any permission [CHAR LIMIT=30] -->
+ <string name="permission_usage_any_permission">Any permission</string>
- <!-- Text to show in warning dialog on the tablet when the app source cannot be identified [CHAR LIMIT=NONE] -->
- <string name="anonymous_source_warning" product="tablet">
- Your tablet and personal data are more vulnerable
- to attack by unknown apps. By installing this app, you
- agree that you are responsible for any damage to your
- tablet or loss of data that may result from its use.
- </string>
+ <!-- Description for showing permission accesses accessed any time [CHAR LIMIT=30] -->
+ <string name="permission_usage_any_time">Any time</string>
- <!-- Text to show in warning dialog on the tv when the app source cannot be identified [CHAR LIMIT=NONE] -->
- <string name="anonymous_source_warning" product="tv">
- Your TV and personal data are more vulnerable
- to attack by unknown apps. By installing this app, you
- agree that you are responsible for any damage to your
- TV or loss of data that may result from its use.
- </string>
+ <!-- Description for showing permissions accessed in the last 7 days [CHAR LIMIT=30] -->
+ <string name="permission_usage_last_7_days">Last 7 days</string>
- <!-- Label for button to continue install of an app whose source cannot be identified [CHAR LIMIT=40] -->
- <string name="anonymous_source_continue">Continue</string>
+ <!-- Description for showing permissions accessed in the last day [CHAR LIMIT=30] -->
+ <string name="permission_usage_last_day">Last 24 hours</string>
- <!-- Label for button to open manage external sources settings [CHAR LIMIT=45] -->
- <string name="external_sources_settings">Settings</string>
+ <!-- Description for showing permissions accessed in the last hour [CHAR LIMIT=30] -->
+ <string name="permission_usage_last_hour">Last 1 hour</string>
- <!-- Label for the notification channel containing notifications for embedded app operations [CHAR LIMIT=40] -->
- <string name="wear_app_channel">Installing/uninstalling wear apps</string>
+ <!-- Description for showing permissions accessed in the last 15 minutes [CHAR LIMIT=30] -->
+ <string name="permission_usage_last_15_minutes">Last 15 minutes</string>
+ <!-- Description for showing permissions accessed in the last minute [CHAR LIMIT=30] -->
+ <string name="permission_usage_last_minute">Last 1 minute</string>
+
+ <!-- Label when no apps have used the requested permissions [CHAR LIMIT=30] -->
+ <string name="no_permission_usages">No permission usages</string>
+
+ <!-- Label for the title of the list of permission usages that shows which apps used which permissions[CHAR LIMIT=50] -->
+ <string name="permission_usage_list_title_any_time">Most recent access at any time</string>
+
+ <!-- Label for the title of the list of permission usages that shows which apps used which permissions[CHAR LIMIT=50] -->
+ <string name="permission_usage_list_title_last_7_days">Most recent access in last 7 days</string>
+
+ <!-- Label for the title of the list of permission usages that shows which apps used which permissions[CHAR LIMIT=50] -->
+ <string name="permission_usage_list_title_last_day">Most recent access in last 24 hours</string>
+
+ <!-- Label for the title of the list of permission usages that shows which apps used which permissions[CHAR LIMIT=50] -->
+ <string name="permission_usage_list_title_last_hour">Most recent access in last 1 hour</string>
+
+ <!-- Label for the title of the list of permission usages that shows which apps used which permissions[CHAR LIMIT=50] -->
+ <string name="permission_usage_list_title_last_15_minutes">Most recent access in last 15 minutes</string>
+
+ <!-- Label for the title of the list of permission usages that shows which apps used which permissions[CHAR LIMIT=50] -->
+ <string name="permission_usage_list_title_last_minute">Most recent access in last 1 minute</string>
+
+ <!-- Label for the title of the permission bar chart showing how often the most common permissions are used [CHAR LIMIT=50] -->
+ <string name="permission_usage_bar_chart_title_any_time">Permission usage at any time</string>
+
+ <!-- Label for the title of the permission bar chart showing how often the most common permissions are used [CHAR LIMIT=50] -->
+ <string name="permission_usage_bar_chart_title_last_7_days">Permission usage in last 7 days</string>
+
+ <!-- Label for the title of the permission bar chart showing how often the most common permissions are used [CHAR LIMIT=50] -->
+ <string name="permission_usage_bar_chart_title_last_day">Permission usage in last 24 hours</string>
+
+ <!-- Label for the title of the permission bar chart showing how often the most common permissions are used [CHAR LIMIT=50] -->
+ <string name="permission_usage_bar_chart_title_last_hour">Permission usage in last 1 hour</string>
+
+ <!-- Label for the title of the permission bar chart showing how often the most common permissions are used [CHAR LIMIT=50] -->
+ <string name="permission_usage_bar_chart_title_last_15_minutes">Permission usage in last 15 minutes</string>
+
+ <!-- Label for the title of the permission bar chart showing how often the most common permissions are used [CHAR LIMIT=50] -->
+ <string name="permission_usage_bar_chart_title_last_minute">Permission usage in last 1 minute</string>
+
+ <!-- Label for the bars on the chart that shows how many apps have used various permissions [CHAR LIMIT=10] -->
+ <plurals name="permission_usage_bar_label">
+ <item quantity="one">1 app</item>
+ <item quantity="other"><xliff:g id="number" example="7">%s</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>
+
+ <!-- DO NOT TRANSLATE Summary placeholder -->
+ <string name="summary_placeholder" translatable="false"> </string>
+
+ <!-- Label for filtered view that shows permission usages of a single permission [CHAR LIMIT=40] -->
+ <string name="app_permission_usage_filter_label">Filtered by: <xliff:g id="perm" example="Location">%1$s</xliff:g> </string>
+
+ <!-- Label for the text that removes the filter by permission to view all usages [CHAR LIMIT=none] -->
+ <string name="app_permission_usage_remove_filter">See all in Dashboard</string>
+
+ <!-- Label for the title of the dialog allowing filtering by permissions [CHAR LIMIT=none] -->
+ <string name="filter_by_title">Filter by</string>
+
+ <!-- Label for the menu item allowing filtering by permissions [CHAR LIMIT=none] -->
+ <string name="filter_by_permissions">Filter by permissions</string>
+
+ <!-- Label for the menu item allowing filtering by time [CHAR LIMIT=none] -->
+ <string name="filter_by_time">Filter by time</string>
+
+ <!-- Label for sorting usages by the number of permissions used [CHAR LIMIT=30] -->
+ <string name="sort_spinner_most_permissions">Most permissions</string>
+
+ <!-- Label for sorting usages by the number of accesses [CHAR LIMIT=30] -->
+ <string name="sort_spinner_most_accesses">Most accesses</string>
+
+ <!-- Label for sorting usages by the most recent accesses [CHAR LIMIT=30] -->
+ <string name="sort_spinner_recent">Recent</string>
+
+ <!-- Label for sorting usages by which app used a permission most recently [CHAR LIMIT=30] -->
+ <string name="sort_by_app">Sort by app usage</string>
+
+ <!-- Label for sorting usages by access time [CHAR LIMIT=30] -->
+ <string name="sort_by_time">Sort by time</string>
+
+ <!-- Separator for a list of items. Include spaces before and after if needed [CHAR LIMIT=10] -->
+ <string name="item_separator">,\u0020</string>
+
+ <!-- Label for refreshing the list of permission usages. [CHAR LIMIT=30] -->
+ <string name="permission_usage_refresh">Refresh</string>
+
+ <!-- Subtitle for showing how many apps have accessed a given permission [CHAR LIMIT=20] -->
+ <plurals name="permission_usage_permission_filter_subtitle">
+ <item quantity="one">1 app</item>
+ <item quantity="other"><xliff:g id="number" example="7">%s</xliff:g> apps</item>
+ </plurals>
+
+ <!-- Help URL, permission usage [DO NOT TRANSLATE] -->
+ <string name="help_permission_usage" translatable="false"></string>
+
+ <!-- Title for permission usage [CHAR LIMIT=30] -->
+ <string name="app_permission_usage_title">App permissions usage</string>
+
+ <!-- Summary for an app's use of a permission [CHAR LIMIT=none] -->
+ <string name="app_permission_usage_summary">Access: <xliff:g id="num" example="2">%1$s</xliff:g> times. Total duration: <xliff:g id="duration" example="2 hours">%2$s</xliff:g>. Last used <xliff:g id="time" example="2 hours">%3$s</xliff:g> ago.</string>
+
+ <!-- Summary for an app's use of a permission without duration [CHAR LIMIT=none] -->
+ <string name="app_permission_usage_summary_no_duration">Access: <xliff:g id="num" example="2">%1$s</xliff:g> times. Last used <xliff:g id="time" example="2 hours">%2$s</xliff:g> ago.</string>
+
+ <!-- Title for the dialog button to allow a permission grant when you cannot only allow in the foreground. [CHAR LIMIT=60] -->
+ <string name="app_permission_button_allow">Allow</string>
+
+ <!-- Title for the dialog button to allow a permission grant when you can also only allow in the foreground. [CHAR LIMIT=60] -->
+ <string name="app_permission_button_allow_always">Allow all the time</string>
+
+ <!-- Title for the dialog button to allow a permission grant only when the app is in the foreground. [CHAR LIMIT=60] -->
+ <string name="app_permission_button_allow_foreground">Allow only while using the app</string>
+
+ <!-- Title for the dialog button to deny a permission grant. [CHAR LIMIT=60] -->
+ <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>
+
+ <!-- Description for showing an app's permission [CHAR LIMIT=60] -->
+ <string name="app_permission_header"><xliff:g id="perm" example="location">%1$s</xliff:g> access for this app</string>
+
+ <!-- Summary for showing a single permission access [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_usage_summary_generic"><xliff:g id="app" example="Maps">%1$s</xliff:g> accessed your <xliff:g id="perm" example="location">%2$s</xliff:g> <xliff:g id="time" example="2 hours">%3$s</xliff:g> ago</string>
+
+ <!-- Summary for showing a single activity recognition permission access [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_usage_summary_activity_recognition"><xliff:g id="app" example="Maps">%1$s</xliff:g> accessed your physical activity <xliff:g id="time" example="2 hours">%2$s</xliff:g> ago</string>
+
+ <!-- Summary for showing a single calendar permission access [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_usage_summary_calendar"><xliff:g id="app" example="Maps">%1$s</xliff:g> accessed your calendar <xliff:g id="time" example="2 hours">%2$s</xliff:g> ago</string>
+
+ <!-- Summary for showing a single call log permission access [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_usage_summary_call_log"><xliff:g id="app" example="Maps">%1$s</xliff:g> accessed your call logs <xliff:g id="time" example="2 hours">%2$s</xliff:g> ago</string>
+
+ <!-- Summary for showing a single camera permission access [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_usage_summary_camera"><xliff:g id="app" example="Maps">%1$s</xliff:g> accessed your camera <xliff:g id="time" example="2 hours">%2$s</xliff:g> ago</string>
+
+ <!-- Summary for showing a single contacts permission access [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_usage_summary_contacts"><xliff:g id="app" example="Maps">%1$s</xliff:g> accessed your contacts <xliff:g id="time" example="2 hours">%2$s</xliff:g> ago</string>
+
+ <!-- Summary for showing a single location permission access [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_usage_summary_location"><xliff:g id="app" example="Maps">%1$s</xliff:g> accessed your location <xliff:g id="time" example="2 hours">%2$s</xliff:g> ago</string>
+
+ <!-- Summary for showing a single microphone permission access [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_usage_summary_microphone"><xliff:g id="app" example="Maps">%1$s</xliff:g> accessed your microphone <xliff:g id="time" example="2 hours">%2$s</xliff:g> ago</string>
+
+ <!-- Summary for showing a single phone permission access [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_usage_summary_phone"><xliff:g id="app" example="Maps">%1$s</xliff:g> accessed your phone <xliff:g id="time" example="2 hours">%2$s</xliff:g> ago</string>
+
+ <!-- Summary for showing a single sensors permission access [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_usage_summary_sensors"><xliff:g id="app" example="Maps">%1$s</xliff:g> accessed your sensors <xliff:g id="time" example="2 hours">%2$s</xliff:g> ago</string>
+
+ <!-- Summary for showing a single SMS permission access [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_usage_summary_sms"><xliff:g id="app" example="Maps">%1$s</xliff:g> accessed your SMS <xliff:g id="time" example="2 hours">%2$s</xliff:g> ago</string>
+
+ <!-- Summary for showing a single storage permission access [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_usage_summary_storage"><xliff:g id="app" example="Maps">%1$s</xliff:g> accessed your storage <xliff:g id="time" example="2 hours">%2$s</xliff:g> ago</string>
+
+ <!-- Summary for showing a single permission access that has not accessed the permission [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_no_usages_generic"><xliff:g id="app" example="Maps">%1$s</xliff:g> has not accessed your <xliff:g id="perm" example="location">%2$s</xliff:g></string>
+
+ <!-- Summary for showing a single permission access that has not accessed the activity recognition permission [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_no_usages_activity_recognition"><xliff:g id="app" example="Maps">%1$s</xliff:g> has not accessed your physical activity</string>
+
+ <!-- Summary for showing a single permission access that has not accessed the calendar permission [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_no_usages_calendar"><xliff:g id="app" example="Maps">%1$s</xliff:g> has not accessed your calendar</string>
+
+ <!-- Summary for showing a single permission access that has not accessed the call log permission [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_no_usages_call_log"><xliff:g id="app" example="Maps">%1$s</xliff:g> has not accessed your call logs</string>
+
+ <!-- Summary for showing a single permission access that has not accessed the camera permission [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_no_usages_camera"><xliff:g id="app" example="Maps">%1$s</xliff:g> has not accessed your camera</string>
+
+ <!-- Summary for showing a single permission access that has not accessed the contacts permission [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_no_usages_contacts"><xliff:g id="app" example="Maps">%1$s</xliff:g> has not accessed your contacts</string>
+
+ <!-- Summary for showing a single permission access that has not accessed the location permission [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_no_usages_location"><xliff:g id="app" example="Maps">%1$s</xliff:g> has not accessed your location</string>
+
+ <!-- Summary for showing a single permission access that has not accessed the microphone permission [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_no_usages_microphone"><xliff:g id="app" example="Maps">%1$s</xliff:g> has not accessed your microphone</string>
+
+ <!-- Summary for showing a single permission access that has not accessed the phone permission [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_no_usages_phone"><xliff:g id="app" example="Maps">%1$s</xliff:g> has not accessed your phone</string>
+
+ <!-- Summary for showing a single permission access that has not accessed the sensors permission [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_no_usages_sensors"><xliff:g id="app" example="Maps">%1$s</xliff:g> has not accessed your sensors</string>
+
+ <!-- Summary for showing a single permission access that has not accessed the SMS permission [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_no_usages_sms"><xliff:g id="app" example="Maps">%1$s</xliff:g> has not accessed your SMS</string>
+
+ <!-- Summary for showing a single permission access that has not accessed the storage permission [CHAR LIMIT=60] -->
+ <string name="app_permission_footer_no_usages_storage"><xliff:g id="app" example="Maps">%1$s</xliff:g> has not accessed your storage</string>
+
+ <!-- Summary for showing that the permission usage data for a permission is not available [CHAR LIMIT=none] -->
+ <string name="app_permission_footer_not_available">Last access data is currently not available for this permission</string>
+
+ <!-- Text for linking to the page that shows an app's permissions [CHAR LIMIT=none] -->
+ <string name="app_permission_footer_app_permissions_link">See all <xliff:g id="app" example="Maps">%1$s</xliff:g> permissions</string>
+
+ <!-- Text for linking to the page that shows the apps with a given permission [CHAR LIMIT=none] -->
+ <string name="app_permission_footer_permission_apps_link">See all apps with this permission</string>
+
+ <!-- Label for showing a permission group's description in the header of the list of apps that have that permission [CHAR LIMIT=none] -->
+ <string name="permission_description_summary_generic">Apps with this permission can <xliff:g id="description" example="record audio">%1$s</xliff:g></string>
+
+ <!-- Label for showing a permission group's description in the header of the list of apps that have the activity recognition permission [CHAR LIMIT=none] -->
+ <string name="permission_description_summary_activity_recognition">Apps with this permission can access your physical activity, like walking, biking, driving, step count, and more</string>
+
+ <!-- Label for showing a permission group's description in the header of the list of apps that have the calendar permission [CHAR LIMIT=none] -->
+ <string name="permission_description_summary_calendar">Apps with this permission can access your calendar</string>
+
+ <!-- Label for showing a permission group's description in the header of the list of apps that have the call log permission [CHAR LIMIT=none] -->
+ <string name="permission_description_summary_call_log">Apps with this permission can read and write phone call log</string>
+
+ <!-- Label for showing a permission group's description in the header of the list of apps that have the camera permission [CHAR LIMIT=none] -->
+ <string name="permission_description_summary_camera">Apps with this permission can take pictures and record video</string>
+
+ <!-- Label for showing a permission group's description in the header of the list of apps that have the contacts permission [CHAR LIMIT=none] -->
+ <string name="permission_description_summary_contacts">Apps with this permission can access your contacts</string>
+
+ <!-- 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 microphone permission [CHAR LIMIT=none] -->
+ <string name="permission_description_summary_microphone">Apps with this permission can record audio</string>
+
+ <!-- Label for showing a permission group's description in the header of the list of apps that have the phone permission [CHAR LIMIT=none] -->
+ <string name="permission_description_summary_phone">Apps with this permission can make and manage phone calls</string>
+
+ <!-- Label for showing a permission group's description in the header of the list of apps that have the sensors permission [CHAR LIMIT=none] -->
+ <string name="permission_description_summary_sensors">Apps with this permission can access sensor data about your vital signs</string>
+
+ <!-- Label for showing a permission group's description in the header of the list of apps that have the SMS permission [CHAR LIMIT=none] -->
+ <string name="permission_description_summary_sms">Apps with this permission can send and view SMS messages</string>
+
+ <!-- Label for showing a permission group's description in the header of the list of apps that have the Storage permission [CHAR LIMIT=none] -->
+ <string name="permission_description_summary_storage">Apps with this permission can access photos, media, and files on your device</string>
+
+ <!-- Summary for showing the time and/or date of the most recent access of a permission by an app [CHAR LIMIT=60] -->
+ <string name="app_permission_most_recent_summary">Last access: <xliff:g id="time_date" example="12:42 PM">%1$s</xliff:g></string>
+
+ <!-- Summary for showing the time and/or date of the most recent access of a denied permission by an app [CHAR LIMIT=60] -->
+ <string name="app_permission_most_recent_denied_summary">Currently denied / Last access: <xliff:g id="time_date" example="12:42 PM">%1$s</xliff:g></string>
+
+ <!-- Summary for showing that a denied app has not accessed a permission. [CHAR LIMIT=60] -->
+ <string name="app_permission_never_accessed_summary">Never accessed</string>
+
+ <!-- Summary for showing that an app has not accessed a permission. [CHAR LIMIT=60] -->
+ <string name="app_permission_never_accessed_denied_summary">Denied / Never accessed</string>
+
+ <!-- Header for granted permissions/apps [CHAR LIMIT=40] -->
+ <string name="allowed_header">Allowed</string>
+
+ <!-- Header for granted apps that can access the permission in the foreground and the background [CHAR LIMIT=40] -->
+ <string name="allowed_always_header">Allowed all the time</string>
+
+ <!-- Header for permissions/apps that are granted only when in the foreground [CHAR LIMIT=40] -->
+ <string name="allowed_foreground_header">Allowed only while in use</string>
+
+ <!-- Header for denied permissions/apps [CHAR LIMIT=40] -->
+ <string name="denied_header">Denied</string>
+
+ <!-- Permission entry to show detailed permission usage information by an app [CHAR LIMIT=40] -->
+ <string name="detailed_usage_link">See detailed usage</string>
+
+ <!-- Time in days -->
+ <plurals name="days">
+ <item quantity="one">1 day</item>
+ <item quantity="other"><xliff:g id="number" example="7">%s</xliff:g> days</item>
+ </plurals>
+
+ <!-- Time in hours -->
+ <plurals name="hours">
+ <item quantity="one">1 hour</item>
+ <item quantity="other"><xliff:g id="number" example="7">%s</xliff:g> hours</item>
+ </plurals>
+
+ <!-- Time in minutes -->
+ <plurals name="minutes">
+ <item quantity="one">1 minute</item>
+ <item quantity="other"><xliff:g id="number" example="7">%s</xliff:g> minutes</item>
+ </plurals>
+
+ <!-- Time in seconds -->
+ <plurals name="seconds">
+ <item quantity="one">1 second</item>
+ <item quantity="other"><xliff:g id="number" example="7">%s</xliff:g> seconds</item>
+ </plurals>
+
+ <!-- The name of the notification channel containing reminders about permission [CHAR LIMIT=60]-->
+ <string name="permission_reminders">Permission reminders</string>
+
+ <!-- The notification title for background location access reminder notification [CHAR LIMIT=60] -->
+ <string name="background_location_access_reminder_notification_title"><xliff:g id="app_name" example="Gmail">%s</xliff:g> got your location in the background</string>
+
+ <!-- The notification content for background location access reminder notification [CHAR LIMIT=none] -->
+ <string name="background_location_access_reminder_notification_content">This app can always access your location. Tap to change.</string>
+
+ <!-- Subtitle for the preference that is currently granted only when the app is in the foreground. [CHAR LIMIT=60] -->
+ <string name="permission_subtitle_only_in_foreground">Only while app is in use</string>
+
+ <!-- Label when app has been granted no permissions [CHAR LIMIT=none] -->
+ <string name="no_permissions_allowed">No permissions allowed</string>
+
+ <!-- Label when app has been denied no permissions [CHAR LIMIT=none] -->
+ <string name="no_permissions_denied">No permissions denied</string>
+
+ <!-- Label when no apps have been granted a given permission [CHAR LIMIT=none] -->
+ <string name="no_apps_allowed">No apps allowed</string>
+
+ <!-- Label when no apps have been denied a given permission [CHAR LIMIT=none] -->
+ <string name="no_apps_denied">No apps denied</string>
+
+ <!-- Label for the selected permission state for a given permission and application [CHAR LIMIT=30] -->
+ <string name="car_permission_selected">Selected</string>
+
+ <!-- Label for button that opens up the Settings [CHAR LIMIT=20] -->
+ <string name="settings">Settings</string>
+
+ <!-- Title for the dialog listing the enabled accessibility services when there is only one [CHAR LIMIT=none] -->
+ <string name="accessibility_service_dialog_title_single"><xliff:g id="service_name" example="Gmail">%s</xliff:g> has full access to your device</string>
+
+ <!-- Title for the dialog listing the enabled accessibility services when there are more than one [CHAR LIMIT=none] -->
+ <string name="accessibility_service_dialog_title_multiple"><xliff:g id="num_services" example="2">%s</xliff:g> accessibility apps have full access to your device</string>
+
+ <!-- Text for the dialog listing the enabled accessibility services when there is only one [CHAR LIMIT=none] -->
+ <string name="accessibility_service_dialog_bottom_text_single"><xliff:g id="service_name" example="Gmail">%s</xliff:g> can view your screen, actions, and inputs, perform actions, and control the display.</string>
+
+ <!-- Text for the dialog listing the enabled accessibility services when there are more than one [CHAR LIMIT=none] -->
+ <string name="accessibility_service_dialog_bottom_text_multiple">These apps can view your screen, actions, and inputs, perform actions, and control the display.</string>
+
+ <!-- Label for the assistant role. [CHAR LIMIT=30] -->
+ <string name="role_assistant_label">Default assist app</string>
+ <!-- Short label for the assistant role. [CHAR LIMIT=30] -->
+ <string name="role_assistant_short_label">Assist app</string>
+ <!-- Description for the assistant role. [CHAR LIMIT=NONE] -->
+ <string name="role_assistant_description">Assist apps can help you based on information from the screen you\u2019re viewing. Some apps support both launcher and voice input services to give you integrated assistance.</string>
+ <!-- Template for the title when an app requests to become the default assistant app. [CHAR LIMIT=100] -->
+ <string name="role_assistant_request_title">Set <xliff:g id="app_name" example="Super Assistant">%1$s</xliff:g> as your default assist app?</string>
+ <!-- Description when an app requests to become the default assistant. [CHAR LIMIT=60] -->
+ <string name="role_assistant_request_description">Gets access to SMS, call log</string>
+
+ <!-- Label for the browser role. [CHAR LIMIT=30] -->
+ <string name="role_browser_label">Default browser app</string>
+ <!-- Short label for the browser role. [CHAR LIMIT=30] -->
+ <string name="role_browser_short_label">Browser app</string>
+ <!-- Description for the browser role. [CHAR LIMIT=NONE] -->
+ <string name="role_browser_description">Apps that give you access to the internet and display links that you tap</string>
+ <!-- Template for the title when an app requests to become the default browser app. [CHAR LIMIT=100] -->
+ <string name="role_browser_request_title">Set <xliff:g id="app_name" example="Super Browser">%1$s</xliff:g> as your default browser app?</string>
+ <!-- Description when an app requests to become the default browser app. [CHAR LIMIT=60] -->
+ <string name="role_browser_request_description">No permissions needed</string>
+
+ <!-- Label for the dialer role. [CHAR LIMIT=30] -->
+ <string name="role_dialer_label">Default phone app</string>
+ <!-- Short label for the dialer role. [CHAR LIMIT=30] -->
+ <string name="role_dialer_short_label">Phone app</string>
+ <!-- Description for the dialer role. [CHAR LIMIT=NONE] -->
+ <string name="role_dialer_description">Apps that allow you to make and receive telephone calls on your device</string>
+ <!-- Template for the title when an app requests to become the default dialer app. [CHAR LIMIT=100] -->
+ <string name="role_dialer_request_title">Set <xliff:g id="app_name" example="Super Phone">%1$s</xliff:g> as your default phone app?</string>
+ <!-- Description when an app requests to become the default dialer app. [CHAR LIMIT=60] -->
+ <string name="role_dialer_request_description">Gets access to call log, send SMS</string>
+
+ <!-- Label for the SMS role. [CHAR LIMIT=30] -->
+ <string name="role_sms_label">Default SMS app</string>
+ <!-- Short label for the SMS role. [CHAR LIMIT=30] -->
+ <string name="role_sms_short_label">SMS app</string>
+ <!-- Description for the SMS role. [CHAR LIMIT=NONE] -->
+ <string name="role_sms_description">Apps that allow you to use your phone number to send and receive short text messages, photos, videos, and more</string>
+ <!-- Template for the title when an app requests to become the default SMS app. [CHAR LIMIT=100] -->
+ <string name="role_sms_request_title">Set <xliff:g id="app_name" example="Super SMS">%1$s</xliff:g> as your default SMS app?</string>
+ <!-- Description when an app requests to become the default SMS app. [CHAR LIMIT=60] -->
+ <string name="role_sms_request_description">Gets access to contacts, SMS, phone</string>
+
+ <!-- Label for the emergency role. [CHAR LIMIT=30] -->
+ <string name="role_emergency_label">Default emergency app</string>
+ <!-- Short label for the emergency role. [CHAR LIMIT=30] -->
+ <string name="role_emergency_short_label">Emergency app</string>
+ <!-- Description for the emergency role. [CHAR LIMIT=NONE] -->
+ <string name="role_emergency_description">Apps that allow you to record your medical info and make it accessible to emergency responders; to get alerts about severe weather events and disasters; to notify others when you need help</string>
+ <!-- Template for the title when an app requests to become the default emergency app. [CHAR LIMIT=100] -->
+ <string name="role_emergency_request_title">Set <xliff:g id="app_name" example="Super Emergency">%1$s</xliff:g> as your default emergency app?</string>
+ <!-- Description when an app requests to become the default emergency app. [CHAR LIMIT=60] -->
+ <string name="role_emergency_request_description">No permissions needed</string>
+
+ <!-- Label for the home role. [CHAR LIMIT=30] -->
+ <string name="role_home_label">Default home app</string>
+ <!-- Short label for the home role. [CHAR LIMIT=30] -->
+ <string name="role_home_short_label">Home app</string>
+ <!-- Description for the home role. [CHAR LIMIT=NONE] -->
+ <string name="role_home_description">Apps, often called launchers, that replace the Home screens on your Android device and give you access to the contents and features of your device</string>
+ <!-- Template for the title when an app requests to become the default home app. [CHAR LIMIT=100] -->
+ <string name="role_home_request_title">Set <xliff:g id="app_name" example="Super Home">%1$s</xliff:g> as your default home app?</string>
+ <!-- Description when an app requests to become the default home app. [CHAR LIMIT=60] -->
+ <string name="role_home_request_description">No permissions needed</string>
+
+ <!-- Label for the call redirection role. [CHAR LIMIT=30] -->
+ <string name="role_call_redirection_label">Default call redirecting app</string>
+ <!-- Short label for the call redirection role. [CHAR LIMIT=30] -->
+ <string name="role_call_redirection_short_label">Call redirecting app</string>
+ <!-- Description for the call redirection role. [CHAR LIMIT=NONE] -->
+ <string name="role_call_redirection_description">Apps that allow you to forward outgoing calls to another phone number</string>
+ <!-- Template for the title when an app requests to become the default call redirection app. [CHAR LIMIT=100] -->
+ <string name="role_call_redirection_request_title">Set <xliff:g id="app_name" example="Super Call Redirection">%1$s</xliff:g> as your default call redirection app?</string>
+ <!-- Description when an app requests to become the default call redirection app. [CHAR LIMIT=60] -->
+ <string name="role_call_redirection_request_description">No permissions needed</string>
+
+ <!-- Label for the call screening role. [CHAR LIMIT=45] -->
+ <string name="role_call_screening_label">Default caller ID & spam app</string>
+ <!-- Short label for the call screening role. [CHAR LIMIT=30] -->
+ <string name="role_call_screening_short_label">Caller ID & spam app</string>
+ <!-- Description for the call screening role. [CHAR LIMIT=NONE] -->
+ <string name="role_call_screening_description">Apps that allow you to identify calls, block spam and robocalls, and blacklist unwanted numbers</string>
+ <!-- Template for the title when an app requests to become the default call screening app. [CHAR LIMIT=100] -->
+ <string name="role_call_screening_request_title">Set <xliff:g id="app_name" example="Super Call Screening">%1$s</xliff:g> as your default caller ID & spam app?</string>
+ <!-- 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>
+
+ <!-- Subtitle for the application that is the current default application [CHAR LIMIT=30] -->
+ <string name="request_role_current_default">Current default</string>
+
+ <!-- Label for the checkbox to always deny a role request from an application from now on [CHAR LIMIT=30] -->
+ <string name="request_role_dont_ask_again">Don\u2019t ask again</string>
+
+ <!-- Label for the button to set an application as the default application [CHAR LIMIT=20] -->
+ <string name="request_role_set_as_default">Set as default</string>
+
+ <!-- Keyword in the Settings app's search functionality that can be used to find links to the default app management screens [CHAR LIMIT=none] -->
+ <string name="default_app_search_keyword">default apps</string>
+
+ <!-- Action for accepting the Ongoing usage dialog [CHAR LIMIT=10]-->
+ <string name="ongoing_usage_dialog_ok">Got it</string>
+
+ <!-- Action on Ongoing usage dialog to open the Privacy settings. [CHAR LIMIT=23]-->
+ <string name="ongoing_usage_dialog_open_settings">Privacy settings</string>
+
+ <!-- Title for Ongoing usage dialog title when multiple apps are using app ops [CHAR LIMIT=NONE] -->
+ <string name="ongoing_usage_dialog_title">Apps using your <xliff:g id="types_list" example="camera( and location)">%s</xliff:g></string>
+
+ <!-- Separator for permissions. Include spaces before and after if needed [CHAR LIMIT=10] -->
+ <string name="ongoing_usage_dialog_separator">,\u0020</string>
+
+ <!-- Separator for permissions, before last type. Include spaces before and after if needed [CHAR LIMIT=10] -->
+ <string name="ongoing_usage_dialog_last_separator">\u0020and\u0020</string>
+
+ <!-- Accessibility label for button that opens a settings screen [CHAR LIMIT=NONE] -->
+ <string name="settings_button">Settings</string>
+
+ <!-- Title for page of managing default apps. [CHAR LIMIT=30] -->
+ <string name="default_apps">Default apps</string>
+
+ <!-- Help URI, default apps [DO NOT TRANSLATE] -->
+ <string name="help_uri_default_apps" translatable="false"></string>
+
+ <!-- Label when there is no default apps [CHAR LIMIT=30] -->
+ <string name="no_default_apps">No default apps</string>
+
+ <!-- Title for preference item that will open a screen to manage more default apps [CHAR LIMIT=30] -->
+ <string name="default_apps_more">More defaults</string>
+
+ <!-- Title for preference item that will show the user's preferences for this app's priority for opening links to websites that it claims to support [CHAR LIMIT=30] -->
+ <string name="default_apps_manage_domain_urls">Opening links</string>
+
+ <!-- Title for category of default apps for work [CHAR LIMIT=30] -->
+ <string name="default_apps_for_work">Default for work</string>
+
+ <!-- Summary of a default app when there is no app set [CHAR LIMIT=60] -->
+ <string name="default_app_none">None</string>
+
+ <!-- Label for a system default app [CHAR LIMIT=60] -->
+ <string name="default_app_system_default">(System default)</string>
+
+ <!-- Label when there are no apps available for a default app [CHAR LIMIT=30] -->
+ <string name="default_app_no_apps">No apps</string>
+
+ <!-- Label for the selected default app for default app [CHAR LIMIT=30] -->
+ <string name="car_default_app_selected">Selected</string>
+
+ <!-- Label for the selected default app for default app when it has additional information to show [CHAR LIMIT=30] -->
+ <string name="car_default_app_selected_with_info">Selected - <xliff:g id="additional_info" example="(System default)">%1$s</xliff:g></string>
+
+ <!-- Keyword in the Settings app's search functionality that can be used to find links to the special app access management screens [CHAR LIMIT=none] -->
+ <string name="special_app_access_search_keyword">special app access</string>
+
+ <!-- Title for page of managing special app access. [CHAR LIMIT=30] -->
+ <string name="special_app_access">Special app access</string>
+
+ <!-- Help URI, special app access [DO NOT TRANSLATE] -->
+ <string name="help_uri_special_app_access" translatable="false"></string>
+
+ <!-- Label when there is no special app access [CHAR LIMIT=30] -->
+ <string name="no_special_app_access">No special app access</string>
+
+ <!-- Label when there are no apps available for a special app access [CHAR LIMIT=30] -->
+ <string name="special_app_access_no_apps">No apps</string>
+
+ <!-- Summary indicating that a home app is missing work profile support [CHAR LIMIT=60] -->
+ <string name="home_missing_work_profile_support">Doesn\u2019t support work profile</string>
+
+ <!-- Dialog message explaining that the app just selected by the user will not work after a reboot until the user enters their credentials, such as a PIN or password. [CHAR LIMIT=NONE] -->
+ <string name="encryption_unaware_confirmation_message">Note: If you restart your device and have a screen lock set, this app can\u2019t start until you unlock your device.</string>
+
+ <!-- Dialog message warning about security implications of setting an assistant, displayed when the user selects an assistant. [CHAR LIMIT=NONE] -->
+ <string name="assistant_confirmation_message">The assistant will be able to read information about apps in use on your system, including information visible on your screen or accessible within the apps.</string>
+
+ <!-- Name for the notification channel for incident / bug report confirmation. Appears in
+ Settings.
+ [CHAR LIMIT=50] -->
+ <string name="incident_report_channel_name">Share Debugging Data</string>
+
+ <!-- Title for notification shown when the user should confirm an incident / bug report.
+ [CHAR LIMIT=60] -->
+ <string name="incident_report_notification_title">Share detailed debugging data?</string>
+
+ <!-- Content for notification shown when the user should confirm an incident / bug report.
+ [CHAR LIMIT=120] -->
+ <string name="incident_report_notification_text"><xliff:g id="app_name" example="Gmail">%1$s</xliff:g> would like to upload debugging information.</string>
+
+ <!-- Title for the incident / bug report confirmation dialog. [CHAR LIMIT=50] -->
+ <string name="incident_report_dialog_title">Share Debugging Data</string>
+
+ <!-- Title text for introduction to incident / bug report confirmation dialog.
+ Following this text is a bulleted list of reasons that a bug is being collected (e.g. "bad
+ battery life detected"). Please try to keep this as short as possible (<40 chars if possible).
+ The dialog is getting full, but going over is ok if necessary. [CHAR LIMIT=60] -->
+ <string name="incident_report_dialog_intro">The system has detected a problem.</string>
+
+ <!-- Content for dialog shown when the user should confirm an incident / bug report.
+ [CHAR LIMIT=none] -->
+ <string name="incident_report_dialog_text">"<xliff:g id="app_name" example="Gmail">%1$s</xliff:g> is requesting to upload a bug report from this device taken on <xliff:g id="date" example="December 26, 2018">%2$s</xliff:g> at <xliff:g id="time" example="1:20 PM">%3$s</xliff:g>. Bug reports include personal information about your device or logged by apps, for example, user names, location data, device identifiers, and network information. Only share bug reports with people and apps you trust with this information.
+
+Allow <xliff:g id="app_name" example="Gmail">%4$s</xliff:g> to upload a bug report?"</string>
+
+ <!-- Content for dialog shown when there was an error parsing the incident / bug report.
+ [CHAR LIMIT=none] -->
+ <string name="incident_report_error_dialog_text">"There was an error processing the bug report for <xliff:g id="app_name" example="Gmail">%1$s</xliff:g>. So sharing the detailed debugging data has been denied. Sorry for the interruption."</string>
+
+ <!-- Label for the button to allow sharing of the report. [CHAR LIMIT=20]-->
+ <string name="incident_report_dialog_allow_label">Allow</string>
+
+ <!-- Label for the button to NOT allow sharing of the report. [CHAR LIMIT=20] -->
+ <string name="incident_report_dialog_deny_label">Deny</string>
+
+ <!-- Label for screen allowing the user to force certain apps to always be shown in permission controller settings ui instead of being hidden behind "system app" menu. [CHAR LIMIT=60] -->
+ <string name="adjust_user_sensitive_title">Advanced settings</string>
+
+ <!-- Label for link to the screen allowing the user to force certain apps to always be shown in permission controller settings ui instead of being hidden behind "system app" menu. [CHAR LIMIT=30] -->
+ <string name="menu_adjust_user_sensitive">Advanced settings</string>
+
+ <!-- Title for global switch that enables/disables the ability for the user to force certain apps to always be shown in permission controller settings ui instead of being hidden behind "system app" menu. [CHAR LIMIT=60] -->
+ <string name="adjust_user_sensitive_globally_title">Show system app usage</string>
+
+ <!-- Subtitle for global switch that enables/disables the ability for the user to force certain apps to always be shown in permission controller settings ui instead of being hidden behind "system app" menu. [CHAR LIMIT=none] -->
+ <string name="adjust_user_sensitive_globally_summary">Show system app use of permissions in status bar, dashboard \u0026 elsewhere</string>
+
+ <!-- Header above the per app switches that enables/disables the ability for the user to force the app to always be shown in permission controller settings ui instead of being hidden behind "system app" menu. [CHAR LIMIT=60] -->
+ <string name="adjust_user_sensitive_per_app_header">Highlight usage for the following</string>
+
+ <!-- Title for switch that enables/disables the microphone status bar icon for the currently selected assistant. [CHAR LIMIT=60] -->
+ <string name="assistant_record_audio_user_sensitive_title">Show Assistant trigger detection</string>
+
+ <!-- Subtitle for switch that enables/disables the microphone status bar icon for the currently selected assistant. [CHAR LIMIT=none] -->
+ <string name="assistant_record_audio_user_sensitive_summary">Show icon in status bar when microphone is used to activate voice assistant</string>
+
+ <!-- Message shown to the user when the apps requests permission from this group. Shows in the isolated storage case. 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_storage_isolated">Allow
+ <b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g></b> to access photos and media on your device?</string>
</resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
old mode 100755
new mode 100644
index f79f98f..6469cbd
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -1,39 +1,878 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 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.
--->
+<!--
+ ~ 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
+ -->
<resources>
- <style name="MediumText"
- parent="@android:style/TextAppearance.Medium">
+ <!-- START PERMISSION GRANT DIALOG -->
+
+ <style name="PermissionGrantScrollView">
+ <item name="android:scrollbars">none</item>
+ <item name="android:fillViewport">true</item>
+ <item name="android:clipChildren">false</item>
+ </style>
+
+ <style name="PermissionGrantSingleton">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:gravity">center</item>
+ </style>
+
+ <style name="PermissionGrantDialog">
+ <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>
+ <item name="android:orientation">vertical</item>
+ <item name="android:paddingTop">18dp</item>
+ <item name="android:paddingBottom">24dp</item>
+ <item name="android:paddingLeft">24dp</item>
+ <item name="android:paddingRight">24dp</item>
+ </style>
+
+ <style name="PermissionGrantDescription">
+ <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:gravity">center</item>
+ </style>
+
+ <style name="PermissionGrantTitleIcon">
+ <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>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:gravity">center</item>
+ </style>
+
+ <style name="PermissionGrantDetailMessage"
+ parent="@android:style/TextAppearance.DeviceDefault">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:layout_marginTop">18dp</item>
+ <item name="android:textSize">16sp</item>
+ </style>
+
+ <style name="PermissionGrantButtonList">
+ <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>
+ <item name="android:visibility">gone</item>
+ </style>
+
+ <style name="PermissionGrantButton"
+ parent="@android:style/Widget.DeviceDefault.Button.Borderless.Colored">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">56dp</item>
+ <item name="android:paddingLeft">8dp</item>
+ <item name="android:paddingRight">8dp</item>
+ <item name="android:background">?android:attr/selectableItemBackground</item>
+ </style>
+
+ <!-- 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="PermissionGrantButtonDeny"
+ parent="@style/PermissionGrantButton"></style>
+ <style name="PermissionGrantButtonDenyDontAskAgain"
+ parent="@style/PermissionGrantButton"></style>
+
+ <!-- END PERMISSION GRANT DIALOG -->
+
+ <!-- START PERMISSION REVIEW SCREEN -->
+
+ <style name="PermissionReview">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">match_parent</item>
+ <item name="android:orientation">vertical</item>
+ </style>
+
+ <style name="PermissionReviewDescription">
+ <item name="android:layout_marginTop">20dp</item>
+ <item name="android:layout_marginStart">24dp</item>
+ <item name="android:layout_marginBottom">16dp</item>
+ <item name="android:layout_marginEnd">24dp</item>
+ </style>
+
+ <style name="PermissionReviewTitleIcon">
+ <item name="android:layout_marginTop">4dp</item>
+ <item name="android:layout_width">36dp</item>
+ <item name="android:layout_height">36dp</item>
+ <item name="android:scaleType">fitCenter</item>
+ </style>
+
+ <style name="PermissionReviewTitleMessage"
+ parent="@android:style/TextAppearance.DeviceDefault">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:paddingStart">22dp</item>
+ <item name="android:textSize">20sp</item>
<item name="android:textColor">?android:attr/textColorPrimary</item>
</style>
- <style name="SmallText"
- parent="@android:style/TextAppearance.Small">
- <item name="android:textColor">?android:attr/textColorPrimary</item>
+ <style name="PermissionReviewSettings">
+ <item name="android:layout_marginStart">8dp</item>
+ <item name="android:layout_marginEnd">8dp</item>
</style>
- <style name="TitleText">
- <item name="android:fontFamily">sans-serif-medium</item>
- <item name="android:textSize">20dp</item>
- <item name="android:textColor">?android:attr/textColorPrimary</item>
+ <style name="PermissionReviewSwitchStyle"
+ parent="@android:style/Widget.Material.CompoundButton.Switch">
+ <item name="android:minWidth">48dp</item>
+ <item name="android:minHeight">48dp</item>
</style>
- <style name="ActionBar" parent="@android:style/Widget.Material.ActionBar.Solid">
- <item name="android:contentInsetStart">72dp</item>
+ <style name="PermissionReviewButtonBar">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:layout_gravity">bottom</item>
+ <item name="android:orientation">horizontal</item>
+ <item name="android:gravity">bottom</item>
</style>
+ <style name="PermissionReviewButtonBarSpace">
+ <item name="android:layout_width">0dp</item>
+ <item name="android:layout_height">0dp</item>
+ <item name="android:layout_weight">1</item>
+ <item name="android:visibility">invisible</item>
+ </style>
+
+ <style name="PermissionReviewButton"
+ parent="@android:style/Widget.DeviceDefault.Button.Borderless.Colored">
+ <item name="android:minWidth">@dimen/alert_dialog_button_bar_width</item>
+ <item name="android:minHeight">@dimen/alert_dialog_button_bar_height</item>
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ </style>
+
+ <style name="PermissionReviewButtonMoreInfo"
+ parent="@style/PermissionReviewButton">
+ <item name="android:layout_gravity">bottom</item>
+ </style>
+
+ <!-- for use in overlays -->
+ <style name="PermissionReviewButtonCancel"
+ parent="@style/PermissionReviewButton"></style>
+ <style name="PermissionReviewButtonContinue"
+ parent="@style/PermissionReviewButton"></style>
+
+ <!-- END PERMISSION REVIEW SCREEN -->
+
+ <!-- START PERMISSIONS FRAME -->
+
+ <style name="PermissionsFrameNoPermissionsText">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">match_parent</item>
+ <item name="android:gravity">center</item>
+ <item name="android:textAppearance">?android:attr/textAppearanceLarge</item>
+ <item name="android:layout_marginTop">32dp</item>
+ </style>
+
+ <!-- END PERMISSIONS FRAME -->
+
+ <!-- START HEADER -->
+
+ <style name="Header">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">?android:attr/actionBarSize</item>
+ <item name="android:background">?android:attr/colorSecondary</item>
+ <item name="android:gravity">center_vertical</item>
+ </style>
+
+ <style name="HeaderIcon">
+ <item name="android:layout_width">@dimen/header_subsettings_margin_start</item>
+ <item name="android:layout_height">40dp</item>
+ <item name="android:gravity">end</item>
+ <item name="android:layout_centerVertical">true</item>
+ </style>
+
+ <style name="HeaderName">
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_marginStart">@dimen/header_subsettings_margin_start</item>
+ <item name="android:layout_alignWithParentIfMissing">true</item>
+ <item name="android:layout_centerVertical">true</item>
+ <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
+ <item name="android:textColor">?android:attr/textColorPrimary</item>
+ <item name="android:textAlignment">viewStart</item>
+ </style>
+
+ <style name="HeaderInfo" parent="@android:style/Widget.DeviceDefault.Button.Borderless">
+ <item name="android:layout_width">56dp</item>
+ <item name="android:layout_height">56dp</item>
+ <item name="android:layout_alignParentEnd">true</item>
+ <item name="android:layout_marginEnd">@dimen/header_subsettings_margin_end</item>
+ <item name="android:layout_centerVertical">true</item>
+ <item name="android:minHeight">0dp</item>
+ <item name="android:minWidth">0dp</item>
+ <item name="android:scaleType">center</item>
+ </style>
+
+ <!-- END HEADER -->
+
+ <!-- START APP PERMISSION SCREEN -->
+
+ <style name="AppPermission">
+ <item name="android:orientation">vertical</item>
+ </style>
+
+ <style name="LargeHeader">
+ <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:gravity">center</item>
+ </style>
+
+ <style name="LargeHeaderText">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:layout_marginBottom">16dp</item>
+ <item name="android:gravity">center_horizontal</item>
+ <item name="android:textColor">?android:attr/textColorSecondary</item>
+ <item name="android:paddingStart">48dp</item>
+ <item name="android:paddingEnd">48dp</item>
+ </style>
+
+ <style name="LargeHeaderLink"
+ parent="@android:style/Widget.DeviceDefault.Button.Borderless.Colored">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ </style>
+
+ <style name="LargeHeaderDivider">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">.75dp</item>
+ <item name="android:background">?android:attr/dividerHorizontal</item>
+ </style>
+
+ <style name="AppPermissionSelection">
+ <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:minHeight">?android:attr/listPreferredItemHeight</item>
+ <item name="android:paddingStart">?android:attr/listPreferredItemPaddingStart</item>
+ <item name="android:paddingEnd">?android:attr/listPreferredItemPaddingEnd</item>
+ <item name="android:background">?android:attr/selectableItemBackground</item>
+ </style>
+
+ <style name="AppPermissionMessage"
+ parent="@style/TextAppearance.CategoryTitle">
+ <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:layout_marginStart">56dp</item>
+ <item name="android:textColor">?android:attr/colorAccent</item>
+ <item name="android:textDirection">locale</item>
+ </style>
+
+ <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:textAppearance">?android:attr/textAppearanceMedium</item>
+ <item name="android:textDirection">locale</item>
+ </style>
+
+ <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>
+
+ <style name="AppPermissionTwoTargetDivider">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">match_parent</item>
+ <item name="android:gravity">center</item>
+ <item name="android:orientation">horizontal</item>
+ <item name="android:paddingTop">16dp</item>
+ <item name="android:paddingBottom">16dp</item>
+ </style>
+
+ <style name="AppPermissionWidgetFrame">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">match_parent</item>
+ <item name="android:gravity">center</item>
+ <item name="android:minWidth">64dp</item>
+ </style>
+
+ <style name="AppPermissionFooter">
+ <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:minHeight">?android:attr/listPreferredItemHeight</item>
+ <item name="android:background">?android:attr/selectableItemBackground</item>
+ </style>
+
+ <style name="AppPermissionFooterDivider">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">.75dp</item>
+ <item name="android:layout_marginTop">12dp</item>
+ <item name="android:layout_marginBottom">8dp</item>
+ <item name="android:background">?android:attr/dividerHorizontal</item>
+ </style>
+
+ <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">?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/colorAccent</item>
+ </style>
+
+ <!-- END APP PERMISSION SCREEN -->
+
+ <!-- START PERMISSION FILTER SCREEN -->
+
+ <style name="PermissionFilterDialogContainer">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">match_parent</item>
+ <item name="android:orientation">vertical</item>
+ </style>
+
+ <style name="PermissionFilterDialogTitleContainer">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:background">?android:colorBackgroundFloating</item>
+ </style>
+
+ <style name="PermissionFilterDialogTitle"
+ parent="@android:style/TextAppearance.DeviceDefault.WindowTitle">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:gravity">center</item>
+ <item name="android:layout_marginTop">18dp</item>
+ <item name="android:layout_marginBottom">24dp</item>
+ <item name="android:layout_marginStart">24dp</item>
+ <item name="android:layout_marginEnd">24dp</item>
+ </style>
+
+ <style name="PermissionFilterDialogScrollView">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">match_parent</item>
+ <item name="android:fillViewport">true</item>
+ <item name="android:orientation">vertical</item>
+ <item name="android:fadeScrollbars">false</item>
+ </style>
+
+ <style name="PermissionFilterDialogInnerContainer">
+ <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:layout_marginBottom">8dp</item>
+ </style>
+
+ <style name="PermissionFilterDialogItemsContainer">
+ <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:gravity">start</item>
+ </style>
+
+
+ <style name="PermissionFilterDialogItemContainer">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:layout_marginStart">16dp</item>
+ <item name="android:layout_marginEnd">16dp</item>
+ <item name="android:paddingTop">6dp</item>
+ <item name="android:paddingBottom">6dp</item>
+ <item name="android:orientation">horizontal</item>
+ <item name="android:gravity">center_vertical</item>
+ </style>
+
+ <style name="PermissionFilterDialogItemTextFrame">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:layout_weight">1</item>
+ <item name="android:layout_marginStart">16dp</item>
+ <item name="android:orientation">vertical</item>
+ </style>
+
+ <style name="PermissionFilterDialogItemTitle">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:singleLine">true</item>
+ <item name="android:ellipsize">marquee</item>
+ <item name="android:textAppearance">?android:attr/textAppearanceListItem</item>
+ </style>
+
+ <style name="PermissionFilterDialogItemSummary">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:textAppearance">?android:attr/textAppearanceListItemSecondary</item>
+ <item name="android:textColor">?android:attr/textColorSecondary</item>
+ </style>
+
+ <!-- END PERMISSION FILTER SCREEN -->
+
+ <!-- START PREFERENCE USAGE -->
+
+ <style name="PreferenceUsage">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:paddingTop">12dp</item>
+ <item name="android:paddingBottom">12dp</item>
+ <item name="android:minHeight">?android:attr/listPreferredItemHeightSmall</item>
+ <item name="android:gravity">center_vertical</item>
+ <item name="android:paddingLeft">?android:attr/listPreferredItemPaddingLeft</item>
+ <item name="android:paddingRight">?android:attr/listPreferredItemPaddingRight</item>
+ <item name="android:background">?android:attr/selectableItemBackground</item>
+ <item name="android:clipToPadding">false</item>
+ <item name="android:focusable">true</item>
+ <item name="android:baselineAligned">false</item>
+ </style>
+
+ <style name="PreferenceUsageImageFrame">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:maxWidth">48dp</item>
+ <item name="android:maxHeight">48dp</item>
+ <item name="android:gravity">center</item>
+ </style>
+
+ <style name="PreferenceUsageTitleWidgetFrame">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:gravity">start|center_vertical</item>
+ <item name="android:paddingEnd">8dp</item>
+ <item name="android:orientation">horizontal</item>
+ </style>
+
+ <style name="PreferenceUsageTitle">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:singleLine">true</item>
+ <item name="android:textAppearance">?android:attr/textAppearanceListItem</item>
+ <item name="android:ellipsize">marquee</item>
+ </style>
+
+ <style name="PreferenceUsageSummaryWidgetFrame">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:gravity">start|bottom</item>
+ <item name="android:orientation">horizontal</item>
+ </style>
+
+ <style name="PreferenceUsageSummary">
+ <item name="android:layout_width">0dp</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:maxLines">10</item>
+ <item name="android:textDirection">locale</item>
+ </style>
+
+ <style name="PreferenceUsageWidgetFrame">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:gravity">end|center_vertical</item>
+ <item name="android:paddingStart">16dp</item>
+ <item name="android:orientation">vertical</item>
+ </style>
+
+ <!-- END PREFERENCE USAGE -->
+
+ <!-- START TITLE SUMMARY IMAGE VIEW -->
+
+ <style name="TitleSummaryImageViewIcon">
+ <item name="android:layout_width">16dp</item>
+ <item name="android:layout_height">16dp</item>
+ <item name="android:layout_marginEnd">8dp</item>
+ <item name="android:tint">?android:attr/colorControlNormal</item>
+ </style>
+
+ <!-- END TITLE SUMMARY IMAGE VIEW -->
+
+ <!-- START IMAGE VIEW -->
+
+ <style name="ImageView">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:gravity">end|center_vertical</item>
+ </style>
+
+ <style name="ImageViewIcon">
+ <item name="android:layout_width">24dp</item>
+ <item name="android:layout_height">24dp</item>
+ <item name="android:scaleType">fitCenter</item>
+ </style>
+
+ <!-- END IMAGE VIEW -->
+
+ <!-- START LOADING CONTAINER -->
+
+ <style name="LoadingContainerTextView">
+ <item name="android:textAppearance">?android:attr/textAppearanceSmall</item>
+ <item name="android:paddingTop">4dp</item>
+ <item name="android:singleLine">true</item>
+ </style>
+
+ <!-- END LOADING CONTAINER -->
+
+ <!-- START ONGOING USAGE DIALOG -->
+
+ <style name="PermissionUsageDialogContainerScrollView">
+ <item name="android:fillViewport">true</item>
+ <item name="android:orientation">vertical</item>
+ </style>
+
+ <style name="PermissionUsageDialogContainerLayout">
+ <item name="android:orientation">vertical</item>
+ </style>
+
+ <style name="PermissionUsageDialogTitle"
+ parent="@android:style/TextAppearance.DeviceDefault.WindowTitle">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:gravity">center</item>
+ <item name="android:layout_marginStart">24dp</item>
+ <item name="android:layout_marginEnd">24dp</item>
+ <item name="android:layout_marginTop">18dp</item>
+ <item name="android:layout_marginBottom">18dp</item>
+ </style>
+
+ <style name="PermissionUsageDialogItemsContainer">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:layout_marginBottom">24dp</item>
+ <item name="android:orientation">vertical</item>
+ <item name="android:gravity">start</item>
+ </style>
+
+ <style name="PermissionUsageDialogItemContainer">
+ <item name="android:layout_width">match_parent</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>
+ <item name="android:focusable">true</item>
+ <item name="android:layout_gravity">center_vertical</item>
+ </style>
+
+ <style name="PermissionUsageDialogItemIconFrame">
+ <item name="android:layout_width">32dp</item>
+ <item name="android:layout_height">32dp</item>
+ <item name="android:layout_gravity">start|center_vertical</item>
+ </style>
+
+ <style name="PermissionUsageDialogItemIcon">
+ <item name="android:layout_width">32dp</item>
+ <item name="android:layout_height">32dp</item>
+ <item name="android:layout_gravity">center</item>
+ </style>
+
+ <style name="PermissionUsageDialogItemAppName"
+ parent="@android:style/TextAppearance.DeviceDefault">
+ <item name="android:layout_width">0dp</item>
+ <item name="android:layout_height">match_parent</item>
+ <item name="android:layout_weight">1</item>
+ <item name="android:gravity">start|center_vertical</item>
+ <item name="android:textDirection">locale</item>
+ <item name="android:textSize">16sp</item>
+ <item name="android:layout_marginStart">16dp</item>
+ </style>
+
+ <style name="PermissionUsageDialogItemIconsContainer">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">match_parent</item>
+ <item name="android:orientation">horizontal</item>
+ <item name="android:gravity">end|center_vertical</item>
+ <item name="android:layout_gravity">end</item>
+ <item name="android:visibility">gone</item>
+ </style>
+
+ <!-- END ONGOING USAGE DIALOG -->
+
+ <!-- START REQUEST ROLE DIALOG TITLE -->
+
+ <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>
+ <item name="android:paddingEnd">?android:dialogPreferredPadding</item>
+ <item name="android:paddingTop">18dp</item>
+ <item name="android:gravity">center_horizontal</item>
+ <item name="android:orientation">vertical</item>
+ </style>
+
+ <style name="RequestRoleTitleIcon">
+ <item name="android:layout_width">32dp</item>
+ <item name="android:layout_height">32dp</item>
+ </style>
+
+ <style name="RequestRoleTitleText"
+ parent="@android:style/TextAppearance.DeviceDefault.DialogWindowTitle">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:layout_marginTop">8dp</item>
+ <item name="android:gravity">center_horizontal</item>
+ </style>
+
+ <!-- END REQUEST ROLE DIALOG TITLE -->
+
+ <!-- START REQUEST ROLE DIALOG ITEM -->
+
+ <style name="RequestRoleItem">
+ <item name="android:minHeight">?android:listPreferredItemHeight</item>
+ <item name="android:paddingStart">?android:listPreferredItemPaddingStart</item>
+ <item name="android:paddingEnd">?android:listPreferredItemPaddingEnd</item>
+ <item name="android:clipChildren">false</item>
+ <item name="android:gravity">center_vertical</item>
+ <item name="android:orientation">horizontal</item>
+ </style>
+
+ <style name="RequestRoleItemIcon">
+ <item name="android:layout_width">32dp</item>
+ <item name="android:layout_height">32dp</item>
+ </style>
+
+ <style name="RequestRoleItemTitleLayout">
+ <item name="android:layout_width">0dp</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:layout_weight">1</item>
+ <item name="android:layout_marginStart">16dp</item>
+ <item name="android:animateLayoutChanges">true</item>
+ <item name="android:orientation">vertical</item>
+ </style>
+
+ <style name="RequestRoleItemTitleText">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:textAppearance">?android:textAppearanceListItem</item>
+ <item name="android:textColor">?android:textColorAlertDialogListItem</item>
+ <item name="android:singleLine">true</item>
+ <item name="android:ellipsize">marquee</item>
+ </style>
+
+ <style name="RequestRoleItemSubtitleText">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:textAppearance">?android:textAppearanceListItemSecondary</item>
+ <item name="android:textColor">?android:textColorSecondary</item>
+ </style>
+
+ <style name="RequestRoleItemRadioButton">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:layout_marginStart">16dp</item>
+ </style>
+
+ <!-- END REQUEST ROLE DIALOG ITEM -->
+
+ <!-- START REQUEST ROLE VIEW -->
+
+ <style name="RequestRoleView">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:paddingStart">?android:dialogPreferredPadding</item>
+ <item name="android:paddingEnd">?android:dialogPreferredPadding</item>
+ <item name="android:clipChildren">false</item>
+ <item name="android:clipToPadding">false</item>
+ </style>
+
+ <style name="RequestRoleViewCheckbox">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:minHeight">?android:listPreferredItemHeightSmall</item>
+ <item name="android:paddingStart">16dp</item>
+ <item name="android:textAppearance">@style/android:TextAppearance.Material.Subhead</item>
+ </style>
+
+ <!-- END REQUEST ROLE VIEW -->
+
+ <!-- START SETTINGS BUTTON PREFERENCE WIDGET -->
+
+ <style name="SettingsButtonPreferenceWidgetDivider">
+ <item name="android:layout_width">1dp</item>
+ <item name="android:layout_height">match_parent</item>
+ <item name="android:layout_marginTop">16dp</item>
+ <item name="android:layout_marginBottom">16dp</item>
+ <item name="android:background">?android:listDivider</item>
+ </style>
+
+ <style name="SettingsButtonPreferenceWidgetButton">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:minWidth">64dp</item>
+ <item name="android:layout_height">match_parent</item>
+ <item name="android:paddingStart">?android:listPreferredItemPaddingEnd</item>
+ <item name="android:paddingEnd">?android:listPreferredItemPaddingEnd</item>
+ <item name="android:background">?android:selectableItemBackground</item>
+ <item name="android:scaleType">center</item>
+ </style>
+
+ <!-- END SETTINGS BUTTON PREFERENCE WIDGET -->
+
+ <!-- START ACCESSIBILITY SERVICE DIALOG -->
+
+ <style name="AccessibilityServiceDialogScrollView">
+ <item name="android:fillViewport">true</item>
+ <item name="android:orientation">vertical</item>
+ </style>
+
+ <style name="AccessibilityServiceDialog">
+ <item name="android:orientation">vertical</item>
+ </style>
+
+ <style name="AccessibilityServiceDialogHeader">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:layout_marginTop">18dp</item>
+ <item name="android:gravity">center</item>
+ </style>
+
+ <style name="AccessibilityServiceDialogHeaderIcon">
+ <item name="android:layout_height">32dp</item>
+ <item name="android:layout_width">32dp</item>
+ <item name="android:scaleType">fitCenter</item>
+ <item name="android:visibility">gone</item>
+ </style>
+
+ <style name="AccessibilityServiceDialogTitle">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:gravity">center</item>
+ <item name="android:textAppearance">@android:style/TextAppearance.Material.Title</item>
+ <item name="android:layout_marginStart">24dp</item>
+ <item name="android:layout_marginEnd">24dp</item>
+ <item name="android:layout_marginTop">18dp</item>
+ </style>
+
+ <style name="AccessibilityServiceDialogItemsContainer">
+ <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:gravity">start</item>
+ </style>
+
+ <style name="AccessibilityServiceDialogMiddleText">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:textAppearance">@android:style/TextAppearance.Material.Subhead</item>
+ <item name="android:textDirection">locale</item>
+ <item name="android:layout_marginStart">24dp</item>
+ <item name="android:layout_marginEnd">24dp</item>
+ <item name="android:layout_marginTop">18dp</item>
+ </style>
+
+ <style name="AccessibilityServiceDialogBottomText">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
+ <item name="android:textSize">16sp</item>
+ <item name="android:layout_marginStart">24dp</item>
+ <item name="android:layout_marginEnd">24dp</item>
+ <item name="android:layout_marginTop">24dp</item>
+ <item name="android:layout_marginBottom">24dp</item>
+ </style>
+
+ <!-- END ACCESSIBILITY SERVICE DIALOG -->
+
+ <!-- START ACCESSIBILITY SERVICE DIALOG ITEM -->
+
+ <style name="AccessibilityServiceDialogItem">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:layout_marginStart">24dp</item>
+ <item name="android:layout_marginEnd">24dp</item>
+ <item name="android:orientation">horizontal</item>
+ <item name="android:layout_gravity">center_vertical</item>
+ </style>
+
+ <style name="AccessibilityServiceDialogItemIcon">
+ <item name="android:layout_height">32dp</item>
+ <item name="android:layout_width">32dp</item>
+ <item name="android:scaleType">fitCenter</item>
+ <item name="android:layout_gravity">start|center_vertical</item>
+ </style>
+
+ <style name="AccessibilityServiceDialogItemDescription">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:layout_weight">1</item>
+ <item name="android:layout_marginStart">16dp</item>
+ <item name="android:orientation">vertical</item>
+ <item name="android:paddingTop">18dp</item>
+ </style>
+
+ <style name="AccessibilityServiceDialogItemTitle">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:singleLine">true</item>
+ <item name="android:textAppearance">?android:attr/textAppearanceListItem</item>
+ <item name="android:ellipsize">marquee</item>
+ </style>
+
+ <style name="AccessibilityServiceDialogItemSummary">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:textAppearance">?android:attr/textAppearanceListItemSecondary</item>
+ <item name="android:textColor">?android:attr/textColorSecondary</item>
+ </style>
+
+ <!-- END ACCESSIBILITY SERVICE DIALOG ITEM -->
+
+ <!-- START CAR SETTINGS PREFERENCE STYLES -->
+
+ <style name="CarPreferenceFragment">
+ <item name="android:layout">@layout/car_settings_frame</item>
+ </style>
+
+ <style name="CarPreferenceFragmentList">
+ <item name="android:paddingTop">0dp</item>
+ <item name="android:paddingBottom">0dp</item>
+ <item name="android:paddingStart">0dp</item>
+ <item name="android:paddingEnd">0dp</item>
+ <item name="android:paddingLeft">0dp</item>
+ <item name="android:paddingRight">0dp</item>
+ </style>
+
+ <!-- END CAR SETTINGS PREFERENCE STYLES -->
+
</resources>
diff --git a/res/values/themes.xml b/res/values/themes.xml
index 649b303..5db43f7 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -19,43 +19,69 @@
<style name="Settings"
parent="@android:style/Theme.DeviceDefault.Settings">
+ <item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
+ <item name="preferenceCategoryTitleTextAppearance">@style/TextAppearance.CategoryTitle</item>
</style>
- <style name="CarSettingTheme" parent="Theme.Car.Light.NoActionBar">
- <item name="android:background">@color/car_card</item>
+ <style name="TextAppearance.CategoryTitle"
+ parent="@android:style/TextAppearance.DeviceDefault.Medium">
+ <item name="android:textAllCaps">true</item>
+ <item name="android:textSize">11sp</item>
+ <!-- 0.8 Spacing, 0.8/11 = 0.072727273 -->
+ <item name="android:letterSpacing">0.072727273</item>
</style>
- <style name="Settings.NoActionBar" parent="@style/Settings">
+ <style name="ReviewPermissions"
+ parent="@android:style/Theme.DeviceDefault.Settings">
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
+ <item name="android:switchStyle">@style/PermissionReviewSwitchStyle</item>
+ <item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
</style>
<style name="GrantPermissions"
- parent="@android:style/Theme.DeviceDefault.Light.Dialog.NoActionBar">
- <item name="*android:windowFixedHeightMajor">100%</item>
- <item name="*android:windowFixedHeightMinor">100%</item>
+ parent="@android:style/Theme.DeviceDefault.Light.Dialog.Alert">
+ <item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
- </style>
-
- <style name="DialogWhenLarge"
- parent="@android:style/Theme.DeviceDefault.Light.NoActionBar">
- <item name="android:textAppearanceMedium">@style/MediumText</item>
- <item name="android:textAppearanceSmall">@style/SmallText</item>
- <item name="android:titleTextStyle">@style/TitleText</item>
- </style>
-
- <style name="DialogWhenLargeNoAnimation" parent="DialogWhenLarge">
- <item name="android:windowAnimationStyle">@null</item>
- </style>
-
- <style name="AlertDialogActivity"
- parent="@android:style/Theme.DeviceDefault.Light.Panel">
- <item name="android:backgroundDimEnabled">true</item>
+ <!-- The following attributes change the behavior of the dialog, hence they should not be
+ themed -->
+ <item name="android:windowIsTranslucent">true</item>
</style>
<style name="Header.Settings"
parent="@android:style/Theme.DeviceDefault.Settings">
</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: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:windowNoTitle">true</item>
+ </style>
+
+ <style name="Theme.PermissionGrantDialog"
+ parent="@android:style/Theme.DeviceDefault.Light.Dialog">
+ <item name="android:divider">@drawable/list_divider</item>
+ </style>
+
+ <style name="PermissionDialog"
+ parent="@android:style/Theme.DeviceDefault.Light.Dialog.NoActionBar">
+ </style>
+
+ <style name="CarSettings" parent="@android:style/Theme.DeviceDefault.NoActionBar">
+ <item name="preferenceTheme">@style/CarPreferenceTheme</item>
+ <item name="carDividerColor">@*android:color/car_list_divider</item>
+ </style>
+
+ <style name="CarPreferenceTheme">
+ <item name="preferenceFragmentCompatStyle">@style/CarPreferenceFragment</item>
+ <item name="preferenceFragmentListStyle">@style/CarPreferenceFragmentList</item>
+ </style>
</resources>
diff --git a/res/xml/adjust_user_sensitive.xml b/res/xml/adjust_user_sensitive.xml
new file mode 100644
index 0000000..ba7d800
--- /dev/null
+++ b/res/xml/adjust_user_sensitive.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <SwitchPreference
+ android:key="assistantrecordaudio"
+ android:title="@string/assistant_record_audio_user_sensitive_title"
+ android:summary="@string/assistant_record_audio_user_sensitive_summary"/>
+
+ <SwitchPreference
+ android:key="global"
+ android:title="@string/adjust_user_sensitive_globally_title"
+ android:summary="@string/adjust_user_sensitive_globally_summary"/>
+
+ <PreferenceCategory
+ android:key="perapp"
+ android:title="@string/adjust_user_sensitive_per_app_header" />
+
+</PreferenceScreen>
diff --git a/res/xml/allowed_denied.xml b/res/xml/allowed_denied.xml
new file mode 100644
index 0000000..c5e01ed
--- /dev/null
+++ b/res/xml/allowed_denied.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <PreferenceCategory
+ android:key="allowed"
+ android:title="@string/allowed_header" />
+
+ <PreferenceCategory
+ android:key="allowed_foreground"
+ android:title="@string/allowed_foreground_header" />
+
+ <PreferenceCategory
+ android:key="denied"
+ android:title="@string/denied_header" />
+
+</PreferenceScreen>
diff --git a/res/xml/roles.xml b/res/xml/roles.xml
new file mode 100644
index 0000000..bf998dd
--- /dev/null
+++ b/res/xml/roles.xml
@@ -0,0 +1,409 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- 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.
+-->
+
+<roles>
+
+ <permission-set name="phone">
+ <permission name="android.permission.READ_PHONE_STATE" />
+ <permission name="android.permission.CALL_PHONE" />
+ <permission name="android.permission.READ_CALL_LOG" />
+ <permission name="android.permission.WRITE_CALL_LOG" />
+ <permission name="com.android.voicemail.permission.ADD_VOICEMAIL" />
+ <permission name="android.permission.USE_SIP" />
+ <permission name="android.permission.PROCESS_OUTGOING_CALLS" />
+ </permission-set>
+
+ <permission-set name="contacts">
+ <permission name="android.permission.READ_CONTACTS" />
+ <permission name="android.permission.WRITE_CONTACTS" />
+ <permission name="android.permission.GET_ACCOUNTS" />
+ </permission-set>
+
+ <permission-set name="location">
+ <permission name="android.permission.ACCESS_FINE_LOCATION" />
+ <permission name="android.permission.ACCESS_COARSE_LOCATION" />
+ </permission-set>
+
+ <permission-set name="coarse_location">
+ <permission name="android.permission.ACCESS_COARSE_LOCATION" />
+ </permission-set>
+
+ <permission-set name="calendar">
+ <permission name="android.permission.READ_CALENDAR" />
+ <permission name="android.permission.WRITE_CALENDAR" />
+ </permission-set>
+
+ <permission-set name="sms">
+ <permission name="android.permission.SEND_SMS" />
+ <permission name="android.permission.RECEIVE_SMS" />
+ <permission name="android.permission.READ_SMS" />
+ <permission name="android.permission.RECEIVE_WAP_PUSH" />
+ <permission name="android.permission.RECEIVE_MMS" />
+ <permission name="android.permission.READ_CELL_BROADCASTS" />
+ </permission-set>
+
+ <permission-set name="microphone">
+ <permission name="android.permission.RECORD_AUDIO" />
+ </permission-set>
+
+ <permission-set name="camera">
+ <permission name="android.permission.CAMERA" />
+ </permission-set>
+
+ <permission-set name="sensors">
+ <permission name="android.permission.BODY_SENSORS" />
+ </permission-set>
+
+ <permission-set name="storage">
+ <permission name="android.permission.READ_EXTERNAL_STORAGE" />
+ <permission name="android.permission.WRITE_EXTERNAL_STORAGE" />
+ </permission-set>
+
+ <role
+ name="android.app.role.ASSISTANT"
+ behavior="AssistantRoleBehavior"
+ description="@string/role_assistant_description"
+ exclusive="true"
+ showNone="true"
+ label="@string/role_assistant_label"
+ requestable="false"
+ shortLabel="@string/role_assistant_short_label">
+ <required-components>
+ <!-- Qualified components are determined int AssistantRoleBehavior. This comment here is
+ ignored and represents just a rough description
+
+ <any-of>
+ <service permission="android.permission.BIND_VOICE_INTERACTION"
+ supportsAssist="true">
+ <intent-filter>
+ <action name="android.service.voice.VoiceInteractionService" />
+ </intent-filter>
+ <meta-data name="android.voice_interaction"
+ optional="false">
+ required tag in metadata xml: sessionService
+ required tag in metadata xml: recognitionService
+ required tag in metadata xml: supportsAssist = true
+ </meta-data>
+ </service>
+ <activity>
+ <intent-filter>
+ <action name="android.intent.action.ASSIST" />
+ </intent-filter>
+ </activity>
+ </ any-of>
+
+ -->
+ </required-components>
+ <permissions>
+ <permission-set name="sms" />
+ <permission name="android.permission.READ_CALL_LOG" />
+ </permissions>
+ </role>
+
+ <!---
+ ~ @see com.android.settings.applications.defaultapps.DefaultBrowserPreferenceController
+ ~ @see com.android.settings.applications.defaultapps.DefaultBrowserPicker
+ ~ @see com.android.server.pm.PackageManagerService.resolveAllBrowserApps(int)
+ ~ @see com.android.server.pm.PackageManagerService.setDefaultBrowserPackageName(String, int)
+ ~ @see com.android.server.pm.permission.DefaultPermissionGrantPolicy.grantDefaultPermissionsToDefaultBrowser(String, int)
+ -->
+ <role
+ name="android.app.role.BROWSER"
+ behavior="BrowserRoleBehavior"
+ description="@string/role_browser_description"
+ exclusive="true"
+ label="@string/role_browser_label"
+ requestDescription="@string/role_browser_request_description"
+ requestTitle="@string/role_browser_request_title"
+ shortLabel="@string/role_browser_short_label">
+ <!--
+ ~ Required components matching is handled in BrowserRoleBehavior because it needs the
+ ~ PackageManager.MATCH_ALL flag and other manual filtering, which cannot fit in our
+ ~ current mechanism easily.
+ -->
+ <!--
+ <required-components>
+ <activity>
+ <intent-filter>
+ <action name="android.intent.action.VIEW" />
+ <category name="android.intent.category.BROWSABLE" />
+ <data scheme="http" />
+ </intent-filter>
+ </activity>
+ </required-components>
+ -->
+ <!--
+ ~ Not need to set preferred activity because PackageManager handles browser intents
+ ~ specially.
+ -->
+ </role>
+
+ <!--
+ ~ @see com.android.settings.applications.defaultapps.DefaultPhonePreferenceController
+ ~ @see com.android.settings.applications.defaultapps.DefaultPhonePicker
+ ~ @see android.telecom.DefaultDialerManager
+ ~ @see com.android.server.pm.permission.DefaultPermissionGrantPolicy.grantDefaultPermissionsToDefaultDialerApp(String, int)
+ ~ @see com.android.server.pm.Settings.setDefaultDialerPackageNameLPw(String, int)
+ -->
+ <role
+ name="android.app.role.DIALER"
+ behavior="DialerRoleBehavior"
+ description="@string/role_dialer_description"
+ exclusive="true"
+ label="@string/role_dialer_label"
+ requestDescription="@string/role_dialer_request_description"
+ requestTitle="@string/role_dialer_request_title"
+ shortLabel="@string/role_dialer_short_label">
+ <required-components>
+ <activity>
+ <intent-filter>
+ <action name="android.intent.action.DIAL" />
+ </intent-filter>
+ </activity>
+ <activity>
+ <intent-filter>
+ <action name="android.intent.action.DIAL" />
+ <data scheme="tel" />
+ </intent-filter>
+ </activity>
+ </required-components>
+ <permissions>
+ <permission-set name="phone" />
+ <permission-set name="contacts" />
+ <permission-set name="sms" />
+ <permission-set name="microphone" />
+ <permission-set name="camera" />
+ </permissions>
+ <app-ops>
+ <!--
+ ~ @see com.android.settings.applications.defaultapps.DefaultPhonePicker#setDefaultKey(String)
+ ~ @see com.android.settings.fuelgauge.BatteryUtils#setForceAppStandby(int, String, int)
+ -->
+ <app-op name="android:run_in_background" maxTargetSdkVersion="25" mode="allowed" />
+ <app-op name="android:run_any_in_background" mode="allowed" />
+ </app-ops>
+ <preferred-activities>
+ <preferred-activity>
+ <activity>
+ <intent-filter>
+ <action name="android.intent.action.DIAL" />
+ </intent-filter>
+ </activity>
+ <intent-filter>
+ <action name="android.intent.action.DIAL" />
+ </intent-filter>
+ </preferred-activity>
+ <preferred-activity>
+ <activity>
+ <intent-filter>
+ <action name="android.intent.action.DIAL" />
+ <data scheme="tel" />
+ </intent-filter>
+ </activity>
+ <intent-filter>
+ <action name="android.intent.action.DIAL" />
+ <data scheme="tel" />
+ </intent-filter>
+ </preferred-activity>
+ </preferred-activities>
+ </role>
+
+ <!--
+ ~ @see com.android.settings.applications.defaultapps.DefaultSmsPreferenceController
+ ~ @see com.android.settings.applications.defaultapps.DefaultSmsPicker
+ ~ @see com.android.internal.telephony.SmsApplication
+ ~ @see com.android.server.pm.permission.DefaultPermissionGrantPolicy.grantDefaultPermissionsToDefaultSmsApp(String, int)
+ -->
+ <role
+ name="android.app.role.SMS"
+ behavior="SmsRoleBehavior"
+ description="@string/role_sms_description"
+ exclusive="true"
+ label="@string/role_sms_label"
+ requestDescription="@string/role_sms_request_description"
+ requestTitle="@string/role_sms_request_title"
+ shortLabel="@string/role_sms_short_label">
+ <required-components>
+ <receiver permission="android.permission.BROADCAST_SMS">
+ <intent-filter>
+ <action name="android.provider.Telephony.SMS_DELIVER" />
+ </intent-filter>
+ </receiver>
+ <receiver permission="android.permission.BROADCAST_WAP_PUSH">
+ <intent-filter>
+ <action name="android.provider.Telephony.WAP_PUSH_DELIVER" />
+ <data mimeType="application/vnd.wap.mms-message" />
+ </intent-filter>
+ </receiver>
+ <service permission="android.permission.SEND_RESPOND_VIA_MESSAGE">
+ <intent-filter>
+ <action name="android.intent.action.RESPOND_VIA_MESSAGE" />
+ <data scheme="smsto" />
+ </intent-filter>
+ </service>
+ <activity>
+ <intent-filter>
+ <action name="android.intent.action.SENDTO" />
+ <data scheme="smsto" />
+ </intent-filter>
+ </activity>
+ </required-components>
+ <permissions>
+ <permission-set name="phone" />
+ <permission-set name="contacts" />
+ <permission-set name="sms" />
+ <permission-set name="storage" />
+ <permission-set name="microphone" />
+ <permission-set name="camera" />
+ </permissions>
+ <app-ops>
+ <app-op name="android:write_sms" mode="allowed" />
+ <!--
+ ~ @see com.android.settings.applications.defaultapps.DefaultSmsPicker#setDefaultKey(String)
+ ~ @see com.android.settings.fuelgauge.BatteryUtils#setForceAppStandby(int, String, int)
+ -->
+ <app-op name="android:run_in_background" maxTargetSdkVersion="25" mode="allowed" />
+ <app-op name="android:run_any_in_background" mode="allowed" />
+ <app-op name="android:read_device_identifiers" mode="allowed" />
+ </app-ops>
+ <preferred-activities>
+ <preferred-activity>
+ <activity>
+ <intent-filter>
+ <action name="android.intent.action.SENDTO" />
+ <data scheme="smsto" />
+ </intent-filter>
+ </activity>
+ <intent-filter>
+ <action name="android.intent.action.SENDTO" />
+ <data scheme="sms" />
+ </intent-filter>
+ <intent-filter>
+ <action name="android.intent.action.SENDTO" />
+ <data scheme="smsto" />
+ </intent-filter>
+ <intent-filter>
+ <action name="android.intent.action.SENDTO" />
+ <data scheme="mms" />
+ </intent-filter>
+ <intent-filter>
+ <action name="android.intent.action.SENDTO" />
+ <data scheme="mmsto" />
+ </intent-filter>
+ </preferred-activity>
+ </preferred-activities>
+ </role>
+
+ <!---
+ ~ @see com.android.settings.applications.defaultapps.DefaultEmergencyPreferenceController
+ ~ @see com.android.settings.applications.defaultapps.DefaultEmergencyPicker
+ ~ @see com.android.phone.EmergencyAssistanceHelper
+ -->
+ <role
+ name="android.app.role.EMERGENCY"
+ behavior="EmergencyRoleBehavior"
+ description="@string/role_emergency_description"
+ exclusive="true"
+ label="@string/role_emergency_label"
+ requestDescription="@string/role_emergency_request_description"
+ requestTitle="@string/role_emergency_request_title"
+ shortLabel="@string/role_emergency_short_label"
+ systemOnly="true">
+ <required-components>
+ <activity>
+ <intent-filter>
+ <action name="android.telephony.action.EMERGENCY_ASSISTANCE" />
+ </intent-filter>
+ </activity>
+ </required-components>
+ </role>
+
+ <!---
+ ~ @see com.android.settings.applications.defaultapps.DefaultHomePreferenceController
+ ~ @see com.android.settings.applications.defaultapps.DefaultHomePicker
+ ~ @see com.android.server.pm.PackageManagerService#setHomeActivity(ComponentName, int)
+ -->
+ <role
+ name="android.app.role.HOME"
+ behavior="HomeRoleBehavior"
+ description="@string/role_home_description"
+ exclusive="true"
+ label="@string/role_home_label"
+ requestDescription="@string/role_home_request_description"
+ requestTitle="@string/role_home_request_title"
+ shortLabel="@string/role_home_short_label">
+ <!-- Also used by HomeRoleBehavior.getFallbackHolder(). -->
+ <required-components>
+ <activity>
+ <intent-filter>
+ <action name="android.intent.action.MAIN" />
+ <category name="android.intent.category.HOME" />
+ </intent-filter>
+ </activity>
+ </required-components>
+ <preferred-activities>
+ <preferred-activity>
+ <activity>
+ <intent-filter>
+ <action name="android.intent.action.MAIN" />
+ <category name="android.intent.category.HOME" />
+ </intent-filter>
+ </activity>
+ <intent-filter>
+ <action name="android.intent.action.MAIN" />
+ <category name="android.intent.category.HOME" />
+ </intent-filter>
+ </preferred-activity>
+ </preferred-activities>
+ </role>
+
+ <!--- @see android.telecom.CallRedirectionService -->
+ <role
+ name="android.app.role.CALL_REDIRECTION"
+ description="@string/role_call_redirection_description"
+ exclusive="true"
+ label="@string/role_call_redirection_label"
+ requestDescription="@string/role_call_redirection_request_description"
+ requestTitle="@string/role_call_redirection_request_title"
+ shortLabel="@string/role_call_redirection_short_label">
+ <required-components>
+ <service permission="android.permission.BIND_CALL_REDIRECTION_SERVICE">
+ <intent-filter>
+ <action name="android.telecom.CallRedirectionService" />
+ </intent-filter>
+ </service>
+ </required-components>
+ </role>
+
+ <!--- @see android.telecom.CallScreeningService -->
+ <role
+ name="android.app.role.CALL_SCREENING"
+ description="@string/role_call_screening_description"
+ exclusive="true"
+ label="@string/role_call_screening_label"
+ requestDescription="@string/role_call_screening_request_description"
+ requestTitle="@string/role_call_screening_request_title"
+ shortLabel="@string/role_call_screening_short_label">
+ <required-components>
+ <service permission="android.permission.BIND_SCREENING_SERVICE">
+ <intent-filter>
+ <action name="android.telecom.CallScreeningService" />
+ </intent-filter>
+ </service>
+ </required-components>
+ </role>
+</roles>
diff --git a/src/android/support/wearable/view/AcceptDenyDialog.java b/src/android/support/wearable/view/AcceptDenyDialog.java
index f2129b8..933f1b3 100644
--- a/src/android/support/wearable/view/AcceptDenyDialog.java
+++ b/src/android/support/wearable/view/AcceptDenyDialog.java
@@ -28,7 +28,7 @@
import android.widget.Space;
import android.widget.TextView;
-import com.android.packageinstaller.R;
+import com.android.permissioncontroller.R;
/**
* A dialog to display a title, a message, and/or an icon with a positive and a negative button.
diff --git a/src/android/support/wearable/view/CircledImageView.java b/src/android/support/wearable/view/CircledImageView.java
index 0ae3446..2a18f10 100644
--- a/src/android/support/wearable/view/CircledImageView.java
+++ b/src/android/support/wearable/view/CircledImageView.java
@@ -37,9 +37,8 @@
import android.view.View;
import java.util.Objects;
-import com.android.packageinstaller.R;
-import com.android.packageinstaller.R;
+import com.android.permissioncontroller.R;
/**
* An image view surrounded by a circle.
diff --git a/src/com/android/packageinstaller/AsyncTaskLiveData.java b/src/com/android/packageinstaller/AsyncTaskLiveData.java
new file mode 100644
index 0000000..8fe190c
--- /dev/null
+++ b/src/com/android/packageinstaller/AsyncTaskLiveData.java
@@ -0,0 +1,40 @@
+/*
+ * 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.packageinstaller;
+
+import android.os.AsyncTask;
+
+import androidx.annotation.WorkerThread;
+import androidx.lifecycle.LiveData;
+
+/**
+ * {@link LiveData} that uses {@link AsyncTask} to load value on a background thread.
+ *
+ * @param <T> type of the value
+ */
+public abstract class AsyncTaskLiveData<T> extends LiveData<T> {
+
+ /**
+ * Load the value on a background thread. The value will be reloaded even if already loaded.
+ */
+ public void loadValue() {
+ AsyncTask.execute(() -> postValue(loadValueInBackground()));
+ }
+
+ @WorkerThread
+ protected abstract T loadValueInBackground();
+}
diff --git a/src/com/android/packageinstaller/CaffeinatedScrollView.java b/src/com/android/packageinstaller/CaffeinatedScrollView.java
deleted file mode 100644
index 723ae13..0000000
--- a/src/com/android/packageinstaller/CaffeinatedScrollView.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
-**
-** Copyright 2012, 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.packageinstaller;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.util.AttributeSet;
-import android.widget.ScrollView;
-
-/**
- * It's a ScrollView that knows how to stay awake.
- */
-class CaffeinatedScrollView extends ScrollView {
- private Runnable mFullScrollAction;
- private int mBottomSlop;
-
- public CaffeinatedScrollView(Context context) {
- super(context);
- }
-
- public CaffeinatedScrollView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- /**
- * Make this visible so we can call it
- */
- @Override
- public boolean awakenScrollBars() {
- return super.awakenScrollBars();
- }
-
- public void setFullScrollAction(Runnable action) {
- mFullScrollAction = action;
- mBottomSlop = (int)(4 * getResources().getDisplayMetrics().density);
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- checkFullScrollAction();
- }
-
- @Override
- protected void onScrollChanged(int l, int t, int oldl, int oldt) {
- super.onScrollChanged(l, t, oldl, oldt);
- checkFullScrollAction();
- }
-
- private void checkFullScrollAction() {
- if (mFullScrollAction != null) {
- int daBottom = getChildAt(0).getBottom();
- int screenBottom = getScrollY() + getHeight() - getPaddingBottom();
- if ((daBottom - screenBottom) < mBottomSlop) {
- mFullScrollAction.run();
- mFullScrollAction = null;
- }
- }
- }
-}
diff --git a/src/com/android/packageinstaller/Constants.java b/src/com/android/packageinstaller/Constants.java
new file mode 100644
index 0000000..fa25beb
--- /dev/null
+++ b/src/com/android/packageinstaller/Constants.java
@@ -0,0 +1,150 @@
+/*
+ * 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.packageinstaller;
+
+/**
+ * App-global constants
+ */
+public class Constants {
+
+ /**
+ * ID for the periodic job in
+ * {@link com.android.packageinstaller.permission.service.LocationAccessCheck}.
+ */
+ public static final int PERIODIC_LOCATION_ACCESS_CHECK_JOB_ID = 0;
+
+ /**
+ * ID for the on-demand, but delayed job in
+ * {@link com.android.packageinstaller.permission.service.LocationAccessCheck}.
+ */
+ public static final int LOCATION_ACCESS_CHECK_JOB_ID = 1;
+
+ /**
+ * Name of file to containing the packages we already showed a notificaiton for.
+ *
+ * @see com.android.packageinstaller.permission.service.LocationAccessCheck
+ */
+ public static final String LOCATION_ACCESS_CHECK_ALREADY_NOTIFIED_FILE =
+ "packages_already_notified_location_access";
+
+ /**
+ * ID for notification shown by
+ * {@link com.android.packageinstaller.permission.service.LocationAccessCheck}.
+ */
+ public static final int LOCATION_ACCESS_CHECK_NOTIFICATION_ID = 0;
+
+ /**
+ * Key for Notification.Builder.setGroup() for the incident report approval notification.
+ */
+ public static final String INCIDENT_NOTIFICATION_GROUP_KEY = "incident confirmation";
+
+ /**
+ * Key for Notification.Builder.setChannelId() for the incident report approval notification.
+ */
+ public static final String INCIDENT_NOTIFICATION_CHANNEL_ID = "incident_confirmation";
+
+ /**
+ * ID for our notification. We always post it with a tag which is the uri in string form.
+ */
+ public static final int INCIDENT_NOTIFICATION_ID = 66900652;
+
+ /**
+ * Channel of the notifications shown by
+ * {@link com.android.packageinstaller.permission.service.LocationAccessCheck}.
+ */
+ public static final String PERMISSION_REMINDER_CHANNEL_ID = "permission reminders";
+
+ /**
+ * Name of generic shared preferences file.
+ */
+ public static final String PREFERENCES_FILE = "preferences";
+
+ /**
+ * Key in the generic shared preferences that stores when the last notification was shown by
+ * {@link com.android.packageinstaller.permission.service.LocationAccessCheck}
+ */
+ public static final String KEY_LAST_LOCATION_ACCESS_NOTIFICATION_SHOWN =
+ "last_location_access_notification_shown";
+
+ /**
+ * Key in the generic shared preferences that stores if the user manually selected the "none"
+ * role holder for a role.
+ */
+ public static final String IS_NONE_ROLE_HOLDER_SELECTED_KEY = "is_none_role_holder_selected:";
+
+ /**
+ * Key in the generic shared preferences that stores if the user manually selected the "none"
+ * role holder for a role.
+ */
+ public static final String SEARCH_INDEXABLE_PROVIDER_PASSWORD_KEY =
+ "search_indexable_provider_password";
+
+ /**
+ * Key in the generic shared preferences that stores the name of the packages that are currently
+ * have an overridden user sensitivity.
+ */
+ public static final String FORCED_USER_SENSITIVE_UIDS_KEY = "forced_user_sensitive_uids_key";
+
+ /**
+ * Key in the generic shared preferences that stores if all packages should be considered user
+ * sensitive
+ */
+ public static final String ALLOW_OVERRIDE_USER_SENSITIVE_KEY =
+ "allow_override_user_sensitive_key";
+
+ /**
+ * Key in the generic shared preferences that controls if the
+ * {@link android.Manifest.permission#RECORD_AUDIO} of the currently registered assistant is
+ * user sensitive.
+ */
+ public static final String ASSISTANT_RECORD_AUDIO_IS_USER_SENSITIVE_KEY =
+ "assistant_record_audio_is_user_sensitive_key";
+
+ /**
+ * Name of file containing the permissions that should be restored, but have not been restored
+ * yet.
+ */
+ public static final String DELAYED_RESTORE_PERMISSIONS_FILE = "delayed_restore_permissions.xml";
+
+ /**
+ * Name of file containing the user denied status for requesting roles.
+ */
+ public static final String REQUEST_ROLE_USER_DENIED_FILE = "request_role_user_denied";
+
+ /**
+ * Key in the user denied status for requesting roles shared preferences that stores a string
+ * set for the names of the roles that an application has been denied for once.
+ */
+ public static final String REQUEST_ROLE_USER_DENIED_ONCE_KEY_PREFIX = "denied_once:";
+
+ /**
+ * Key in the user denied status for requesting roles shared preferences that stores a string
+ * set for the names of the roles that an application is always denied for.
+ */
+ public static final String REQUEST_ROLE_USER_DENIED_ALWAYS_KEY_PREFIX = "denied_always:";
+
+ /**
+ * Intent extra used to pass current sessionId between Permission Controller fragments.
+ */
+ public static final String EXTRA_SESSION_ID =
+ "com.android.packageinstaller.extra.SESSION_ID";
+
+ /**
+ * Invalid session id.
+ */
+ public static final long INVALID_SESSION_ID = 0;
+}
diff --git a/src/com/android/packageinstaller/DeleteStagedFileOnResult.java b/src/com/android/packageinstaller/DeleteStagedFileOnResult.java
deleted file mode 100644
index 399cf1f..0000000
--- a/src/com/android/packageinstaller/DeleteStagedFileOnResult.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright 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.
- */
-
-package com.android.packageinstaller;
-
-import android.annotation.Nullable;
-import android.app.Activity;
-import android.content.Intent;
-import android.os.Bundle;
-
-import java.io.File;
-
-/**
- * Trampoline activity. Calls PackageInstallerActivity and deletes staged install file onResult.
- */
-public class DeleteStagedFileOnResult extends Activity {
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- if (savedInstanceState == null) {
- Intent installIntent = new Intent(getIntent());
- installIntent.setClass(this, PackageInstallerActivity.class);
-
- installIntent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
- startActivityForResult(installIntent, 0);
- }
- }
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- File sourceFile = new File(getIntent().getData().getPath());
- sourceFile.delete();
-
- setResult(resultCode, data);
- finish();
- }
-}
diff --git a/src/com/android/packageinstaller/EventResultPersister.java b/src/com/android/packageinstaller/EventResultPersister.java
deleted file mode 100644
index 0e62889..0000000
--- a/src/com/android/packageinstaller/EventResultPersister.java
+++ /dev/null
@@ -1,353 +0,0 @@
-/*
- * Copyright (C) 2016 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.packageinstaller;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageInstaller;
-import android.os.AsyncTask;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import android.util.AtomicFile;
-import android.util.Log;
-import android.util.SparseArray;
-import android.util.Xml;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-import org.xmlpull.v1.XmlSerializer;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-
-/**
- * Persists results of events and calls back observers when a matching result arrives.
- */
-class EventResultPersister {
- private static final String LOG_TAG = EventResultPersister.class.getSimpleName();
-
- /** Id passed to {@link #addObserver(int, EventResultObserver)} to generate new id */
- static final int GENERATE_NEW_ID = Integer.MIN_VALUE;
-
- /**
- * The extra with the id to set in the intent delivered to
- * {@link #onEventReceived(Context, Intent)}
- */
- static final String EXTRA_ID = "EventResultPersister.EXTRA_ID";
-
- /** Persisted state of this object */
- private final AtomicFile mResultsFile;
-
- private final Object mLock = new Object();
-
- /** Currently stored but not yet called back results (install id -> status, status message) */
- private final SparseArray<EventResult> mResults = new SparseArray<>();
-
- /** Currently registered, not called back observers (install id -> observer) */
- private final SparseArray<EventResultObserver> mObservers = new SparseArray<>();
-
- /** Always increasing counter for install event ids */
- private int mCounter;
-
- /** If a write that will persist the state is scheduled */
- private boolean mIsPersistScheduled;
-
- /** If the state was changed while the data was being persisted */
- private boolean mIsPersistingStateValid;
-
- /**
- * @return a new event id.
- */
- public int getNewId() throws OutOfIdsException {
- synchronized (mLock) {
- if (mCounter == Integer.MAX_VALUE) {
- throw new OutOfIdsException();
- }
-
- mCounter++;
- writeState();
-
- return mCounter - 1;
- }
- }
-
- /** Call back when a result is received. Observer is removed when onResult it called. */
- interface EventResultObserver {
- void onResult(int status, int legacyStatus, @Nullable String message);
- }
-
- /**
- * Progress parser to the next element.
- *
- * @param parser The parser to progress
- */
- private static void nextElement(@NonNull XmlPullParser parser)
- throws XmlPullParserException, IOException {
- int type;
- do {
- type = parser.next();
- } while (type != XmlPullParser.START_TAG && type != XmlPullParser.END_DOCUMENT);
- }
-
- /**
- * Read an int attribute from the current element
- *
- * @param parser The parser to read from
- * @param name The attribute name to read
- *
- * @return The value of the attribute
- */
- private static int readIntAttribute(@NonNull XmlPullParser parser, @NonNull String name) {
- return Integer.parseInt(parser.getAttributeValue(null, name));
- }
-
- /**
- * Read an String attribute from the current element
- *
- * @param parser The parser to read from
- * @param name The attribute name to read
- *
- * @return The value of the attribute or null if the attribute is not set
- */
- private static String readStringAttribute(@NonNull XmlPullParser parser, @NonNull String name) {
- return parser.getAttributeValue(null, name);
- }
-
- /**
- * Read persisted state.
- *
- * @param resultFile The file the results are persisted in
- */
- EventResultPersister(@NonNull File resultFile) {
- mResultsFile = new AtomicFile(resultFile);
- mCounter = GENERATE_NEW_ID + 1;
-
- try (FileInputStream stream = mResultsFile.openRead()) {
- XmlPullParser parser = Xml.newPullParser();
- parser.setInput(stream, StandardCharsets.UTF_8.name());
-
- nextElement(parser);
- while (parser.getEventType() != XmlPullParser.END_DOCUMENT) {
- String tagName = parser.getName();
- if ("results".equals(tagName)) {
- mCounter = readIntAttribute(parser, "counter");
- } else if ("result".equals(tagName)) {
- int id = readIntAttribute(parser, "id");
- int status = readIntAttribute(parser, "status");
- int legacyStatus = readIntAttribute(parser, "legacyStatus");
- String statusMessage = readStringAttribute(parser, "statusMessage");
-
- if (mResults.get(id) != null) {
- throw new Exception("id " + id + " has two results");
- }
-
- mResults.put(id, new EventResult(status, legacyStatus, statusMessage));
- } else {
- throw new Exception("unexpected tag");
- }
-
- nextElement(parser);
- }
- } catch (Exception e) {
- mResults.clear();
- writeState();
- }
- }
-
- /**
- * Add a result. If the result is an pending user action, execute the pending user action
- * directly and do not queue a result.
- *
- * @param context The context the event was received in
- * @param intent The intent the activity received
- */
- void onEventReceived(@NonNull Context context, @NonNull Intent intent) {
- int status = intent.getIntExtra(PackageInstaller.EXTRA_STATUS, 0);
-
- if (status == PackageInstaller.STATUS_PENDING_USER_ACTION) {
- context.startActivity(intent.getParcelableExtra(Intent.EXTRA_INTENT));
-
- return;
- }
-
- int id = intent.getIntExtra(EXTRA_ID, 0);
- String statusMessage = intent.getStringExtra(PackageInstaller.EXTRA_STATUS_MESSAGE);
- int legacyStatus = intent.getIntExtra(PackageInstaller.EXTRA_LEGACY_STATUS, 0);
-
- EventResultObserver observerToCall = null;
- synchronized (mLock) {
- int numObservers = mObservers.size();
- for (int i = 0; i < numObservers; i++) {
- if (mObservers.keyAt(i) == id) {
- observerToCall = mObservers.valueAt(i);
- mObservers.removeAt(i);
-
- break;
- }
- }
-
- if (observerToCall != null) {
- observerToCall.onResult(status, legacyStatus, statusMessage);
- } else {
- mResults.put(id, new EventResult(status, legacyStatus, statusMessage));
- writeState();
- }
- }
- }
-
- /**
- * Persist current state. The persistence might be delayed.
- */
- private void writeState() {
- synchronized (mLock) {
- mIsPersistingStateValid = false;
-
- if (!mIsPersistScheduled) {
- mIsPersistScheduled = true;
-
- AsyncTask.execute(() -> {
- int counter;
- SparseArray<EventResult> results;
-
- while (true) {
- // Take snapshot of state
- synchronized (mLock) {
- counter = mCounter;
- results = mResults.clone();
- mIsPersistingStateValid = true;
- }
-
- FileOutputStream stream = null;
- try {
- stream = mResultsFile.startWrite();
- XmlSerializer serializer = Xml.newSerializer();
- serializer.setOutput(stream, StandardCharsets.UTF_8.name());
- serializer.startDocument(null, true);
- serializer.setFeature(
- "http://xmlpull.org/v1/doc/features.html#indent-output", true);
- serializer.startTag(null, "results");
- serializer.attribute(null, "counter", Integer.toString(counter));
-
- int numResults = results.size();
- for (int i = 0; i < numResults; i++) {
- serializer.startTag(null, "result");
- serializer.attribute(null, "id",
- Integer.toString(results.keyAt(i)));
- serializer.attribute(null, "status",
- Integer.toString(results.valueAt(i).status));
- serializer.attribute(null, "legacyStatus",
- Integer.toString(results.valueAt(i).legacyStatus));
- if (results.valueAt(i).message != null) {
- serializer.attribute(null, "statusMessage",
- results.valueAt(i).message);
- }
- serializer.endTag(null, "result");
- }
-
- serializer.endTag(null, "results");
- serializer.endDocument();
-
- mResultsFile.finishWrite(stream);
- } catch (IOException e) {
- if (stream != null) {
- mResultsFile.failWrite(stream);
- }
-
- Log.e(LOG_TAG, "error writing results", e);
- mResultsFile.delete();
- }
-
- // Check if there was changed state since we persisted. If so, we need to
- // persist again.
- synchronized (mLock) {
- if (mIsPersistingStateValid) {
- mIsPersistScheduled = false;
- break;
- }
- }
- }
- });
- }
- }
- }
-
- /**
- * Add an observer. If there is already an event for this id, call back inside of this call.
- *
- * @param id The id the observer is for or {@code GENERATE_NEW_ID} to generate a new one.
- * @param observer The observer to call back.
- *
- * @return The id for this event
- */
- int addObserver(int id, @NonNull EventResultObserver observer)
- throws OutOfIdsException {
- synchronized (mLock) {
- int resultIndex = -1;
-
- if (id == GENERATE_NEW_ID) {
- id = getNewId();
- } else {
- resultIndex = mResults.indexOfKey(id);
- }
-
- // Check if we can instantly call back
- if (resultIndex >= 0) {
- EventResult result = mResults.valueAt(resultIndex);
-
- observer.onResult(result.status, result.legacyStatus, result.message);
- mResults.removeAt(resultIndex);
- writeState();
- } else {
- mObservers.put(id, observer);
- }
- }
-
-
- return id;
- }
-
- /**
- * Remove a observer.
- *
- * @param id The id the observer was added for
- */
- void removeObserver(int id) {
- synchronized (mLock) {
- mObservers.delete(id);
- }
- }
-
- /**
- * The status from an event.
- */
- private class EventResult {
- public final int status;
- public final int legacyStatus;
- @Nullable public final String message;
-
- private EventResult(int status, int legacyStatus, @Nullable String message) {
- this.status = status;
- this.legacyStatus = legacyStatus;
- this.message = message;
- }
- }
-
- class OutOfIdsException extends Exception {}
-}
diff --git a/src/com/android/packageinstaller/InstallEventReceiver.java b/src/com/android/packageinstaller/InstallEventReceiver.java
deleted file mode 100644
index b7d32e9..0000000
--- a/src/com/android/packageinstaller/InstallEventReceiver.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2016 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.packageinstaller;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import androidx.annotation.NonNull;
-
-/**
- * Receives install events and perists them using a {@link EventResultPersister}.
- */
-public class InstallEventReceiver extends BroadcastReceiver {
- private static final Object sLock = new Object();
- private static EventResultPersister sReceiver;
-
- /**
- * Get the event receiver persisting the results
- *
- * @return The event receiver.
- */
- @NonNull private static EventResultPersister getReceiver(@NonNull Context context) {
- synchronized (sLock) {
- if (sReceiver == null) {
- sReceiver = new EventResultPersister(
- TemporaryFileManager.getInstallStateFile(context));
- }
- }
-
- return sReceiver;
- }
-
- @Override
- public void onReceive(Context context, Intent intent) {
- getReceiver(context).onEventReceived(context, intent);
- }
-
- /**
- * Add an observer. If there is already an event for this id, call back inside of this call.
- *
- * @param context A context of the current app
- * @param id The id the observer is for or {@code GENERATE_NEW_ID} to generate a new one.
- * @param observer The observer to call back.
- *
- * @return The id for this event
- */
- static int addObserver(@NonNull Context context, int id,
- @NonNull EventResultPersister.EventResultObserver observer)
- throws EventResultPersister.OutOfIdsException {
- return getReceiver(context).addObserver(id, observer);
- }
-
- /**
- * Remove a observer.
- *
- * @param context A context of the current app
- * @param id The id the observer was added for
- */
- static void removeObserver(@NonNull Context context, int id) {
- getReceiver(context).removeObserver(id);
- }
-}
diff --git a/src/com/android/packageinstaller/InstallFailed.java b/src/com/android/packageinstaller/InstallFailed.java
deleted file mode 100644
index 56dc71d..0000000
--- a/src/com/android/packageinstaller/InstallFailed.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Copyright (C) 2016 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.packageinstaller;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInstaller;
-import android.content.pm.PackageManager;
-import android.net.Uri;
-import android.os.Bundle;
-import androidx.annotation.Nullable;
-import android.util.Log;
-import android.widget.TextView;
-
-import java.io.File;
-
-/**
- * Installation failed: Return status code to the caller or display failure UI to user
- */
-public class InstallFailed extends Activity {
- private static final String LOG_TAG = InstallFailed.class.getSimpleName();
-
- /** Label of the app that failed to install */
- private CharSequence mLabel;
-
- /**
- * Convert an package installer status code into the user friendly label.
- *
- * @param statusCode The status code from the package installer.
- *
- * @return The user friendly label for the status code
- */
- private int getExplanationFromErrorCode(int statusCode) {
- Log.d(LOG_TAG, "Installation status code: " + statusCode);
-
- switch (statusCode) {
- case PackageInstaller.STATUS_FAILURE_BLOCKED:
- return R.string.install_failed_blocked;
- case PackageInstaller.STATUS_FAILURE_CONFLICT:
- return R.string.install_failed_conflict;
- case PackageInstaller.STATUS_FAILURE_INCOMPATIBLE:
- return R.string.install_failed_incompatible;
- case PackageInstaller.STATUS_FAILURE_INVALID:
- return R.string.install_failed_invalid_apk;
- default:
- return R.string.install_failed;
- }
- }
-
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- int statusCode = getIntent().getIntExtra(PackageInstaller.EXTRA_STATUS,
- PackageInstaller.STATUS_FAILURE);
-
- if (getIntent().getBooleanExtra(Intent.EXTRA_RETURN_RESULT, false)) {
- int legacyStatus = getIntent().getIntExtra(PackageInstaller.EXTRA_LEGACY_STATUS,
- PackageManager.INSTALL_FAILED_INTERNAL_ERROR);
-
- // Return result if requested
- Intent result = new Intent();
- result.putExtra(Intent.EXTRA_INSTALL_RESULT, legacyStatus);
- setResult(Activity.RESULT_FIRST_USER, result);
- finish();
- } else {
- Intent intent = getIntent();
- ApplicationInfo appInfo = intent
- .getParcelableExtra(PackageUtil.INTENT_ATTR_APPLICATION_INFO);
- Uri packageURI = intent.getData();
-
- setContentView(R.layout.install_failed);
-
- // Set header icon and title
- PackageUtil.AppSnippet as;
- PackageManager pm = getPackageManager();
-
- if ("package".equals(packageURI.getScheme())) {
- as = new PackageUtil.AppSnippet(pm.getApplicationLabel(appInfo),
- pm.getApplicationIcon(appInfo));
- } else {
- final File sourceFile = new File(packageURI.getPath());
- as = PackageUtil.getAppSnippet(this, appInfo, sourceFile);
- }
-
- // Store label for dialog
- mLabel = as.label;
-
- PackageUtil.initSnippetForNewApp(this, as, R.id.app_snippet);
-
- // Show out of space dialog if needed
- if (statusCode == PackageInstaller.STATUS_FAILURE_STORAGE) {
- (new OutOfSpaceDialog()).show(getFragmentManager(), "outofspace");
- }
-
- // Get status messages
- ((TextView) findViewById(R.id.simple_status)).setText(
- getExplanationFromErrorCode(statusCode));
-
- // Set up "done" button
- findViewById(R.id.done_button).setOnClickListener(view -> finish());
- }
- }
-
- /**
- * Dialog shown when we ran out of space during installation. This contains a link to the
- * "manage applications" settings page.
- */
- public static class OutOfSpaceDialog extends DialogFragment {
- private InstallFailed mActivity;
-
- @Override
- public void onAttach(Context context) {
- super.onAttach(context);
-
- mActivity = (InstallFailed) context;
- }
-
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- return new AlertDialog.Builder(mActivity)
- .setTitle(R.string.out_of_space_dlg_title)
- .setMessage(getString(R.string.out_of_space_dlg_text, mActivity.mLabel))
- .setPositiveButton(R.string.manage_applications, (dialog, which) -> {
- // launch manage applications
- Intent intent = new Intent("android.intent.action.MANAGE_PACKAGE_STORAGE");
- startActivity(intent);
- mActivity.finish();
- })
- .setNegativeButton(R.string.cancel, (dialog, which) -> mActivity.finish())
- .create();
- }
-
- @Override
- public void onCancel(DialogInterface dialog) {
- super.onCancel(dialog);
-
- mActivity.finish();
- }
- }
-}
diff --git a/src/com/android/packageinstaller/InstallInstalling.java b/src/com/android/packageinstaller/InstallInstalling.java
deleted file mode 100755
index 70c5e76..0000000
--- a/src/com/android/packageinstaller/InstallInstalling.java
+++ /dev/null
@@ -1,413 +0,0 @@
-/*
- * Copyright (C) 2016 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.packageinstaller;
-
-import static android.content.pm.PackageInstaller.SessionParams.UID_UNKNOWN;
-
-import android.app.Activity;
-import android.app.PendingIntent;
-import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInstaller;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageParser;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import androidx.annotation.Nullable;
-import android.util.Log;
-import android.widget.Button;
-import android.widget.ProgressBar;
-
-import com.android.internal.content.PackageHelper;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-/**
- * Send package to the package manager and handle results from package manager. Once the
- * installation succeeds, start {@link InstallSuccess} or {@link InstallFailed}.
- * <p>This has two phases: First send the data to the package manager, then wait until the package
- * manager processed the result.</p>
- */
-public class InstallInstalling extends Activity {
- private static final String LOG_TAG = InstallInstalling.class.getSimpleName();
-
- private static final String SESSION_ID = "com.android.packageinstaller.SESSION_ID";
- private static final String INSTALL_ID = "com.android.packageinstaller.INSTALL_ID";
-
- private static final String BROADCAST_ACTION =
- "com.android.packageinstaller.ACTION_INSTALL_COMMIT";
-
- /** Listens to changed to the session and updates progress bar */
- private PackageInstaller.SessionCallback mSessionCallback;
-
- /** Task that sends the package to the package installer */
- private InstallingAsyncTask mInstallingTask;
-
- /** Id of the session to install the package */
- private int mSessionId;
-
- /** Id of the install event we wait for */
- private int mInstallId;
-
- /** URI of package to install */
- private Uri mPackageURI;
-
- /** The button that can cancel this dialog */
- private Button mCancelButton;
-
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- setContentView(R.layout.install_installing);
-
- ApplicationInfo appInfo = getIntent()
- .getParcelableExtra(PackageUtil.INTENT_ATTR_APPLICATION_INFO);
- mPackageURI = getIntent().getData();
-
- if ("package".equals(mPackageURI.getScheme())) {
- try {
- getPackageManager().installExistingPackage(appInfo.packageName);
- launchSuccess();
- } catch (PackageManager.NameNotFoundException e) {
- launchFailure(PackageManager.INSTALL_FAILED_INTERNAL_ERROR, null);
- }
- } else {
- final File sourceFile = new File(mPackageURI.getPath());
- PackageUtil.initSnippetForNewApp(this, PackageUtil.getAppSnippet(this, appInfo,
- sourceFile), R.id.app_snippet);
-
- if (savedInstanceState != null) {
- mSessionId = savedInstanceState.getInt(SESSION_ID);
- mInstallId = savedInstanceState.getInt(INSTALL_ID);
-
- // Reregister for result; might instantly call back if result was delivered while
- // activity was destroyed
- try {
- InstallEventReceiver.addObserver(this, mInstallId,
- this::launchFinishBasedOnResult);
- } catch (EventResultPersister.OutOfIdsException e) {
- // Does not happen
- }
- } else {
- PackageInstaller.SessionParams params = new PackageInstaller.SessionParams(
- PackageInstaller.SessionParams.MODE_FULL_INSTALL);
- params.installFlags = PackageManager.INSTALL_FULL_APP;
- params.referrerUri = getIntent().getParcelableExtra(Intent.EXTRA_REFERRER);
- params.originatingUri = getIntent()
- .getParcelableExtra(Intent.EXTRA_ORIGINATING_URI);
- params.originatingUid = getIntent().getIntExtra(Intent.EXTRA_ORIGINATING_UID,
- UID_UNKNOWN);
- params.installerPackageName =
- getIntent().getStringExtra(Intent.EXTRA_INSTALLER_PACKAGE_NAME);
-
- File file = new File(mPackageURI.getPath());
- try {
- PackageParser.PackageLite pkg = PackageParser.parsePackageLite(file, 0);
- params.setAppPackageName(pkg.packageName);
- params.setInstallLocation(pkg.installLocation);
- params.setSize(
- PackageHelper.calculateInstalledSize(pkg, false, params.abiOverride));
- } catch (PackageParser.PackageParserException e) {
- Log.e(LOG_TAG, "Cannot parse package " + file + ". Assuming defaults.");
- Log.e(LOG_TAG,
- "Cannot calculate installed size " + file + ". Try only apk size.");
- params.setSize(file.length());
- } catch (IOException e) {
- Log.e(LOG_TAG,
- "Cannot calculate installed size " + file + ". Try only apk size.");
- params.setSize(file.length());
- }
-
- try {
- mInstallId = InstallEventReceiver
- .addObserver(this, EventResultPersister.GENERATE_NEW_ID,
- this::launchFinishBasedOnResult);
- } catch (EventResultPersister.OutOfIdsException e) {
- launchFailure(PackageManager.INSTALL_FAILED_INTERNAL_ERROR, null);
- }
-
- try {
- mSessionId = getPackageManager().getPackageInstaller().createSession(params);
- } catch (IOException e) {
- launchFailure(PackageManager.INSTALL_FAILED_INTERNAL_ERROR, null);
- }
- }
-
- mCancelButton = (Button) findViewById(R.id.cancel_button);
-
- mCancelButton.setOnClickListener(view -> {
- if (mInstallingTask != null) {
- mInstallingTask.cancel(true);
- }
-
- if (mSessionId > 0) {
- getPackageManager().getPackageInstaller().abandonSession(mSessionId);
- mSessionId = 0;
- }
-
- setResult(RESULT_CANCELED);
- finish();
- });
-
- mSessionCallback = new InstallSessionCallback();
- }
- }
-
- /**
- * Launch the "success" version of the final package installer dialog
- */
- private void launchSuccess() {
- Intent successIntent = new Intent(getIntent());
- successIntent.setClass(this, InstallSuccess.class);
- successIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
-
- startActivity(successIntent);
- finish();
- }
-
- /**
- * Launch the "failure" version of the final package installer dialog
- *
- * @param legacyStatus The status as used internally in the package manager.
- * @param statusMessage The status description.
- */
- private void launchFailure(int legacyStatus, String statusMessage) {
- Intent failureIntent = new Intent(getIntent());
- failureIntent.setClass(this, InstallFailed.class);
- failureIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
- failureIntent.putExtra(PackageInstaller.EXTRA_LEGACY_STATUS, legacyStatus);
- failureIntent.putExtra(PackageInstaller.EXTRA_STATUS_MESSAGE, statusMessage);
-
- startActivity(failureIntent);
- finish();
- }
-
- @Override
- protected void onStart() {
- super.onStart();
-
- getPackageManager().getPackageInstaller().registerSessionCallback(mSessionCallback);
- }
-
- @Override
- protected void onResume() {
- super.onResume();
-
- // This is the first onResume in a single life of the activity
- if (mInstallingTask == null) {
- PackageInstaller installer = getPackageManager().getPackageInstaller();
- PackageInstaller.SessionInfo sessionInfo = installer.getSessionInfo(mSessionId);
-
- if (sessionInfo != null && !sessionInfo.isActive()) {
- mInstallingTask = new InstallingAsyncTask();
- mInstallingTask.execute();
- } else {
- // we will receive a broadcast when the install is finished
- mCancelButton.setEnabled(false);
- setFinishOnTouchOutside(false);
- }
- }
- }
-
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
-
- outState.putInt(SESSION_ID, mSessionId);
- outState.putInt(INSTALL_ID, mInstallId);
- }
-
- @Override
- public void onBackPressed() {
- if (mCancelButton.isEnabled()) {
- super.onBackPressed();
- }
- }
-
- @Override
- protected void onStop() {
- super.onStop();
-
- getPackageManager().getPackageInstaller().unregisterSessionCallback(mSessionCallback);
- }
-
- @Override
- protected void onDestroy() {
- if (mInstallingTask != null) {
- mInstallingTask.cancel(true);
- synchronized (mInstallingTask) {
- while (!mInstallingTask.isDone) {
- try {
- mInstallingTask.wait();
- } catch (InterruptedException e) {
- Log.i(LOG_TAG, "Interrupted while waiting for installing task to cancel",
- e);
- }
- }
- }
- }
-
- InstallEventReceiver.removeObserver(this, mInstallId);
-
- super.onDestroy();
- }
-
- /**
- * Launch the appropriate finish activity (success or failed) for the installation result.
- *
- * @param statusCode The installation result.
- * @param legacyStatus The installation as used internally in the package manager.
- * @param statusMessage The detailed installation result.
- */
- private void launchFinishBasedOnResult(int statusCode, int legacyStatus, String statusMessage) {
- if (statusCode == PackageInstaller.STATUS_SUCCESS) {
- launchSuccess();
- } else {
- launchFailure(legacyStatus, statusMessage);
- }
- }
-
-
- private class InstallSessionCallback extends PackageInstaller.SessionCallback {
- @Override
- public void onCreated(int sessionId) {
- // empty
- }
-
- @Override
- public void onBadgingChanged(int sessionId) {
- // empty
- }
-
- @Override
- public void onActiveChanged(int sessionId, boolean active) {
- // empty
- }
-
- @Override
- public void onProgressChanged(int sessionId, float progress) {
- if (sessionId == mSessionId) {
- ProgressBar progressBar = (ProgressBar)findViewById(R.id.progress_bar);
- progressBar.setMax(Integer.MAX_VALUE);
- progressBar.setProgress((int) (Integer.MAX_VALUE * progress));
- }
- }
-
- @Override
- public void onFinished(int sessionId, boolean success) {
- // empty, finish is handled by InstallResultReceiver
- }
- }
-
- /**
- * Send the package to the package installer and then register a event result observer that
- * will call {@link #launchFinishBasedOnResult(int, int, String)}
- */
- private final class InstallingAsyncTask extends AsyncTask<Void, Void,
- PackageInstaller.Session> {
- volatile boolean isDone;
-
- @Override
- protected PackageInstaller.Session doInBackground(Void... params) {
- PackageInstaller.Session session;
- try {
- session = getPackageManager().getPackageInstaller().openSession(mSessionId);
- } catch (IOException e) {
- return null;
- }
-
- session.setStagingProgress(0);
-
- try {
- File file = new File(mPackageURI.getPath());
-
- try (InputStream in = new FileInputStream(file)) {
- long sizeBytes = file.length();
- try (OutputStream out = session
- .openWrite("PackageInstaller", 0, sizeBytes)) {
- byte[] buffer = new byte[1024 * 1024];
- while (true) {
- int numRead = in.read(buffer);
-
- if (numRead == -1) {
- session.fsync(out);
- break;
- }
-
- if (isCancelled()) {
- session.close();
- break;
- }
-
- out.write(buffer, 0, numRead);
- if (sizeBytes > 0) {
- float fraction = ((float) numRead / (float) sizeBytes);
- session.addProgress(fraction);
- }
- }
- }
- }
-
- return session;
- } catch (IOException | SecurityException e) {
- Log.e(LOG_TAG, "Could not write package", e);
-
- session.close();
-
- return null;
- } finally {
- synchronized (this) {
- isDone = true;
- notifyAll();
- }
- }
- }
-
- @Override
- protected void onPostExecute(PackageInstaller.Session session) {
- if (session != null) {
- Intent broadcastIntent = new Intent(BROADCAST_ACTION);
- broadcastIntent.setFlags(Intent.FLAG_RECEIVER_FOREGROUND);
- broadcastIntent.setPackage(
- getPackageManager().getPermissionControllerPackageName());
- broadcastIntent.putExtra(EventResultPersister.EXTRA_ID, mInstallId);
-
- PendingIntent pendingIntent = PendingIntent.getBroadcast(
- InstallInstalling.this,
- mInstallId,
- broadcastIntent,
- PendingIntent.FLAG_UPDATE_CURRENT);
-
- session.commit(pendingIntent.getIntentSender());
- mCancelButton.setEnabled(false);
- setFinishOnTouchOutside(false);
- } else {
- getPackageManager().getPackageInstaller().abandonSession(mSessionId);
-
- if (!isCancelled()) {
- launchFailure(PackageManager.INSTALL_FAILED_INVALID_APK, null);
- }
- }
- }
- }
-}
diff --git a/src/com/android/packageinstaller/InstallStaging.java b/src/com/android/packageinstaller/InstallStaging.java
deleted file mode 100644
index bf72b65..0000000
--- a/src/com/android/packageinstaller/InstallStaging.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * Copyright (C) 2016 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.packageinstaller;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import androidx.annotation.Nullable;
-import android.util.Log;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-/**
- * If a package gets installed from an content URI this step loads the package and turns it into
- * and installation from a file. Then it re-starts the installation as usual.
- */
-public class InstallStaging extends Activity {
- private static final String LOG_TAG = InstallStaging.class.getSimpleName();
-
- private static final String STAGED_FILE = "STAGED_FILE";
-
- /** Currently running task that loads the file from the content URI into a file */
- private @Nullable StagingAsyncTask mStagingTask;
-
- /** The file the package is in */
- private @Nullable File mStagedFile;
-
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- setContentView(R.layout.install_staging);
-
- if (savedInstanceState != null) {
- mStagedFile = new File(savedInstanceState.getString(STAGED_FILE));
-
- if (!mStagedFile.exists()) {
- mStagedFile = null;
- }
- }
-
- findViewById(R.id.cancel_button).setOnClickListener(view -> {
- if (mStagingTask != null) {
- mStagingTask.cancel(true);
- }
- setResult(RESULT_CANCELED);
- finish();
- });
- }
-
- @Override
- protected void onResume() {
- super.onResume();
-
- // This is the first onResume in a single life of the activity
- if (mStagingTask == null) {
- // File does not exist, or became invalid
- if (mStagedFile == null) {
- // Create file delayed to be able to show error
- try {
- mStagedFile = TemporaryFileManager.getStagedFile(this);
- } catch (IOException e) {
- showError();
- return;
- }
- }
-
- mStagingTask = new StagingAsyncTask();
- mStagingTask.execute(getIntent().getData());
- }
- }
-
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
-
- outState.putString(STAGED_FILE, mStagedFile.getPath());
- }
-
- @Override
- protected void onDestroy() {
- if (mStagingTask != null) {
- mStagingTask.cancel(true);
- }
-
- super.onDestroy();
- }
-
- /**
- * Show an error message and set result as error.
- */
- private void showError() {
- (new ErrorDialog()).showAllowingStateLoss(getFragmentManager(), "error");
-
- Intent result = new Intent();
- result.putExtra(Intent.EXTRA_INSTALL_RESULT,
- PackageManager.INSTALL_FAILED_INVALID_APK);
- setResult(RESULT_FIRST_USER, result);
- }
-
- /**
- * Dialog for errors while staging.
- */
- public static class ErrorDialog extends DialogFragment {
- private Activity mActivity;
-
- @Override
- public void onAttach(Context context) {
- super.onAttach(context);
-
- mActivity = (Activity) context;
- }
-
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- AlertDialog alertDialog = new AlertDialog.Builder(mActivity)
- .setMessage(R.string.Parse_error_dlg_text)
- .setPositiveButton(R.string.ok,
- (dialog, which) -> mActivity.finish())
- .create();
- alertDialog.setCanceledOnTouchOutside(false);
-
- return alertDialog;
- }
-
- @Override
- public void onCancel(DialogInterface dialog) {
- super.onCancel(dialog);
-
- mActivity.finish();
- }
- }
-
- private final class StagingAsyncTask extends AsyncTask<Uri, Void, Boolean> {
- @Override
- protected Boolean doInBackground(Uri... params) {
- if (params == null || params.length <= 0) {
- return false;
- }
- Uri packageUri = params[0];
- try (InputStream in = getContentResolver().openInputStream(packageUri)) {
- // Despite the comments in ContentResolver#openInputStream the returned stream can
- // be null.
- if (in == null) {
- return false;
- }
-
- try (OutputStream out = new FileOutputStream(mStagedFile)) {
- byte[] buffer = new byte[1024 * 1024];
- int bytesRead;
- while ((bytesRead = in.read(buffer)) >= 0) {
- // Be nice and respond to a cancellation
- if (isCancelled()) {
- return false;
- }
- out.write(buffer, 0, bytesRead);
- }
- }
- } catch (IOException | SecurityException | IllegalStateException e) {
- Log.w(LOG_TAG, "Error staging apk from content URI", e);
- return false;
- }
- return true;
- }
-
- @Override
- protected void onPostExecute(Boolean success) {
- if (success) {
- // Now start the installation again from a file
- Intent installIntent = new Intent(getIntent());
- installIntent.setClass(InstallStaging.this, DeleteStagedFileOnResult.class);
- installIntent.setData(Uri.fromFile(mStagedFile));
-
- if (installIntent.getBooleanExtra(Intent.EXTRA_RETURN_RESULT, false)) {
- installIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
- }
-
- installIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
- startActivity(installIntent);
-
- InstallStaging.this.finish();
- } else {
- showError();
- }
- }
- }
-}
diff --git a/src/com/android/packageinstaller/InstallStart.java b/src/com/android/packageinstaller/InstallStart.java
deleted file mode 100644
index f3e47f0..0000000
--- a/src/com/android/packageinstaller/InstallStart.java
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- * Copyright (C) 2016 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.packageinstaller;
-
-import static com.android.packageinstaller.PackageUtil.getMaxTargetSdkVersionForUid;
-
-import android.Manifest;
-import android.app.Activity;
-import android.app.ActivityManager;
-import android.app.AppGlobals;
-import android.app.IActivityManager;
-import android.content.ContentResolver;
-import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.IPackageManager;
-import android.content.pm.PackageInstaller;
-import android.content.pm.PackageManager;
-import android.content.pm.ProviderInfo;
-import android.net.Uri;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.RemoteException;
-import androidx.annotation.Nullable;
-import android.util.Log;
-
-import com.android.internal.annotations.VisibleForTesting;
-
-/**
- * Select which activity is the first visible activity of the installation and forward the intent to
- * it.
- */
-public class InstallStart extends Activity {
- private static final String LOG_TAG = InstallStart.class.getSimpleName();
-
- private static final String DOWNLOADS_AUTHORITY = "downloads";
- private IActivityManager mIActivityManager;
- private IPackageManager mIPackageManager;
- private boolean mAbortInstall = false;
-
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- mIPackageManager = AppGlobals.getPackageManager();
- Intent intent = getIntent();
- String callingPackage = getCallingPackage();
-
- final boolean isSessionInstall =
- PackageInstaller.ACTION_CONFIRM_PERMISSIONS.equals(intent.getAction());
-
- // If the activity was started via a PackageInstaller session, we retrieve the calling
- // package from that session
- final int sessionId = (isSessionInstall
- ? intent.getIntExtra(PackageInstaller.EXTRA_SESSION_ID, -1)
- : -1);
- if (callingPackage == null && sessionId != -1) {
- PackageInstaller packageInstaller = getPackageManager().getPackageInstaller();
- PackageInstaller.SessionInfo sessionInfo = packageInstaller.getSessionInfo(sessionId);
- callingPackage = (sessionInfo != null) ? sessionInfo.getInstallerPackageName() : null;
- }
-
- final ApplicationInfo sourceInfo = getSourceInfo(callingPackage);
- final int originatingUid = getOriginatingUid(sourceInfo);
- boolean isTrustedSource = false;
- if (sourceInfo != null
- && (sourceInfo.privateFlags & ApplicationInfo.PRIVATE_FLAG_PRIVILEGED) != 0) {
- isTrustedSource = intent.getBooleanExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, false);
- }
-
- if (!isTrustedSource && originatingUid != PackageInstaller.SessionParams.UID_UNKNOWN) {
- final int targetSdkVersion = getMaxTargetSdkVersionForUid(this, originatingUid);
- if (targetSdkVersion < 0) {
- Log.w(LOG_TAG, "Cannot get target sdk version for uid " + originatingUid);
- // Invalid originating uid supplied. Abort install.
- mAbortInstall = true;
- } else if (targetSdkVersion >= Build.VERSION_CODES.O && !declaresAppOpPermission(
- originatingUid, Manifest.permission.REQUEST_INSTALL_PACKAGES)) {
- Log.e(LOG_TAG, "Requesting uid " + originatingUid + " needs to declare permission "
- + Manifest.permission.REQUEST_INSTALL_PACKAGES);
- mAbortInstall = true;
- }
- }
- if (mAbortInstall) {
- setResult(RESULT_CANCELED);
- finish();
- return;
- }
-
- Intent nextActivity = new Intent(intent);
- nextActivity.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
-
- // The the installation source as the nextActivity thinks this activity is the source, hence
- // set the originating UID and sourceInfo explicitly
- nextActivity.putExtra(PackageInstallerActivity.EXTRA_CALLING_PACKAGE, callingPackage);
- nextActivity.putExtra(PackageInstallerActivity.EXTRA_ORIGINAL_SOURCE_INFO, sourceInfo);
- nextActivity.putExtra(Intent.EXTRA_ORIGINATING_UID, originatingUid);
-
- if (isSessionInstall) {
- nextActivity.setClass(this, PackageInstallerActivity.class);
- } else {
- Uri packageUri = intent.getData();
-
- if (packageUri != null && (packageUri.getScheme().equals(ContentResolver.SCHEME_FILE)
- || packageUri.getScheme().equals(ContentResolver.SCHEME_CONTENT))) {
- // Copy file to prevent it from being changed underneath this process
- nextActivity.setClass(this, InstallStaging.class);
- } else if (packageUri != null && packageUri.getScheme().equals(
- PackageInstallerActivity.SCHEME_PACKAGE)) {
- nextActivity.setClass(this, PackageInstallerActivity.class);
- } else {
- Intent result = new Intent();
- result.putExtra(Intent.EXTRA_INSTALL_RESULT,
- PackageManager.INSTALL_FAILED_INVALID_URI);
- setResult(RESULT_FIRST_USER, result);
-
- nextActivity = null;
- }
- }
-
- if (nextActivity != null) {
- startActivity(nextActivity);
- }
- finish();
- }
-
- private boolean declaresAppOpPermission(int uid, String permission) {
- try {
- final String[] packages = mIPackageManager.getAppOpPermissionPackages(permission);
- if (packages == null) {
- return false;
- }
- for (String packageName : packages) {
- try {
- if (uid == getPackageManager().getPackageUid(packageName, 0)) {
- return true;
- }
- } catch (PackageManager.NameNotFoundException e) {
- // Ignore and try the next package
- }
- }
- } catch (RemoteException rexc) {
- // If remote package manager cannot be reached, install will likely fail anyway.
- }
- return false;
- }
-
- /**
- * @return the ApplicationInfo for the installation source (the calling package), if available
- */
- private ApplicationInfo getSourceInfo(@Nullable String callingPackage) {
- if (callingPackage != null) {
- try {
- return getPackageManager().getApplicationInfo(callingPackage, 0);
- } catch (PackageManager.NameNotFoundException ex) {
- // ignore
- }
- }
- return null;
- }
-
- /**
- * Get the originating uid if possible, or
- * {@link android.content.pm.PackageInstaller.SessionParams#UID_UNKNOWN} if not available
- *
- * @param sourceInfo The source of this installation
- * @return The UID of the installation source or UID_UNKNOWN
- */
- private int getOriginatingUid(@Nullable ApplicationInfo sourceInfo) {
- // The originating uid from the intent. We only trust/use this if it comes from either
- // the document manager app or the downloads provider
- final int uidFromIntent = getIntent().getIntExtra(Intent.EXTRA_ORIGINATING_UID,
- PackageInstaller.SessionParams.UID_UNKNOWN);
-
- final int callingUid;
- if (sourceInfo != null) {
- callingUid = sourceInfo.uid;
- } else {
- try {
- callingUid = getIActivityManager()
- .getLaunchedFromUid(getActivityToken());
- } catch (RemoteException ex) {
- // Cannot reach ActivityManager. Aborting install.
- Log.e(LOG_TAG, "Could not determine the launching uid.");
- mAbortInstall = true;
- return PackageInstaller.SessionParams.UID_UNKNOWN;
- }
- }
- try {
- if (mIPackageManager.checkUidPermission(Manifest.permission.MANAGE_DOCUMENTS,
- callingUid) == PackageManager.PERMISSION_GRANTED) {
- return uidFromIntent;
- }
- } catch (RemoteException rexc) {
- // Ignore. Should not happen.
- }
- if (isSystemDownloadsProvider(callingUid)) {
- return uidFromIntent;
- }
- // We don't trust uid from the intent. Use the calling uid instead.
- return callingUid;
- }
-
- private boolean isSystemDownloadsProvider(int uid) {
- final ProviderInfo downloadProviderPackage = getPackageManager().resolveContentProvider(
- DOWNLOADS_AUTHORITY, 0);
- if (downloadProviderPackage == null) {
- // There seems to be no currently enabled downloads provider on the system.
- return false;
- }
- final ApplicationInfo appInfo = downloadProviderPackage.applicationInfo;
- return (appInfo.isSystemApp() && uid == appInfo.uid);
- }
-
- private IActivityManager getIActivityManager() {
- if (mIActivityManager == null) {
- return ActivityManager.getService();
- }
- return mIActivityManager;
- }
-
- @VisibleForTesting
- void injectIActivityManager(IActivityManager iActivityManager) {
- mIActivityManager = iActivityManager;
- }
-}
diff --git a/src/com/android/packageinstaller/InstallSuccess.java b/src/com/android/packageinstaller/InstallSuccess.java
deleted file mode 100644
index ae902d3..0000000
--- a/src/com/android/packageinstaller/InstallSuccess.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (C) 2016 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.packageinstaller;
-
-import android.app.Activity;
-import android.content.ActivityNotFoundException;
-import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.net.Uri;
-import android.os.Bundle;
-import androidx.annotation.Nullable;
-import android.util.Log;
-import android.widget.Button;
-
-import java.io.File;
-import java.util.List;
-
-/**
- * Finish installation: Return status code to the caller or display "success" UI to user
- */
-public class InstallSuccess extends Activity {
- private static final String LOG_TAG = InstallSuccess.class.getSimpleName();
-
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- if (getIntent().getBooleanExtra(Intent.EXTRA_RETURN_RESULT, false)) {
- // Return result if requested
- Intent result = new Intent();
- result.putExtra(Intent.EXTRA_INSTALL_RESULT, PackageManager.INSTALL_SUCCEEDED);
- setResult(Activity.RESULT_OK, result);
- finish();
- } else {
- Intent intent = getIntent();
- ApplicationInfo appInfo =
- intent.getParcelableExtra(PackageUtil.INTENT_ATTR_APPLICATION_INFO);
- Uri packageURI = intent.getData();
-
- setContentView(R.layout.install_success);
-
- // Set header icon and title
- PackageUtil.AppSnippet as;
- PackageManager pm = getPackageManager();
-
- if ("package".equals(packageURI.getScheme())) {
- as = new PackageUtil.AppSnippet(pm.getApplicationLabel(appInfo),
- pm.getApplicationIcon(appInfo));
- } else {
- File sourceFile = new File(packageURI.getPath());
- as = PackageUtil.getAppSnippet(this, appInfo, sourceFile);
- }
-
- PackageUtil.initSnippetForNewApp(this, as, R.id.app_snippet);
-
- // Set up "done" button
- findViewById(R.id.done_button).setOnClickListener(view -> {
- if (appInfo.packageName != null) {
- Log.i(LOG_TAG, "Finished installing " + appInfo.packageName);
- }
- finish();
- });
-
- // Enable or disable "launch" button
- Intent launchIntent = getPackageManager().getLaunchIntentForPackage(
- appInfo.packageName);
- boolean enabled = false;
- if (launchIntent != null) {
- List<ResolveInfo> list = getPackageManager().queryIntentActivities(launchIntent,
- 0);
- if (list != null && list.size() > 0) {
- enabled = true;
- }
- }
-
- Button launchButton = (Button)findViewById(R.id.launch_button);
- if (enabled) {
- launchButton.setOnClickListener(view -> {
- try {
- startActivity(launchIntent);
- } catch (ActivityNotFoundException | SecurityException e) {
- Log.e(LOG_TAG, "Could not start activity", e);
- }
- finish();
- });
- } else {
- launchButton.setEnabled(false);
- }
- }
- }
-}
diff --git a/src/com/android/packageinstaller/PackageInstallerActivity.java b/src/com/android/packageinstaller/PackageInstallerActivity.java
deleted file mode 100644
index a1ec0d4..0000000
--- a/src/com/android/packageinstaller/PackageInstallerActivity.java
+++ /dev/null
@@ -1,855 +0,0 @@
-/*
-**
-** Copyright 2007, 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.packageinstaller;
-
-import android.Manifest;
-import android.app.AlertDialog;
-import android.app.AppGlobals;
-import android.app.AppOpsManager;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.content.ActivityNotFoundException;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.IPackageManager;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageInstaller;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.pm.PackageParser;
-import android.content.pm.PackageUserState;
-import android.net.Uri;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.Process;
-import android.os.UserManager;
-import android.provider.Settings;
-import androidx.annotation.NonNull;
-import androidx.annotation.StringRes;
-import androidx.viewpager.widget.ViewPager;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.widget.AppSecurityPermissions;
-import android.widget.Button;
-import android.widget.TabHost;
-import android.widget.TextView;
-
-import com.android.packageinstaller.permission.ui.OverlayTouchActivity;
-
-import java.io.File;
-
-/**
- * This activity is launched when a new application is installed via side loading
- * The package is first parsed and the user is notified of parse errors via a dialog.
- * If the package is successfully parsed, the user is notified to turn on the install unknown
- * applications setting. A memory check is made at this point and the user is notified of out
- * of memory conditions if any. If the package is already existing on the device,
- * a confirmation dialog (to replace the existing package) is presented to the user.
- * Based on the user response the package is then installed by launching InstallAppConfirm
- * sub activity. All state transitions are handled in this activity
- */
-public class PackageInstallerActivity extends OverlayTouchActivity implements OnClickListener {
- private static final String TAG = "PackageInstaller";
-
- private static final int REQUEST_TRUST_EXTERNAL_SOURCE = 1;
-
- static final String SCHEME_PACKAGE = "package";
-
- static final String EXTRA_CALLING_PACKAGE = "EXTRA_CALLING_PACKAGE";
- static final String EXTRA_ORIGINAL_SOURCE_INFO = "EXTRA_ORIGINAL_SOURCE_INFO";
- private static final String ALLOW_UNKNOWN_SOURCES_KEY =
- PackageInstallerActivity.class.getName() + "ALLOW_UNKNOWN_SOURCES_KEY";
-
- private int mSessionId = -1;
- private Uri mPackageURI;
- private Uri mOriginatingURI;
- private Uri mReferrerURI;
- private int mOriginatingUid = PackageInstaller.SessionParams.UID_UNKNOWN;
- private String mOriginatingPackage; // The package name corresponding to #mOriginatingUid
-
- private boolean localLOGV = false;
- PackageManager mPm;
- IPackageManager mIpm;
- AppOpsManager mAppOpsManager;
- UserManager mUserManager;
- PackageInstaller mInstaller;
- PackageInfo mPkgInfo;
- String mCallingPackage;
- ApplicationInfo mSourceInfo;
-
- // ApplicationInfo object primarily used for already existing applications
- private ApplicationInfo mAppInfo = null;
-
- // Buttons to indicate user acceptance
- private Button mOk;
- private Button mCancel;
- CaffeinatedScrollView mScrollView = null;
- private boolean mOkCanInstall = false;
-
- private PackageUtil.AppSnippet mAppSnippet;
-
- static final String PREFS_ALLOWED_SOURCES = "allowed_sources";
-
- private static final String TAB_ID_ALL = "all";
- private static final String TAB_ID_NEW = "new";
-
- // Dialog identifiers used in showDialog
- private static final int DLG_BASE = 0;
- private static final int DLG_PACKAGE_ERROR = DLG_BASE + 2;
- private static final int DLG_OUT_OF_SPACE = DLG_BASE + 3;
- private static final int DLG_INSTALL_ERROR = DLG_BASE + 4;
- private static final int DLG_UNKNOWN_SOURCES_RESTRICTED_FOR_USER = DLG_BASE + 5;
- private static final int DLG_ANONYMOUS_SOURCE = DLG_BASE + 6;
- private static final int DLG_NOT_SUPPORTED_ON_WEAR = DLG_BASE + 7;
- private static final int DLG_EXTERNAL_SOURCE_BLOCKED = DLG_BASE + 8;
- private static final int DLG_INSTALL_APPS_RESTRICTED_FOR_USER = DLG_BASE + 9;
-
- // If unknown sources are temporary allowed
- private boolean mAllowUnknownSources;
-
- // Would the mOk button be enabled if this activity would be resumed
- private boolean mEnableOk;
-
- private void startInstallConfirm() {
- // We might need to show permissions, load layout with permissions
- if (mAppInfo != null) {
- bindUi(R.layout.install_confirm_perm_update, true);
- } else {
- bindUi(R.layout.install_confirm_perm, true);
- }
-
- ((TextView) findViewById(R.id.install_confirm_question))
- .setText(R.string.install_confirm_question);
- TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost);
- tabHost.setup();
- ViewPager viewPager = (ViewPager)findViewById(R.id.pager);
- TabsAdapter adapter = new TabsAdapter(this, tabHost, viewPager);
- // If the app supports runtime permissions the new permissions will
- // be requested at runtime, hence we do not show them at install.
- boolean supportsRuntimePermissions = mPkgInfo.applicationInfo.targetSdkVersion
- >= Build.VERSION_CODES.M;
- boolean permVisible = false;
- mScrollView = null;
- mOkCanInstall = false;
- int msg = 0;
-
- AppSecurityPermissions perms = new AppSecurityPermissions(this, mPkgInfo);
- final int N = perms.getPermissionCount(AppSecurityPermissions.WHICH_ALL);
- if (mAppInfo != null) {
- msg = (mAppInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0
- ? R.string.install_confirm_question_update_system
- : R.string.install_confirm_question_update;
- mScrollView = new CaffeinatedScrollView(this);
- mScrollView.setFillViewport(true);
- boolean newPermissionsFound = false;
- if (!supportsRuntimePermissions) {
- newPermissionsFound =
- (perms.getPermissionCount(AppSecurityPermissions.WHICH_NEW) > 0);
- if (newPermissionsFound) {
- permVisible = true;
- mScrollView.addView(perms.getPermissionsView(
- AppSecurityPermissions.WHICH_NEW));
- }
- }
- if (!supportsRuntimePermissions && !newPermissionsFound) {
- LayoutInflater inflater = (LayoutInflater)getSystemService(
- Context.LAYOUT_INFLATER_SERVICE);
- TextView label = (TextView)inflater.inflate(R.layout.label, null);
- label.setText(R.string.no_new_perms);
- mScrollView.addView(label);
- }
- adapter.addTab(tabHost.newTabSpec(TAB_ID_NEW).setIndicator(
- getText(R.string.newPerms)), mScrollView);
- }
- if (!supportsRuntimePermissions && N > 0) {
- permVisible = true;
- LayoutInflater inflater = (LayoutInflater)getSystemService(
- Context.LAYOUT_INFLATER_SERVICE);
- View root = inflater.inflate(R.layout.permissions_list, null);
- if (mScrollView == null) {
- mScrollView = (CaffeinatedScrollView)root.findViewById(R.id.scrollview);
- }
- ((ViewGroup)root.findViewById(R.id.permission_list)).addView(
- perms.getPermissionsView(AppSecurityPermissions.WHICH_ALL));
- adapter.addTab(tabHost.newTabSpec(TAB_ID_ALL).setIndicator(
- getText(R.string.allPerms)), root);
- }
- if (!permVisible) {
- if (mAppInfo != null) {
- // This is an update to an application, but there are no
- // permissions at all.
- msg = (mAppInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0
- ? R.string.install_confirm_question_update_system_no_perms
- : R.string.install_confirm_question_update_no_perms;
- } else {
- // This is a new application with no permissions.
- msg = R.string.install_confirm_question_no_perms;
- }
-
- // We do not need to show any permissions, load layout without permissions
- bindUi(R.layout.install_confirm, true);
- mScrollView = null;
- }
- if (msg != 0) {
- ((TextView)findViewById(R.id.install_confirm_question)).setText(msg);
- }
- if (mScrollView == null) {
- // There is nothing to scroll view, so the ok button is immediately
- // set to install.
- mOk.setText(R.string.install);
- mOkCanInstall = true;
- } else {
- mScrollView.setFullScrollAction(new Runnable() {
- @Override
- public void run() {
- mOk.setText(R.string.install);
- mOkCanInstall = true;
- }
- });
- }
- }
-
- /**
- * Replace any dialog shown by the dialog with the one for the given {@link #createDialog id}.
- *
- * @param id The dialog type to add
- */
- private void showDialogInner(int id) {
- DialogFragment currentDialog =
- (DialogFragment) getFragmentManager().findFragmentByTag("dialog");
- if (currentDialog != null) {
- currentDialog.dismissAllowingStateLoss();
- }
-
- DialogFragment newDialog = createDialog(id);
- if (newDialog != null) {
- newDialog.showAllowingStateLoss(getFragmentManager(), "dialog");
- }
- }
-
- /**
- * Create a new dialog.
- *
- * @param id The id of the dialog (determines dialog type)
- *
- * @return The dialog
- */
- private DialogFragment createDialog(int id) {
- switch (id) {
- case DLG_PACKAGE_ERROR:
- return SimpleErrorDialog.newInstance(R.string.Parse_error_dlg_text);
- case DLG_OUT_OF_SPACE:
- return OutOfSpaceDialog.newInstance(
- mPm.getApplicationLabel(mPkgInfo.applicationInfo));
- case DLG_INSTALL_ERROR:
- return InstallErrorDialog.newInstance(
- mPm.getApplicationLabel(mPkgInfo.applicationInfo));
- case DLG_NOT_SUPPORTED_ON_WEAR:
- return NotSupportedOnWearDialog.newInstance();
- case DLG_INSTALL_APPS_RESTRICTED_FOR_USER:
- return SimpleErrorDialog.newInstance(
- R.string.install_apps_user_restriction_dlg_text);
- case DLG_UNKNOWN_SOURCES_RESTRICTED_FOR_USER:
- return SimpleErrorDialog.newInstance(
- R.string.unknown_apps_user_restriction_dlg_text);
- case DLG_EXTERNAL_SOURCE_BLOCKED:
- return ExternalSourcesBlockedDialog.newInstance(mOriginatingPackage);
- case DLG_ANONYMOUS_SOURCE:
- return AnonymousSourceDialog.newInstance();
- }
- return null;
- }
-
- @Override
- public void onActivityResult(int request, int result, Intent data) {
- if (request == REQUEST_TRUST_EXTERNAL_SOURCE && result == RESULT_OK) {
- // The user has just allowed this package to install other packages (via Settings).
- mAllowUnknownSources = true;
-
- // Log the fact that the app is requesting an install, and is now allowed to do it
- // (before this point we could only log that it's requesting an install, but isn't
- // allowed to do it yet).
- int appOpCode =
- AppOpsManager.permissionToOpCode(Manifest.permission.REQUEST_INSTALL_PACKAGES);
- mAppOpsManager.noteOpNoThrow(appOpCode, mOriginatingUid, mOriginatingPackage);
-
- DialogFragment currentDialog =
- (DialogFragment) getFragmentManager().findFragmentByTag("dialog");
- if (currentDialog != null) {
- currentDialog.dismissAllowingStateLoss();
- }
-
- initiateInstall();
- } else {
- finish();
- }
- }
-
- private String getPackageNameForUid(int sourceUid) {
- String[] packagesForUid = mPm.getPackagesForUid(sourceUid);
- if (packagesForUid == null) {
- return null;
- }
- if (packagesForUid.length > 1) {
- if (mCallingPackage != null) {
- for (String packageName : packagesForUid) {
- if (packageName.equals(mCallingPackage)) {
- return packageName;
- }
- }
- }
- Log.i(TAG, "Multiple packages found for source uid " + sourceUid);
- }
- return packagesForUid[0];
- }
-
- private boolean isInstallRequestFromUnknownSource(Intent intent) {
- if (mCallingPackage != null && intent.getBooleanExtra(
- Intent.EXTRA_NOT_UNKNOWN_SOURCE, false)) {
- if (mSourceInfo != null) {
- if ((mSourceInfo.privateFlags & ApplicationInfo.PRIVATE_FLAG_PRIVILEGED)
- != 0) {
- // Privileged apps can bypass unknown sources check if they want.
- return false;
- }
- }
- }
- return true;
- }
-
- private void initiateInstall() {
- String pkgName = mPkgInfo.packageName;
- // Check if there is already a package on the device with this name
- // but it has been renamed to something else.
- String[] oldName = mPm.canonicalToCurrentPackageNames(new String[] { pkgName });
- if (oldName != null && oldName.length > 0 && oldName[0] != null) {
- pkgName = oldName[0];
- mPkgInfo.packageName = pkgName;
- mPkgInfo.applicationInfo.packageName = pkgName;
- }
- // Check if package is already installed. display confirmation dialog if replacing pkg
- try {
- // This is a little convoluted because we want to get all uninstalled
- // apps, but this may include apps with just data, and if it is just
- // data we still want to count it as "installed".
- mAppInfo = mPm.getApplicationInfo(pkgName,
- PackageManager.MATCH_UNINSTALLED_PACKAGES);
- if ((mAppInfo.flags&ApplicationInfo.FLAG_INSTALLED) == 0) {
- mAppInfo = null;
- }
- } catch (NameNotFoundException e) {
- mAppInfo = null;
- }
-
- startInstallConfirm();
- }
-
- void setPmResult(int pmResult) {
- Intent result = new Intent();
- result.putExtra(Intent.EXTRA_INSTALL_RESULT, pmResult);
- setResult(pmResult == PackageManager.INSTALL_SUCCEEDED
- ? RESULT_OK : RESULT_FIRST_USER, result);
- }
-
- @Override
- protected void onCreate(Bundle icicle) {
- super.onCreate(null);
-
- if (icicle != null) {
- mAllowUnknownSources = icicle.getBoolean(ALLOW_UNKNOWN_SOURCES_KEY);
- }
-
- mPm = getPackageManager();
- mIpm = AppGlobals.getPackageManager();
- mAppOpsManager = (AppOpsManager) getSystemService(Context.APP_OPS_SERVICE);
- mInstaller = mPm.getPackageInstaller();
- mUserManager = (UserManager) getSystemService(Context.USER_SERVICE);
-
- final Intent intent = getIntent();
-
- mCallingPackage = intent.getStringExtra(EXTRA_CALLING_PACKAGE);
- mSourceInfo = intent.getParcelableExtra(EXTRA_ORIGINAL_SOURCE_INFO);
- mOriginatingUid = intent.getIntExtra(Intent.EXTRA_ORIGINATING_UID,
- PackageInstaller.SessionParams.UID_UNKNOWN);
- mOriginatingPackage = (mOriginatingUid != PackageInstaller.SessionParams.UID_UNKNOWN)
- ? getPackageNameForUid(mOriginatingUid) : null;
-
-
- final Uri packageUri;
-
- if (PackageInstaller.ACTION_CONFIRM_PERMISSIONS.equals(intent.getAction())) {
- final int sessionId = intent.getIntExtra(PackageInstaller.EXTRA_SESSION_ID, -1);
- final PackageInstaller.SessionInfo info = mInstaller.getSessionInfo(sessionId);
- if (info == null || !info.sealed || info.resolvedBaseCodePath == null) {
- Log.w(TAG, "Session " + mSessionId + " in funky state; ignoring");
- finish();
- return;
- }
-
- mSessionId = sessionId;
- packageUri = Uri.fromFile(new File(info.resolvedBaseCodePath));
- mOriginatingURI = null;
- mReferrerURI = null;
- } else {
- mSessionId = -1;
- packageUri = intent.getData();
- mOriginatingURI = intent.getParcelableExtra(Intent.EXTRA_ORIGINATING_URI);
- mReferrerURI = intent.getParcelableExtra(Intent.EXTRA_REFERRER);
- }
-
- // if there's nothing to do, quietly slip into the ether
- if (packageUri == null) {
- Log.w(TAG, "Unspecified source");
- setPmResult(PackageManager.INSTALL_FAILED_INVALID_URI);
- finish();
- return;
- }
-
- if (DeviceUtils.isWear(this)) {
- showDialogInner(DLG_NOT_SUPPORTED_ON_WEAR);
- return;
- }
-
- boolean wasSetUp = processPackageUri(packageUri);
- if (!wasSetUp) {
- return;
- }
-
- // load dummy layout with OK button disabled until we override this layout in
- // startInstallConfirm
- bindUi(R.layout.install_confirm, false);
- checkIfAllowedAndInitiateInstall();
- }
-
- @Override
- protected void onResume() {
- super.onResume();
-
- if (mOk != null) {
- mOk.setEnabled(mEnableOk);
- }
- }
-
- @Override
- protected void onPause() {
- super.onPause();
-
- if (mOk != null) {
- // Don't allow the install button to be clicked as there might be overlays
- mOk.setEnabled(false);
- }
- }
-
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
-
- outState.putBoolean(ALLOW_UNKNOWN_SOURCES_KEY, mAllowUnknownSources);
- }
-
- private void bindUi(int layout, boolean enableOk) {
- setContentView(layout);
-
- mOk = (Button) findViewById(R.id.ok_button);
- mCancel = (Button)findViewById(R.id.cancel_button);
- mOk.setOnClickListener(this);
- mCancel.setOnClickListener(this);
-
- mEnableOk = enableOk;
- mOk.setEnabled(enableOk);
-
- PackageUtil.initSnippetForNewApp(this, mAppSnippet, R.id.app_snippet);
- }
-
- /**
- * Check if it is allowed to install the package and initiate install if allowed. If not allowed
- * show the appropriate dialog.
- */
- private void checkIfAllowedAndInitiateInstall() {
- // Check for install apps user restriction first.
- final int installAppsRestrictionSource = mUserManager.getUserRestrictionSource(
- UserManager.DISALLOW_INSTALL_APPS, Process.myUserHandle());
- if ((installAppsRestrictionSource & UserManager.RESTRICTION_SOURCE_SYSTEM) != 0) {
- showDialogInner(DLG_INSTALL_APPS_RESTRICTED_FOR_USER);
- return;
- } else if (installAppsRestrictionSource != UserManager.RESTRICTION_NOT_SET) {
- startActivity(new Intent(Settings.ACTION_SHOW_ADMIN_SUPPORT_DETAILS));
- finish();
- return;
- }
-
- if (mAllowUnknownSources || !isInstallRequestFromUnknownSource(getIntent())) {
- initiateInstall();
- } else {
- // Check for unknown sources restriction
- final int unknownSourcesRestrictionSource = mUserManager.getUserRestrictionSource(
- UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES, Process.myUserHandle());
- if ((unknownSourcesRestrictionSource & UserManager.RESTRICTION_SOURCE_SYSTEM) != 0) {
- showDialogInner(DLG_UNKNOWN_SOURCES_RESTRICTED_FOR_USER);
- } else if (unknownSourcesRestrictionSource != UserManager.RESTRICTION_NOT_SET) {
- startActivity(new Intent(Settings.ACTION_SHOW_ADMIN_SUPPORT_DETAILS));
- finish();
- } else {
- handleUnknownSources();
- }
- }
- }
-
- private void handleUnknownSources() {
- if (mOriginatingPackage == null) {
- Log.i(TAG, "No source found for package " + mPkgInfo.packageName);
- showDialogInner(DLG_ANONYMOUS_SOURCE);
- return;
- }
- // Shouldn't use static constant directly, see b/65534401.
- final int appOpCode =
- AppOpsManager.permissionToOpCode(Manifest.permission.REQUEST_INSTALL_PACKAGES);
- final int appOpMode = mAppOpsManager.noteOpNoThrow(appOpCode,
- mOriginatingUid, mOriginatingPackage);
- switch (appOpMode) {
- case AppOpsManager.MODE_DEFAULT:
- mAppOpsManager.setMode(appOpCode, mOriginatingUid,
- mOriginatingPackage, AppOpsManager.MODE_ERRORED);
- // fall through
- case AppOpsManager.MODE_ERRORED:
- showDialogInner(DLG_EXTERNAL_SOURCE_BLOCKED);
- break;
- case AppOpsManager.MODE_ALLOWED:
- initiateInstall();
- break;
- default:
- Log.e(TAG, "Invalid app op mode " + appOpMode
- + " for OP_REQUEST_INSTALL_PACKAGES found for uid " + mOriginatingUid);
- finish();
- break;
- }
- }
-
- /**
- * Parse the Uri and set up the installer for this package.
- *
- * @param packageUri The URI to parse
- *
- * @return {@code true} iff the installer could be set up
- */
- private boolean processPackageUri(final Uri packageUri) {
- mPackageURI = packageUri;
-
- final String scheme = packageUri.getScheme();
-
- switch (scheme) {
- case SCHEME_PACKAGE: {
- try {
- mPkgInfo = mPm.getPackageInfo(packageUri.getSchemeSpecificPart(),
- PackageManager.GET_PERMISSIONS
- | PackageManager.MATCH_UNINSTALLED_PACKAGES);
- } catch (NameNotFoundException e) {
- }
- if (mPkgInfo == null) {
- Log.w(TAG, "Requested package " + packageUri.getScheme()
- + " not available. Discontinuing installation");
- showDialogInner(DLG_PACKAGE_ERROR);
- setPmResult(PackageManager.INSTALL_FAILED_INVALID_APK);
- return false;
- }
- mAppSnippet = new PackageUtil.AppSnippet(mPm.getApplicationLabel(mPkgInfo.applicationInfo),
- mPm.getApplicationIcon(mPkgInfo.applicationInfo));
- } break;
-
- case ContentResolver.SCHEME_FILE: {
- File sourceFile = new File(packageUri.getPath());
- PackageParser.Package parsed = PackageUtil.getPackageInfo(this, sourceFile);
-
- // Check for parse errors
- if (parsed == null) {
- Log.w(TAG, "Parse error when parsing manifest. Discontinuing installation");
- showDialogInner(DLG_PACKAGE_ERROR);
- setPmResult(PackageManager.INSTALL_FAILED_INVALID_APK);
- return false;
- }
- mPkgInfo = PackageParser.generatePackageInfo(parsed, null,
- PackageManager.GET_PERMISSIONS, 0, 0, null,
- new PackageUserState());
- mAppSnippet = PackageUtil.getAppSnippet(this, mPkgInfo.applicationInfo, sourceFile);
- } break;
-
- default: {
- throw new IllegalArgumentException("Unexpected URI scheme " + packageUri);
- }
- }
-
- return true;
- }
-
- @Override
- public void onBackPressed() {
- if (mSessionId != -1) {
- mInstaller.setPermissionsResult(mSessionId, false);
- }
- super.onBackPressed();
- }
-
- public void onClick(View v) {
- if (v == mOk) {
- if (mOk.isEnabled()) {
- if (mOkCanInstall || mScrollView == null) {
- if (mSessionId != -1) {
- mInstaller.setPermissionsResult(mSessionId, true);
- finish();
- } else {
- startInstall();
- }
- } else {
- mScrollView.pageScroll(View.FOCUS_DOWN);
- }
- }
- } else if (v == mCancel) {
- // Cancel and finish
- setResult(RESULT_CANCELED);
- if (mSessionId != -1) {
- mInstaller.setPermissionsResult(mSessionId, false);
- }
- finish();
- }
- }
-
- private void startInstall() {
- // Start subactivity to actually install the application
- Intent newIntent = new Intent();
- newIntent.putExtra(PackageUtil.INTENT_ATTR_APPLICATION_INFO,
- mPkgInfo.applicationInfo);
- newIntent.setData(mPackageURI);
- newIntent.setClass(this, InstallInstalling.class);
- String installerPackageName = getIntent().getStringExtra(
- Intent.EXTRA_INSTALLER_PACKAGE_NAME);
- if (mOriginatingURI != null) {
- newIntent.putExtra(Intent.EXTRA_ORIGINATING_URI, mOriginatingURI);
- }
- if (mReferrerURI != null) {
- newIntent.putExtra(Intent.EXTRA_REFERRER, mReferrerURI);
- }
- if (mOriginatingUid != PackageInstaller.SessionParams.UID_UNKNOWN) {
- newIntent.putExtra(Intent.EXTRA_ORIGINATING_UID, mOriginatingUid);
- }
- if (installerPackageName != null) {
- newIntent.putExtra(Intent.EXTRA_INSTALLER_PACKAGE_NAME,
- installerPackageName);
- }
- if (getIntent().getBooleanExtra(Intent.EXTRA_RETURN_RESULT, false)) {
- newIntent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
- }
- newIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
- if(localLOGV) Log.i(TAG, "downloaded app uri="+mPackageURI);
- startActivity(newIntent);
- finish();
- }
-
- /**
- * A simple error dialog showing a message
- */
- public static class SimpleErrorDialog extends DialogFragment {
- private static final String MESSAGE_KEY =
- SimpleErrorDialog.class.getName() + "MESSAGE_KEY";
-
- static SimpleErrorDialog newInstance(@StringRes int message) {
- SimpleErrorDialog dialog = new SimpleErrorDialog();
-
- Bundle args = new Bundle();
- args.putInt(MESSAGE_KEY, message);
- dialog.setArguments(args);
-
- return dialog;
- }
-
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- return new AlertDialog.Builder(getActivity())
- .setMessage(getArguments().getInt(MESSAGE_KEY))
- .setPositiveButton(R.string.ok, (dialog, which) -> getActivity().finish())
- .create();
- }
- }
-
- /**
- * Dialog to show when the source of apk can not be identified
- */
- public static class AnonymousSourceDialog extends DialogFragment {
- static AnonymousSourceDialog newInstance() {
- return new AnonymousSourceDialog();
- }
-
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- return new AlertDialog.Builder(getActivity())
- .setMessage(R.string.anonymous_source_warning)
- .setPositiveButton(R.string.anonymous_source_continue,
- ((dialog, which) -> {
- PackageInstallerActivity activity = ((PackageInstallerActivity)
- getActivity());
-
- activity.mAllowUnknownSources = true;
- activity.initiateInstall();
- }))
- .setNegativeButton(R.string.cancel, ((dialog, which) -> getActivity().finish()))
- .create();
- }
-
- @Override
- public void onCancel(DialogInterface dialog) {
- getActivity().finish();
- }
- }
-
- /**
- * An error dialog shown when the app is not supported on wear
- */
- public static class NotSupportedOnWearDialog extends SimpleErrorDialog {
- static SimpleErrorDialog newInstance() {
- return SimpleErrorDialog.newInstance(R.string.wear_not_allowed_dlg_text);
- }
-
- @Override
- public void onCancel(DialogInterface dialog) {
- getActivity().setResult(RESULT_OK);
- getActivity().finish();
- }
- }
-
- /**
- * An error dialog shown when the device is out of space
- */
- public static class OutOfSpaceDialog extends AppErrorDialog {
- static AppErrorDialog newInstance(@NonNull CharSequence applicationLabel) {
- OutOfSpaceDialog dialog = new OutOfSpaceDialog();
- dialog.setArgument(applicationLabel);
- return dialog;
- }
-
- @Override
- protected Dialog createDialog(@NonNull CharSequence argument) {
- String dlgText = getString(R.string.out_of_space_dlg_text, argument);
- return new AlertDialog.Builder(getActivity())
- .setMessage(dlgText)
- .setPositiveButton(R.string.manage_applications, (dialog, which) -> {
- // launch manage applications
- Intent intent = new Intent("android.intent.action.MANAGE_PACKAGE_STORAGE");
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(intent);
- getActivity().finish();
- })
- .setNegativeButton(R.string.cancel, (dialog, which) -> getActivity().finish())
- .create();
- }
- }
-
- /**
- * A generic install-error dialog
- */
- public static class InstallErrorDialog extends AppErrorDialog {
- static AppErrorDialog newInstance(@NonNull CharSequence applicationLabel) {
- InstallErrorDialog dialog = new InstallErrorDialog();
- dialog.setArgument(applicationLabel);
- return dialog;
- }
-
- @Override
- protected Dialog createDialog(@NonNull CharSequence argument) {
- return new AlertDialog.Builder(getActivity())
- .setNeutralButton(R.string.ok, (dialog, which) -> getActivity().finish())
- .setMessage(getString(R.string.install_failed_msg, argument))
- .create();
- }
- }
-
- /**
- * An error dialog shown when external sources are not allowed
- */
- public static class ExternalSourcesBlockedDialog extends AppErrorDialog {
- static AppErrorDialog newInstance(@NonNull String originationPkg) {
- ExternalSourcesBlockedDialog dialog = new ExternalSourcesBlockedDialog();
- dialog.setArgument(originationPkg);
- return dialog;
- }
-
- @Override
- protected Dialog createDialog(@NonNull CharSequence argument) {
- try {
- PackageManager pm = getActivity().getPackageManager();
-
- ApplicationInfo sourceInfo = pm.getApplicationInfo(argument.toString(), 0);
-
- return new AlertDialog.Builder(getActivity())
- .setTitle(pm.getApplicationLabel(sourceInfo))
- .setIcon(pm.getApplicationIcon(sourceInfo))
- .setMessage(R.string.untrusted_external_source_warning)
- .setPositiveButton(R.string.external_sources_settings,
- (dialog, which) -> {
- Intent settingsIntent = new Intent();
- settingsIntent.setAction(
- Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES);
- final Uri packageUri = Uri.parse("package:" + argument);
- settingsIntent.setData(packageUri);
- try {
- getActivity().startActivityForResult(settingsIntent,
- REQUEST_TRUST_EXTERNAL_SOURCE);
- } catch (ActivityNotFoundException exc) {
- Log.e(TAG, "Settings activity not found for action: "
- + Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES);
- }
- })
- .setNegativeButton(R.string.cancel,
- (dialog, which) -> getActivity().finish())
- .create();
- } catch (NameNotFoundException e) {
- Log.e(TAG, "Did not find app info for " + argument);
- getActivity().finish();
- return null;
- }
- }
- }
-
- /**
- * Superclass for all error dialogs. Stores a single CharSequence argument
- */
- public abstract static class AppErrorDialog extends DialogFragment {
- private static final String ARGUMENT_KEY = AppErrorDialog.class.getName() + "ARGUMENT_KEY";
-
- protected void setArgument(@NonNull CharSequence argument) {
- Bundle args = new Bundle();
- args.putCharSequence(ARGUMENT_KEY, argument);
- setArguments(args);
- }
-
- protected abstract Dialog createDialog(@NonNull CharSequence argument);
-
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- return createDialog(getArguments().getString(ARGUMENT_KEY));
- }
-
- @Override
- public void onCancel(DialogInterface dialog) {
- getActivity().finish();
- }
- }
-}
diff --git a/src/com/android/packageinstaller/PackageInstallerApplication.java b/src/com/android/packageinstaller/PackageInstallerApplication.java
index 9b7e64e..a1aa539 100644
--- a/src/com/android/packageinstaller/PackageInstallerApplication.java
+++ b/src/com/android/packageinstaller/PackageInstallerApplication.java
@@ -17,12 +17,47 @@
package com.android.packageinstaller;
import android.app.Application;
+import android.content.ComponentName;
import android.content.pm.PackageItemInfo;
+import android.content.pm.PackageManager;
+import android.util.ArrayMap;
+
+import com.android.packageinstaller.role.model.Role;
+import com.android.packageinstaller.role.model.Roles;
+import com.android.packageinstaller.role.ui.SpecialAppAccessListActivity;
public class PackageInstallerApplication extends Application {
+
@Override
public void onCreate() {
super.onCreate();
- PackageItemInfo.setForceSafeLabels(true);
+
+ PackageItemInfo.forceSafeLabels();
+ updateSpecialAppAccessListActivityEnabledState();
+ }
+
+ private void updateSpecialAppAccessListActivityEnabledState() {
+ ArrayMap<String, Role> roles = Roles.get(this);
+ boolean hasVisibleSpecialAppAccess = false;
+ int rolesSize = roles.size();
+ for (int i = 0; i < rolesSize; i++) {
+ Role role = roles.valueAt(i);
+
+ if (!role.isAvailable(this) || !role.isVisible(this)) {
+ continue;
+ }
+ if (!role.isExclusive()) {
+ hasVisibleSpecialAppAccess = true;
+ break;
+ }
+ }
+
+ PackageManager packageManager = getPackageManager();
+ ComponentName componentName = new ComponentName(this, SpecialAppAccessListActivity.class);
+ int enabledState = hasVisibleSpecialAppAccess
+ ? PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
+ : PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
+ packageManager.setComponentEnabledSetting(componentName, enabledState,
+ PackageManager.DONT_KILL_APP);
}
}
diff --git a/src/com/android/packageinstaller/PackageUtil.java b/src/com/android/packageinstaller/PackageUtil.java
deleted file mode 100644
index 68daed7..0000000
--- a/src/com/android/packageinstaller/PackageUtil.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
-**
-** Copyright 2007, 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.packageinstaller;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageParser;
-import android.content.pm.PackageParser.PackageParserException;
-import android.content.res.AssetManager;
-import android.content.res.Resources;
-import android.graphics.drawable.Drawable;
-import android.os.UserHandle;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import android.util.Log;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import java.io.File;
-
-/**
- * This is a utility class for defining some utility methods and constants
- * used in the package installer application.
- */
-public class PackageUtil {
- private static final String LOG_TAG = PackageUtil.class.getSimpleName();
-
- public static final String PREFIX="com.android.packageinstaller.";
- public static final String INTENT_ATTR_INSTALL_STATUS = PREFIX+"installStatus";
- public static final String INTENT_ATTR_APPLICATION_INFO=PREFIX+"applicationInfo";
- public static final String INTENT_ATTR_PERMISSIONS_LIST=PREFIX+"PermissionsList";
- //intent attribute strings related to uninstall
- public static final String INTENT_ATTR_PACKAGE_NAME=PREFIX+"PackageName";
-
- /**
- * Utility method to get package information for a given {@link File}
- */
- public static PackageParser.Package getPackageInfo(Context context, File sourceFile) {
- final PackageParser parser = new PackageParser();
- parser.setCallback(new PackageParser.CallbackImpl(context.getPackageManager()));
- try {
- return parser.parsePackage(sourceFile, 0);
- } catch (PackageParserException e) {
- return null;
- }
- }
-
- public static View initSnippet(View snippetView, CharSequence label, Drawable icon) {
- ((ImageView)snippetView.findViewById(R.id.app_icon)).setImageDrawable(icon);
- ((TextView)snippetView.findViewById(R.id.app_name)).setText(label);
- return snippetView;
- }
-
- /**
- * Utility method to display a snippet of an installed application.
- * The content view should have been set on context before invoking this method.
- * appSnippet view should include R.id.app_icon and R.id.app_name
- * defined on it.
- *
- * @param pContext context of package that can load the resources
- * @param componentInfo ComponentInfo object whose resources are to be loaded
- * @param snippetView the snippet view
- */
- public static View initSnippetForInstalledApp(Context pContext,
- ApplicationInfo appInfo, View snippetView) {
- return initSnippetForInstalledApp(pContext, appInfo, snippetView, null);
- }
-
- /**
- * Utility method to display a snippet of an installed application.
- * The content view should have been set on context before invoking this method.
- * appSnippet view should include R.id.app_icon and R.id.app_name
- * defined on it.
- *
- * @param pContext context of package that can load the resources
- * @param componentInfo ComponentInfo object whose resources are to be loaded
- * @param snippetView the snippet view
- * @param UserHandle user that the app si installed for.
- */
- public static View initSnippetForInstalledApp(Context pContext,
- ApplicationInfo appInfo, View snippetView, UserHandle user) {
- final PackageManager pm = pContext.getPackageManager();
- Drawable icon = appInfo.loadIcon(pm);
- if (user != null) {
- icon = pContext.getPackageManager().getUserBadgedIcon(icon, user);
- }
- return initSnippet(
- snippetView,
- appInfo.loadLabel(pm),
- icon);
- }
-
- /**
- * Utility method to display application snippet of a new package.
- * The content view should have been set on context before invoking this method.
- * appSnippet view should include R.id.app_icon and R.id.app_name
- * defined on it.
- *
- * @param pContext context of package that can load the resources
- * @param as The resources to be loaded
- * @param snippetId view id of app snippet view
- */
- @NonNull public static View initSnippetForNewApp(@NonNull Activity pContext,
- @NonNull AppSnippet as, int snippetId) {
- View appSnippet = pContext.findViewById(snippetId);
- if (as.icon != null) {
- ((ImageView) appSnippet.findViewById(R.id.app_icon)).setImageDrawable(as.icon);
- }
- ((TextView)appSnippet.findViewById(R.id.app_name)).setText(as.label);
- return appSnippet;
- }
-
- static public class AppSnippet {
- @NonNull public CharSequence label;
- @Nullable public Drawable icon;
- public AppSnippet(@NonNull CharSequence label, @Nullable Drawable icon) {
- this.label = label;
- this.icon = icon;
- }
- }
-
- /**
- * Utility method to load application label
- *
- * @param pContext context of package that can load the resources
- * @param appInfo ApplicationInfo object of package whose resources are to be loaded
- * @param sourceFile File the package is in
- */
- public static AppSnippet getAppSnippet(
- Activity pContext, ApplicationInfo appInfo, File sourceFile) {
- final String archiveFilePath = sourceFile.getAbsolutePath();
- Resources pRes = pContext.getResources();
- AssetManager assmgr = new AssetManager();
- assmgr.addAssetPath(archiveFilePath);
- Resources res = new Resources(assmgr, pRes.getDisplayMetrics(), pRes.getConfiguration());
- CharSequence label = null;
- // Try to load the label from the package's resources. If an app has not explicitly
- // specified any label, just use the package name.
- if (appInfo.labelRes != 0) {
- try {
- label = res.getText(appInfo.labelRes);
- } catch (Resources.NotFoundException e) {
- }
- }
- if (label == null) {
- label = (appInfo.nonLocalizedLabel != null) ?
- appInfo.nonLocalizedLabel : appInfo.packageName;
- }
- Drawable icon = null;
- // Try to load the icon from the package's resources. If an app has not explicitly
- // specified any resource, just use the default icon for now.
- try {
- if (appInfo.icon != 0) {
- try {
- icon = res.getDrawable(appInfo.icon);
- } catch (Resources.NotFoundException e) {
- }
- }
- if (icon == null) {
- icon = pContext.getPackageManager().getDefaultActivityIcon();
- }
- } catch (OutOfMemoryError e) {
- Log.i(LOG_TAG, "Could not load app icon", e);
- }
- return new PackageUtil.AppSnippet(label, icon);
- }
-
- /**
- * Get the maximum target sdk for a UID.
- *
- * @param context The context to use
- * @param uid The UID requesting the install/uninstall
- *
- * @return The maximum target SDK or -1 if the uid does not match any packages.
- */
- static int getMaxTargetSdkVersionForUid(@NonNull Context context, int uid) {
- PackageManager pm = context.getPackageManager();
- final String[] packages = pm.getPackagesForUid(uid);
- int targetSdkVersion = -1;
- if (packages != null) {
- for (String packageName : packages) {
- try {
- ApplicationInfo info = pm.getApplicationInfo(packageName, 0);
- targetSdkVersion = Math.max(targetSdkVersion, info.targetSdkVersion);
- } catch (PackageManager.NameNotFoundException e) {
- // Ignore and try the next package
- }
- }
- }
- return targetSdkVersion;
- }
-}
diff --git a/src/com/android/packageinstaller/RemoveReceiver.java b/src/com/android/packageinstaller/RemoveReceiver.java
deleted file mode 100644
index 7d8064d..0000000
--- a/src/com/android/packageinstaller/RemoveReceiver.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-**
-** Copyright 2007, 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.packageinstaller;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.net.Uri;
-
-public class RemoveReceiver extends BroadcastReceiver {
-
- @Override
- public void onReceive(Context context, Intent intent) {
- if (Intent.ACTION_PACKAGE_FULLY_REMOVED.equals(intent.getAction())) {
- Uri uri = intent.getData();
- String pkg = uri != null ? uri.getSchemeSpecificPart() : null;
- if (pkg != null) {
- SharedPreferences prefs = context.getSharedPreferences(
- PackageInstallerActivity.PREFS_ALLOWED_SOURCES,
- Context.MODE_PRIVATE);
- if (prefs.getBoolean(pkg, false)) {
- prefs.edit().remove(pkg).apply();
- }
- }
- }
- }
-}
diff --git a/src/com/android/packageinstaller/TabsAdapter.java b/src/com/android/packageinstaller/TabsAdapter.java
deleted file mode 100644
index b76c7d5..0000000
--- a/src/com/android/packageinstaller/TabsAdapter.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
-**
-** Copyright 2013, 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.packageinstaller;
-
-import android.app.Activity;
-import android.content.Context;
-import android.graphics.Rect;
-import androidx.viewpager.widget.PagerAdapter;
-import androidx.viewpager.widget.ViewPager;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TabHost;
-import android.widget.TabWidget;
-
-import java.util.ArrayList;
-
-/**
- * This is a helper class that implements the management of tabs and all
- * details of connecting a ViewPager with associated TabHost. It relies on a
- * trick. Normally a tab host has a simple API for supplying a View or
- * Intent that each tab will show. This is not sufficient for switching
- * between pages. So instead we make the content part of the tab host
- * 0dp high (it is not shown) and the TabsAdapter supplies its own dummy
- * view to show as the tab content. It listens to changes in tabs, and takes
- * care of switch to the correct paged in the ViewPager whenever the selected
- * tab changes.
- */
-public class TabsAdapter extends PagerAdapter
- implements TabHost.OnTabChangeListener, ViewPager.OnPageChangeListener {
- private final Context mContext;
- private final TabHost mTabHost;
- private final ViewPager mViewPager;
- private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>();
- private final Rect mTempRect = new Rect();
-
- static final class TabInfo {
- private final String tag;
- private final View view;
-
- TabInfo(String _tag, View _view) {
- tag = _tag;
- view = _view;
- }
- }
-
- static class DummyTabFactory implements TabHost.TabContentFactory {
- private final Context mContext;
-
- public DummyTabFactory(Context context) {
- mContext = context;
- }
-
- @Override
- public View createTabContent(String tag) {
- View v = new View(mContext);
- v.setMinimumWidth(0);
- v.setMinimumHeight(0);
- return v;
- }
- }
-
- public TabsAdapter(Activity activity, TabHost tabHost, ViewPager pager) {
- mContext = activity;
- mTabHost = tabHost;
- mViewPager = pager;
- mTabHost.setOnTabChangedListener(this);
- mViewPager.setAdapter(this);
- mViewPager.setOnPageChangeListener(this);
- }
-
- public void addTab(TabHost.TabSpec tabSpec, View view) {
- tabSpec.setContent(new DummyTabFactory(mContext));
- String tag = tabSpec.getTag();
-
- TabInfo info = new TabInfo(tag, view);
- mTabs.add(info);
- mTabHost.addTab(tabSpec);
- notifyDataSetChanged();
- }
-
- @Override
- public int getCount() {
- return mTabs.size();
- }
-
- @Override
- public Object instantiateItem(ViewGroup container, int position) {
- View view = mTabs.get(position).view;
- container.addView(view);
- return view;
- }
-
- @Override
- public void destroyItem(ViewGroup container, int position, Object object) {
- container.removeView((View)object);
- }
-
- @Override
- public boolean isViewFromObject(View view, Object object) {
- return view == object;
- }
-
- @Override
- public void onTabChanged(String tabId) {
- int position = mTabHost.getCurrentTab();
- mViewPager.setCurrentItem(position);
- }
-
- @Override
- public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
- }
-
- @Override
- public void onPageSelected(int position) {
- // Unfortunately when TabHost changes the current tab, it kindly
- // also takes care of putting focus on it when not in touch mode.
- // The jerk.
- // This hack tries to prevent this from pulling focus out of our
- // ViewPager.
- TabWidget widget = mTabHost.getTabWidget();
- int oldFocusability = widget.getDescendantFocusability();
- widget.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
- mTabHost.setCurrentTab(position);
- widget.setDescendantFocusability(oldFocusability);
-
- // Scroll the current tab into visibility if needed.
- View tab = widget.getChildTabViewAt(position);
- mTempRect.set(tab.getLeft(), tab.getTop(), tab.getRight(), tab.getBottom());
- widget.requestRectangleOnScreen(mTempRect, false);
-
- // Make sure the scrollbars are visible for a moment after selection
- final View contentView = mTabs.get(position).view;
- if (contentView instanceof CaffeinatedScrollView) {
- ((CaffeinatedScrollView) contentView).awakenScrollBars();
- }
- }
-
- @Override
- public void onPageScrollStateChanged(int state) {
- }
-}
diff --git a/src/com/android/packageinstaller/TemporaryFileManager.java b/src/com/android/packageinstaller/TemporaryFileManager.java
deleted file mode 100644
index 66e93b3..0000000
--- a/src/com/android/packageinstaller/TemporaryFileManager.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.packageinstaller;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.os.SystemClock;
-import androidx.annotation.NonNull;
-import android.util.Log;
-
-import java.io.File;
-import java.io.IOException;
-
-/**
- * Manages files of the package installer and resets state during boot.
- */
-public class TemporaryFileManager extends BroadcastReceiver {
- private static final String LOG_TAG = TemporaryFileManager.class.getSimpleName();
-
- /**
- * Create a new file to hold a staged file.
- *
- * @param context The context of the caller
- *
- * @return A new file
- */
- @NonNull
- public static File getStagedFile(@NonNull Context context) throws IOException {
- return File.createTempFile("package", ".apk", context.getNoBackupFilesDir());
- }
-
- /**
- * Get the file used to store the results of installs.
- *
- * @param context The context of the caller
- *
- * @return the file used to store the results of installs
- */
- @NonNull
- public static File getInstallStateFile(@NonNull Context context) {
- return new File(context.getNoBackupFilesDir(), "install_results.xml");
- }
-
- /**
- * Get the file used to store the results of uninstalls.
- *
- * @param context The context of the caller
- *
- * @return the file used to store the results of uninstalls
- */
- @NonNull
- public static File getUninstallStateFile(@NonNull Context context) {
- return new File(context.getNoBackupFilesDir(), "uninstall_results.xml");
- }
-
- @Override
- public void onReceive(Context context, Intent intent) {
- long systemBootTime = System.currentTimeMillis() - SystemClock.elapsedRealtime();
-
- File[] filesOnBoot = context.getNoBackupFilesDir().listFiles();
-
- if (filesOnBoot == null) {
- return;
- }
-
- for (int i = 0; i < filesOnBoot.length; i++) {
- File fileOnBoot = filesOnBoot[i];
-
- if (systemBootTime > fileOnBoot.lastModified()) {
- boolean wasDeleted = fileOnBoot.delete();
- if (!wasDeleted) {
- Log.w(LOG_TAG, "Could not delete " + fileOnBoot.getName() + " onBoot");
- }
- } else {
- Log.w(LOG_TAG, fileOnBoot.getName() + " was created before onBoot broadcast was "
- + "received");
- }
- }
- }
-}
diff --git a/src/com/android/packageinstaller/UninstallEventReceiver.java b/src/com/android/packageinstaller/UninstallEventReceiver.java
deleted file mode 100644
index ad3cd4c..0000000
--- a/src/com/android/packageinstaller/UninstallEventReceiver.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2016 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.packageinstaller;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import androidx.annotation.NonNull;
-
-/**
- * Receives uninstall events and persists them using a {@link EventResultPersister}.
- */
-public class UninstallEventReceiver extends BroadcastReceiver {
- private static final Object sLock = new Object();
- private static EventResultPersister sReceiver;
-
- /**
- * Get the event receiver persisting the results
- *
- * @return The event receiver.
- */
- @NonNull private static EventResultPersister getReceiver(@NonNull Context context) {
- synchronized (sLock) {
- if (sReceiver == null) {
- sReceiver = new EventResultPersister(
- TemporaryFileManager.getUninstallStateFile(context));
- }
- }
-
- return sReceiver;
- }
-
- @Override
- public void onReceive(Context context, Intent intent) {
- getReceiver(context).onEventReceived(context, intent);
- }
-
- /**
- * Add an observer. If there is already an event for this id, call back inside of this call.
- *
- * @param context A context of the current app
- * @param id The id the observer is for or {@code GENERATE_NEW_ID} to generate a new one.
- * @param observer The observer to call back.
- *
- * @return The id for this event
- */
- static int addObserver(@NonNull Context context, int id,
- @NonNull EventResultPersister.EventResultObserver observer)
- throws EventResultPersister.OutOfIdsException {
- return getReceiver(context).addObserver(id, observer);
- }
-
- /**
- * Remove a observer.
- *
- * @param context A context of the current app
- * @param id The id the observer was added for
- */
- static void removeObserver(@NonNull Context context, int id) {
- getReceiver(context).removeObserver(id);
- }
-
- /**
- * @param context A context of the current app
- *
- * @return A new uninstall id
- */
- static int getNewId(@NonNull Context context) throws EventResultPersister.OutOfIdsException {
- return getReceiver(context).getNewId();
- }
-}
diff --git a/src/com/android/packageinstaller/UninstallFinish.java b/src/com/android/packageinstaller/UninstallFinish.java
deleted file mode 100644
index 8282c83..0000000
--- a/src/com/android/packageinstaller/UninstallFinish.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- * Copyright (C) 2016 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.packageinstaller;
-
-import android.app.Notification;
-import android.app.NotificationChannel;
-import android.app.NotificationManager;
-import android.app.PendingIntent;
-import android.app.admin.IDevicePolicyManager;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.IPackageManager;
-import android.content.pm.PackageInstaller;
-import android.content.pm.PackageManager;
-import android.content.pm.UserInfo;
-import android.graphics.drawable.Icon;
-import android.os.RemoteException;
-import android.os.ServiceManager;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.provider.Settings;
-import androidx.annotation.NonNull;
-import android.util.Log;
-import android.widget.Toast;
-
-import java.util.List;
-
-/**
- * Finish an uninstallation and show Toast on success or failure notification.
- */
-public class UninstallFinish extends BroadcastReceiver {
- private static final String LOG_TAG = UninstallFinish.class.getSimpleName();
-
- private static final String UNINSTALL_FAILURE_CHANNEL = "uninstall failure";
-
- static final String EXTRA_UNINSTALL_ID = "com.android.packageinstaller.extra.UNINSTALL_ID";
- static final String EXTRA_APP_LABEL = "com.android.packageinstaller.extra.APP_LABEL";
-
- @Override
- public void onReceive(Context context, Intent intent) {
- int returnCode = intent.getIntExtra(PackageInstaller.EXTRA_STATUS, 0);
-
- Log.i(LOG_TAG, "Uninstall finished extras=" + intent.getExtras());
-
- if (returnCode == PackageInstaller.STATUS_PENDING_USER_ACTION) {
- context.startActivity(intent.getParcelableExtra(Intent.EXTRA_INTENT));
- return;
- }
-
- int uninstallId = intent.getIntExtra(EXTRA_UNINSTALL_ID, 0);
- ApplicationInfo appInfo = intent.getParcelableExtra(
- PackageUtil.INTENT_ATTR_APPLICATION_INFO);
- String appLabel = intent.getStringExtra(EXTRA_APP_LABEL);
- boolean allUsers = intent.getBooleanExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, false);
-
- NotificationManager notificationManager =
- context.getSystemService(NotificationManager.class);
- UserManager userManager = context.getSystemService(UserManager.class);
-
- NotificationChannel uninstallFailureChannel = new NotificationChannel(
- UNINSTALL_FAILURE_CHANNEL,
- context.getString(R.string.uninstall_failure_notification_channel),
- NotificationManager.IMPORTANCE_DEFAULT);
- notificationManager.createNotificationChannel(uninstallFailureChannel);
-
- Notification.Builder uninstallFailedNotification = new Notification.Builder(context,
- UNINSTALL_FAILURE_CHANNEL);
-
- switch (returnCode) {
- case PackageInstaller.STATUS_SUCCESS:
- notificationManager.cancel(uninstallId);
-
- Toast.makeText(context, context.getString(R.string.uninstall_done_app, appLabel),
- Toast.LENGTH_LONG).show();
- return;
- case PackageInstaller.STATUS_FAILURE_BLOCKED: {
- int legacyStatus = intent.getIntExtra(PackageInstaller.EXTRA_LEGACY_STATUS, 0);
-
- switch (legacyStatus) {
- case PackageManager.DELETE_FAILED_DEVICE_POLICY_MANAGER: {
- IDevicePolicyManager dpm = IDevicePolicyManager.Stub.asInterface(
- ServiceManager.getService(Context.DEVICE_POLICY_SERVICE));
- // Find out if the package is an active admin for some non-current user.
- int myUserId = UserHandle.myUserId();
- UserInfo otherBlockingUser = null;
- for (UserInfo user : userManager.getUsers()) {
- // We only catch the case when the user in question is neither the
- // current user nor its profile.
- if (isProfileOfOrSame(userManager, myUserId, user.id)) {
- continue;
- }
-
- try {
- if (dpm.packageHasActiveAdmins(appInfo.packageName, user.id)) {
- otherBlockingUser = user;
- break;
- }
- } catch (RemoteException e) {
- Log.e(LOG_TAG, "Failed to talk to package manager", e);
- }
- }
- if (otherBlockingUser == null) {
- Log.d(LOG_TAG, "Uninstall failed because " + appInfo.packageName
- + " is a device admin");
-
- addDeviceManagerButton(context, uninstallFailedNotification);
- setBigText(uninstallFailedNotification, context.getString(
- R.string.uninstall_failed_device_policy_manager));
- } else {
- Log.d(LOG_TAG, "Uninstall failed because " + appInfo.packageName
- + " is a device admin of user " + otherBlockingUser);
-
- setBigText(uninstallFailedNotification, String.format(context.getString(
- R.string.uninstall_failed_device_policy_manager_of_user),
- otherBlockingUser.name));
- }
- break;
- }
- case PackageManager.DELETE_FAILED_OWNER_BLOCKED: {
- IPackageManager packageManager = IPackageManager.Stub.asInterface(
- ServiceManager.getService("package"));
-
- List<UserInfo> users = userManager.getUsers();
- int blockingUserId = UserHandle.USER_NULL;
- for (int i = 0; i < users.size(); ++i) {
- final UserInfo user = users.get(i);
- try {
- if (packageManager.getBlockUninstallForUser(appInfo.packageName,
- user.id)) {
- blockingUserId = user.id;
- break;
- }
- } catch (RemoteException e) {
- // Shouldn't happen.
- Log.e(LOG_TAG, "Failed to talk to package manager", e);
- }
- }
-
- int myUserId = UserHandle.myUserId();
- if (isProfileOfOrSame(userManager, myUserId, blockingUserId)) {
- addDeviceManagerButton(context, uninstallFailedNotification);
- } else {
- addManageUsersButton(context, uninstallFailedNotification);
- }
-
- if (blockingUserId == UserHandle.USER_NULL) {
- Log.d(LOG_TAG,
- "Uninstall failed for " + appInfo.packageName + " with code "
- + returnCode + " no blocking user");
- } else if (blockingUserId == UserHandle.USER_SYSTEM) {
- setBigText(uninstallFailedNotification,
- context.getString(R.string.uninstall_blocked_device_owner));
- } else {
- if (allUsers) {
- setBigText(uninstallFailedNotification,
- context.getString(
- R.string.uninstall_all_blocked_profile_owner));
- } else {
- setBigText(uninstallFailedNotification, context.getString(
- R.string.uninstall_blocked_profile_owner));
- }
- }
- break;
- }
- default:
- Log.d(LOG_TAG, "Uninstall blocked for " + appInfo.packageName
- + " with legacy code " + legacyStatus);
- } break;
- }
- default:
- Log.d(LOG_TAG, "Uninstall failed for " + appInfo.packageName + " with code "
- + returnCode);
- break;
- }
-
- uninstallFailedNotification.setContentTitle(
- context.getString(R.string.uninstall_failed_app, appLabel));
- uninstallFailedNotification.setOngoing(false);
- uninstallFailedNotification.setSmallIcon(R.drawable.ic_error);
- notificationManager.notify(uninstallId, uninstallFailedNotification.build());
- }
-
- /**
- * Is a profile part of a user?
- *
- * @param userManager The user manager
- * @param userId The id of the user
- * @param profileId The id of the profile
- *
- * @return If the profile is part of the user or the profile parent of the user
- */
- private boolean isProfileOfOrSame(@NonNull UserManager userManager, int userId, int profileId) {
- if (userId == profileId) {
- return true;
- }
-
- UserInfo parentUser = userManager.getProfileParent(profileId);
- return parentUser != null && parentUser.id == userId;
- }
-
- /**
- * Set big text for the notification.
- *
- * @param builder The builder of the notification
- * @param text The text to set.
- */
- private void setBigText(@NonNull Notification.Builder builder,
- @NonNull CharSequence text) {
- builder.setStyle(new Notification.BigTextStyle().bigText(text));
- }
-
- /**
- * Add a button to the notification that links to the user management.
- *
- * @param context The context the notification is created in
- * @param builder The builder of the notification
- */
- private void addManageUsersButton(@NonNull Context context,
- @NonNull Notification.Builder builder) {
- Intent intent = new Intent(Settings.ACTION_USER_SETTINGS);
- intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_NEW_TASK);
-
- builder.addAction((new Notification.Action.Builder(
- Icon.createWithResource(context, R.drawable.ic_settings_multiuser),
- context.getString(R.string.manage_users),
- PendingIntent.getActivity(context, 0, intent,
- PendingIntent.FLAG_UPDATE_CURRENT))).build());
- }
-
- /**
- * Add a button to the notification that links to the device policy management.
- *
- * @param context The context the notification is created in
- * @param builder The builder of the notification
- */
- private void addDeviceManagerButton(@NonNull Context context,
- @NonNull Notification.Builder builder) {
- Intent intent = new Intent();
- intent.setClassName("com.android.settings",
- "com.android.settings.Settings$DeviceAdminSettingsActivity");
- intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_NEW_TASK);
-
- builder.addAction((new Notification.Action.Builder(
- Icon.createWithResource(context, R.drawable.ic_lock),
- context.getString(R.string.manage_device_administrators),
- PendingIntent.getActivity(context, 0, intent,
- PendingIntent.FLAG_UPDATE_CURRENT))).build());
- }
-}
diff --git a/src/com/android/packageinstaller/UninstallUninstalling.java b/src/com/android/packageinstaller/UninstallUninstalling.java
deleted file mode 100644
index e27186b..0000000
--- a/src/com/android/packageinstaller/UninstallUninstalling.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Copyright (C) 2016 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.packageinstaller;
-
-import android.app.Activity;
-import android.app.ActivityThread;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.Fragment;
-import android.app.FragmentTransaction;
-import android.app.PendingIntent;
-import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.IPackageDeleteObserver2;
-import android.content.pm.PackageInstaller;
-import android.content.pm.PackageManager;
-import android.content.pm.VersionedPackage;
-import android.os.Bundle;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.os.UserHandle;
-import androidx.annotation.Nullable;
-import android.util.Log;
-import android.widget.Toast;
-
-/**
- * Start an uninstallation, show a dialog while uninstalling and return result to the caller.
- */
-public class UninstallUninstalling extends Activity implements
- EventResultPersister.EventResultObserver {
- private static final String LOG_TAG = UninstallUninstalling.class.getSimpleName();
-
- private static final String UNINSTALL_ID = "com.android.packageinstaller.UNINSTALL_ID";
- private static final String BROADCAST_ACTION =
- "com.android.packageinstaller.ACTION_UNINSTALL_COMMIT";
-
- static final String EXTRA_APP_LABEL = "com.android.packageinstaller.extra.APP_LABEL";
-
- private int mUninstallId;
- private ApplicationInfo mAppInfo;
- private IBinder mCallback;
- private boolean mReturnResult;
- private String mLabel;
-
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- setFinishOnTouchOutside(false);
-
- mAppInfo = getIntent().getParcelableExtra(PackageUtil.INTENT_ATTR_APPLICATION_INFO);
- mCallback = getIntent().getIBinderExtra(PackageInstaller.EXTRA_CALLBACK);
- mReturnResult = getIntent().getBooleanExtra(Intent.EXTRA_RETURN_RESULT, false);
- mLabel = getIntent().getStringExtra(EXTRA_APP_LABEL);
-
- try {
- if (savedInstanceState == null) {
- boolean allUsers = getIntent().getBooleanExtra(Intent.EXTRA_UNINSTALL_ALL_USERS,
- false);
- UserHandle user = getIntent().getParcelableExtra(Intent.EXTRA_USER);
-
- // Show dialog, which is the whole UI
- FragmentTransaction transaction = getFragmentManager().beginTransaction();
- Fragment prev = getFragmentManager().findFragmentByTag("dialog");
- if (prev != null) {
- transaction.remove(prev);
- }
- DialogFragment dialog = new UninstallUninstallingFragment();
- dialog.setCancelable(false);
- dialog.show(transaction, "dialog");
-
- mUninstallId = UninstallEventReceiver.addObserver(this,
- EventResultPersister.GENERATE_NEW_ID, this);
-
- Intent broadcastIntent = new Intent(BROADCAST_ACTION);
- broadcastIntent.setFlags(Intent.FLAG_RECEIVER_FOREGROUND);
- broadcastIntent.putExtra(EventResultPersister.EXTRA_ID, mUninstallId);
- broadcastIntent.setPackage(getPackageName());
-
- PendingIntent pendingIntent = PendingIntent.getBroadcast(this, mUninstallId,
- broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT);
-
- try {
- ActivityThread.getPackageManager().getPackageInstaller().uninstall(
- new VersionedPackage(mAppInfo.packageName,
- PackageManager.VERSION_CODE_HIGHEST),
- getPackageName(), allUsers ? PackageManager.DELETE_ALL_USERS : 0,
- pendingIntent.getIntentSender(), user.getIdentifier());
- } catch (RemoteException e) {
- e.rethrowFromSystemServer();
- }
- } else {
- mUninstallId = savedInstanceState.getInt(UNINSTALL_ID);
- UninstallEventReceiver.addObserver(this, mUninstallId, this);
- }
- } catch (EventResultPersister.OutOfIdsException | IllegalArgumentException e) {
- Log.e(LOG_TAG, "Fails to start uninstall", e);
- onResult(PackageInstaller.STATUS_FAILURE, PackageManager.DELETE_FAILED_INTERNAL_ERROR,
- null);
- }
- }
-
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
-
- outState.putInt(UNINSTALL_ID, mUninstallId);
- }
-
- @Override
- public void onBackPressed() {
- // do nothing
- }
-
- @Override
- public void onResult(int status, int legacyStatus, @Nullable String message) {
- if (mCallback != null) {
- // The caller will be informed about the result via a callback
- final IPackageDeleteObserver2 observer = IPackageDeleteObserver2.Stub
- .asInterface(mCallback);
- try {
- observer.onPackageDeleted(mAppInfo.packageName, legacyStatus, message);
- } catch (RemoteException ignored) {
- }
- } else if (mReturnResult) {
- // The caller will be informed about the result and might decide to display it
- Intent result = new Intent();
-
- result.putExtra(Intent.EXTRA_INSTALL_RESULT, legacyStatus);
- setResult(status == PackageInstaller.STATUS_SUCCESS ? Activity.RESULT_OK
- : Activity.RESULT_FIRST_USER, result);
- } else {
- // This is the rare case that the caller did not ask for the result, but wanted to be
- // notified via onActivityResult when the installation finishes
- if (status != PackageInstaller.STATUS_SUCCESS) {
- Toast.makeText(this, getString(R.string.uninstall_failed_app, mLabel),
- Toast.LENGTH_LONG).show();
- }
- }
- finish();
- }
-
- @Override
- protected void onDestroy() {
- UninstallEventReceiver.removeObserver(this, mUninstallId);
-
- super.onDestroy();
- }
-
- /**
- * Dialog that shows that the app is uninstalling.
- */
- public static class UninstallUninstallingFragment extends DialogFragment {
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getActivity());
-
- dialogBuilder.setCancelable(false);
- dialogBuilder.setMessage(getActivity().getString(R.string.uninstalling_app,
- ((UninstallUninstalling) getActivity()).mLabel));
-
- Dialog dialog = dialogBuilder.create();
- dialog.setCanceledOnTouchOutside(false);
-
- return dialog;
- }
- }
-}
diff --git a/src/com/android/packageinstaller/UninstallerActivity.java b/src/com/android/packageinstaller/UninstallerActivity.java
deleted file mode 100755
index d5df9f5..0000000
--- a/src/com/android/packageinstaller/UninstallerActivity.java
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
-**
-** Copyright 2007, 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.packageinstaller;
-
-import static android.app.AppOpsManager.MODE_ALLOWED;
-
-import static com.android.packageinstaller.PackageUtil.getMaxTargetSdkVersionForUid;
-
-import android.Manifest;
-import android.app.Activity;
-import android.app.ActivityManager;
-import android.app.ActivityThread;
-import android.app.AppGlobals;
-import android.app.AppOpsManager;
-import android.app.DialogFragment;
-import android.app.Fragment;
-import android.app.FragmentTransaction;
-import android.app.Notification;
-import android.app.NotificationChannel;
-import android.app.NotificationManager;
-import android.app.PendingIntent;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ActivityInfo;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.IPackageDeleteObserver2;
-import android.content.pm.IPackageManager;
-import android.content.pm.PackageInstaller;
-import android.content.pm.PackageManager;
-import android.content.pm.VersionedPackage;
-import android.content.res.Configuration;
-import android.net.Uri;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.os.ServiceManager;
-import android.os.UserHandle;
-import android.os.UserManager;
-import androidx.annotation.NonNull;
-import androidx.annotation.StringRes;
-import android.util.Log;
-
-import com.android.packageinstaller.handheld.ErrorDialogFragment;
-import com.android.packageinstaller.handheld.UninstallAlertDialogFragment;
-import com.android.packageinstaller.television.ErrorFragment;
-import com.android.packageinstaller.television.UninstallAlertFragment;
-import com.android.packageinstaller.television.UninstallAppProgress;
-
-import java.util.List;
-
-/*
- * This activity presents UI to uninstall an application. Usually launched with intent
- * Intent.ACTION_UNINSTALL_PKG_COMMAND and attribute
- * com.android.packageinstaller.PackageName set to the application package name
- */
-public class UninstallerActivity extends Activity {
- private static final String TAG = "UninstallerActivity";
-
- private static final String UNINSTALLING_CHANNEL = "uninstalling";
-
- public static class DialogInfo {
- public ApplicationInfo appInfo;
- public ActivityInfo activityInfo;
- public boolean allUsers;
- public UserHandle user;
- public IBinder callback;
- }
-
- private String mPackageName;
- private DialogInfo mDialogInfo;
-
- @Override
- public void onCreate(Bundle icicle) {
- // Never restore any state, esp. never create any fragments. The data in the fragment might
- // be stale, if e.g. the app was uninstalled while the activity was destroyed.
- super.onCreate(null);
-
- try {
- int callingUid = ActivityManager.getService().getLaunchedFromUid(getActivityToken());
-
- String callingPackage = getPackageNameForUid(callingUid);
- if (callingPackage == null) {
- Log.e(TAG, "Package not found for originating uid " + callingUid);
- setResult(Activity.RESULT_FIRST_USER);
- finish();
- return;
- } else {
- AppOpsManager appOpsManager = (AppOpsManager) getSystemService(
- Context.APP_OPS_SERVICE);
- if (appOpsManager.noteOpNoThrow(
- AppOpsManager.OPSTR_REQUEST_DELETE_PACKAGES, callingUid, callingPackage)
- != MODE_ALLOWED) {
- Log.e(TAG, "Install from uid " + callingUid + " disallowed by AppOps");
- setResult(Activity.RESULT_FIRST_USER);
- finish();
- return;
- }
- }
-
- if (getMaxTargetSdkVersionForUid(this, callingUid)
- >= Build.VERSION_CODES.P && AppGlobals.getPackageManager().checkUidPermission(
- Manifest.permission.REQUEST_DELETE_PACKAGES, callingUid)
- != PackageManager.PERMISSION_GRANTED
- && AppGlobals.getPackageManager().checkUidPermission(
- Manifest.permission.DELETE_PACKAGES, callingUid)
- != PackageManager.PERMISSION_GRANTED) {
- Log.e(TAG, "Uid " + callingUid + " does not have "
- + Manifest.permission.REQUEST_DELETE_PACKAGES + " or "
- + Manifest.permission.DELETE_PACKAGES);
-
- setResult(Activity.RESULT_FIRST_USER);
- finish();
- return;
- }
- } catch (RemoteException ex) {
- // Cannot reach Package/ActivityManager. Aborting uninstall.
- Log.e(TAG, "Could not determine the launching uid.");
-
- setResult(Activity.RESULT_FIRST_USER);
- finish();
- return;
- }
-
- // Get intent information.
- // We expect an intent with URI of the form package://<packageName>#<className>
- // className is optional; if specified, it is the activity the user chose to uninstall
- final Intent intent = getIntent();
- final Uri packageUri = intent.getData();
- if (packageUri == null) {
- Log.e(TAG, "No package URI in intent");
- showAppNotFound();
- return;
- }
- mPackageName = packageUri.getEncodedSchemeSpecificPart();
- if (mPackageName == null) {
- Log.e(TAG, "Invalid package name in URI: " + packageUri);
- showAppNotFound();
- return;
- }
-
- final IPackageManager pm = IPackageManager.Stub.asInterface(
- ServiceManager.getService("package"));
-
- mDialogInfo = new DialogInfo();
-
- mDialogInfo.allUsers = intent.getBooleanExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, false);
- if (mDialogInfo.allUsers && !UserManager.get(this).isAdminUser()) {
- Log.e(TAG, "Only admin user can request uninstall for all users");
- showUserIsNotAllowed();
- return;
- }
- mDialogInfo.user = intent.getParcelableExtra(Intent.EXTRA_USER);
- if (mDialogInfo.user == null) {
- mDialogInfo.user = android.os.Process.myUserHandle();
- } else {
- UserManager userManager = (UserManager) getSystemService(Context.USER_SERVICE);
- List<UserHandle> profiles = userManager.getUserProfiles();
- if (!profiles.contains(mDialogInfo.user)) {
- Log.e(TAG, "User " + android.os.Process.myUserHandle() + " can't request uninstall "
- + "for user " + mDialogInfo.user);
- showUserIsNotAllowed();
- return;
- }
- }
-
- mDialogInfo.callback = intent.getIBinderExtra(PackageInstaller.EXTRA_CALLBACK);
-
- try {
- mDialogInfo.appInfo = pm.getApplicationInfo(mPackageName,
- PackageManager.MATCH_ANY_USER, mDialogInfo.user.getIdentifier());
- } catch (RemoteException e) {
- Log.e(TAG, "Unable to get packageName. Package manager is dead?");
- }
-
- if (mDialogInfo.appInfo == null) {
- Log.e(TAG, "Invalid packageName: " + mPackageName);
- showAppNotFound();
- return;
- }
-
- // The class name may have been specified (e.g. when deleting an app from all apps)
- final String className = packageUri.getFragment();
- if (className != null) {
- try {
- mDialogInfo.activityInfo = pm.getActivityInfo(
- new ComponentName(mPackageName, className), 0,
- mDialogInfo.user.getIdentifier());
- } catch (RemoteException e) {
- Log.e(TAG, "Unable to get className. Package manager is dead?");
- // Continue as the ActivityInfo isn't critical.
- }
- }
-
- showConfirmationDialog();
- }
-
- public DialogInfo getDialogInfo() {
- return mDialogInfo;
- }
-
- private void showConfirmationDialog() {
- if (isTv()) {
- showContentFragment(new UninstallAlertFragment(), 0, 0);
- } else {
- showDialogFragment(new UninstallAlertDialogFragment(), 0, 0);
- }
- }
-
- private void showAppNotFound() {
- if (isTv()) {
- showContentFragment(new ErrorFragment(), R.string.app_not_found_dlg_title,
- R.string.app_not_found_dlg_text);
- } else {
- showDialogFragment(new ErrorDialogFragment(), R.string.app_not_found_dlg_title,
- R.string.app_not_found_dlg_text);
- }
- }
-
- private void showUserIsNotAllowed() {
- if (isTv()) {
- showContentFragment(new ErrorFragment(),
- R.string.user_is_not_allowed_dlg_title, R.string.user_is_not_allowed_dlg_text);
- } else {
- showDialogFragment(new ErrorDialogFragment(), 0, R.string.user_is_not_allowed_dlg_text);
- }
- }
-
- private void showGenericError() {
- if (isTv()) {
- showContentFragment(new ErrorFragment(),
- R.string.generic_error_dlg_title, R.string.generic_error_dlg_text);
- } else {
- showDialogFragment(new ErrorDialogFragment(), 0, R.string.generic_error_dlg_text);
- }
- }
-
- private boolean isTv() {
- return (getResources().getConfiguration().uiMode & Configuration.UI_MODE_TYPE_MASK)
- == Configuration.UI_MODE_TYPE_TELEVISION;
- }
-
- private void showContentFragment(@NonNull Fragment fragment, @StringRes int title,
- @StringRes int text) {
- Bundle args = new Bundle();
- args.putInt(ErrorFragment.TITLE, title);
- args.putInt(ErrorFragment.TEXT, text);
- fragment.setArguments(args);
-
- getFragmentManager().beginTransaction()
- .replace(android.R.id.content, fragment)
- .commit();
- }
-
- private void showDialogFragment(@NonNull DialogFragment fragment,
- @StringRes int title, @StringRes int text) {
- FragmentTransaction ft = getFragmentManager().beginTransaction();
- Fragment prev = getFragmentManager().findFragmentByTag("dialog");
- if (prev != null) {
- ft.remove(prev);
- }
-
- Bundle args = new Bundle();
- if (title != 0) {
- args.putInt(ErrorDialogFragment.TITLE, title);
- }
- args.putInt(ErrorDialogFragment.TEXT, text);
-
- fragment.setArguments(args);
- fragment.show(ft, "dialog");
- }
-
- public void startUninstallProgress() {
- boolean returnResult = getIntent().getBooleanExtra(Intent.EXTRA_RETURN_RESULT, false);
- CharSequence label = mDialogInfo.appInfo.loadSafeLabel(getPackageManager());
-
- if (isTv()) {
- Intent newIntent = new Intent(Intent.ACTION_VIEW);
- newIntent.putExtra(Intent.EXTRA_USER, mDialogInfo.user);
- newIntent.putExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, mDialogInfo.allUsers);
- newIntent.putExtra(PackageInstaller.EXTRA_CALLBACK, mDialogInfo.callback);
- newIntent.putExtra(PackageUtil.INTENT_ATTR_APPLICATION_INFO, mDialogInfo.appInfo);
-
- if (returnResult) {
- newIntent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
- newIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
- }
-
- newIntent.setClass(this, UninstallAppProgress.class);
- startActivity(newIntent);
- } else if (returnResult || mDialogInfo.callback != null || getCallingActivity() != null) {
- Intent newIntent = new Intent(this, UninstallUninstalling.class);
-
- newIntent.putExtra(Intent.EXTRA_USER, mDialogInfo.user);
- newIntent.putExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, mDialogInfo.allUsers);
- newIntent.putExtra(PackageUtil.INTENT_ATTR_APPLICATION_INFO, mDialogInfo.appInfo);
- newIntent.putExtra(UninstallUninstalling.EXTRA_APP_LABEL, label);
- newIntent.putExtra(PackageInstaller.EXTRA_CALLBACK, mDialogInfo.callback);
-
- if (returnResult) {
- newIntent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
- }
-
- if (returnResult || getCallingActivity() != null) {
- newIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
- }
-
- startActivity(newIntent);
- } else {
- int uninstallId;
- try {
- uninstallId = UninstallEventReceiver.getNewId(this);
- } catch (EventResultPersister.OutOfIdsException e) {
- showGenericError();
- return;
- }
-
- Intent broadcastIntent = new Intent(this, UninstallFinish.class);
-
- broadcastIntent.setFlags(Intent.FLAG_RECEIVER_FOREGROUND);
- broadcastIntent.putExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, mDialogInfo.allUsers);
- broadcastIntent.putExtra(PackageUtil.INTENT_ATTR_APPLICATION_INFO, mDialogInfo.appInfo);
- broadcastIntent.putExtra(UninstallFinish.EXTRA_APP_LABEL, label);
- broadcastIntent.putExtra(UninstallFinish.EXTRA_UNINSTALL_ID, uninstallId);
-
- PendingIntent pendingIntent = PendingIntent.getBroadcast(this, uninstallId,
- broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT);
-
- NotificationManager notificationManager = getSystemService(NotificationManager.class);
- NotificationChannel uninstallingChannel = new NotificationChannel(UNINSTALLING_CHANNEL,
- getString(R.string.uninstalling_notification_channel),
- NotificationManager.IMPORTANCE_MIN);
- notificationManager.createNotificationChannel(uninstallingChannel);
-
- Notification uninstallingNotification =
- (new Notification.Builder(this, UNINSTALLING_CHANNEL))
- .setSmallIcon(R.drawable.ic_remove).setProgress(0, 1, true)
- .setContentTitle(getString(R.string.uninstalling_app, label)).setOngoing(true)
- .build();
-
- notificationManager.notify(uninstallId, uninstallingNotification);
-
- try {
- Log.i(TAG, "Uninstalling extras=" + broadcastIntent.getExtras());
-
- ActivityThread.getPackageManager().getPackageInstaller().uninstall(
- new VersionedPackage(mDialogInfo.appInfo.packageName,
- PackageManager.VERSION_CODE_HIGHEST),
- getPackageName(), mDialogInfo.allUsers
- ? PackageManager.DELETE_ALL_USERS : 0,
- pendingIntent.getIntentSender(), mDialogInfo.user.getIdentifier());
- } catch (Exception e) {
- notificationManager.cancel(uninstallId);
-
- Log.e(TAG, "Cannot start uninstall", e);
- showGenericError();
- }
- }
- }
-
- public void dispatchAborted() {
- if (mDialogInfo != null && mDialogInfo.callback != null) {
- final IPackageDeleteObserver2 observer = IPackageDeleteObserver2.Stub.asInterface(
- mDialogInfo.callback);
- try {
- observer.onPackageDeleted(mPackageName,
- PackageManager.DELETE_FAILED_ABORTED, "Cancelled by user");
- } catch (RemoteException ignored) {
- }
- }
- }
-
- private String getPackageNameForUid(int sourceUid) {
- String[] packagesForUid = getPackageManager().getPackagesForUid(sourceUid);
- if (packagesForUid == null) {
- return null;
- }
- return packagesForUid[0];
- }
-}
diff --git a/src/com/android/packageinstaller/auto/AutoSettingsFrameFragment.java b/src/com/android/packageinstaller/auto/AutoSettingsFrameFragment.java
new file mode 100644
index 0000000..ea8987e
--- /dev/null
+++ b/src/com/android/packageinstaller/auto/AutoSettingsFrameFragment.java
@@ -0,0 +1,121 @@
+/*
+ * 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.packageinstaller.auto;
+
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.preference.PreferenceFragmentCompat;
+
+import com.android.permissioncontroller.R;
+
+/** Common settings frame for car related settings in permission controller. */
+public abstract class AutoSettingsFrameFragment extends PreferenceFragmentCompat {
+
+ private TextView mLabelView;
+ private ProgressBar mProgressBar;
+ private Button mAction;
+
+ private CharSequence mLabel;
+ private boolean mIsLoading;
+ private CharSequence mActionLabel;
+ private View.OnClickListener mActionOnClickListener;
+
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
+ @Nullable Bundle savedInstanceState) {
+ View rootView = super.onCreateView(inflater, container, savedInstanceState);
+
+ View backButton = rootView.findViewById(R.id.back_button);
+ backButton.setOnClickListener(v -> getActivity().onBackPressed());
+
+ mLabelView = rootView.findViewById(R.id.label);
+ updateHeaderLabel();
+
+ mProgressBar = rootView.findViewById(R.id.progress_bar);
+ updateLoading();
+
+ mAction = rootView.findViewById(R.id.action);
+ updateAction();
+
+ return rootView;
+ }
+
+ /** Sets the header text of this fragment. */
+ public void setHeaderLabel(CharSequence label) {
+ mLabel = label;
+ updateHeaderLabel();
+ }
+
+ /** Gets the header text of this fragment. */
+ public CharSequence getHeaderLabel() {
+ return mLabel;
+ }
+
+ private void updateHeaderLabel() {
+ if (mLabelView != null) {
+ mLabelView.setText(mLabel);
+ }
+ }
+
+ /**
+ * Shows a progress view while content is loading.
+ *
+ * @param isLoading {@code true} if the progress view should be visible.
+ */
+ public void setLoading(boolean isLoading) {
+ mIsLoading = isLoading;
+ updateLoading();
+ }
+
+ private void updateLoading() {
+ if (mProgressBar != null) {
+ mProgressBar.setVisibility(mIsLoading ? View.VISIBLE : View.GONE);
+ }
+ }
+
+ /**
+ * Shows a button with the given {@code label} that when clicked will call the given {@code
+ * onClickListener}.
+ */
+ public void setAction(CharSequence label, View.OnClickListener onClickListener) {
+ mActionLabel = label;
+ mActionOnClickListener = onClickListener;
+ updateAction();
+ }
+
+ private void updateAction() {
+ if (mAction == null) {
+ return;
+ }
+ if (!TextUtils.isEmpty(mActionLabel) && mActionOnClickListener != null) {
+ mAction.setText(mActionLabel);
+ mAction.setOnClickListener(mActionOnClickListener);
+ mAction.setVisibility(View.VISIBLE);
+ } else {
+ mAction.setVisibility(View.GONE);
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/handheld/ErrorDialogFragment.java b/src/com/android/packageinstaller/handheld/ErrorDialogFragment.java
deleted file mode 100644
index 4ec6a2d..0000000
--- a/src/com/android/packageinstaller/handheld/ErrorDialogFragment.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2016 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.packageinstaller.handheld;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.content.DialogInterface;
-import android.os.Bundle;
-
-import com.android.packageinstaller.UninstallerActivity;
-
-public class ErrorDialogFragment extends DialogFragment {
- public static final String TITLE = "com.android.packageinstaller.arg.title";
- public static final String TEXT = "com.android.packageinstaller.arg.text";
-
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- AlertDialog.Builder b = new AlertDialog.Builder(getActivity())
- .setMessage(getArguments().getInt(TEXT))
- .setPositiveButton(android.R.string.ok, null);
-
- if (getArguments().containsKey(TITLE)) {
- b.setTitle(getArguments().getInt(TITLE));
- }
-
- return b.create();
- }
-
- @Override
- public void onDismiss(DialogInterface dialog) {
- super.onDismiss(dialog);
- if (isAdded()) {
- if (getActivity() instanceof UninstallerActivity) {
- ((UninstallerActivity) getActivity()).dispatchAborted();
- }
-
- getActivity().setResult(Activity.RESULT_FIRST_USER);
- getActivity().finish();
- }
- }
-}
diff --git a/src/com/android/packageinstaller/handheld/UninstallAlertDialogFragment.java b/src/com/android/packageinstaller/handheld/UninstallAlertDialogFragment.java
deleted file mode 100644
index e0ca74e..0000000
--- a/src/com/android/packageinstaller/handheld/UninstallAlertDialogFragment.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) 2016 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.packageinstaller.handheld;
-
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.content.DialogInterface;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.UserInfo;
-import android.os.Bundle;
-import android.os.UserManager;
-
-import com.android.packageinstaller.R;
-import com.android.packageinstaller.UninstallerActivity;
-
-public class UninstallAlertDialogFragment extends DialogFragment implements
- DialogInterface.OnClickListener {
-
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- final PackageManager pm = getActivity().getPackageManager();
- final UninstallerActivity.DialogInfo dialogInfo =
- ((UninstallerActivity) getActivity()).getDialogInfo();
- final CharSequence appLabel = dialogInfo.appInfo.loadSafeLabel(pm);
- AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getActivity());
- StringBuilder messageBuilder = new StringBuilder();
-
- // If the Activity label differs from the App label, then make sure the user
- // knows the Activity belongs to the App being uninstalled.
- if (dialogInfo.activityInfo != null) {
- final CharSequence activityLabel = dialogInfo.activityInfo.loadSafeLabel(pm);
- if (!activityLabel.equals(appLabel)) {
- messageBuilder.append(
- getString(R.string.uninstall_activity_text, activityLabel));
- messageBuilder.append(" ").append(appLabel).append(".\n\n");
- }
- }
-
- final boolean isUpdate =
- ((dialogInfo.appInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0);
- UserManager userManager = UserManager.get(getActivity());
- if (isUpdate) {
- if (isSingleUser(userManager)) {
- messageBuilder.append(getString(R.string.uninstall_update_text));
- } else {
- messageBuilder.append(getString(R.string.uninstall_update_text_multiuser));
- }
- } else {
- if (dialogInfo.allUsers && !isSingleUser(userManager)) {
- messageBuilder.append(getString(R.string.uninstall_application_text_all_users));
- } else if (!dialogInfo.user.equals(android.os.Process.myUserHandle())) {
- UserInfo userInfo = userManager.getUserInfo(dialogInfo.user.getIdentifier());
- messageBuilder.append(
- getString(R.string.uninstall_application_text_user, userInfo.name));
- } else {
- messageBuilder.append(getString(R.string.uninstall_application_text));
- }
- }
-
- dialogBuilder.setTitle(appLabel);
- dialogBuilder.setPositiveButton(android.R.string.ok, this);
- dialogBuilder.setNegativeButton(android.R.string.cancel, this);
- dialogBuilder.setMessage(messageBuilder.toString());
- return dialogBuilder.create();
- }
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- if (which == Dialog.BUTTON_POSITIVE) {
- ((UninstallerActivity) getActivity()).startUninstallProgress();
- } else {
- ((UninstallerActivity) getActivity()).dispatchAborted();
- }
- }
-
- @Override
- public void onDismiss(DialogInterface dialog) {
- super.onDismiss(dialog);
- if (isAdded()) {
- getActivity().finish();
- }
- }
-
- /**
- * Returns whether there is only one user on this device, not including
- * the system-only user.
- */
- private boolean isSingleUser(UserManager userManager) {
- final int userCount = userManager.getUserCount();
- return userCount == 1
- || (UserManager.isSplitSystemUser() && userCount == 2);
- }
-}
diff --git a/src/com/android/packageinstaller/incident/ApprovalReceiver.java b/src/com/android/packageinstaller/incident/ApprovalReceiver.java
new file mode 100644
index 0000000..60a303e
--- /dev/null
+++ b/src/com/android/packageinstaller/incident/ApprovalReceiver.java
@@ -0,0 +1,54 @@
+/*
+ * 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.packageinstaller.incident;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.IncidentManager;
+
+/**
+ * BroadcastReceiver to handle clicking on the approval and rejection buttons
+ * in the notification.
+ */
+public class ApprovalReceiver extends BroadcastReceiver {
+ /**
+ * Action for an approval.
+ */
+ public static final String ACTION_APPROVE = "com.android.packageinstaller.incident.APPROVE";
+
+ /**
+ * Action for a denial.
+ */
+ public static final String ACTION_DENY = "com.android.packageinstaller.incident.DENY";
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ final Uri uri = intent.getData();
+ if (uri != null) {
+ final IncidentManager incidentManager = context.getSystemService(IncidentManager.class);
+ if (ACTION_APPROVE.equals(intent.getAction())) {
+ incidentManager.approveReport(uri);
+ } else if (ACTION_DENY.equals(intent.getAction())) {
+ incidentManager.denyReport(uri);
+ }
+ }
+ PendingList.getInstance().updateState(context, PendingList.FLAG_FROM_NOTIFICATION);
+ }
+}
+
diff --git a/src/com/android/packageinstaller/incident/ConfirmationActivity.java b/src/com/android/packageinstaller/incident/ConfirmationActivity.java
new file mode 100644
index 0000000..dcfe88a
--- /dev/null
+++ b/src/com/android/packageinstaller/incident/ConfirmationActivity.java
@@ -0,0 +1,245 @@
+/*
+ * 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.packageinstaller.incident;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
+import android.content.DialogInterface.OnDismissListener;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.IncidentManager;
+import android.text.Spannable;
+import android.text.SpannableString;
+import android.text.style.BulletSpan;
+import android.util.Log;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.android.permissioncontroller.R;
+
+import java.util.ArrayList;
+
+/**
+ * Confirmation dialog for approving an incident or bug report for sharing off the device.
+ */
+public class ConfirmationActivity extends Activity implements OnClickListener, OnDismissListener {
+ private static final String TAG = "ConfirmationActivity";
+
+ /**
+ * Currently displaying activity.
+ */
+ private static ConfirmationActivity sCurrentActivity;
+
+ /**
+ * Currently displaying uri.
+ */
+ private static Uri sCurrentUri;
+
+ /**
+ * If this activity is running in the current process, call finish() on it.
+ */
+ public static void finishCurrent() {
+ if (sCurrentActivity != null) {
+ sCurrentActivity.finish();
+ }
+ }
+
+ /**
+ * If the activity is in the resumed state, then record the Uri for the current
+ * one, so PendingList can skip re-showing the same one.
+ */
+ public static Uri getCurrentUri() {
+ return sCurrentUri;
+ }
+
+ /**
+ * Create the activity.
+ */
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ final Formatting formatting = new Formatting(this);
+
+ final Uri uri = getIntent().getData();
+ Log.d(TAG, "uri=" + uri);
+ if (uri == null) {
+ Log.w(TAG, "No uri in intent: " + getIntent());
+ finish();
+ return;
+ }
+
+ final IncidentManager.PendingReport pending = new IncidentManager.PendingReport(uri);
+ final String appLabel = formatting.getAppLabel(pending.getRequestingPackage());
+
+ final Resources res = getResources();
+
+ ReportDetails details;
+ try {
+ details = ReportDetails.parseIncidentReport(this, uri);
+ } catch (ReportDetails.ParseException ex) {
+ Log.w("Rejecting report because it couldn't be parsed", ex);
+ // If there was an error in the input we will just summarily reject the upload,
+ // since we can't get proper approval. (Zero-length images or reasons means that
+ // we will proceed with the imageless consent dialog).
+ final IncidentManager incidentManager = getSystemService(IncidentManager.class);
+ incidentManager.denyReport(getIntent().getData());
+
+ // Show a message to the user saying... nevermind.
+ new AlertDialog.Builder(this)
+ .setTitle(R.string.incident_report_dialog_title)
+ .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ finish();
+ }
+ })
+ .setMessage(getString(R.string.incident_report_error_dialog_text, appLabel))
+ .setOnDismissListener(this)
+ .show();
+ return;
+
+ }
+
+ final View content = getLayoutInflater().inflate(R.layout.incident_confirmation,
+ null);
+
+ final ArrayList<String> reasons = details.getReasons();
+ final int reasonsSize = reasons.size();
+ if (reasonsSize > 0) {
+ content.findViewById(R.id.reasonIntro).setVisibility(View.VISIBLE);
+
+ final TextView reasonTextView = (TextView) content.findViewById(R.id.reasons);
+ reasonTextView.setVisibility(View.VISIBLE);
+
+ final int bulletSize =
+ (int) (res.getDimension(R.dimen.incident_reason_bullet_size) + 0.5f);
+ final int bulletIndent =
+ (int) (res.getDimension(R.dimen.incident_reason_bullet_indent) + 0.5f);
+ final int bulletColor =
+ getColor(R.color.incident_reason_bullet_color);
+
+ final StringBuilder text = new StringBuilder();
+ for (int i = 0; i < reasonsSize; i++) {
+ text.append(reasons.get(i));
+ if (i != reasonsSize - 1) {
+ text.append("\n");
+ }
+ }
+ final SpannableString spannable = new SpannableString(text.toString());
+ int spanStart = 0;
+ for (int i = 0; i < reasonsSize; i++) {
+ final int length = reasons.get(i).length();
+ spannable.setSpan(new BulletSpan(bulletIndent, bulletColor, bulletSize),
+ spanStart, spanStart + length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+ spanStart += length + 1;
+ }
+
+ reasonTextView.setText(spannable);
+ }
+
+ final String message = getString(R.string.incident_report_dialog_text,
+ appLabel,
+ formatting.getDate(pending.getTimestamp()),
+ formatting.getTime(pending.getTimestamp()),
+ appLabel);
+ ((TextView) content.findViewById(R.id.message)).setText(message);
+
+ final ArrayList<Drawable> images = details.getImages();
+ final int imagesSize = images.size();
+ if (imagesSize > 0) {
+ content.findViewById(R.id.imageScrollView).setVisibility(View.VISIBLE);
+
+ final LinearLayout imageList = (LinearLayout) content.findViewById(R.id.imageList);
+
+ final int width = res.getDimensionPixelSize(R.dimen.incident_image_width);
+ final int height = res.getDimensionPixelSize(R.dimen.incident_image_height);
+
+ for (int i = 0; i < imagesSize; i++) {
+ final Drawable drawable = images.get(i);
+ final ImageView imageView = new ImageView(this);
+ imageView.setImageDrawable(images.get(i));
+ imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
+
+ imageList.addView(imageView, new LinearLayout.LayoutParams(width, height));
+ }
+ }
+
+ new AlertDialog.Builder(this)
+ .setTitle(R.string.incident_report_dialog_title)
+ .setPositiveButton(R.string.incident_report_dialog_allow_label, this)
+ .setNegativeButton(R.string.incident_report_dialog_deny_label, this)
+ .setOnDismissListener(this)
+ .setView(content)
+ .show();
+ }
+
+ /**
+ * Activity lifecycle callback. Now visible.
+ */
+ @Override
+ protected void onStart() {
+ super.onStart();
+ sCurrentActivity = this;
+ sCurrentUri = getIntent().getData();
+ }
+
+ /**
+ * Activity lifecycle callback. Now not visible.
+ */
+ @Override
+ protected void onStop() {
+ super.onStop();
+ sCurrentActivity = null;
+ sCurrentUri = null;
+ }
+
+ /**
+ * Dialog canceled.
+ */
+ @Override
+ public void onDismiss(DialogInterface dialog) {
+ finish();
+ }
+
+ /**
+ * Explicit button click.
+ */
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ final IncidentManager incidentManager = getSystemService(IncidentManager.class);
+
+ switch (which) {
+ case DialogInterface.BUTTON_POSITIVE:
+ incidentManager.approveReport(getIntent().getData());
+ PendingList.getInstance().updateState(this, 0);
+ break;
+ case DialogInterface.BUTTON_NEGATIVE:
+ incidentManager.denyReport(getIntent().getData());
+ PendingList.getInstance().updateState(this, 0);
+ break;
+ }
+ finish();
+ }
+}
+
diff --git a/src/com/android/packageinstaller/incident/ConfirmationReceiver.java b/src/com/android/packageinstaller/incident/ConfirmationReceiver.java
new file mode 100644
index 0000000..5c60773
--- /dev/null
+++ b/src/com/android/packageinstaller/incident/ConfirmationReceiver.java
@@ -0,0 +1,33 @@
+/*
+ * 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.packageinstaller.incident;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+
+/**
+ * BroadcastReceiver to handle posting a notification indicating that an app would
+ * like access to a bug or incident report.
+ */
+public class ConfirmationReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ PendingList.getInstance().updateState(context, 0);
+ }
+}
+
diff --git a/src/com/android/packageinstaller/incident/Formatting.java b/src/com/android/packageinstaller/incident/Formatting.java
new file mode 100644
index 0000000..8868305
--- /dev/null
+++ b/src/com/android/packageinstaller/incident/Formatting.java
@@ -0,0 +1,74 @@
+/*
+ * 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.packageinstaller.incident;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+
+import com.android.packageinstaller.permission.utils.Utils;
+
+import java.text.DateFormat;
+import java.util.Date;
+
+/**
+ * Utility class for formatting the incident report confirmations.
+ */
+public class Formatting {
+ private final Context mContext;
+ private final PackageManager mPm;
+ private final DateFormat mDateFormat;
+ private final DateFormat mTimeFormat;
+
+ /**
+ * Constructor. This object keeps the context.
+ */
+ Formatting(Context context) {
+ mContext = context;
+ mPm = context.getPackageManager();
+ mDateFormat = android.text.format.DateFormat.getDateFormat(context);
+ mTimeFormat = android.text.format.DateFormat.getTimeFormat(context);
+ }
+
+ /**
+ * Get the name to show the user for an application, given the package name.
+ * If the application can't be found, returns null.
+ */
+ String getAppLabel(String pkg) {
+ ApplicationInfo app;
+ try {
+ app = mPm.getApplicationInfo(pkg, 0);
+ } catch (PackageManager.NameNotFoundException ex) {
+ return null;
+ }
+ return Utils.getAppLabel(app, mContext);
+ }
+
+ /**
+ * Format the date portion of a {@link System.currentTimeMillis} as a user-visible string.
+ */
+ String getDate(long wallTimeMs) {
+ return mDateFormat.format(new Date(wallTimeMs));
+ }
+
+ /**
+ * Format the time portion of a {@link System.currentTimeMillis} as a user-visible string.
+ */
+ String getTime(long wallTimeMs) {
+ return mTimeFormat.format(new Date(wallTimeMs));
+ }
+}
diff --git a/src/com/android/packageinstaller/incident/PendingList.java b/src/com/android/packageinstaller/incident/PendingList.java
new file mode 100644
index 0000000..5af2204
--- /dev/null
+++ b/src/com/android/packageinstaller/incident/PendingList.java
@@ -0,0 +1,336 @@
+/*
+ * Copyright (C) 2016 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.packageinstaller.incident;
+
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.IncidentManager;
+import android.util.ArraySet;
+import android.util.Log;
+
+import com.android.packageinstaller.Constants;
+import com.android.permissioncontroller.R;
+
+import java.text.Collator;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Represents the current list of pending records.
+ */
+class PendingList {
+ private static final String TAG = "PermissionController.incident";
+
+ /**
+ * Flag for {@link #UpdateState} to flag whether this update is coming from the
+ * notification handling. If it is, then no dialogs will be shown.
+ */
+ static final int FLAG_FROM_NOTIFICATION = 0x1;
+
+ /**
+ * Shared preferences file name.
+ */
+ private static final String SHARED_PREFS_NAME =
+ "com.android.packageinstaller.incident.PendingList";
+
+ /**
+ * Key for the list of currently showing notifications.
+ */
+ private static final String SHARED_PREFS_KEY_NOTIFICATIONS = "notifications";
+
+ /**
+ * Singleton instance.
+ */
+ private static final PendingList sInstance = new PendingList();
+
+ /**
+ * Date format that will sort lexicographical, so we can have our notifications sorted.
+ */
+ private static final SimpleDateFormat sDateFormatter =
+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
+
+ /**
+ * List of currently pending records.
+ */
+ private static class Rec {
+ /**
+ * Constructor.
+ */
+ Rec(IncidentManager.PendingReport r, String l) {
+ this.report = r;
+ this.label = l;
+ }
+
+ /**
+ * The incident report to show.
+ */
+ public final IncidentManager.PendingReport report;
+
+ /**
+ * The user-visible name of the entry.
+ */
+ public final String label;
+ }
+
+ /**
+ * Class to update the state. Holds the Context, and other system services for
+ * the duration of the update.
+ */
+ private static class Updater {
+ private final Context mContext;
+ private final int mFlags;
+ private final NotificationManager mNm;
+ private final Formatting mFormatting;
+ private Collator mCollator;
+
+ /**
+ * Constructor.
+ */
+ Updater(Context context, int flags) {
+ mContext = context;
+ mFlags = flags;
+ mNm = context.getSystemService(NotificationManager.class);
+ mFormatting = new Formatting(context);
+ mCollator = Collator.getInstance(
+ context.getResources().getConfiguration().getLocales().get(0));
+ }
+
+ /**
+ * Perform the update.
+ */
+ void updateState() {
+ final IncidentManager incidentManager =
+ mContext.getSystemService(IncidentManager.class);
+ final List<IncidentManager.PendingReport> reports = incidentManager.getPendingReports();
+
+ // Load whatever we previously displayed. This may result in some spurious
+ // cancel calls across reboots... but that's not an actual problem.
+ final SharedPreferences prefs = mContext.getSharedPreferences(SHARED_PREFS_NAME,
+ Context.MODE_PRIVATE);
+ final Set<String> prevNotifications =
+ prefs.getStringSet(SHARED_PREFS_KEY_NOTIFICATIONS, null);
+ final ArraySet<String> remainingNotifications = new ArraySet<String>();
+ if (prevNotifications != null) {
+ for (final String s: prevNotifications) {
+ remainingNotifications.add(s);
+ }
+ }
+ final ArraySet<String> currentNotifications = new ArraySet<String>();
+
+ // Load everything we will need for display
+ final List<Rec> recs = new ArrayList();
+ final int recCount = reports.size();
+ for (int i = 0; i < recCount; i++) {
+ final IncidentManager.PendingReport report = reports.get(i);
+ final String label = mFormatting.getAppLabel(report.getRequestingPackage());
+ if (label == null) {
+ Log.w(TAG, "Application (or its label) could not be found. Summarily "
+ + " denying report: " + report.getRequestingPackage());
+ incidentManager.denyReport(report.getUri());
+ continue;
+ }
+
+ recs.add(new Rec(report, label));
+ }
+
+ // Sort by timestamp, then by label name (for a stable ordering, with the assumption
+ // that apps only post one at a time).
+ recs.sort((a, b) -> {
+ long val = a.report.getTimestamp() - b.report.getTimestamp();
+ if (val == 0) {
+ return mCollator.compare(a.label, b.label);
+ } else {
+ return val < 0 ? -1 : 1;
+ }
+ });
+
+ // Collect what we are going to do.
+ Rec firstDialog = null;
+ final List<Rec> notificationRecs = new ArrayList();
+ final int notificationCount = recs.size();
+ for (int i = 0; i < notificationCount; i++) {
+ final Rec rec = recs.get(i);
+ notificationRecs.add(rec);
+ final String uri = rec.report.getUri().toString();
+ remainingNotifications.remove(uri);
+ currentNotifications.add(uri);
+ if ((rec.report.getFlags() & IncidentManager.FLAG_CONFIRMATION_DIALOG) != 0) {
+ if (firstDialog == null) {
+ firstDialog = rec;
+ }
+ }
+ }
+
+ if (false) {
+ Log.d(TAG, "PermissionController pending list plan ... {");
+ Log.d(TAG, " showing {");
+ for (int i = 0; i < notificationRecs.size(); i++) {
+ Log.d(TAG, " [" + i + "] " + notificationRecs.get(i).report.getUri());
+ }
+ Log.d(TAG, " }");
+ Log.d(TAG, " canceling {");
+ for (int i = 0; i < remainingNotifications.size(); i++) {
+ Log.d(TAG, " [" + i + "] " + remainingNotifications.valueAt(i));
+ }
+ Log.d(TAG, " }");
+ Log.d(TAG, "}");
+ }
+
+ // Show the notifications
+ showNotifications(notificationRecs);
+
+ // Cancel any previously remaining notifications
+ final int remainingCount = remainingNotifications.size();
+ for (int i = 0; i < remainingCount; i++) {
+ mNm.cancel(remainingNotifications.valueAt(i), Constants.INCIDENT_NOTIFICATION_ID);
+ }
+
+ // The dialog
+ if (firstDialog != null) {
+ // Show the new dialog. The FLAG_ACTIVITY_CLEAR_TASK in the intent
+ // will remove any previously showing dialog. We check the static
+ // on ConfirmationActivity so that if the dialog is currently on
+ // top, for the same Uri, then we won't cause jank by re-showing
+ // the same one.
+ if (!firstDialog.report.getUri().equals(ConfirmationActivity.getCurrentUri())) {
+ if ((mFlags & FLAG_FROM_NOTIFICATION) == 0) {
+ mContext.startActivity(newDialogIntent(firstDialog));
+ }
+ }
+ } else {
+ // Cancel any previously showing one. The activity has the noHistory
+ // flag set in the manifest, so we know that if won't be somewhere in
+ // the background, waiting to come back.
+ ConfirmationActivity.finishCurrent();
+ }
+
+ // Save this list, so we know what we did for next time.
+ final SharedPreferences.Editor editor = prefs.edit();
+ editor.putStringSet(SHARED_PREFS_KEY_NOTIFICATIONS, currentNotifications);
+ editor.apply();
+ }
+
+ /**
+ * Show the list of notifications and cancel any unneeded ones.
+ */
+ private void showNotifications(List<Rec> recs) {
+ createNotificationChannel();
+
+ final int recCount = recs.size();
+ for (int i = 0; i < recCount; i++) {
+ final Rec rec = recs.get(i);
+
+ // Intent for the confirmation dialog.
+ final PendingIntent dialog = PendingIntent.getActivity(mContext, 0,
+ newDialogIntent(rec), 0);
+
+ // Intent for the approval and denial.
+ final PendingIntent deny = PendingIntent.getBroadcast(mContext, 0,
+ new Intent(ApprovalReceiver.ACTION_DENY, rec.report.getUri(),
+ mContext, ApprovalReceiver.class),
+ 0);
+
+ // Construct the notification
+ final Notification notification = new Notification.Builder(mContext)
+ .setStyle(new Notification.BigTextStyle())
+ .setContentTitle(
+ mContext.getString(R.string.incident_report_notification_title))
+ .setContentText(
+ mContext.getString(R.string.incident_report_notification_text,
+ rec.label))
+ .setSmallIcon(R.drawable.ic_bug_report_black_24dp)
+ .setWhen(rec.report.getTimestamp())
+ .setGroup(Constants.INCIDENT_NOTIFICATION_GROUP_KEY)
+ .setChannelId(Constants.INCIDENT_NOTIFICATION_CHANNEL_ID)
+ .setSortKey(getSortKey(rec.report.getTimestamp()))
+ .setContentIntent(dialog)
+ .setDeleteIntent(deny)
+ .setColor(mContext.getColor(
+ android.R.color.system_notification_accent_color))
+ .build();
+
+ // Show the notification
+ mNm.notify(rec.report.getUri().toString(), Constants.INCIDENT_NOTIFICATION_ID,
+ notification);
+ }
+ }
+
+ /**
+ * Create the notification channel for {@link #NOTIFICATION_CHANNEL_ID}.
+ */
+ private void createNotificationChannel() {
+ final NotificationChannel channel = new NotificationChannel(
+ Constants.INCIDENT_NOTIFICATION_CHANNEL_ID,
+ mContext.getString(R.string.incident_report_channel_name),
+ NotificationManager.IMPORTANCE_DEFAULT);
+
+ // TODO: Not in SystemApi, so we can't use it.
+ // channel.setBlockableSystem(true);
+
+ mNm.createNotificationChannel(channel);
+ }
+
+ /**
+ * Get the sort key for the order of our notifications.
+ */
+ private String getSortKey(long timestamp) {
+ return sDateFormatter.format(new Date(timestamp));
+ }
+
+ /**
+ * Create the intent to launch the dialog activity for the Rec.
+ */
+ private Intent newDialogIntent(Rec rec) {
+ final Intent result = new Intent(Intent.ACTION_MAIN, rec.report.getUri(),
+ mContext, ConfirmationActivity.class);
+ result.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+ return result;
+ }
+ }
+
+ /**
+ * Get the singleton instance. Note that there is no Context associated
+ * with this object. The context should be passed in to updateState, and
+ * the assumption is that it could be a background context (i.e. the one for a
+ * BroadcastReceiver), so no direct UI can be done on it as it would be with
+ * an Activity object.
+ */
+ public static PendingList getInstance() {
+ return sInstance;
+ }
+
+ /**
+ * Constructor.
+ */
+ private PendingList() {
+ }
+
+ /**
+ * Update the notifications and dialog to reflect the current state of affairs.
+ */
+ public void updateState(Context context, int flags) {
+ (new Updater(context, flags)).updateState();
+ }
+}
diff --git a/src/com/android/packageinstaller/incident/ReportDetails.java b/src/com/android/packageinstaller/incident/ReportDetails.java
new file mode 100644
index 0000000..a6d4019
--- /dev/null
+++ b/src/com/android/packageinstaller/incident/ReportDetails.java
@@ -0,0 +1,183 @@
+/*
+ * 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.packageinstaller.incident;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.net.Uri;
+import android.os.IncidentManager;
+
+import com.google.protobuf.ByteString;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+
+/**
+ * The pieces of an incident report that should be confirmed by the user.
+ */
+public class ReportDetails {
+ private static final String TAG = "ReportDetails";
+
+ private ArrayList<String> mReasons = new ArrayList<String>();
+ private ArrayList<Drawable> mImages = new ArrayList<Drawable>();
+
+ /**
+ * Thrown when there is an error parsing the incident report. Incident reports
+ * that can't be parsed can not be properly shown to the user and are summarily
+ * rejected.
+ */
+ public static class ParseException extends Exception {
+ public ParseException(String message) {
+ super(message);
+ }
+
+ public ParseException(String message, Throwable ex) {
+ super(message, ex);
+ }
+ }
+
+ private ReportDetails() {
+ }
+
+ /**
+ * Parse an incident report into a ReportDetails object. This function drops most
+ * of the fields in an incident report
+ */
+ public static ReportDetails parseIncidentReport(final Context context, final Uri uri)
+ throws ParseException {
+ final ReportDetails details = new ReportDetails();
+ try {
+ final IncidentManager incidentManager = context.getSystemService(IncidentManager.class);
+ final IncidentManager.IncidentReport report = incidentManager.getIncidentReport(uri);
+ if (report == null) {
+ // There is no incident report, so nothing to show, so return empty object.
+ // Other errors below are invalid images, which we reject, because they're there
+ // but we can't let the user confirm it, but nothing to show is okay. This is
+ // also the dumpstate / bugreport case.
+ return details;
+ }
+
+ final InputStream stream = report.getInputStream();
+ if (stream != null) {
+ final IncidentMinimal incident = IncidentMinimal.parseFrom(stream);
+ if (incident != null) {
+ parseImages(details.mImages, incident, context.getResources());
+ parseReasons(details.mReasons, incident);
+ }
+ }
+ } catch (IOException ex) {
+ throw new ParseException("Error while reading stream.", ex);
+ } catch (OutOfMemoryError ex) {
+ throw new ParseException("Out of memory while loading incident report.", ex);
+ }
+ return details;
+ }
+
+ /**
+ * Reads the reasons from the incident headers. Does not throw any exceptions
+ * about validity, because the headers are optional.
+ */
+ private static void parseReasons(ArrayList<String> result, IncidentMinimal incident) {
+ final int headerSize = incident.getHeaderCount();
+ for (int i = 0; i < headerSize; i++) {
+ final IncidentHeaderProto header = incident.getHeader(i);
+ if (header.hasReason()) {
+ final String reason = header.getReason();
+ if (reason != null && reason.length() > 0) {
+ result.add(reason);
+ }
+ }
+ }
+ }
+
+ /**
+ * Read images from the IncidentMinimal.
+ *
+ * @throw ParseException if there was an error reading them.
+ */
+ private static void parseImages(ArrayList<Drawable> result, IncidentMinimal incident,
+ Resources res) throws ParseException {
+ final int totalImageCountLimit = 200;
+ int totalImageCount = 0;
+
+ if (incident.hasRestrictedImagesSection()) {
+ final RestrictedImagesDumpProto section = incident.getRestrictedImagesSection();
+ final int setsCount = section.getSetsCount();
+ for (int i = 0; i < setsCount; i++) {
+ final RestrictedImageSetProto set = section.getSets(i);
+ if (set == null) {
+ continue;
+ }
+ final int imageCount = set.getImagesCount();
+ for (int j = 0; j < imageCount; j++) {
+ // Hard cap on number of images, as a guardrail.
+ totalImageCount++;
+ if (totalImageCount > totalImageCountLimit) {
+ throw new ParseException("Image count is greater than the limit of "
+ + totalImageCountLimit);
+ }
+
+ final RestrictedImageProto image = set.getImages(j);
+ if (image == null) {
+ continue;
+ }
+ final String mimeType = image.getMimeType();
+ if (!("image/jpeg".equals(mimeType)
+ || "image/png".equals(mimeType))) {
+ throw new ParseException("Unsupported image type " + mimeType);
+ }
+ final ByteString bytes = image.getImageData();
+ if (bytes == null) {
+ continue;
+ }
+ final byte[] buf = bytes.toByteArray();
+ if (buf.length == 0) {
+ continue;
+ }
+
+ // This will attempt to uncompress the image. If it's gigantic,
+ // this could fail with OutOfMemoryError, which will be caught
+ // by the caller, and turned into a report rejection.
+ final Drawable drawable = new android.graphics.drawable.BitmapDrawable(
+ res, new ByteArrayInputStream(buf));
+
+ // TODO: Scale bitmap to correct thumbnail size to save memory.
+
+ result.add(drawable);
+ }
+ }
+ }
+ }
+
+ /**
+ * The "reason" field from any incident report headers, which could contain
+ * explanitory text for why the incident report was taken.
+ */
+ public ArrayList<String> getReasons() {
+ return mReasons;
+ }
+
+ /**
+ * Images that must be approved by the user.
+ */
+ public ArrayList<Drawable> getImages() {
+ return mImages;
+ }
+}
diff --git a/src/com/android/packageinstaller/incident/incident_minimal.proto b/src/com/android/packageinstaller/incident/incident_minimal.proto
new file mode 100644
index 0000000..150e8d8
--- /dev/null
+++ b/src/com/android/packageinstaller/incident/incident_minimal.proto
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ */
+
+syntax = "proto2";
+package com.android.packageinstaller.incident;
+
+option java_multiple_files = true;
+
+
+/*
+ * Everything in this file is a subset of the platform incident.proto.
+ */
+
+/**
+ * This message has the same fields in an incident report that we care about
+ * but none of the ones we don't. So when we receive one, we attempt to parse
+ * it using this proto, which will result in the rest of the fields being dropped.
+ *
+ * From frameworks/base/core/proto/android/os/incident.proto
+ */
+message IncidentMinimal {
+ repeated IncidentHeaderProto header = 1;
+ optional RestrictedImagesDumpProto restricted_images_section = 3025;
+}
+
+/**
+ * From frameworks/base/core/proto/android/os/header.proto
+ */
+message IncidentHeaderProto {
+ // A human readable reason why an incident report is requested.
+ optional string reason = 2;
+}
+
+/**
+ * From frameworks/base/core/proto/android/service/restricted_image.proto
+ */
+message RestrictedImagesDumpProto {
+ repeated RestrictedImageSetProto sets = 1;
+}
+
+/**
+ * From frameworks/base/core/proto/android/service/restricted_image.proto
+ */
+message RestrictedImageSetProto {
+ // Name of the service producing the data.
+ optional string category = 1;
+
+ // The images
+ repeated RestrictedImageProto images = 2;
+
+ // Additional metadata
+ optional bytes metadata = 3;
+}
+
+/**
+ * From frameworks/base/core/proto/android/service/restricted_image.proto
+ */
+message RestrictedImageProto {
+ // Type of image data
+ optional string mime_type = 1;
+
+ // The image data
+ optional bytes image_data = 2;
+
+ // Metadata about the image. Typically this has another proto schema,
+ // but it is undefined exactly what that is in AOSP code.
+ optional bytes metadata = 3;
+}
+
diff --git a/src/com/android/packageinstaller/permission/data/BooleanSharedPreferenceLiveData.java b/src/com/android/packageinstaller/permission/data/BooleanSharedPreferenceLiveData.java
new file mode 100644
index 0000000..056d633
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/data/BooleanSharedPreferenceLiveData.java
@@ -0,0 +1,85 @@
+/*
+ * 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.packageinstaller.permission.data;
+
+import static android.content.Context.MODE_PRIVATE;
+
+import static com.android.packageinstaller.Constants.PREFERENCES_FILE;
+import static com.android.packageinstaller.permission.utils.Utils.getParentUserContext;
+
+import android.app.Application;
+import android.content.SharedPreferences;
+import android.util.ArrayMap;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.lifecycle.LiveData;
+
+/**
+ * Get a live data for a boolean shared preference.
+ *
+ * <p>Data source: shared preferences
+ */
+public class BooleanSharedPreferenceLiveData extends LiveData<Boolean> implements
+ SharedPreferences.OnSharedPreferenceChangeListener {
+ private static ArrayMap<String, BooleanSharedPreferenceLiveData> sInstances = new ArrayMap<>();
+
+ private final @NonNull SharedPreferences mPrefs;
+ private final @NonNull String mKey;
+
+ /**
+ * Get a (potentially shared) live data.
+ *
+ * @param key The key of the shared preference to listen for
+ * @param application The application context
+ *
+ * @return The live data
+ */
+ @MainThread
+ public static BooleanSharedPreferenceLiveData get(@NonNull String key,
+ @NonNull Application application) {
+ if (sInstances.get(key) == null) {
+ sInstances.put(key, new BooleanSharedPreferenceLiveData(key, application));
+ }
+
+ return sInstances.get(key);
+ }
+
+ private BooleanSharedPreferenceLiveData(@NonNull String key, @NonNull Application application) {
+ mPrefs = getParentUserContext(application).getSharedPreferences(PREFERENCES_FILE,
+ MODE_PRIVATE);
+ mKey = key;
+ }
+
+ @Override
+ protected void onActive() {
+ onSharedPreferenceChanged(mPrefs, mKey);
+ mPrefs.registerOnSharedPreferenceChangeListener(this);
+ }
+
+ @Override
+ protected void onInactive() {
+ mPrefs.unregisterOnSharedPreferenceChangeListener(this);
+ }
+
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
+ if (mKey.equals(key)) {
+ setValue(sharedPreferences.getBoolean(mKey, false));
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/data/ForcedUserSensitiveUidsLiveData.java b/src/com/android/packageinstaller/permission/data/ForcedUserSensitiveUidsLiveData.java
new file mode 100644
index 0000000..4ee28b9
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/data/ForcedUserSensitiveUidsLiveData.java
@@ -0,0 +1,101 @@
+/*
+ * 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.packageinstaller.permission.data;
+
+import static android.content.Context.MODE_PRIVATE;
+
+import static com.android.packageinstaller.Constants.FORCED_USER_SENSITIVE_UIDS_KEY;
+import static com.android.packageinstaller.Constants.PREFERENCES_FILE;
+import static com.android.packageinstaller.permission.utils.Utils.getParentUserContext;
+
+import android.app.Application;
+import android.content.SharedPreferences;
+import android.util.SparseIntArray;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.lifecycle.LiveData;
+
+import com.android.packageinstaller.Constants;
+
+import java.util.Set;
+
+/**
+ * Live data of the uids that should always be considered user sensitive.
+ *
+ * <p>This returns a {@link SparseIntArray}. The uids are the keys, ignore the values.
+ *
+ * <p>Data source: {@link Constants#FORCED_USER_SENSITIVE_UIDS_KEY} shared preference.
+ */
+public class ForcedUserSensitiveUidsLiveData extends LiveData<SparseIntArray> implements
+ SharedPreferences.OnSharedPreferenceChangeListener {
+ private static ForcedUserSensitiveUidsLiveData sInstance;
+
+ private final SharedPreferences mPrefs;
+
+ /**
+ * Get a (potentially shared) live data.
+ *
+ * @param application The application context
+ *
+ * @return The live data
+ */
+ @MainThread
+ public static ForcedUserSensitiveUidsLiveData get(@NonNull Application application) {
+ if (sInstance == null) {
+ sInstance = new ForcedUserSensitiveUidsLiveData(application);
+ }
+
+ return sInstance;
+ }
+
+ private ForcedUserSensitiveUidsLiveData(@NonNull Application application) {
+ mPrefs = getParentUserContext(application).getSharedPreferences(PREFERENCES_FILE,
+ MODE_PRIVATE);
+ }
+
+ @Override
+ protected void onActive() {
+ onSharedPreferenceChanged(mPrefs, FORCED_USER_SENSITIVE_UIDS_KEY);
+ mPrefs.registerOnSharedPreferenceChangeListener(this);
+ }
+
+ @Override
+ protected void onInactive() {
+ mPrefs.unregisterOnSharedPreferenceChangeListener(this);
+ }
+
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
+ if (key.equals(FORCED_USER_SENSITIVE_UIDS_KEY)) {
+ Set<String> overridesStr = sharedPreferences.getStringSet(
+ FORCED_USER_SENSITIVE_UIDS_KEY, null);
+
+ if (overridesStr == null) {
+ setValue(new SparseIntArray(0));
+ return;
+ }
+
+ SparseIntArray overrides = new SparseIntArray(overridesStr.size());
+ for (String override : overridesStr) {
+ overrides.put(Integer.valueOf(override), 0);
+ }
+
+ setValue(overrides);
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/data/NonSensitivePackagesLiveData.java b/src/com/android/packageinstaller/permission/data/NonSensitivePackagesLiveData.java
new file mode 100644
index 0000000..8062508
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/data/NonSensitivePackagesLiveData.java
@@ -0,0 +1,100 @@
+/*
+ * 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.packageinstaller.permission.data;
+
+import static android.os.UserHandle.getUserHandleForUid;
+
+import static com.android.packageinstaller.permission.utils.Utils.FLAGS_ALWAYS_USER_SENSITIVE;
+
+import android.app.Application;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.os.AsyncTask;
+import android.os.UserHandle;
+import android.util.ArrayMap;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.lifecycle.MediatorLiveData;
+
+import java.util.ArrayList;
+
+/**
+ * Live data of packages that are not fully user sensitive by default.
+ *
+ * <p>Data source: {@link UidToSensitivityLiveData}
+ */
+public class NonSensitivePackagesLiveData extends MediatorLiveData<ArrayList<ApplicationInfo>> {
+ private static NonSensitivePackagesLiveData sInstance;
+
+ /**
+ * Get a (potentially shared) live data.
+ *
+ * @param application The application context
+ *
+ * @return The live data
+ */
+ @MainThread
+ public static NonSensitivePackagesLiveData get(@NonNull Application application) {
+ if (sInstance == null) {
+ sInstance = new NonSensitivePackagesLiveData(application);
+ }
+
+ return sInstance;
+ }
+
+ private NonSensitivePackagesLiveData(@NonNull Application application) {
+ UidToSensitivityLiveData uidLiveData = UidToSensitivityLiveData.get(application);
+
+ addSource(uidLiveData, uidToSensitivity -> AsyncTask.execute(() -> {
+ PackageManager pm = application.getPackageManager();
+
+ ArrayList<ApplicationInfo> pkgs = new ArrayList<>();
+
+ int numUids = uidToSensitivity.size();
+ for (int uidNum = 0; uidNum < numUids; uidNum++) {
+ int uid = uidToSensitivity.keyAt(uidNum);
+ UserHandle user = getUserHandleForUid(uid);
+ ArrayMap<String, Integer> sensitivity = uidToSensitivity.valueAt(uidNum);
+
+ int numPerms = sensitivity.size();
+ for (int permNum = 0; permNum < numPerms; permNum++) {
+ if (sensitivity.valueAt(permNum) != FLAGS_ALWAYS_USER_SENSITIVE) {
+ String[] uidPkgs = pm.getPackagesForUid(uid);
+
+ if (uidPkgs != null) {
+ for (String pkg : uidPkgs) {
+ ApplicationInfo appInfo;
+ try {
+ appInfo = pm.getApplicationInfoAsUser(pkg, 0, user);
+ } catch (PackageManager.NameNotFoundException e) {
+ continue;
+ }
+
+ pkgs.add(appInfo);
+ }
+ }
+ break;
+ }
+ }
+
+ }
+
+ postValue(pkgs);
+ }));
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/data/PerUserUidToSensitivityLiveData.java b/src/com/android/packageinstaller/permission/data/PerUserUidToSensitivityLiveData.java
new file mode 100644
index 0000000..28e99c2
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/data/PerUserUidToSensitivityLiveData.java
@@ -0,0 +1,186 @@
+/*
+ * 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.packageinstaller.permission.data;
+
+import static com.android.packageinstaller.permission.utils.Utils.FLAGS_ALWAYS_USER_SENSITIVE;
+
+import android.app.Application;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.Process;
+import android.os.UserHandle;
+import android.util.ArrayMap;
+import android.util.ArraySet;
+import android.util.SparseArray;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+
+import com.android.packageinstaller.AsyncTaskLiveData;
+import com.android.packageinstaller.permission.utils.ArrayUtils;
+import com.android.packageinstaller.permission.utils.Utils;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Live data of the user sensitivity of all uids that belong to a given user
+ *
+ * <p>Data source: system server
+ */
+public class PerUserUidToSensitivityLiveData extends
+ AsyncTaskLiveData<SparseArray<ArrayMap<String, Integer>>> {
+ private static final SparseArray<PerUserUidToSensitivityLiveData> sInstances =
+ new SparseArray<>();
+
+ private final Context mContext;
+ private final UserHandle mUser;
+
+ /** Monitors changes to the packages for a user */
+ private final BroadcastReceiver mPackageMonitor = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ loadValue();
+ }
+ };
+
+ /**
+ * Get a (potentially shared) live data.
+ *
+ * @param user The user to get the data for
+ * @param application The application context
+ *
+ * @return The live data
+ */
+ @MainThread
+ public static PerUserUidToSensitivityLiveData get(@NonNull UserHandle user,
+ @NonNull Application application) {
+ PerUserUidToSensitivityLiveData instance = sInstances.get(user.getIdentifier());
+ if (instance == null) {
+ instance = new PerUserUidToSensitivityLiveData(user, application);
+ sInstances.put(user.getIdentifier(), instance);
+ }
+
+ return instance;
+ }
+
+ private PerUserUidToSensitivityLiveData(@NonNull UserHandle user,
+ @NonNull Application application) {
+ mUser = user;
+
+ try {
+ mContext = application.createPackageContextAsUser(application.getPackageName(), 0,
+ user);
+ } catch (PackageManager.NameNotFoundException cannotHappen) {
+ throw new IllegalStateException(cannotHappen);
+ }
+ }
+
+ @Override
+ protected void onActive() {
+ loadValue();
+ mContext.registerReceiver(mPackageMonitor, new IntentFilter(Intent.ACTION_PACKAGE_CHANGED));
+ }
+
+ @Override
+ protected void onInactive() {
+ mContext.unregisterReceiver(mPackageMonitor);
+ }
+
+ @Override
+ public SparseArray<ArrayMap<String, Integer>> loadValueInBackground() {
+ PackageManager pm = mContext.getPackageManager();
+ List<PackageInfo> pkgs = pm.getInstalledPackages(PackageManager.GET_PERMISSIONS);
+ Set<String> platformPerms = Utils.getPlatformPermissions();
+ ArraySet<String> pkgsWithLauncherIcon = Utils.getLauncherPackages(mContext);
+
+ // uid -> permission -> flags
+ SparseArray<ArrayMap<String, Integer>> uidsPermissions = new SparseArray<>();
+
+ // Collect the flags and store it in 'uidsPermissions'
+ int numPkgs = pkgs.size();
+ for (int pkgNum = 0; pkgNum < numPkgs; pkgNum++) {
+ PackageInfo pkg = pkgs.get(pkgNum);
+ boolean pkgHasLauncherIcon = pkgsWithLauncherIcon.contains(pkg.packageName);
+ boolean pkgIsSystemApp = (pkg.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
+
+ // permission -> flags
+ ArrayMap<String, Integer> uidPermissions = uidsPermissions.get(pkg.applicationInfo.uid);
+ if (uidPermissions == null) {
+ uidPermissions = new ArrayMap<>();
+ uidsPermissions.put(pkg.applicationInfo.uid, uidPermissions);
+ }
+
+ for (String perm : platformPerms) {
+ if (!ArrayUtils.contains(pkg.requestedPermissions, perm)) {
+ continue;
+ }
+
+ /*
+ * Permissions are considered user sensitive for a package, when
+ * - the package has a launcher icon, or
+ * - the permission is not pre-granted, or
+ * - the package is not a system app (i.e. not preinstalled)
+ *
+ * If two packages share a UID there can be two cases:
+ * - for well known UIDs: if the permission for any package is non-user sensitive,
+ * it is non-sensitive. I.e. prefer to hide
+ * - for non system UIDs: if the permission for any package is user sensitive, it is
+ * user sensitive. I.e. prefer to show
+ */
+ Integer previousFlagsInt = uidPermissions.get(perm);
+ int previousFlags;
+ if (pkg.applicationInfo.uid < Process.FIRST_APPLICATION_UID) {
+ previousFlags = previousFlagsInt == null
+ ? FLAGS_ALWAYS_USER_SENSITIVE
+ : previousFlagsInt;
+ } else {
+ previousFlags = previousFlagsInt == null ? 0 : previousFlagsInt;
+ }
+
+ int flags;
+ if (pkgIsSystemApp && !pkgHasLauncherIcon) {
+ boolean permGrantedByDefault = (pm.getPermissionFlags(perm, pkg.packageName,
+ mUser) & PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT) != 0;
+
+ if (permGrantedByDefault) {
+ flags = 0;
+ } else {
+ flags = PackageManager.FLAG_PERMISSION_USER_SENSITIVE_WHEN_GRANTED;
+ }
+ } else {
+ flags = FLAGS_ALWAYS_USER_SENSITIVE;
+ }
+
+ if (pkg.applicationInfo.uid < Process.FIRST_APPLICATION_UID) {
+ flags &= previousFlags;
+ } else {
+ flags |= previousFlags;
+ }
+
+ uidPermissions.put(perm, flags);
+ }
+ }
+
+ return uidsPermissions;
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/data/UidToSensitivityLiveData.java b/src/com/android/packageinstaller/permission/data/UidToSensitivityLiveData.java
new file mode 100644
index 0000000..a5c9a39
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/data/UidToSensitivityLiveData.java
@@ -0,0 +1,106 @@
+/*
+ * 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.packageinstaller.permission.data;
+
+import static android.os.UserHandle.getUserHandleForUid;
+
+import android.app.Application;
+import android.os.UserHandle;
+import android.util.ArrayMap;
+import android.util.SparseArray;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.lifecycle.MediatorLiveData;
+
+/**
+ * Live data of the user sensitivity of all uids that belong to the current profile group.
+ *
+ * <p>Data source {@link PerUserUidToSensitivityLiveData}, {@link UsersLiveData}
+ */
+class UidToSensitivityLiveData extends MediatorLiveData<SparseArray<ArrayMap<String, Integer>>> {
+ private static UidToSensitivityLiveData sInstance;
+
+ /** Data sources, one per user in the same profile group */
+ private final ArrayMap<UserHandle, PerUserUidToSensitivityLiveData> mUsersToLiveData =
+ new ArrayMap<>();
+
+ /**
+ * Combined uid sensitivity data from all users
+ *
+ * <p>{@code uid -> permission -> flags}
+ */
+ private final SparseArray<ArrayMap<String, Integer>> mUidToSensitivity = new SparseArray<>();
+
+ /**
+ * Get a (potentially shared) live data.
+ *
+ * @param application The application context
+ *
+ * @return The live data
+ */
+ @MainThread
+ public static UidToSensitivityLiveData get(@NonNull Application application) {
+ if (sInstance == null) {
+ sInstance = new UidToSensitivityLiveData(application);
+ }
+
+ return sInstance;
+ }
+
+ private UidToSensitivityLiveData(@NonNull Application application) {
+ addSource(UsersLiveData.get(application), users -> {
+ int numPreviousUsers = mUsersToLiveData.size();
+ for (int i = numPreviousUsers - 1; i >= 0; i--) {
+ if (!users.contains(mUsersToLiveData.keyAt(i))) {
+ removeSource(mUsersToLiveData.valueAt(i));
+ mUsersToLiveData.removeAt(i);
+ }
+ }
+
+ int numNewUsers = users.size();
+ for (int i = 0; i < numNewUsers; i++) {
+ UserHandle user = users.get(i);
+
+ if (!mUsersToLiveData.containsKey(user)) {
+ PerUserUidToSensitivityLiveData newSource = PerUserUidToSensitivityLiveData.get(
+ user, application);
+ mUsersToLiveData.put(user, newSource);
+
+ addSource(newSource, data -> {
+ int numUids = mUidToSensitivity.size();
+
+ // remove all entries from this user
+ for (int uidNum = numUids - 1; uidNum >= 0; uidNum--) {
+ if (getUserHandleForUid(mUidToSensitivity.keyAt(uidNum)).equals(user)) {
+ mUidToSensitivity.removeAt(uidNum);
+ }
+ }
+
+ // Add new entries for this user
+ numUids = data.size();
+ for (int uidNum = 0; uidNum < numUids; uidNum++) {
+ mUidToSensitivity.put(data.keyAt(uidNum), data.valueAt(uidNum));
+ }
+ setValue(mUidToSensitivity);
+ });
+ }
+ }
+ });
+
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/data/UsersLiveData.java b/src/com/android/packageinstaller/permission/data/UsersLiveData.java
new file mode 100644
index 0000000..aaa4045
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/data/UsersLiveData.java
@@ -0,0 +1,93 @@
+/*
+ * 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.packageinstaller.permission.data;
+
+import android.app.Application;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.UserHandle;
+import android.os.UserManager;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.lifecycle.LiveData;
+
+import java.util.List;
+
+/**
+ * Live data of the users of the current profile group.
+ *
+ * <p>Data source: system server
+ */
+class UsersLiveData extends LiveData<List<UserHandle>> {
+ private static UsersLiveData sInstance;
+
+ private final Application mApplication;
+
+ /** Monitors changes to the users on this device */
+ private BroadcastReceiver mUserMonitor = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ update();
+ }
+ };
+
+ /**
+ * Get a (potentially shared) live data.
+ *
+ * @param application The application context
+ *
+ * @return The live data
+ */
+ @MainThread
+ public static UsersLiveData get(@NonNull Application application) {
+ if (sInstance == null) {
+ sInstance = new UsersLiveData(application);
+ }
+
+ return sInstance;
+ }
+
+ private UsersLiveData(@NonNull Application application) {
+ mApplication = application;
+ }
+
+ /**
+ * Update the encapsulated data with the current list of users.
+ */
+ private void update() {
+ setValue(mApplication.getSystemService(UserManager.class).getUserProfiles());
+ }
+
+ @Override
+ protected void onActive() {
+ update();
+
+ IntentFilter userChangeFilter = new IntentFilter();
+ userChangeFilter.addAction(Intent.ACTION_USER_ADDED);
+ userChangeFilter.addAction(Intent.ACTION_USER_REMOVED);
+
+ mApplication.registerReceiver(mUserMonitor, userChangeFilter);
+ }
+
+ @Override
+ protected void onInactive() {
+ mApplication.unregisterReceiver(mUserMonitor);
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java
index aafce8d..da52777 100644
--- a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java
+++ b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java
@@ -16,30 +16,59 @@
package com.android.packageinstaller.permission.model;
-import android.annotation.StringRes;
-import android.annotation.SystemApi;
+import static android.Manifest.permission.ACCESS_BACKGROUND_LOCATION;
+import static android.Manifest.permission.ACCESS_FINE_LOCATION;
+import static android.app.AppOpsManager.MODE_ALLOWED;
+import static android.app.AppOpsManager.MODE_FOREGROUND;
+import static android.app.AppOpsManager.MODE_IGNORED;
+import static android.app.AppOpsManager.OPSTR_LEGACY_STORAGE;
+import static android.content.pm.PackageManager.PERMISSION_GRANTED;
+
import android.app.ActivityManager;
import android.app.AppOpsManager;
import android.content.Context;
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.os.Build;
-import android.os.Process;
import android.os.UserHandle;
+import android.permission.PermissionManager;
+import android.text.TextUtils;
import android.util.ArrayMap;
+import android.util.Log;
-import com.android.packageinstaller.R;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+
+import com.android.packageinstaller.permission.service.LocationAccessCheck;
import com.android.packageinstaller.permission.utils.ArrayUtils;
import com.android.packageinstaller.permission.utils.LocationUtils;
+import com.android.packageinstaller.permission.utils.SoftRestrictedPermissionPolicy;
+import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
import java.text.Collator;
import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
+/**
+ * All permissions of a permission group that are requested by an app.
+ *
+ * <p>Some permissions only grant access to the protected resource while the app is running in the
+ * foreground. These permissions are considered "split" into this foreground and a matching
+ * "background" permission.
+ *
+ * <p>All background permissions of the group are not in the main group and will not be affected
+ * by operations on the group. The background permissions can be found in the {@link
+ * #getBackgroundPermissions() background permissions group}.
+ */
public final class AppPermissionGroup implements Comparable<AppPermissionGroup> {
+ private static final String LOG_TAG = AppPermissionGroup.class.getSimpleName();
private static final String PLATFORM_PACKAGE_NAME = "android";
private static final String KILL_REASON_APP_OP_CHANGE = "Permission related app op changed";
@@ -55,19 +84,57 @@
private final String mName;
private final String mDeclaringPackage;
private final CharSequence mLabel;
+ private final CharSequence mFullLabel;
private final @StringRes int mRequest;
+ private final @StringRes int mRequestDetail;
+ private final @StringRes int mBackgroundRequest;
+ private final @StringRes int mBackgroundRequestDetail;
private final CharSequence mDescription;
private final ArrayMap<String, Permission> mPermissions = new ArrayMap<>();
private final String mIconPkg;
private final int mIconResId;
+ /** Delay changes until {@link #persistChanges} is called */
+ private final boolean mDelayChanges;
+
+ /**
+ * Some permissions are split into foreground and background permission. All non-split and
+ * foreground permissions are in {@link #mPermissions}, all background permissions are in
+ * this field.
+ */
+ private AppPermissionGroup mBackgroundPermissions;
+
private final boolean mAppSupportsRuntimePermissions;
private final boolean mIsEphemeralApp;
+ private final boolean mIsNonIsolatedStorage;
private boolean mContainsEphemeralPermission;
private boolean mContainsPreRuntimePermission;
+ /**
+ * Does this group contain at least one permission that is split into a foreground and
+ * background permission? This does not necessarily mean that the app also requested the
+ * background permission.
+ */
+ private boolean mHasPermissionWithBackgroundMode;
+
+ /**
+ * Set if {@link LocationAccessCheck#checkLocationAccessSoon()} should be triggered once the
+ * changes are persisted.
+ */
+ private boolean mTriggerLocationAccessCheckOnPersist;
+
+ /**
+ * Create the app permission group.
+ *
+ * @param context the {@code Context} to retrieve system services.
+ * @param packageInfo package information about the app.
+ * @param permissionName the name of the permission this object represents.
+ * @param delayChanges whether to delay changes until {@link #persistChanges} is called.
+ *
+ * @return the AppPermissionGroup.
+ */
public static AppPermissionGroup create(Context context, PackageInfo packageInfo,
- String permissionName) {
+ String permissionName, boolean delayChanges) {
PermissionInfo permissionInfo;
try {
permissionInfo = context.getPackageManager().getPermissionInfo(permissionName, 0);
@@ -82,11 +149,11 @@
return null;
}
+ String group = Utils.getGroupOfPermission(permissionInfo);
PackageItemInfo groupInfo = permissionInfo;
- if (permissionInfo.group != null) {
+ if (group != null) {
try {
- groupInfo = context.getPackageManager().getPermissionGroupInfo(
- permissionInfo.group, 0);
+ groupInfo = context.getPackageManager().getPermissionGroupInfo(group, 0);
} catch (PackageManager.NameNotFoundException e) {
/* ignore */
}
@@ -95,25 +162,55 @@
List<PermissionInfo> permissionInfos = null;
if (groupInfo instanceof PermissionGroupInfo) {
try {
- permissionInfos = context.getPackageManager().queryPermissionsByGroup(
- groupInfo.name, 0);
+ permissionInfos = Utils.getPermissionInfosForGroup(context.getPackageManager(),
+ groupInfo.name);
} catch (PackageManager.NameNotFoundException e) {
/* ignore */
}
}
- return create(context, packageInfo, groupInfo, permissionInfos,
- Process.myUserHandle());
+ return create(context, packageInfo, groupInfo, permissionInfos, delayChanges);
}
+ /**
+ * Create the app permission group.
+ *
+ * @param context the {@code Context} to retrieve system services.
+ * @param packageInfo package information about the app.
+ * @param groupInfo the information about the group created.
+ * @param permissionInfos the information about the permissions belonging to the group.
+ * @param delayChanges whether to delay changes until {@link #persistChanges} is called.
+ *
+ * @return the AppPermissionGroup.
+ */
+ public static AppPermissionGroup create(Context context, PackageInfo packageInfo,
+ PackageItemInfo groupInfo, List<PermissionInfo> permissionInfos, boolean delayChanges) {
+ PackageManager packageManager = context.getPackageManager();
+ CharSequence groupLabel = groupInfo.loadLabel(packageManager);
+ CharSequence fullGroupLabel = groupInfo.loadSafeLabel(packageManager, 0,
+ TextUtils.SAFE_STRING_FLAG_TRIM | TextUtils.SAFE_STRING_FLAG_FIRST_LINE);
+ return create(context, packageInfo, groupInfo, permissionInfos, groupLabel,
+ fullGroupLabel, delayChanges);
+ }
+
+ /**
+ * Create the app permission group.
+ *
+ * @param context the {@code Context} to retrieve system services.
+ * @param packageInfo package information about the app.
+ * @param groupInfo the information about the group created.
+ * @param permissionInfos the information about the permissions belonging to the group.
+ * @param groupLabel the label of the group.
+ * @param fullGroupLabel the untruncated label of the group.
+ * @param delayChanges whether to delay changes until {@link #persistChanges} is called.
+ *
+ * @return the AppPermissionGroup.
+ */
public static AppPermissionGroup create(Context context, PackageInfo packageInfo,
PackageItemInfo groupInfo, List<PermissionInfo> permissionInfos,
- UserHandle userHandle) {
-
- AppPermissionGroup group = new AppPermissionGroup(context, packageInfo, groupInfo.name,
- groupInfo.packageName, groupInfo.loadLabel(context.getPackageManager()),
- loadGroupDescription(context, groupInfo), getRequest(groupInfo),
- groupInfo.packageName, groupInfo.icon, userHandle);
+ CharSequence groupLabel, CharSequence fullGroupLabel, boolean delayChanges) {
+ PackageManager packageManager = context.getPackageManager();
+ UserHandle userHandle = UserHandle.getUserHandleForUid(packageInfo.applicationInfo.uid);
if (groupInfo instanceof PermissionInfo) {
permissionInfos = new ArrayList<>();
@@ -124,7 +221,24 @@
return null;
}
- final int permissionCount = packageInfo.requestedPermissions.length;
+ AppOpsManager appOpsManager = context.getSystemService(AppOpsManager.class);
+
+ AppPermissionGroup group = new AppPermissionGroup(context, packageInfo, groupInfo.name,
+ groupInfo.packageName, groupLabel, fullGroupLabel,
+ loadGroupDescription(context, groupInfo, packageManager), getRequest(groupInfo),
+ getRequestDetail(groupInfo), getBackgroundRequest(groupInfo),
+ getBackgroundRequestDetail(groupInfo), groupInfo.packageName, groupInfo.icon,
+ userHandle, delayChanges, appOpsManager);
+
+ final Set<String> whitelistedRestrictedPermissions = context.getPackageManager()
+ .getWhitelistedRestrictedPermissions(packageInfo.packageName,
+ Utils.FLAGS_PERMISSION_WHITELIST_ALL);
+
+ // Parse and create permissions reqested by the app
+ ArrayMap<String, Permission> allPermissions = new ArrayMap<>();
+ final int permissionCount = packageInfo.requestedPermissions == null ? 0
+ : packageInfo.requestedPermissions.length;
+ String packageName = packageInfo.packageName;
for (int i = 0; i < permissionCount; i++) {
String requestedPermission = packageInfo.requestedPermissions[i];
@@ -159,17 +273,86 @@
final String appOp = PLATFORM_PACKAGE_NAME.equals(requestedPermissionInfo.packageName)
? AppOpsManager.permissionToOp(requestedPermissionInfo.name) : null;
- final boolean appOpAllowed = appOp != null
- && context.getSystemService(AppOpsManager.class).checkOpNoThrow(appOp,
- packageInfo.applicationInfo.uid, packageInfo.packageName)
- == AppOpsManager.MODE_ALLOWED;
+ final boolean appOpAllowed;
+ if (appOp == null) {
+ appOpAllowed = false;
+ } else {
+ int appOpsMode = appOpsManager.unsafeCheckOpRaw(appOp,
+ packageInfo.applicationInfo.uid, packageName);
+ appOpAllowed = appOpsMode == MODE_ALLOWED || appOpsMode == MODE_FOREGROUND;
+ }
- final int flags = context.getPackageManager().getPermissionFlags(
- requestedPermission, packageInfo.packageName, userHandle);
+ final int flags = packageManager.getPermissionFlags(
+ requestedPermission, packageName, userHandle);
- Permission permission = new Permission(requestedPermission, granted,
- appOp, appOpAllowed, flags, requestedPermissionInfo.protectionLevel);
- group.addPermission(permission);
+ Permission permission = new Permission(requestedPermission, requestedPermissionInfo,
+ granted, appOp, appOpAllowed, flags);
+
+ if (requestedPermissionInfo.backgroundPermission != null) {
+ group.mHasPermissionWithBackgroundMode = true;
+ }
+
+ allPermissions.put(requestedPermission, permission);
+ }
+
+ int numPermissions = allPermissions.size();
+ if (numPermissions == 0) {
+ return null;
+ }
+
+ // Link up foreground and background permissions
+ for (int i = 0; i < allPermissions.size(); i++) {
+ Permission permission = allPermissions.valueAt(i);
+
+ if (permission.getBackgroundPermissionName() != null) {
+ Permission backgroundPermission = allPermissions.get(
+ permission.getBackgroundPermissionName());
+
+ if (backgroundPermission != null) {
+ backgroundPermission.addForegroundPermissions(permission);
+ permission.setBackgroundPermission(backgroundPermission);
+
+ // The background permissions isAppOpAllowed refers to the background state of
+ // the foregound permission's appOp. Hence we can only set it once we know the
+ // matching foreground permission.
+ // @see #allowAppOp
+ if (context.getSystemService(AppOpsManager.class).unsafeCheckOpRaw(
+ permission.getAppOp(), packageInfo.applicationInfo.uid,
+ packageInfo.packageName) == MODE_ALLOWED) {
+ backgroundPermission.setAppOpAllowed(true);
+ }
+ }
+ }
+ }
+
+ // Add permissions found to this group
+ for (int i = 0; i < numPermissions; i++) {
+ Permission permission = allPermissions.valueAt(i);
+
+ 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.getIconPkg(), group.getIconResId(), group.getUser(),
+ delayChanges, appOpsManager);
+ }
+
+ group.getBackgroundPermissions().addPermission(permission);
+ } else {
+ if ((!permission.isHardRestricted()
+ || whitelistedRestrictedPermissions.contains(permission.getName()))
+ && (!permission.isSoftRestricted()
+ || SoftRestrictedPermissionPolicy.shouldShow(packageInfo, permission))) {
+ group.addPermission(permission);
+ }
+ }
+ }
+
+ if (group.getPermissions().isEmpty()) {
+ return null;
}
return group;
@@ -185,14 +368,13 @@
}
}
- private static CharSequence loadGroupDescription(Context context, PackageItemInfo group) {
+ private static CharSequence loadGroupDescription(Context context, PackageItemInfo group,
+ @NonNull PackageManager packageManager) {
CharSequence description = null;
if (group instanceof PermissionGroupInfo) {
- description = ((PermissionGroupInfo) group).loadDescription(
- context.getPackageManager());
+ description = ((PermissionGroupInfo) group).loadDescription(packageManager);
} else if (group instanceof PermissionInfo) {
- description = ((PermissionInfo) group).loadDescription(
- context.getPackageManager());
+ description = ((PermissionInfo) group).loadDescription(packageManager);
}
if (description == null || description.length() <= 0) {
@@ -203,24 +385,33 @@
}
private AppPermissionGroup(Context context, PackageInfo packageInfo, String name,
- String declaringPackage, CharSequence label, CharSequence description,
- @StringRes int request, String iconPkg, int iconResId, UserHandle userHandle) {
+ String declaringPackage, CharSequence label, CharSequence fullLabel,
+ CharSequence description, @StringRes int request, @StringRes int requestDetail,
+ @StringRes int backgroundRequest, @StringRes int backgroundRequestDetail,
+ String iconPkg, int iconResId, UserHandle userHandle, boolean delayChanges,
+ @NonNull AppOpsManager appOpsManager) {
+ int targetSDK = packageInfo.applicationInfo.targetSdkVersion;
+
mContext = context;
mUserHandle = userHandle;
mPackageManager = mContext.getPackageManager();
mPackageInfo = packageInfo;
- mAppSupportsRuntimePermissions = packageInfo.applicationInfo
- .targetSdkVersion > Build.VERSION_CODES.LOLLIPOP_MR1;
+ mAppSupportsRuntimePermissions = targetSDK > Build.VERSION_CODES.LOLLIPOP_MR1;
mIsEphemeralApp = packageInfo.applicationInfo.isInstantApp();
- mAppOps = context.getSystemService(AppOpsManager.class);
+ mAppOps = appOpsManager;
mActivityManager = context.getSystemService(ActivityManager.class);
mDeclaringPackage = declaringPackage;
mName = name;
mLabel = label;
+ mFullLabel = fullLabel;
mDescription = description;
mCollator = Collator.getInstance(
context.getResources().getConfiguration().getLocales().get(0));
mRequest = request;
+ mRequestDetail = requestDetail;
+ mBackgroundRequest = backgroundRequest;
+ mBackgroundRequestDetail = backgroundRequestDetail;
+ mDelayChanges = delayChanges;
if (iconResId != 0) {
mIconPkg = iconPkg;
mIconResId = iconResId;
@@ -228,6 +419,9 @@
mIconPkg = context.getPackageName();
mIconResId = R.drawable.ic_perm_device_info;
}
+
+ mIsNonIsolatedStorage = mAppOps.unsafeCheckOpNoThrow(OPSTR_LEGACY_STORAGE,
+ packageInfo.applicationInfo.uid, packageInfo.packageName) == MODE_ALLOWED;
}
public boolean doesSupportRuntimePermissions() {
@@ -253,18 +447,34 @@
return false;
}
- public void resetReviewRequired() {
+ /**
+ * Are any of the permissions in this group user sensitive.
+ *
+ * @return {@code true} if any of the permissions in the group is user sensitive.
+ */
+ public boolean isUserSensitive() {
+ final int permissionCount = mPermissions.size();
+ for (int i = 0; i < permissionCount; i++) {
+ Permission permission = mPermissions.valueAt(i);
+ if (permission.isUserSensitive()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public void unsetReviewRequired() {
final int permissionCount = mPermissions.size();
for (int i = 0; i < permissionCount; i++) {
Permission permission = mPermissions.valueAt(i);
if (permission.isReviewRequired()) {
- permission.resetReviewRequired();
- mPackageManager.updatePermissionFlags(permission.getName(),
- mPackageInfo.packageName,
- PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED,
- 0, mUserHandle);
+ permission.unsetReviewRequired();
}
}
+
+ if (!mDelayChanges) {
+ persistChanges(false);
+ }
}
public boolean hasGrantedByDefaultPermission() {
@@ -303,34 +513,137 @@
}
/**
+ * Get the full un-ellipsized label of the permission group.
+ *
+ * @return the full label of the group.
+ */
+ public CharSequence getFullLabel() {
+ return mFullLabel;
+ }
+
+ /**
* @hide
* @return The resource Id of the request string.
*/
- @SystemApi
public @StringRes int getRequest() {
return mRequest;
}
+ /**
+ * Extract the (subtitle) message explaining to the user that the permission is only granted to
+ * the apps running in the foreground.
+ *
+ * @param info The package item info to extract the message from
+ *
+ * @return the message or 0 if unset
+ */
+ private static @StringRes int getRequestDetail(PackageItemInfo info) {
+ if (info instanceof PermissionGroupInfo) {
+ return ((PermissionGroupInfo) info).requestDetailResourceId;
+ } else {
+ return 0;
+ }
+ }
+
+ /**
+ * Get the (subtitle) message explaining to the user that the permission is only granted to
+ * the apps running in the foreground.
+ *
+ * @return the message or 0 if unset
+ */
+ public @StringRes int getRequestDetail() {
+ return mRequestDetail;
+ }
+
+ /**
+ * Extract the title of the dialog explaining to the user that the permission is granted while
+ * the app is in background and in foreground.
+ *
+ * @param info The package item info to extract the message from
+ *
+ * @return the message or 0 if unset
+ */
+ private static @StringRes int getBackgroundRequest(PackageItemInfo info) {
+ if (info instanceof PermissionGroupInfo) {
+ return ((PermissionGroupInfo) info).backgroundRequestResourceId;
+ } else {
+ return 0;
+ }
+ }
+
+ /**
+ * Get the title of the dialog explaining to the user that the permission is granted while
+ * the app is in background and in foreground.
+ *
+ * @return the message or 0 if unset
+ */
+ public @StringRes int getBackgroundRequest() {
+ return mBackgroundRequest;
+ }
+
+ /**
+ * Extract the (subtitle) message explaining to the user that the she/he is about to allow the
+ * app to have background access.
+ *
+ * @param info The package item info to extract the message from
+ *
+ * @return the message or 0 if unset
+ */
+ private static @StringRes int getBackgroundRequestDetail(PackageItemInfo info) {
+ if (info instanceof PermissionGroupInfo) {
+ return ((PermissionGroupInfo) info).backgroundRequestDetailResourceId;
+ } else {
+ return 0;
+ }
+ }
+
+ /**
+ * Get the (subtitle) message explaining to the user that the she/he is about to allow the
+ * app to have background access.
+ *
+ * @return the message or 0 if unset
+ */
+ public @StringRes int getBackgroundRequestDetail() {
+ return mBackgroundRequestDetail;
+ }
+
public CharSequence getDescription() {
return mDescription;
}
- public int getUserId() {
- return mUserHandle.getIdentifier();
+ public UserHandle getUser() {
+ return mUserHandle;
}
public boolean hasPermission(String permission) {
return mPermissions.get(permission) != null;
}
+ /**
+ * Return a permission if in this group.
+ *
+ * @param permissionName The name of the permission
+ *
+ * @return The permission
+ */
+ public @Nullable Permission getPermission(@NonNull String permissionName) {
+ return mPermissions.get(permissionName);
+ }
+
public boolean areRuntimePermissionsGranted() {
return areRuntimePermissionsGranted(null);
}
public boolean areRuntimePermissionsGranted(String[] filterPermissions) {
- if (LocationUtils.isLocationGroupAndProvider(mName, mPackageInfo.packageName)) {
+ if (LocationUtils.isLocationGroupAndProvider(mContext, mName, mPackageInfo.packageName)) {
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);
+ }
final int permissionCount = mPermissions.size();
for (int i = 0; i < permissionCount; i++) {
Permission permission = mPermissions.valueAt(i);
@@ -338,12 +651,7 @@
&& !ArrayUtils.contains(filterPermissions, permission.getName())) {
continue;
}
- if (mAppSupportsRuntimePermissions) {
- if (permission.isGranted()) {
- return true;
- }
- } else if (permission.isGranted() && (permission.getAppOp() == null
- || permission.isAppOpAllowed()) && !permission.isReviewRequired()) {
+ if (permission.isGrantedIncludingAppOp()) {
return true;
}
}
@@ -354,8 +662,112 @@
return grantRuntimePermissions(fixedByTheUser, null);
}
+ /**
+ * Set mode of an app-op if needed.
+ *
+ * @param op The op to set
+ * @param uid The uid the app-op belongs top
+ * @param mode The new mode
+ *
+ * @return {@code true} iff app-op was changed
+ */
+ private boolean setAppOpMode(@NonNull String op, int uid, int mode) {
+ int currentMode = mAppOps.unsafeCheckOpRaw(op, uid, mPackageInfo.packageName);
+ if (currentMode == mode) {
+ return false;
+ }
+
+ mAppOps.setUidMode(op, uid, mode);
+ return true;
+ }
+
+ /**
+ * Allow the app op for a permission/uid.
+ *
+ * <p>There are three cases:
+ * <dl>
+ * <dt>The permission is not split into foreground/background</dt>
+ * <dd>The app op matching the permission will be set to {@link AppOpsManager#MODE_ALLOWED}</dd>
+ * <dt>The permission is a foreground permission:</dt>
+ * <dd><dl><dt>The background permission permission is granted</dt>
+ * <dd>The app op matching the permission will be set to {@link AppOpsManager#MODE_ALLOWED}</dd>
+ * <dt>The background permission permission is <u>not</u> granted</dt>
+ * <dd>The app op matching the permission will be set to
+ * {@link AppOpsManager#MODE_FOREGROUND}</dd>
+ * </dl></dd>
+ * <dt>The permission is a background permission:</dt>
+ * <dd>All granted foreground permissions for this background permission will be set to
+ * {@link AppOpsManager#MODE_ALLOWED}</dd>
+ * </dl>
+ *
+ * @param permission The permission which has an appOps that should be allowed
+ * @param uid The uid of the process the app op if for
+ *
+ * @return {@code true} iff app-op was changed
+ */
+ private boolean allowAppOp(Permission permission, int uid) {
+ boolean wasChanged = false;
+
+ if (permission.isBackgroundPermission()) {
+ ArrayList<Permission> foregroundPermissions = permission.getForegroundPermissions();
+
+ int numForegroundPermissions = foregroundPermissions.size();
+ for (int i = 0; i < numForegroundPermissions; i++) {
+ Permission foregroundPermission = foregroundPermissions.get(i);
+ if (foregroundPermission.isAppOpAllowed()) {
+ wasChanged |= setAppOpMode(foregroundPermission.getAppOp(), uid, MODE_ALLOWED);
+ }
+ }
+ } else {
+ if (permission.hasBackgroundPermission()) {
+ Permission backgroundPermission = permission.getBackgroundPermission();
+
+ if (backgroundPermission == null) {
+ // The app requested a permission that has a background permission but it did
+ // not request the background permission, hence it can never get background
+ // access
+ wasChanged = setAppOpMode(permission.getAppOp(), uid, MODE_FOREGROUND);
+ } else {
+ if (backgroundPermission.isAppOpAllowed()) {
+ wasChanged = setAppOpMode(permission.getAppOp(), uid, MODE_ALLOWED);
+ } else {
+ wasChanged = setAppOpMode(permission.getAppOp(), uid, MODE_FOREGROUND);
+ }
+ }
+ } else {
+ wasChanged = setAppOpMode(permission.getAppOp(), uid, MODE_ALLOWED);
+ }
+ }
+
+ return wasChanged;
+ }
+
+ /**
+ * Kills the app the permissions belong to (and all apps sharing the same uid)
+ *
+ * @param reason The reason why the apps are killed
+ */
+ private void killApp(String reason) {
+ mActivityManager.killUid(mPackageInfo.applicationInfo.uid, reason);
+ }
+
+ /**
+ * Grant permissions of the group.
+ *
+ * <p>This also automatically grants all app ops for permissions that have app ops.
+ * <p>This does <u>only</u> grant permissions in {@link #mPermissions}, i.e. usually not
+ * the background permissions.
+ *
+ * @param fixedByTheUser If the user requested that she/he does not want to be asked again
+ * @param filterPermissions If {@code null} all permissions of the group will be granted.
+ * Otherwise only permissions in {@code filterPermissions} will be
+ * granted.
+ *
+ * @return {@code true} iff all permissions of this group could be granted.
+ */
public boolean grantRuntimePermissions(boolean fixedByTheUser, String[] filterPermissions) {
- final int uid = mPackageInfo.applicationInfo.uid;
+ boolean killApp = false;
+ boolean wasAllGranted = true;
// We toggle permissions only to apps that support runtime
// permissions, otherwise we toggle the app op corresponding
@@ -371,23 +783,23 @@
continue;
}
+ boolean wasGranted = permission.isGrantedIncludingAppOp();
+
if (mAppSupportsRuntimePermissions) {
// Do not touch permissions fixed by the system.
if (permission.isSystemFixed()) {
- return false;
+ wasAllGranted = false;
+ break;
}
// Ensure the permission app op enabled before the permission grant.
- if (permission.hasAppOp() && !permission.isAppOpAllowed()) {
+ if (permission.affectsAppOp() && !permission.isAppOpAllowed()) {
permission.setAppOpAllowed(true);
- mAppOps.setUidMode(permission.getAppOp(), uid, AppOpsManager.MODE_ALLOWED);
}
// Grant the permission if needed.
if (!permission.isGranted()) {
permission.setGranted(true);
- mPackageManager.grantRuntimePermission(mPackageInfo.packageName,
- permission.getName(), mUserHandle);
}
// Update the permission flags.
@@ -397,11 +809,6 @@
if (permission.isUserFixed() || permission.isUserSet()) {
permission.setUserFixed(false);
permission.setUserSet(false);
- mPackageManager.updatePermissionFlags(permission.getName(),
- mPackageInfo.packageName,
- PackageManager.FLAG_PERMISSION_USER_FIXED
- | PackageManager.FLAG_PERMISSION_USER_SET,
- 0, mUserHandle);
}
}
} else {
@@ -410,59 +817,135 @@
continue;
}
- int killUid = -1;
- int mask = 0;
-
// If the permissions has no corresponding app op, then it is a
// third-party one and we do not offer toggling of such permissions.
- if (permission.hasAppOp()) {
+ if (permission.affectsAppOp()) {
if (!permission.isAppOpAllowed()) {
permission.setAppOpAllowed(true);
- // Enable the app op.
- mAppOps.setUidMode(permission.getAppOp(), uid, AppOpsManager.MODE_ALLOWED);
// Legacy apps do not know that they have to retry access to a
// resource due to changes in runtime permissions (app ops in this
// case). Therefore, we restart them on app op change, so they
// can pick up the change.
- killUid = uid;
+ killApp = true;
}
// Mark that the permission should not be be granted on upgrade
// when the app begins supporting runtime permissions.
if (permission.shouldRevokeOnUpgrade()) {
permission.setRevokeOnUpgrade(false);
- mask |= PackageManager.FLAG_PERMISSION_REVOKE_ON_UPGRADE;
}
}
// Granting a permission explicitly means the user already
// reviewed it so clear the review flag on every grant.
if (permission.isReviewRequired()) {
- permission.resetReviewRequired();
- mask |= PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED;
+ permission.unsetReviewRequired();
}
+ }
- if (mask != 0) {
- mPackageManager.updatePermissionFlags(permission.getName(),
- mPackageInfo.packageName, mask, 0, mUserHandle);
- }
+ // 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 (!wasGranted && permission.isGrantedIncludingAppOp()) {
+ if (permission.getName().equals(ACCESS_FINE_LOCATION)) {
+ Permission bgPerm = permission.getBackgroundPermission();
+ if (bgPerm != null) {
+ if (bgPerm.isGrantedIncludingAppOp()) {
+ mTriggerLocationAccessCheckOnPersist = true;
+ }
+ }
+ } else if (permission.getName().equals(ACCESS_BACKGROUND_LOCATION)) {
+ ArrayList<Permission> fgPerms = permission.getForegroundPermissions();
+ if (fgPerms != null) {
+ int numFgPerms = fgPerms.size();
+ for (int fgPermNum = 0; fgPermNum < numFgPerms; fgPermNum++) {
+ Permission fgPerm = fgPerms.get(fgPermNum);
- if (killUid != -1) {
- mActivityManager.killUid(uid, KILL_REASON_APP_OP_CHANGE);
+ if (fgPerm.getName().equals(ACCESS_FINE_LOCATION)) {
+ if (fgPerm.isGrantedIncludingAppOp()) {
+ mTriggerLocationAccessCheckOnPersist = true;
+ }
+
+ break;
+ }
+ }
+ }
}
}
}
- return true;
+ if (!mDelayChanges) {
+ persistChanges(false);
+
+ if (killApp) {
+ killApp(KILL_REASON_APP_OP_CHANGE);
+ }
+ }
+
+ return wasAllGranted;
}
public boolean revokeRuntimePermissions(boolean fixedByTheUser) {
return revokeRuntimePermissions(fixedByTheUser, null);
}
+ /**
+ * Disallow the app op for a permission/uid.
+ *
+ * <p>There are three cases:
+ * <dl>
+ * <dt>The permission is not split into foreground/background</dt>
+ * <dd>The app op matching the permission will be set to {@link AppOpsManager#MODE_IGNORED}</dd>
+ * <dt>The permission is a foreground permission:</dt>
+ * <dd>The app op matching the permission will be set to {@link AppOpsManager#MODE_IGNORED}</dd>
+ * <dt>The permission is a background permission:</dt>
+ * <dd>All granted foreground permissions for this background permission will be set to
+ * {@link AppOpsManager#MODE_FOREGROUND}</dd>
+ * </dl>
+ *
+ * @param permission The permission which has an appOps that should be disallowed
+ * @param uid The uid of the process the app op if for
+ *
+ * @return {@code true} iff app-op was changed
+ */
+ private boolean disallowAppOp(Permission permission, int uid) {
+ boolean wasChanged = false;
+
+ if (permission.isBackgroundPermission()) {
+ ArrayList<Permission> foregroundPermissions = permission.getForegroundPermissions();
+
+ int numForegroundPermissions = foregroundPermissions.size();
+ for (int i = 0; i < numForegroundPermissions; i++) {
+ Permission foregroundPermission = foregroundPermissions.get(i);
+ if (foregroundPermission.isAppOpAllowed()) {
+ wasChanged |= setAppOpMode(foregroundPermission.getAppOp(), uid,
+ MODE_FOREGROUND);
+ }
+ }
+ } else {
+ wasChanged = setAppOpMode(permission.getAppOp(), uid, MODE_IGNORED);
+ }
+
+ return wasChanged;
+ }
+
+ /**
+ * Revoke permissions of the group.
+ *
+ * <p>This also disallows all app ops for permissions that have app ops.
+ * <p>This does <u>only</u> revoke permissions in {@link #mPermissions}, i.e. usually not
+ * the background permissions.
+ *
+ * @param fixedByTheUser If the user requested that she/he does not want to be asked again
+ * @param filterPermissions If {@code null} all permissions of the group will be revoked.
+ * Otherwise only permissions in {@code filterPermissions} will be
+ * revoked.
+ *
+ * @return {@code true} iff all permissions of this group could be revoked.
+ */
public boolean revokeRuntimePermissions(boolean fixedByTheUser, String[] filterPermissions) {
- final int uid = mPackageInfo.applicationInfo.uid;
+ boolean killApp = false;
+ boolean wasAllRevoked = true;
// We toggle permissions only to apps that support runtime
// permissions, otherwise we toggle the app op corresponding
@@ -473,17 +956,16 @@
continue;
}
- if (mAppSupportsRuntimePermissions) {
- // Do not touch permissions fixed by the system.
- if (permission.isSystemFixed()) {
- return false;
- }
+ // Do not touch permissions fixed by the system.
+ if (permission.isSystemFixed()) {
+ wasAllRevoked = false;
+ break;
+ }
+ if (mAppSupportsRuntimePermissions) {
// Revoke the permission if needed.
if (permission.isGranted()) {
permission.setGranted(false);
- mPackageManager.revokeRuntimePermission(mPackageInfo.packageName,
- permission.getName(), mUserHandle);
}
// Update the permission flags.
@@ -492,90 +974,135 @@
if (permission.isUserSet() || !permission.isUserFixed()) {
permission.setUserSet(false);
permission.setUserFixed(true);
- mPackageManager.updatePermissionFlags(permission.getName(),
- mPackageInfo.packageName,
- PackageManager.FLAG_PERMISSION_USER_SET
- | PackageManager.FLAG_PERMISSION_USER_FIXED,
- PackageManager.FLAG_PERMISSION_USER_FIXED,
- mUserHandle);
}
} else {
if (!permission.isUserSet() || permission.isUserFixed()) {
permission.setUserSet(true);
permission.setUserFixed(false);
- // Take a note that the user already chose once.
- mPackageManager.updatePermissionFlags(permission.getName(),
- mPackageInfo.packageName,
- PackageManager.FLAG_PERMISSION_USER_SET
- | PackageManager.FLAG_PERMISSION_USER_FIXED,
- PackageManager.FLAG_PERMISSION_USER_SET,
- mUserHandle);
}
}
+
+ if (permission.affectsAppOp()) {
+ permission.setAppOpAllowed(false);
+ }
} else {
// Legacy apps cannot have a non-granted permission but just in case.
if (!permission.isGranted()) {
continue;
}
- int mask = 0;
- int flags = 0;
- int killUid = -1;
-
// If the permission has no corresponding app op, then it is a
// third-party one and we do not offer toggling of such permissions.
- if (permission.hasAppOp()) {
+ if (permission.affectsAppOp()) {
if (permission.isAppOpAllowed()) {
permission.setAppOpAllowed(false);
- // Disable the app op.
- mAppOps.setUidMode(permission.getAppOp(), uid, AppOpsManager.MODE_IGNORED);
// Disabling an app op may put the app in a situation in which it
// has a handle to state it shouldn't have, so we have to kill the
// app. This matches the revoke runtime permission behavior.
- killUid = uid;
+ killApp = true;
}
// Mark that the permission should not be granted on upgrade
// when the app begins supporting runtime permissions.
if (!permission.shouldRevokeOnUpgrade()) {
permission.setRevokeOnUpgrade(true);
- mask |= PackageManager.FLAG_PERMISSION_REVOKE_ON_UPGRADE;
- flags |= PackageManager.FLAG_PERMISSION_REVOKE_ON_UPGRADE;
}
}
-
- if (mask != 0) {
- mPackageManager.updatePermissionFlags(permission.getName(),
- mPackageInfo.packageName, mask, flags, mUserHandle);
- }
-
- if (killUid != -1) {
- mActivityManager.killUid(uid, KILL_REASON_APP_OP_CHANGE);
- }
}
}
- return true;
+ if (!mDelayChanges) {
+ persistChanges(false);
+
+ if (killApp) {
+ killApp(KILL_REASON_APP_OP_CHANGE);
+ }
+ }
+
+ return wasAllRevoked;
}
- public void setPolicyFixed() {
- final int permissionCount = mPermissions.size();
- for (int i = 0; i < permissionCount; i++) {
- Permission permission = mPermissions.valueAt(i);
- permission.setPolicyFixed(true);
- mPackageManager.updatePermissionFlags(permission.getName(),
- mPackageInfo.packageName,
- PackageManager.FLAG_PERMISSION_POLICY_FIXED,
- PackageManager.FLAG_PERMISSION_POLICY_FIXED,
- mUserHandle);
+ /**
+ * Mark permissions in this group as policy fixed.
+ *
+ * @param filterPermissions The permissions to mark
+ */
+ public void setPolicyFixed(@NonNull String[] filterPermissions) {
+ for (String permissionName : filterPermissions) {
+ Permission permission = mPermissions.get(permissionName);
+
+ if (permission != null) {
+ permission.setPolicyFixed(true);
+ }
+ }
+
+ if (!mDelayChanges) {
+ persistChanges(false);
}
}
- public List<Permission> getPermissions() {
+ /**
+ * Set the user-fixed flag for all permissions in this group.
+ *
+ * @param isUsedFixed if the flag should be set or not
+ */
+ public void setUserFixed(boolean isUsedFixed) {
+ final int permissionCount = mPermissions.size();
+ for (int i = 0; i < permissionCount; i++) {
+ Permission permission = mPermissions.valueAt(i);
+ permission.setUserFixed(isUsedFixed);
+ }
+
+ if (!mDelayChanges) {
+ persistChanges(false);
+ }
+ }
+
+ public ArrayList<Permission> getPermissions() {
return new ArrayList<>(mPermissions.values());
}
+ /**
+ * @return An {@link AppPermissionGroup}-object that contains all background permissions for
+ * this group.
+ */
+ public AppPermissionGroup getBackgroundPermissions() {
+ return mBackgroundPermissions;
+ }
+
+ /**
+ * @return {@code true} iff the app request at least one permission in this group that has a
+ * background permission. It is possible that the app does not request the matching background
+ * permission and hence will only ever get foreground access, never background access.
+ */
+ public boolean hasPermissionWithBackgroundMode() {
+ return mHasPermissionWithBackgroundMode;
+ }
+
+ /**
+ * Is the group a storage permission group that is referring to an app that does not have
+ * isolated storage
+ *
+ * @return {@code true} iff this is a storage group on an app that does not have isolated
+ * storage
+ */
+ public boolean isNonIsolatedStorage() {
+ return mIsNonIsolatedStorage;
+ }
+
+ /**
+ * Whether this is group that contains all the background permission for regular permission
+ * group.
+ *
+ * @return {@code true} iff this is a background permission group.
+ *
+ * @see #getBackgroundPermissions()
+ */
+ public boolean isBackgroundGroup() {
+ return mPermissions.valueAt(0).isBackgroundPermission();
+ }
+
public int getFlags() {
int flags = 0;
final int permissionCount = mPermissions.size();
@@ -642,35 +1169,20 @@
}
@Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
-
- if (obj == null) {
+ public boolean equals(Object o) {
+ if (o == null || !(o instanceof AppPermissionGroup)) {
return false;
}
- if (getClass() != obj.getClass()) {
- return false;
- }
-
- AppPermissionGroup other = (AppPermissionGroup) obj;
-
- if (mName == null) {
- if (other.mName != null) {
- return false;
- }
- } else if (!mName.equals(other.mName)) {
- return false;
- }
-
- return true;
+ AppPermissionGroup other = (AppPermissionGroup) o;
+ return mName.equals(other.mName)
+ && mPackageInfo.packageName.equals(other.mPackageInfo.packageName)
+ && mUserHandle.equals(other.mUserHandle);
}
@Override
public int hashCode() {
- return mName != null ? mName.hashCode() : 0;
+ return mName.hashCode() + mPackageInfo.packageName.hashCode() + mUserHandle.hashCode();
}
@Override
@@ -678,6 +1190,9 @@
StringBuilder builder = new StringBuilder();
builder.append(getClass().getSimpleName());
builder.append("{name=").append(mName);
+ if (mBackgroundPermissions != null) {
+ builder.append(", <has background permissions>}");
+ }
if (!mPermissions.isEmpty()) {
builder.append(", <has permissions>}");
} else {
@@ -695,4 +1210,134 @@
mContainsPreRuntimePermission = true;
}
}
+
+ /**
+ * If the changes to this group were delayed, persist them to the platform.
+ *
+ * @param mayKillBecauseOfAppOpsChange If the app these permissions belong to may be killed if
+ * app ops change. If this is set to {@code false} the
+ * caller has to make sure to kill the app if needed.
+ */
+ void persistChanges(boolean mayKillBecauseOfAppOpsChange) {
+ int uid = mPackageInfo.applicationInfo.uid;
+
+ int numPermissions = mPermissions.size();
+ boolean shouldKillApp = false;
+
+ for (int i = 0; i < numPermissions; i++) {
+ Permission permission = mPermissions.valueAt(i);
+
+ if (!permission.isSystemFixed()) {
+ if (permission.isGranted()) {
+ mPackageManager.grantRuntimePermission(mPackageInfo.packageName,
+ permission.getName(), mUserHandle);
+ } else {
+ boolean isCurrentlyGranted = mContext.checkPermission(permission.getName(), -1,
+ uid) == PERMISSION_GRANTED;
+
+ if (isCurrentlyGranted) {
+ mPackageManager.revokeRuntimePermission(mPackageInfo.packageName,
+ permission.getName(), mUserHandle);
+ }
+ }
+ }
+
+ int flags = (permission.isUserSet() ? PackageManager.FLAG_PERMISSION_USER_SET : 0)
+ | (permission.isUserFixed() ? PackageManager.FLAG_PERMISSION_USER_FIXED : 0)
+ | (permission.shouldRevokeOnUpgrade()
+ ? PackageManager.FLAG_PERMISSION_REVOKE_ON_UPGRADE : 0)
+ | (permission.isPolicyFixed() ? PackageManager.FLAG_PERMISSION_POLICY_FIXED : 0)
+ | (permission.isReviewRequired()
+ ? PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED : 0);
+
+ mPackageManager.updatePermissionFlags(permission.getName(),
+ mPackageInfo.packageName,
+ PackageManager.FLAG_PERMISSION_USER_SET
+ | PackageManager.FLAG_PERMISSION_USER_FIXED
+ | PackageManager.FLAG_PERMISSION_REVOKE_ON_UPGRADE
+ | PackageManager.FLAG_PERMISSION_POLICY_FIXED
+ | PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED,
+ flags, mUserHandle);
+
+ if (permission.affectsAppOp()) {
+ if (!permission.isSystemFixed()) {
+ // Enabling/Disabling an app op may put the app in a situation in which it has
+ // a handle to state it shouldn't have, so we have to kill the app. This matches
+ // the revoke runtime permission behavior.
+ if (permission.isAppOpAllowed()) {
+ shouldKillApp |= allowAppOp(permission, uid);
+ } else {
+ shouldKillApp |= disallowAppOp(permission, uid);
+ }
+ }
+ }
+ }
+
+ if (mayKillBecauseOfAppOpsChange && shouldKillApp) {
+ killApp(KILL_REASON_APP_OP_CHANGE);
+ }
+
+ if (mTriggerLocationAccessCheckOnPersist) {
+ new LocationAccessCheck(mContext, null).checkLocationAccessSoon();
+ mTriggerLocationAccessCheckOnPersist = false;
+ }
+ }
+
+ /**
+ * Check if permission group contains a runtime permission that split from an installed
+ * permission and the split happened in an Android version higher than app's targetSdk.
+ *
+ * @return {@code true} if there is such permission, {@code false} otherwise
+ */
+ public boolean hasInstallToRuntimeSplit() {
+ PermissionManager permissionManager =
+ (PermissionManager) mContext.getSystemService(PermissionManager.class);
+
+ int numSplitPerms = permissionManager.getSplitPermissions().size();
+ for (int splitPermNum = 0; splitPermNum < numSplitPerms; splitPermNum++) {
+ PermissionManager.SplitPermissionInfo spi =
+ permissionManager.getSplitPermissions().get(splitPermNum);
+ String splitPerm = spi.getSplitPermission();
+
+ PermissionInfo pi;
+ try {
+ pi = mPackageManager.getPermissionInfo(splitPerm, 0);
+ } catch (NameNotFoundException e) {
+ Log.w(LOG_TAG, "No such permission: " + splitPerm, e);
+ continue;
+ }
+
+ // Skip if split permission is not "install" permission.
+ if (pi.getProtection() != pi.PROTECTION_NORMAL) {
+ continue;
+ }
+
+ List<String> newPerms = spi.getNewPermissions();
+ int numNewPerms = newPerms.size();
+ for (int newPermNum = 0; newPermNum < numNewPerms; newPermNum++) {
+ String newPerm = newPerms.get(newPermNum);
+
+ if (!hasPermission(newPerm)) {
+ continue;
+ }
+
+ try {
+ pi = mPackageManager.getPermissionInfo(newPerm, 0);
+ } catch (NameNotFoundException e) {
+ Log.w(LOG_TAG, "No such permission: " + newPerm, e);
+ continue;
+ }
+
+ // Skip if new permission is not "runtime" permission.
+ if (pi.getProtection() != pi.PROTECTION_DANGEROUS) {
+ continue;
+ }
+
+ if (mPackageInfo.applicationInfo.targetSdkVersion < spi.getTargetSdk()) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
}
diff --git a/src/com/android/packageinstaller/permission/model/AppPermissionUsage.java b/src/com/android/packageinstaller/permission/model/AppPermissionUsage.java
new file mode 100644
index 0000000..6a54d58
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/model/AppPermissionUsage.java
@@ -0,0 +1,257 @@
+/*
+ * 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.packageinstaller.permission.model;
+
+import android.app.AppOpsManager;
+import android.app.AppOpsManager.HistoricalOp;
+import android.app.AppOpsManager.HistoricalPackageOps;
+import android.app.AppOpsManager.OpEntry;
+import android.app.AppOpsManager.PackageOps;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.packageinstaller.permission.model.PermissionApps.PermissionApp;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Function;
+
+/**
+ * Stats for permission usage of an app. This data is for a given time period,
+ * i.e. does not contain the full history.
+ */
+public final class AppPermissionUsage {
+ private final @NonNull List<GroupUsage> mGroupUsages = new ArrayList<>();
+ private final @NonNull PermissionApp mPermissionApp;
+
+ private AppPermissionUsage(@NonNull PermissionApp permissionApp,
+ @NonNull List<AppPermissionGroup> groups, @Nullable PackageOps lastUsage,
+ @Nullable HistoricalPackageOps historicalUsage) {
+ mPermissionApp = permissionApp;
+ final int groupCount = groups.size();
+ for (int i = 0; i < groupCount; i++) {
+ final AppPermissionGroup group = groups.get(i);
+ mGroupUsages.add(new GroupUsage(group, lastUsage, historicalUsage));
+ }
+ }
+
+ public @NonNull PermissionApp getApp() {
+ return mPermissionApp;
+ }
+
+ public @NonNull String getPackageName() {
+ return mPermissionApp.getPackageName();
+ }
+
+ public int getUid() {
+ return mPermissionApp.getUid();
+ }
+
+ public long getLastAccessTime() {
+ long lastAccessTime = 0;
+ final int permissionCount = mGroupUsages.size();
+ for (int i = 0; i < permissionCount; i++) {
+ final GroupUsage groupUsage = mGroupUsages.get(i);
+ lastAccessTime = Math.max(lastAccessTime, groupUsage.getLastAccessTime());
+ }
+ return lastAccessTime;
+ }
+
+ public long getAccessCount() {
+ long accessCount = 0;
+ final int permissionCount = mGroupUsages.size();
+ for (int i = 0; i < permissionCount; i++) {
+ final GroupUsage permission = mGroupUsages.get(i);
+ accessCount += permission.getAccessCount();
+ }
+ return accessCount;
+ }
+
+ public @NonNull List<GroupUsage> getGroupUsages() {
+ return mGroupUsages;
+ }
+
+ /**
+ * 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 {
+ private final @NonNull AppPermissionGroup mGroup;
+ private final @Nullable PackageOps mLastUsage;
+ private final @Nullable HistoricalPackageOps mHistoricalUsage;
+
+ GroupUsage(@NonNull AppPermissionGroup group, @Nullable PackageOps lastUsage,
+ @Nullable HistoricalPackageOps historicalUsage) {
+ mGroup = group;
+ mLastUsage = lastUsage;
+ mHistoricalUsage = historicalUsage;
+ }
+
+ public long getLastAccessTime() {
+ if (mLastUsage == null) {
+ return 0;
+ }
+ return lastAccessAggregate(
+ (op) -> op.getLastAccessTime(AppOpsManager.OP_FLAGS_ALL_TRUSTED));
+ }
+
+ public long getLastAccessForegroundTime() {
+ if (mLastUsage == null) {
+ return 0;
+ }
+ return lastAccessAggregate(
+ (op) -> op.getLastAccessForegroundTime(AppOpsManager.OP_FLAGS_ALL_TRUSTED));
+ }
+
+ public long getLastAccessBackgroundTime() {
+ if (mLastUsage == null) {
+ return 0;
+ }
+ return lastAccessAggregate(
+ (op) -> op.getLastAccessBackgroundTime(AppOpsManager.OP_FLAGS_ALL_TRUSTED));
+ }
+
+ public long getForegroundAccessCount() {
+ if (mHistoricalUsage == null) {
+ return 0;
+ }
+ return extractAggregate((HistoricalOp op)
+ -> op.getForegroundAccessCount(AppOpsManager.OP_FLAGS_ALL_TRUSTED));
+ }
+
+ public long getBackgroundAccessCount() {
+ if (mHistoricalUsage == null) {
+ return 0;
+ }
+ return extractAggregate((HistoricalOp op)
+ -> op.getBackgroundAccessCount(AppOpsManager.OP_FLAGS_ALL_TRUSTED));
+ }
+
+ public long getAccessCount() {
+ if (mHistoricalUsage == null) {
+ return 0;
+ }
+ return extractAggregate((HistoricalOp op) ->
+ op.getForegroundAccessCount(AppOpsManager.OP_FLAGS_ALL_TRUSTED)
+ + op.getBackgroundAccessCount(AppOpsManager.OP_FLAGS_ALL_TRUSTED)
+ );
+ }
+
+ public long getAccessDuration() {
+ if (mHistoricalUsage == null) {
+ return 0;
+ }
+ return extractAggregate((HistoricalOp op) ->
+ op.getForegroundAccessDuration(AppOpsManager.OP_FLAGS_ALL_TRUSTED)
+ + op.getBackgroundAccessDuration(AppOpsManager.OP_FLAGS_ALL_TRUSTED)
+ );
+ }
+
+ public boolean isRunning() {
+ if (mLastUsage == null) {
+ return false;
+ }
+ 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;
+ 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;
+ 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();
+ 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));
+ }
+ }
+ }
+ return aggregate;
+ }
+
+ public @NonNull AppPermissionGroup getGroup() {
+ return mGroup;
+ }
+ }
+
+ public static class Builder {
+ private final @NonNull List<AppPermissionGroup> mGroups = new ArrayList<>();
+ private final @NonNull PermissionApp mPermissionApp;
+ private @Nullable PackageOps mLastUsage;
+ private @Nullable HistoricalPackageOps mHistoricalUsage;
+
+ public Builder(@NonNull PermissionApp permissionApp) {
+ mPermissionApp = permissionApp;
+ }
+
+ public @NonNull Builder addGroup(@NonNull AppPermissionGroup group) {
+ mGroups.add(group);
+ return this;
+ }
+
+ public @NonNull Builder setLastUsage(@Nullable PackageOps lastUsage) {
+ mLastUsage = lastUsage;
+ return this;
+ }
+
+ public @NonNull Builder setHistoricalUsage(@Nullable HistoricalPackageOps historicalUsage) {
+ mHistoricalUsage = historicalUsage;
+ return this;
+ }
+
+ public @NonNull AppPermissionUsage build() {
+ if (mGroups.isEmpty()) {
+ throw new IllegalStateException("mGroups cannot be empty.");
+ }
+ return new AppPermissionUsage(mPermissionApp, mGroups, mLastUsage, mHistoricalUsage);
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/model/AppPermissions.java b/src/com/android/packageinstaller/permission/model/AppPermissions.java
index 26dc311..d6e0744 100644
--- a/src/com/android/packageinstaller/permission/model/AppPermissions.java
+++ b/src/com/android/packageinstaller/permission/model/AppPermissions.java
@@ -19,39 +19,58 @@
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
-import android.text.BidiFormatter;
+import android.os.UserHandle;
+import android.util.ArrayMap;
+
+import com.android.packageinstaller.permission.utils.Utils;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.LinkedHashMap;
import java.util.List;
+/**
+ * An app that requests permissions.
+ *
+ * <p>Allows to query all permission groups of the app and which permission belongs to which group.
+ */
public final class AppPermissions {
+ /**
+ * All permission groups the app requests. Background permission groups are attached to their
+ * foreground groups.
+ */
private final ArrayList<AppPermissionGroup> mGroups = new ArrayList<>();
- private final LinkedHashMap<String, AppPermissionGroup> mNameToGroupMap = new LinkedHashMap<>();
+ /** Cache: group name -> group */
+ private final ArrayMap<String, AppPermissionGroup> mGroupNameToGroup = new ArrayMap<>();
+
+ /** Cache: permission name -> group. Might point to background group */
+ private final ArrayMap<String, AppPermissionGroup> mPermissionNameToGroup = new ArrayMap<>();
private final Context mContext;
- private final String[] mFilterPermissions;
-
private final CharSequence mAppLabel;
private final Runnable mOnErrorCallback;
private final boolean mSortGroups;
+ /** Do not actually commit changes to the platform until {@link #persistChanges} is called */
+ private final boolean mDelayChanges;
+
private PackageInfo mPackageInfo;
- public AppPermissions(Context context, PackageInfo packageInfo, String[] filterPermissions,
- boolean sortGroups, Runnable onErrorCallback) {
+ public AppPermissions(Context context, PackageInfo packageInfo, boolean sortGroups,
+ Runnable onErrorCallback) {
+ this(context, packageInfo, sortGroups, false, onErrorCallback);
+ }
+
+ public AppPermissions(Context context, PackageInfo packageInfo, boolean sortGroups,
+ boolean delayChanges, Runnable onErrorCallback) {
mContext = context;
mPackageInfo = packageInfo;
- mFilterPermissions = filterPermissions;
- mAppLabel = BidiFormatter.getInstance().unicodeWrap(
- packageInfo.applicationInfo.loadSafeLabel(
- context.getPackageManager()).toString());
+ mAppLabel = Utils.getAppLabel(packageInfo.applicationInfo, context);
mSortGroups = sortGroups;
+ mDelayChanges = delayChanges;
mOnErrorCallback = onErrorCallback;
loadPermissionGroups();
}
@@ -70,7 +89,7 @@
}
public AppPermissionGroup getPermissionGroup(String name) {
- return mNameToGroupMap.get(name);
+ return mGroupNameToGroup.get(name);
}
public List<AppPermissionGroup> getPermissionGroups() {
@@ -78,9 +97,6 @@
}
public boolean isReviewRequired() {
- if (!mContext.getPackageManager().isPermissionReviewModeEnabled()) {
- return false;
- }
final int groupCount = mGroups.size();
for (int i = 0; i < groupCount; i++) {
AppPermissionGroup group = mGroups.get(i);
@@ -93,8 +109,10 @@
private void loadPackageInfo() {
try {
- mPackageInfo = mContext.getPackageManager().getPackageInfo(
- mPackageInfo.packageName, PackageManager.GET_PERMISSIONS);
+ mPackageInfo = mContext.createPackageContextAsUser(mPackageInfo.packageName, 0,
+ UserHandle.getUserHandleForUid(mPackageInfo.applicationInfo.uid))
+ .getPackageManager().getPackageInfo(mPackageInfo.packageName,
+ PackageManager.GET_PERMISSIONS);
} catch (PackageManager.NameNotFoundException e) {
if (mOnErrorCallback != null) {
mOnErrorCallback.run();
@@ -102,66 +120,86 @@
}
}
- private void loadPermissionGroups() {
- mGroups.clear();
+ /**
+ * Add all individual permissions of the {@code group} to the {@link #mPermissionNameToGroup}
+ * lookup table.
+ *
+ * @param group The group of permissions to add
+ */
+ private void addAllPermissions(AppPermissionGroup group) {
+ ArrayList<Permission> perms = group.getPermissions();
- if (mPackageInfo.requestedPermissions == null) {
- return;
- }
-
- if (mFilterPermissions != null) {
- for (String filterPermission : mFilterPermissions) {
- for (String requestedPerm : mPackageInfo.requestedPermissions) {
- if (!filterPermission.equals(requestedPerm)) {
- continue;
- }
- addPermissionGroupIfNeeded(requestedPerm);
- break;
- }
- }
- } else {
- for (String requestedPerm : mPackageInfo.requestedPermissions) {
- addPermissionGroupIfNeeded(requestedPerm);
- }
- }
-
- if (mSortGroups) {
- Collections.sort(mGroups);
- }
-
- mNameToGroupMap.clear();
- for (AppPermissionGroup group : mGroups) {
- mNameToGroupMap.put(group.getName(), group);
+ int numPerms = perms.size();
+ for (int permNum = 0; permNum < numPerms; permNum++) {
+ mPermissionNameToGroup.put(perms.get(permNum).getName(), group);
}
}
- private void addPermissionGroupIfNeeded(String permission) {
- if (getGroupForPermission(permission) != null) {
- return;
- }
+ private void loadPermissionGroups() {
+ mGroups.clear();
+ mGroupNameToGroup.clear();
+ mPermissionNameToGroup.clear();
- AppPermissionGroup group = AppPermissionGroup.create(mContext,
- mPackageInfo, permission);
- if (group == null) {
- return;
- }
+ if (mPackageInfo.requestedPermissions != null) {
+ for (String requestedPerm : mPackageInfo.requestedPermissions) {
+ if (getGroupForPermission(requestedPerm) == null) {
+ AppPermissionGroup group = AppPermissionGroup.create(mContext, mPackageInfo,
+ requestedPerm, mDelayChanges);
+ if (group == null) {
+ continue;
+ }
- mGroups.add(group);
+ mGroups.add(group);
+ mGroupNameToGroup.put(group.getName(), group);
+
+ addAllPermissions(group);
+
+ AppPermissionGroup backgroundGroup = group.getBackgroundPermissions();
+ if (backgroundGroup != null) {
+ addAllPermissions(backgroundGroup);
+ }
+ }
+ }
+
+ if (mSortGroups) {
+ Collections.sort(mGroups);
+ }
+ }
}
/**
* Find the group a permission belongs to.
*
+ * <p>The group found might be a background group.
+ *
* @param permission The name of the permission
*
* @return The group the permission belongs to
*/
public AppPermissionGroup getGroupForPermission(String permission) {
- for (AppPermissionGroup group : mGroups) {
- if (group.hasPermission(permission)) {
- return group;
+ return mPermissionNameToGroup.get(permission);
+ }
+
+ /**
+ * If the changes to the permission groups were delayed, persist them now.
+ *
+ * @param mayKillBecauseOfAppOpsChange If the app may be killed if app ops change. If this is
+ * set to {@code false} the caller has to make sure to kill
+ * the app if needed.
+ */
+ public void persistChanges(boolean mayKillBecauseOfAppOpsChange) {
+ if (mDelayChanges) {
+ int numGroups = mGroups.size();
+
+ for (int i = 0; i < numGroups; i++) {
+ AppPermissionGroup group = mGroups.get(i);
+ group.persistChanges(mayKillBecauseOfAppOpsChange);
+
+ AppPermissionGroup backgroundGroup = group.getBackgroundPermissions();
+ if (backgroundGroup != null) {
+ backgroundGroup.persistChanges(mayKillBecauseOfAppOpsChange);
+ }
}
}
- return null;
}
}
diff --git a/src/com/android/packageinstaller/permission/model/Permission.java b/src/com/android/packageinstaller/permission/model/Permission.java
index 2594be0..463c347 100644
--- a/src/com/android/packageinstaller/permission/model/Permission.java
+++ b/src/com/android/packageinstaller/permission/model/Permission.java
@@ -19,8 +19,19 @@
import android.content.pm.PackageManager;
import android.content.pm.PermissionInfo;
+import androidx.annotation.NonNull;
+
+import java.util.ArrayList;
+
+/**
+ * A permission and it's properties.
+ *
+ * @see AppPermissionGroup
+ */
public final class Permission {
+ private final @NonNull PermissionInfo mPermissionInfo;
private final String mName;
+ private final String mBackgroundPermissionName;
private final String mAppOp;
private boolean mGranted;
@@ -28,16 +39,48 @@
private int mFlags;
private boolean mIsEphemeral;
private boolean mIsRuntimeOnly;
+ private Permission mBackgroundPermission;
+ private ArrayList<Permission> mForegroundPermissions;
+ private boolean mWhitelisted;
- public Permission(String name, boolean granted,
- String appOp, boolean appOpAllowed, int flags, int protectionLevel) {
+ public Permission(String name, @NonNull PermissionInfo permissionInfo, boolean granted,
+ String appOp, boolean appOpAllowed, int flags) {
+ mPermissionInfo = permissionInfo;
mName = name;
+ mBackgroundPermissionName = permissionInfo.backgroundPermission;
mGranted = granted;
mAppOp = appOp;
mAppOpAllowed = appOpAllowed;
mFlags = flags;
- mIsEphemeral = (protectionLevel & PermissionInfo.PROTECTION_FLAG_INSTANT) != 0;
- mIsRuntimeOnly = (protectionLevel & PermissionInfo.PROTECTION_FLAG_RUNTIME_ONLY) != 0;
+ mIsEphemeral =
+ (permissionInfo.protectionLevel & PermissionInfo.PROTECTION_FLAG_INSTANT) != 0;
+ mIsRuntimeOnly =
+ (permissionInfo.protectionLevel & PermissionInfo.PROTECTION_FLAG_RUNTIME_ONLY) != 0;
+ }
+
+ /**
+ * Mark this permission as background permission for {@code foregroundPermissions}.
+ *
+ * @param foregroundPermission The foreground permission
+ */
+ public void addForegroundPermissions(Permission foregroundPermission) {
+ if (mForegroundPermissions == null) {
+ mForegroundPermissions = new ArrayList<>(1);
+ }
+ mForegroundPermissions.add(foregroundPermission);
+ }
+
+ /**
+ * Mark this permission as foreground permission for {@code backgroundPermission}.
+ *
+ * @param backgroundPermission The background permission
+ */
+ public void setBackgroundPermission(Permission backgroundPermission) {
+ mBackgroundPermission = backgroundPermission;
+ }
+
+ public PermissionInfo getPermissionInfo() {
+ return mPermissionInfo;
}
public String getName() {
@@ -52,19 +95,55 @@
return mFlags;
}
- public boolean hasAppOp() {
- return mAppOp != null;
+ boolean isHardRestricted() {
+ return (mPermissionInfo.flags & PermissionInfo.FLAG_HARD_RESTRICTED) != 0;
}
+ boolean isSoftRestricted() {
+ return (mPermissionInfo.flags & PermissionInfo.FLAG_SOFT_RESTRICTED) != 0;
+ }
+
+ /**
+ * Does this permission affect app ops.
+ *
+ * <p>I.e. does this permission have a matching app op or is this a background permission. All
+ * background permissions affect the app op of it's assigned foreground permission.
+ *
+ * @return {@code true} if this permission affects app ops
+ */
+ public boolean affectsAppOp() {
+ return mAppOp != null || isBackgroundPermission();
+ }
+
+ /**
+ * Check if the permission is granted.
+ *
+ * <p>This ignores the state of the app-op. I.e. for apps not handling runtime permissions, this
+ * always returns {@code true}.
+ *
+ * @return If the permission is granted
+ */
public boolean isGranted() {
return mGranted;
}
+ /**
+ * Check if the permission is granted, also considering the state of the app-op.
+ *
+ * <p>For the UI, check the grant state of the whole group via
+ * {@link AppPermissionGroup#areRuntimePermissionsGranted}.
+ *
+ * @return {@code true} if the permission (and the app-op) is granted.
+ */
+ public boolean isGrantedIncludingAppOp() {
+ return mGranted && (!affectsAppOp() || isAppOpAllowed()) && !isReviewRequired();
+ }
+
public boolean isReviewRequired() {
return (mFlags & PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED) != 0;
}
- public void resetReviewRequired() {
+ public void unsetReviewRequired() {
mFlags &= ~PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED;
}
@@ -104,6 +183,64 @@
return (mFlags & PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT) != 0;
}
+ /**
+ * Is the permission user sensitive, i.e. should it always be shown to the user.
+ *
+ * <p>Non-sensitive permission are usually hidden behind a setting in an overflow menu or
+ * some other kind of flag.
+ *
+ * @return {@code true} if the permission is user sensitive.
+ */
+ public boolean isUserSensitive() {
+ if (isGrantedIncludingAppOp()) {
+ return (mFlags & PackageManager.FLAG_PERMISSION_USER_SENSITIVE_WHEN_GRANTED) != 0;
+ } else {
+ return (mFlags & PackageManager.FLAG_PERMISSION_USER_SENSITIVE_WHEN_DENIED) != 0;
+ }
+ }
+
+ /**
+ * If this permission is split into a foreground and background permission, this is the name
+ * of the background permission.
+ *
+ * @return The name of the background permission or {@code null} if the permission is not split
+ */
+ public String getBackgroundPermissionName() {
+ return mBackgroundPermissionName;
+ }
+
+ /**
+ * @return If this permission is split into a foreground and background permission,
+ * returns the background permission
+ */
+ public Permission getBackgroundPermission() {
+ return mBackgroundPermission;
+ }
+
+ /**
+ * @return If this permission is split into a foreground and background permission,
+ * returns the foreground permission
+ */
+ public ArrayList<Permission> getForegroundPermissions() {
+ return mForegroundPermissions;
+ }
+
+ /**
+ * @return {@code true} iff this is the foreground permission of a background-foreground-split
+ * permission
+ */
+ public boolean hasBackgroundPermission() {
+ return mBackgroundPermissionName != null;
+ }
+
+ /**
+ * @return {@code true} iff this is the background permission of a background-foreground-split
+ * permission
+ */
+ public boolean isBackgroundPermission() {
+ return mForegroundPermissions != null;
+ }
+
public void setUserSet(boolean userSet) {
if (userSet) {
mFlags |= PackageManager.FLAG_PERMISSION_USER_SET;
diff --git a/src/com/android/packageinstaller/permission/model/PermissionApps.java b/src/com/android/packageinstaller/permission/model/PermissionApps.java
index 4eb74de..7d3a717 100644
--- a/src/com/android/packageinstaller/permission/model/PermissionApps.java
+++ b/src/com/android/packageinstaller/permission/model/PermissionApps.java
@@ -21,19 +21,23 @@
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.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.UserHandle;
import android.os.UserManager;
+import android.text.TextUtils;
import android.util.ArrayMap;
-import android.util.ArraySet;
-import android.util.IconDrawableFactory;
import android.util.Log;
+import android.util.Pair;
import android.util.SparseArray;
-import com.android.packageinstaller.R;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
import java.util.ArrayList;
import java.util.Collections;
@@ -44,13 +48,17 @@
private final Context mContext;
private final String mGroupName;
+ private final String mPackageName;
private final PackageManager mPm;
private final Callback mCallback;
- private final PmCache mCache;
+ private final @Nullable PmCache mPmCache;
+ private final @Nullable AppDataCache mAppDataCache;
private CharSequence mLabel;
+ private CharSequence mFullLabel;
private Drawable mIcon;
+ private @Nullable CharSequence mDescription;
private List<PermissionApp> mPermApps;
// Map (pkg|uid) -> AppPermission
private ArrayMap<String, PermissionApp> mAppLookup;
@@ -58,16 +66,23 @@
private boolean mSkipUi;
private boolean mRefreshing;
- public PermissionApps(Context context, String groupName, Callback callback) {
- this(context, groupName, callback, null);
+ public PermissionApps(Context context, String groupName, String packageName) {
+ this(context, groupName, packageName, null, null, null);
}
- public PermissionApps(Context context, String groupName, Callback callback, PmCache cache) {
- mCache = cache;
+ public PermissionApps(Context context, String groupName, Callback callback) {
+ this(context, groupName, null, callback, null, null);
+ }
+
+ public PermissionApps(Context context, String groupName, String packageName,
+ Callback callback, @Nullable PmCache pmCache, @Nullable AppDataCache appDataCache) {
+ mPmCache = pmCache;
+ mAppDataCache = appDataCache;
mContext = context;
mPm = mContext.getPackageManager();
mGroupName = groupName;
mCallback = callback;
+ mPackageName = packageName;
loadGroupInfo();
}
@@ -86,10 +101,6 @@
* @param getUiInfo If the UI info should be updated
*/
public void refresh(boolean getUiInfo) {
- if (mCallback == null) {
- throw new IllegalStateException("callback needs to be set");
- }
-
if (!mRefreshing) {
mRefreshing = true;
mSkipUi = !getUiInfo;
@@ -101,18 +112,18 @@
* Refresh the state and do not return until it finishes. Should not be called while an {@link
* #refresh async referesh} is in progress.
*/
- public void refreshSync() {
- mSkipUi = true;
+ public void refreshSync(boolean getUiInfo) {
+ mSkipUi = !getUiInfo;
createMap(loadPermissionApps());
}
- public int getGrantedCount(ArraySet<String> launcherPkgs) {
+ public int getGrantedCount() {
int count = 0;
for (PermissionApp app : mPermApps) {
- if (!Utils.shouldShowPermission(app)) {
+ if (!Utils.shouldShowPermission(mContext, app.getPermissionGroup())) {
continue;
}
- if (Utils.isSystem(app, launcherPkgs)) {
+ if (!Utils.isGroupOrBgGroupUserSensitive(app.mAppPermissionGroup)) {
// We default to not showing system apps, so hide them from count.
continue;
}
@@ -123,13 +134,13 @@
return count;
}
- public int getTotalCount(ArraySet<String> launcherPkgs) {
+ public int getTotalCount() {
int count = 0;
for (PermissionApp app : mPermApps) {
- if (!Utils.shouldShowPermission(app)) {
+ if (!Utils.shouldShowPermission(mContext, app.getPermissionGroup())) {
continue;
}
- if (Utils.isSystem(app, launcherPkgs)) {
+ if (!Utils.isGroupOrBgGroupUserSensitive(app.mAppPermissionGroup)) {
// We default to not showing system apps, so hide them from count.
continue;
}
@@ -150,30 +161,82 @@
return mLabel;
}
+ public CharSequence getFullLabel() {
+ return mFullLabel;
+ }
+
public Drawable getIcon() {
return mIcon;
}
+ public CharSequence getDescription() {
+ return mDescription;
+ }
+
+ private @NonNull List<PackageInfo> getPackageInfos(@NonNull UserHandle user) {
+ List<PackageInfo> apps = (mPmCache != null) ? mPmCache.getPackages(
+ user.getIdentifier()) : null;
+ if (apps != null) {
+ if (mPackageName != null) {
+ final int appCount = apps.size();
+ for (int i = 0; i < appCount; i++) {
+ final PackageInfo app = apps.get(i);
+ if (mPackageName.equals(app.packageName)) {
+ apps = new ArrayList<>(1);
+ apps.add(app);
+ return apps;
+ }
+ }
+ }
+ return apps;
+ }
+ if (mPackageName == null) {
+ return mPm.getInstalledPackagesAsUser(PackageManager.GET_PERMISSIONS,
+ user.getIdentifier());
+ } else {
+ try {
+ final PackageInfo packageInfo = mPm.getPackageInfo(mPackageName,
+ PackageManager.GET_PERMISSIONS);
+ apps = new ArrayList<>(1);
+ apps.add(packageInfo);
+ return apps;
+ } catch (NameNotFoundException e) {
+ return Collections.emptyList();
+ }
+ }
+ }
+
private List<PermissionApp> loadPermissionApps() {
- PackageItemInfo groupInfo = getGroupInfo(mGroupName);
+ PackageItemInfo groupInfo = Utils.getGroupInfo(mGroupName, mContext);
if (groupInfo == null) {
return Collections.emptyList();
}
- List<PermissionInfo> groupPermInfos = getGroupPermissionInfos(mGroupName);
+ List<PermissionInfo> groupPermInfos = Utils.getGroupPermissionInfos(mGroupName, mContext);
if (groupPermInfos == null) {
return Collections.emptyList();
}
+ List<PermissionInfo> targetPermInfos = new ArrayList<PermissionInfo>(groupPermInfos.size());
+ for (int i = 0; i < groupPermInfos.size(); i++) {
+ PermissionInfo permInfo = groupPermInfos.get(i);
+ if ((permInfo.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE)
+ == PermissionInfo.PROTECTION_DANGEROUS
+ && (permInfo.flags & PermissionInfo.FLAG_INSTALLED) != 0
+ && (permInfo.flags & PermissionInfo.FLAG_REMOVED) == 0) {
+ targetPermInfos.add(permInfo);
+ }
+ }
+
+ PackageManager packageManager = mContext.getPackageManager();
+ CharSequence groupLabel = groupInfo.loadLabel(packageManager);
+ CharSequence fullGroupLabel = groupInfo.loadSafeLabel(packageManager, 0,
+ TextUtils.SAFE_STRING_FLAG_TRIM | TextUtils.SAFE_STRING_FLAG_FIRST_LINE);
ArrayList<PermissionApp> permApps = new ArrayList<>();
- IconDrawableFactory iconFactory = IconDrawableFactory.newInstance(mContext);
UserManager userManager = mContext.getSystemService(UserManager.class);
for (UserHandle user : userManager.getUserProfiles()) {
- List<PackageInfo> apps = mCache != null ? mCache.getPackages(user.getIdentifier())
- : mPm.getInstalledPackagesAsUser(PackageManager.GET_PERMISSIONS,
- user.getIdentifier());
-
+ List<PackageInfo> apps = getPackageInfos(user);
final int N = apps.size();
for (int i = 0; i < N; i++) {
PackageInfo app = apps.get(i);
@@ -186,7 +249,7 @@
PermissionInfo requestedPermissionInfo = null;
- for (PermissionInfo groupPermInfo : groupPermInfos) {
+ for (PermissionInfo groupPermInfo : targetPermInfos) {
if (requestedPerm.equals(groupPermInfo.name)) {
requestedPermissionInfo = groupPermInfo;
break;
@@ -197,30 +260,35 @@
continue;
}
- if ((requestedPermissionInfo.protectionLevel
- & PermissionInfo.PROTECTION_MASK_BASE)
- != PermissionInfo.PROTECTION_DANGEROUS
- || (requestedPermissionInfo.flags
- & PermissionInfo.FLAG_INSTALLED) == 0
- || (requestedPermissionInfo.flags
- & PermissionInfo.FLAG_REMOVED) != 0) {
- continue;
- }
-
AppPermissionGroup group = AppPermissionGroup.create(mContext,
- app, groupInfo, groupPermInfos, user);
+ app, groupInfo, groupPermInfos, groupLabel, fullGroupLabel, false);
if (group == null) {
continue;
}
- String label = mSkipUi ? app.packageName
- : app.applicationInfo.loadLabel(mPm).toString();
+ Pair<String, Drawable> appData = null;
+ if (mAppDataCache != null && !mSkipUi) {
+ appData = mAppDataCache.getAppData(user.getIdentifier(),
+ app.applicationInfo);
+ }
+
+ String label;
+ if (mSkipUi) {
+ label = app.packageName;
+ } else if (appData != null) {
+ label = appData.first;
+ } else {
+ label = app.applicationInfo.loadLabel(mPm).toString();
+ }
Drawable icon = null;
if (!mSkipUi) {
- icon = iconFactory.getBadgedIcon(app.applicationInfo,
- UserHandle.getUserId(group.getApp().applicationInfo.uid));
+ if (appData != null) {
+ icon = appData.second;
+ } else {
+ icon = Utils.getBadgedIcon(mContext, app.applicationInfo);
+ }
}
PermissionApp permApp = new PermissionApp(app.packageName, group, label, icon,
@@ -245,38 +313,6 @@
mPermApps = result;
}
- private PackageItemInfo getGroupInfo(String groupName) {
- try {
- return mContext.getPackageManager().getPermissionGroupInfo(groupName, 0);
- } catch (NameNotFoundException e) {
- /* ignore */
- }
- try {
- return mContext.getPackageManager().getPermissionInfo(groupName, 0);
- } catch (NameNotFoundException e2) {
- /* ignore */
- }
- return null;
- }
-
- private List<PermissionInfo> getGroupPermissionInfos(String groupName) {
- try {
- return mContext.getPackageManager().queryPermissionsByGroup(groupName, 0);
- } catch (NameNotFoundException e) {
- /* ignore */
- }
- try {
- PermissionInfo permissionInfo = mContext.getPackageManager()
- .getPermissionInfo(groupName, 0);
- List<PermissionInfo> permissions = new ArrayList<>();
- permissions.add(permissionInfo);
- return permissions;
- } catch (NameNotFoundException e2) {
- /* ignore */
- }
- return null;
- }
-
private void loadGroupInfo() {
PackageItemInfo info;
try {
@@ -296,19 +332,26 @@
}
}
mLabel = info.loadLabel(mPm);
+ mFullLabel = info.loadSafeLabel(mPm, 0,
+ TextUtils.SAFE_STRING_FLAG_TRIM | TextUtils.SAFE_STRING_FLAG_FIRST_LINE);
if (info.icon != 0) {
mIcon = info.loadUnbadgedIcon(mPm);
} else {
mIcon = mContext.getDrawable(R.drawable.ic_perm_device_info);
}
mIcon = Utils.applyTint(mContext, mIcon, android.R.attr.colorControlNormal);
+ if (info instanceof PermissionGroupInfo) {
+ mDescription = ((PermissionGroupInfo) info).loadDescription(mPm);
+ } else if (info instanceof PermissionInfo) {
+ mDescription = ((PermissionInfo) info).loadDescription(mPm);
+ }
}
public static class PermissionApp implements Comparable<PermissionApp> {
private final String mPackageName;
private final AppPermissionGroup mAppPermissionGroup;
- private final String mLabel;
- private final Drawable mIcon;
+ private String mLabel;
+ private Drawable mIcon;
private final ApplicationInfo mInfo;
public PermissionApp(String packageName, AppPermissionGroup appPermissionGroup,
@@ -368,10 +411,6 @@
return mAppPermissionGroup.doesSupportRuntimePermissions();
}
- public int getUserId() {
- return mAppPermissionGroup.getUserId();
- }
-
public String getPackageName() {
return mPackageName;
}
@@ -380,6 +419,19 @@
return mAppPermissionGroup;
}
+ /**
+ * Load this app's label and icon if they were not previously loaded.
+ *
+ * @param appDataCache the cache of already-loaded labels and icons.
+ */
+ public void loadLabelAndIcon(@NonNull AppDataCache appDataCache) {
+ if (mInfo.packageName.equals(mLabel) || mIcon == null) {
+ Pair<String, Drawable> appData = appDataCache.getAppData(getUid(), mInfo);
+ mLabel = appData.first;
+ mIcon = appData.second;
+ }
+ }
+
@Override
public int compareTo(PermissionApp another) {
final int result = mLabel.compareTo(another.mLabel);
@@ -435,7 +487,77 @@
}
}
+ /**
+ * Class used to reduce the number of calls to loading labels and icons.
+ * This caches app information so it should only be used across parallel PermissionApps
+ * instances, and should not be retained across UI refresh.
+ */
+ public static class AppDataCache {
+ private final @NonNull SparseArray<ArrayMap<String, Pair<String, Drawable>>> mCache =
+ new SparseArray<>();
+ private final @NonNull PackageManager mPm;
+ private final @NonNull Context mContext;
+
+ public AppDataCache(@NonNull PackageManager pm, @NonNull Context context) {
+ mPm = pm;
+ mContext = context;
+ }
+
+ /**
+ * Get the label and icon for the given app.
+ *
+ * @param userId the user id.
+ * @param app The app
+ *
+ * @return a pair of the label and icon.
+ */
+ public @NonNull Pair<String, Drawable> getAppData(int userId,
+ @NonNull ApplicationInfo app) {
+ ArrayMap<String, Pair<String, Drawable>> dataForUser = mCache.get(userId);
+ if (dataForUser == null) {
+ dataForUser = new ArrayMap<>();
+ mCache.put(userId, dataForUser);
+ }
+ Pair<String, Drawable> data = dataForUser.get(app.packageName);
+ if (data == null) {
+ data = Pair.create(app.loadLabel(mPm).toString(),
+ Utils.getBadgedIcon(mContext, app));
+ dataForUser.put(app.packageName, data);
+ }
+ return data;
+ }
+ }
+
public interface Callback {
void onPermissionsLoaded(PermissionApps permissionApps);
}
+
+ /**
+ * Class used to asyncronously load apps' labels and icons.
+ */
+ public static class AppDataLoader extends AsyncTask<PermissionApp, Void, Void> {
+
+ private final Context mContext;
+ private final Runnable mCallback;
+
+ public AppDataLoader(Context context, Runnable callback) {
+ mContext = context;
+ mCallback = callback;
+ }
+
+ @Override
+ protected Void doInBackground(PermissionApp... args) {
+ AppDataCache appDataCache = new AppDataCache(mContext.getPackageManager(), mContext);
+ int numArgs = args.length;
+ for (int i = 0; i < numArgs; i++) {
+ args[i].loadLabelAndIcon(appDataCache);
+ }
+ return null;
+ }
+
+ @Override
+ protected void onPostExecute(Void result) {
+ mCallback.run();
+ }
+ }
}
diff --git a/src/com/android/packageinstaller/permission/model/PermissionGroup.java b/src/com/android/packageinstaller/permission/model/PermissionGroup.java
index 1724d36..6097408 100644
--- a/src/com/android/packageinstaller/permission/model/PermissionGroup.java
+++ b/src/com/android/packageinstaller/permission/model/PermissionGroup.java
@@ -18,6 +18,13 @@
import android.graphics.drawable.Drawable;
+/**
+ * A permission group with runtime permission as defined in an app's manifest as
+ * {@code android:permission-group}.
+ *
+ * <p>For individual permissions that are not part of any group a {@link PermissionGroup} is created
+ * dynamically with the name and icon of the individual permission.
+ */
public final class PermissionGroup implements Comparable<PermissionGroup> {
private final String mName;
private final String mDeclaringPackage;
@@ -25,15 +32,17 @@
private final Drawable mIcon;
private final int mTotal;
private final int mGranted;
+ private final PermissionApps mPermApps;
PermissionGroup(String name, String declaringPackage, CharSequence label, Drawable icon,
- int total, int granted) {
+ int total, int granted, PermissionApps permApps) {
mDeclaringPackage = declaringPackage;
mName = name;
mLabel = label;
mIcon = icon;
mTotal = total;
mGranted = granted;
+ mPermApps = permApps;
}
public String getName() {
@@ -66,6 +75,13 @@
return mGranted;
}
+ /**
+ * @return The PermissionApps object for this permission group.
+ */
+ public PermissionApps getPermissionApps() {
+ return mPermApps;
+ }
+
@Override
public int compareTo(PermissionGroup another) {
return mLabel.toString().compareTo(another.mLabel.toString());
diff --git a/src/com/android/packageinstaller/permission/model/PermissionGroups.java b/src/com/android/packageinstaller/permission/model/PermissionGroups.java
index 0380a2e..828dbc0 100644
--- a/src/com/android/packageinstaller/permission/model/PermissionGroups.java
+++ b/src/com/android/packageinstaller/permission/model/PermissionGroups.java
@@ -16,6 +16,10 @@
package com.android.packageinstaller.permission.model;
+import static android.text.TextUtils.SAFE_STRING_FLAG_FIRST_LINE;
+import static android.text.TextUtils.SAFE_STRING_FLAG_TRIM;
+
+import android.Manifest;
import android.app.LoaderManager;
import android.app.LoaderManager.LoaderCallbacks;
import android.content.AsyncTaskLoader;
@@ -28,37 +32,51 @@
import android.content.pm.PermissionInfo;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
+import android.os.Handler;
import android.util.ArraySet;
-import com.android.packageinstaller.R;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
+import java.util.function.Supplier;
+/**
+ * All {@link PermissionGroup permission groups} defined by any app.
+ */
public final class PermissionGroups implements LoaderCallbacks<List<PermissionGroup>> {
private final ArrayList<PermissionGroup> mGroups = new ArrayList<>();
private final Context mContext;
- private final LoaderManager mLoaderManager;
private final PermissionsGroupsChangeCallback mCallback;
+ private final boolean mGetAppUiInfo;
+ private final boolean mGetNonPlatformPermissions;
public interface PermissionsGroupsChangeCallback {
public void onPermissionGroupsChanged();
}
public PermissionGroups(Context context, LoaderManager loaderManager,
- PermissionsGroupsChangeCallback callback) {
+ PermissionsGroupsChangeCallback callback, boolean getAppUiInfo,
+ boolean getNonPlatformPermissions) {
mContext = context;
- mLoaderManager = loaderManager;
mCallback = callback;
- mLoaderManager.initLoader(0, null, this);
+ mGetAppUiInfo = getAppUiInfo;
+ mGetNonPlatformPermissions = getNonPlatformPermissions;
+
+ // Don't update immediately as otherwise we can get a callback before this object is
+ // initialized.
+ (new Handler()).post(() -> loaderManager.initLoader(0, null, this));
}
@Override
public Loader<List<PermissionGroup>> onCreateLoader(int id, Bundle args) {
- return new PermissionsLoader(mContext);
+ return new PermissionsLoader(mContext, mGetAppUiInfo, mGetNonPlatformPermissions);
}
@Override
@@ -91,11 +109,227 @@
return null;
}
+ private static @NonNull CharSequence loadItemInfoLabel(@NonNull Context context,
+ @NonNull PackageItemInfo itemInfo) {
+ CharSequence label = itemInfo.loadSafeLabel(context.getPackageManager(), 0,
+ SAFE_STRING_FLAG_FIRST_LINE | SAFE_STRING_FLAG_TRIM);
+ if (label == null) {
+ label = itemInfo.name;
+ }
+ return label;
+ }
+
+ private static @NonNull Drawable loadItemInfoIcon(@NonNull Context context,
+ @NonNull PackageItemInfo itemInfo) {
+ Drawable icon = null;
+ if (itemInfo.icon > 0) {
+ icon = Utils.loadDrawable(context.getPackageManager(),
+ itemInfo.packageName, itemInfo.icon);
+ }
+ if (icon == null) {
+ icon = context.getDrawable(R.drawable.ic_perm_device_info);
+ }
+ return icon;
+ }
+
+ /**
+ * Return all permission groups in the system.
+ *
+ * @param context Context to use
+ * @param isCanceled callback checked if the group resolution should be aborted
+ * @param getAppUiInfo If the UI info for apps should be updated
+ * @param getNonPlatformPermissions If we should get non-platform permission groups
+ *
+ * @return the list of all groups int the system
+ */
+ public static @NonNull List<PermissionGroup> getAllPermissionGroups(@NonNull Context context,
+ @Nullable Supplier<Boolean> isCanceled, boolean getAppUiInfo,
+ boolean getNonPlatformPermissions) {
+ return getPermissionGroups(context, isCanceled, getAppUiInfo, getNonPlatformPermissions,
+ null, null);
+ }
+
+ /**
+ * Return all permission groups in the system.
+ *
+ * @param context Context to use
+ * @param isCanceled callback checked if the group resolution should be aborted
+ * @param getAppUiInfo If the UI info for apps should be updated
+ * @param getNonPlatformPermissions If we should get non-platform permission groups
+ * @param groupNames Optional groups to filter for.
+ * @param packageName Optional package to filter for.
+ *
+ * @return the list of all groups int the system
+ */
+ public static @NonNull List<PermissionGroup> getPermissionGroups(@NonNull Context context,
+ @Nullable Supplier<Boolean> isCanceled, boolean getAppUiInfo,
+ boolean getNonPlatformPermissions, @Nullable String[] groupNames,
+ @Nullable String packageName) {
+ PermissionApps.PmCache pmCache = new PermissionApps.PmCache(
+ context.getPackageManager());
+ PermissionApps.AppDataCache appDataCache = new PermissionApps.AppDataCache(
+ context.getPackageManager(), context);
+
+ List<PermissionGroup> groups = new ArrayList<>();
+ Set<String> seenPermissions = new ArraySet<>();
+
+ PackageManager packageManager = context.getPackageManager();
+ List<PermissionGroupInfo> groupInfos = getPermissionGroupInfos(context, groupNames);
+
+ for (PermissionGroupInfo groupInfo : groupInfos) {
+ // Mare sure we respond to cancellation.
+ if (isCanceled != null && isCanceled.get()) {
+ return Collections.emptyList();
+ }
+
+ // Ignore non-platform permissions and the UNDEFINED group.
+ if (!getNonPlatformPermissions && !Utils.isModernPermissionGroup(groupInfo.name)) {
+ continue;
+ }
+
+ // Get the permissions in this group.
+ final List<PermissionInfo> groupPermissions;
+ try {
+ groupPermissions = Utils.getPermissionInfosForGroup(packageManager, groupInfo.name);
+ } catch (PackageManager.NameNotFoundException e) {
+ continue;
+ }
+
+ boolean hasRuntimePermissions = false;
+
+ // Cache seen permissions and see if group has runtime permissions.
+ for (PermissionInfo groupPermission : groupPermissions) {
+ seenPermissions.add(groupPermission.name);
+ if (groupPermission.getProtection() == PermissionInfo.PROTECTION_DANGEROUS
+ && (groupPermission.flags & PermissionInfo.FLAG_INSTALLED) != 0
+ && (groupPermission.flags & PermissionInfo.FLAG_REMOVED) == 0) {
+ hasRuntimePermissions = true;
+ }
+ }
+
+ // No runtime permissions - not interesting for us.
+ if (!hasRuntimePermissions) {
+ continue;
+ }
+
+ CharSequence label = loadItemInfoLabel(context, groupInfo);
+ Drawable icon = loadItemInfoIcon(context, groupInfo);
+
+ PermissionApps permApps = new PermissionApps(context, groupInfo.name, packageName,
+ null, pmCache, appDataCache);
+ permApps.refreshSync(getAppUiInfo);
+
+ // Create the group and add to the list.
+ PermissionGroup group = new PermissionGroup(groupInfo.name,
+ groupInfo.packageName, label, icon, permApps.getTotalCount(),
+ permApps.getGrantedCount(), permApps);
+ groups.add(group);
+ }
+
+
+ // Make sure we add groups for lone runtime permissions.
+ List<PackageInfo> installedPackages = context.getPackageManager()
+ .getInstalledPackages(PackageManager.GET_PERMISSIONS);
+
+
+ // We will filter out permissions that no package requests.
+ Set<String> requestedPermissions = new ArraySet<>();
+ for (PackageInfo installedPackage : installedPackages) {
+ if (installedPackage.requestedPermissions == null) {
+ continue;
+ }
+ for (String permission : installedPackage.requestedPermissions) {
+ requestedPermissions.add(permission);
+ }
+ }
+
+ for (PackageInfo installedPackage : installedPackages) {
+ if (installedPackage.permissions == null) {
+ continue;
+ }
+
+ for (PermissionInfo permissionInfo : installedPackage.permissions) {
+ // If we have handled this permission, no more work to do.
+ if (!seenPermissions.add(permissionInfo.name)) {
+ continue;
+ }
+
+ // We care only about installed runtime permissions.
+ if (permissionInfo.getProtection() != PermissionInfo.PROTECTION_DANGEROUS
+ || (permissionInfo.flags & PermissionInfo.FLAG_INSTALLED) == 0) {
+ continue;
+ }
+
+ // Ignore non-platform permissions and the UNDEFINED group.
+ if (!getNonPlatformPermissions && !Utils.isModernPermissionGroup(
+ permissionInfo.name)) {
+ continue;
+ }
+
+ // If no app uses this permission,
+ if (!requestedPermissions.contains(permissionInfo.name)) {
+ continue;
+ }
+
+ CharSequence label = loadItemInfoLabel(context, permissionInfo);
+ Drawable icon = loadItemInfoIcon(context, permissionInfo);
+
+ PermissionApps permApps = new PermissionApps(context, permissionInfo.name,
+ packageName, null, pmCache, appDataCache);
+ permApps.refreshSync(getAppUiInfo);
+
+ // Create the group and add to the list.
+ PermissionGroup group = new PermissionGroup(permissionInfo.name,
+ permissionInfo.packageName, label, icon,
+ permApps.getTotalCount(),
+ permApps.getGrantedCount(), permApps);
+ groups.add(group);
+ }
+ }
+
+ // Hide undefined group if no 3rd party permissions are in it
+ int numGroups = groups.size();
+ for (int i = 0; i < numGroups; i++) {
+ PermissionGroup group = groups.get(i);
+ if (group.getName().equals(Manifest.permission_group.UNDEFINED)
+ && group.getTotal() == 0) {
+ groups.remove(i);
+ break;
+ }
+ }
+
+ Collections.sort(groups);
+ return groups;
+ }
+
+ private static @NonNull List<PermissionGroupInfo> getPermissionGroupInfos(
+ @NonNull Context context, @Nullable String[] groupNames) {
+ if (groupNames == null) {
+ return context.getPackageManager().getAllPermissionGroups(0);
+ }
+ try {
+ final List<PermissionGroupInfo> groupInfos = new ArrayList<>(groupNames.length);
+ for (int i = 0; i < groupNames.length; i++) {
+ final PermissionGroupInfo groupInfo = context.getPackageManager()
+ .getPermissionGroupInfo(groupNames[i], 0);
+ groupInfos.add(groupInfo);
+ }
+ return groupInfos;
+ } catch (PackageManager.NameNotFoundException e) {
+ return Collections.emptyList();
+ }
+ }
+
private static final class PermissionsLoader extends AsyncTaskLoader<List<PermissionGroup>>
implements PackageManager.OnPermissionsChangedListener {
+ private final boolean mGetAppUiInfo;
+ private final boolean mGetNonPlatformPermissions;
- public PermissionsLoader(Context context) {
+ PermissionsLoader(Context context, boolean getAppUiInfo,
+ boolean getNonPlatformPermissions) {
super(context);
+ mGetAppUiInfo = getAppUiInfo;
+ mGetNonPlatformPermissions = getNonPlatformPermissions;
}
@Override
@@ -111,140 +345,8 @@
@Override
public List<PermissionGroup> loadInBackground() {
- ArraySet<String> launcherPkgs = Utils.getLauncherPackages(getContext());
- PermissionApps.PmCache pmCache = new PermissionApps.PmCache(
- getContext().getPackageManager());
-
- List<PermissionGroup> groups = new ArrayList<>();
- Set<String> seenPermissions = new ArraySet<>();
-
- PackageManager packageManager = getContext().getPackageManager();
- List<PermissionGroupInfo> groupInfos = packageManager.getAllPermissionGroups(0);
-
- for (PermissionGroupInfo groupInfo : groupInfos) {
- // Mare sure we respond to cancellation.
- if (isLoadInBackgroundCanceled()) {
- return Collections.emptyList();
- }
-
- // Get the permissions in this group.
- final List<PermissionInfo> groupPermissions;
- try {
- groupPermissions = packageManager.queryPermissionsByGroup(groupInfo.name, 0);
- } catch (PackageManager.NameNotFoundException e) {
- continue;
- }
-
- boolean hasRuntimePermissions = false;
-
- // Cache seen permissions and see if group has runtime permissions.
- for (PermissionInfo groupPermission : groupPermissions) {
- seenPermissions.add(groupPermission.name);
- if ((groupPermission.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE)
- == PermissionInfo.PROTECTION_DANGEROUS
- && (groupPermission.flags & PermissionInfo.FLAG_INSTALLED) != 0
- && (groupPermission.flags & PermissionInfo.FLAG_REMOVED) == 0) {
- hasRuntimePermissions = true;
- }
- }
-
- // No runtime permissions - not interesting for us.
- if (!hasRuntimePermissions) {
- continue;
- }
-
- CharSequence label = loadItemInfoLabel(groupInfo);
- Drawable icon = loadItemInfoIcon(groupInfo);
-
- PermissionApps permApps = new PermissionApps(getContext(), groupInfo.name, null,
- pmCache);
- permApps.refreshSync();
-
- // Create the group and add to the list.
- PermissionGroup group = new PermissionGroup(groupInfo.name,
- groupInfo.packageName, label, icon, permApps.getTotalCount(launcherPkgs),
- permApps.getGrantedCount(launcherPkgs));
- groups.add(group);
- }
-
-
- // Make sure we add groups for lone runtime permissions.
- List<PackageInfo> installedPackages = getContext().getPackageManager()
- .getInstalledPackages(PackageManager.GET_PERMISSIONS);
-
-
- // We will filter out permissions that no package requests.
- Set<String> requestedPermissions = new ArraySet<>();
- for (PackageInfo installedPackage : installedPackages) {
- if (installedPackage.requestedPermissions == null) {
- continue;
- }
- for (String requestedPermission : installedPackage.requestedPermissions) {
- requestedPermissions.add(requestedPermission);
- }
- }
-
- for (PackageInfo installedPackage : installedPackages) {
- if (installedPackage.permissions == null) {
- continue;
- }
-
- for (PermissionInfo permissionInfo : installedPackage.permissions) {
- // If we have handled this permission, no more work to do.
- if (!seenPermissions.add(permissionInfo.name)) {
- continue;
- }
-
- // We care only about installed runtime permissions.
- if ((permissionInfo.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE)
- != PermissionInfo.PROTECTION_DANGEROUS
- || (permissionInfo.flags & PermissionInfo.FLAG_INSTALLED) == 0) {
- continue;
- }
-
- // If no app uses this permission,
- if (!requestedPermissions.contains(permissionInfo.name)) {
- continue;
- }
-
- CharSequence label = loadItemInfoLabel(permissionInfo);
- Drawable icon = loadItemInfoIcon(permissionInfo);
-
- PermissionApps permApps = new PermissionApps(getContext(), permissionInfo.name,
- null, pmCache);
- permApps.refreshSync();
-
- // Create the group and add to the list.
- PermissionGroup group = new PermissionGroup(permissionInfo.name,
- permissionInfo.packageName, label, icon,
- permApps.getTotalCount(launcherPkgs),
- permApps.getGrantedCount(launcherPkgs));
- groups.add(group);
- }
- }
-
- Collections.sort(groups);
- return groups;
- }
-
- private CharSequence loadItemInfoLabel(PackageItemInfo itemInfo) {
- CharSequence label = itemInfo.loadLabel(getContext().getPackageManager());
- if (label == null) {
- label = itemInfo.name;
- }
- return label;
- }
-
- private Drawable loadItemInfoIcon(PackageItemInfo itemInfo) {
- Drawable icon = null;
- if (itemInfo.icon > 0) {
- icon = Utils.loadDrawable(getContext().getPackageManager(),
- itemInfo.packageName, itemInfo.icon);
- }
- if (icon == null) {
- icon = getContext().getDrawable(R.drawable.ic_perm_device_info);
- }
- return icon;
+ return getAllPermissionGroups(getContext(), this::isLoadInBackgroundCanceled,
+ mGetAppUiInfo, mGetNonPlatformPermissions);
}
@Override
diff --git a/src/com/android/packageinstaller/permission/model/PermissionUsages.java b/src/com/android/packageinstaller/permission/model/PermissionUsages.java
new file mode 100644
index 0000000..32db207
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/model/PermissionUsages.java
@@ -0,0 +1,164 @@
+/*
+ * 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.packageinstaller.permission.model;
+
+import android.app.LoaderManager;
+import android.app.LoaderManager.LoaderCallbacks;
+import android.content.AsyncTaskLoader;
+import android.content.Context;
+import android.content.Loader;
+import android.os.Bundle;
+import android.os.Process;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Loads all permission usages for a set of apps and permission groups.
+ */
+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;
+
+ private final ArrayList<AppPermissionUsage> mUsages = new ArrayList<>();
+ private final @NonNull Context mContext;
+
+ private static final String KEY_FILTER_UID = "KEY_FILTER_UID";
+ private static final String KEY_FILTER_PACKAGE_NAME = "KEY_FILTER_PACKAGE_NAME";
+ private static final String KEY_FILTER_PERMISSION_GROUP = "KEY_FILTER_PERMISSION_GROUP";
+ private static final String KEY_FILTER_BEGIN_TIME_MILLIS = "KEY_FILTER_BEGIN_TIME_MILLIS";
+ private static final String KEY_FILTER_END_TIME_MILLIS = "KEY_FILTER_END_TIME_MILLIS";
+ private static final String KEY_USAGE_FLAGS = "KEY_USAGE_FLAGS";
+ 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 @Nullable PermissionsUsagesChangeCallback mCallback;
+
+ public interface PermissionsUsagesChangeCallback {
+ void onPermissionUsagesChanged();
+ }
+
+ public PermissionUsages(@NonNull Context context) {
+ mContext = context;
+ }
+
+ public void load(@Nullable String filterPackageName,
+ @Nullable String[] filterPermissionGroups, long filterBeginTimeMillis,
+ long filterEndTimeMillis, int usageFlags, @NonNull LoaderManager loaderManager,
+ boolean getUiInfo, boolean getNonPlatformPermissions,
+ @NonNull PermissionsUsagesChangeCallback callback, boolean sync) {
+ load(Process.INVALID_UID, filterPackageName, filterPermissionGroups, filterBeginTimeMillis,
+ filterEndTimeMillis, usageFlags, loaderManager, getUiInfo,
+ getNonPlatformPermissions, callback, sync);
+ }
+
+ public void load(int filterUid, @Nullable String filterPackageName,
+ @Nullable String[] filterPermissionGroups, long filterBeginTimeMillis,
+ long filterEndTimeMillis, int usageFlags, @NonNull LoaderManager loaderManager,
+ boolean getUiInfo, boolean getNonPlatformPermissions,
+ @NonNull PermissionsUsagesChangeCallback callback, boolean sync) {
+ mCallback = callback;
+ final Bundle args = new Bundle();
+ args.putInt(KEY_FILTER_UID, filterUid);
+ args.putString(KEY_FILTER_PACKAGE_NAME, filterPackageName);
+ args.putStringArray(KEY_FILTER_PERMISSION_GROUP, filterPermissionGroups);
+ args.putLong(KEY_FILTER_BEGIN_TIME_MILLIS, filterBeginTimeMillis);
+ args.putLong(KEY_FILTER_END_TIME_MILLIS, filterEndTimeMillis);
+ args.putInt(KEY_USAGE_FLAGS, usageFlags);
+ args.putBoolean(KEY_GET_UI_INFO, getUiInfo);
+ args.putBoolean(KEY_GET_NON_PLATFORM_PERMISSIONS, getNonPlatformPermissions);
+ if (sync) {
+ final UsageLoader loader = new UsageLoader(mContext, args);
+ final List<AppPermissionUsage> usages = loader.loadInBackground();
+ onLoadFinished(loader, usages);
+ } else {
+ loaderManager.restartLoader(1, args, this);
+ }
+ }
+
+ @Override
+ public Loader<List<AppPermissionUsage>> onCreateLoader(int id, Bundle args) {
+ return new UsageLoader(mContext, args);
+ }
+
+ @Override
+ public void onLoadFinished(@NonNull Loader<List<AppPermissionUsage>> loader,
+ List<AppPermissionUsage> usages) {
+ mUsages.clear();
+ mUsages.addAll(usages);
+ if (mCallback != null) {
+ mCallback.onPermissionUsagesChanged();
+ }
+ }
+
+ @Override
+ public void onLoaderReset(@NonNull Loader<List<AppPermissionUsage>> loader) {
+ mUsages.clear();
+ mCallback.onPermissionUsagesChanged();
+ }
+
+ public @NonNull List<AppPermissionUsage> getUsages() {
+ return mUsages;
+ }
+
+ public void stopLoader(@NonNull LoaderManager loaderManager) {
+ loaderManager.destroyLoader(1);
+ }
+
+ public static @Nullable AppPermissionUsage.GroupUsage loadLastGroupUsage(
+ @NonNull Context context, @NonNull AppPermissionGroup group) {
+ return null;
+ }
+
+ private static final class UsageLoader extends AsyncTaskLoader<List<AppPermissionUsage>> {
+ private final int mFilterUid;
+ private @Nullable String mFilterPackageName;
+ private @Nullable String[] mFilterPermissionGroups;
+ private final long mFilterBeginTimeMillis;
+ private final long mFilterEndTimeMillis;
+ private final int mUsageFlags;
+ private final boolean mGetUiInfo;
+ private final boolean mGetNonPlatformPermissions;
+
+ UsageLoader(@NonNull Context context, @NonNull Bundle args) {
+ super(context);
+ mFilterUid = args.getInt(KEY_FILTER_UID);
+ mFilterPackageName = args.getString(KEY_FILTER_PACKAGE_NAME);
+ mFilterPermissionGroups = args.getStringArray(KEY_FILTER_PERMISSION_GROUP);
+ mFilterBeginTimeMillis = args.getLong(KEY_FILTER_BEGIN_TIME_MILLIS);
+ mFilterEndTimeMillis = args.getLong(KEY_FILTER_END_TIME_MILLIS);
+ mUsageFlags = args.getInt(KEY_USAGE_FLAGS);
+ mGetUiInfo = args.getBoolean(KEY_GET_UI_INFO);
+ mGetNonPlatformPermissions = args.getBoolean(KEY_GET_NON_PLATFORM_PERMISSIONS);
+ }
+
+ @Override
+ protected void onStartLoading() {
+ forceLoad();
+ }
+
+ @Override
+ public @NonNull List<AppPermissionUsage> loadInBackground() {
+ return Collections.emptyList();
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/service/BackupHelper.java b/src/com/android/packageinstaller/permission/service/BackupHelper.java
new file mode 100644
index 0000000..cdc3669
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/service/BackupHelper.java
@@ -0,0 +1,760 @@
+/*
+ * 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.packageinstaller.permission.service;
+
+import static android.content.Context.MODE_PRIVATE;
+import static android.content.pm.PackageManager.FLAG_PERMISSION_POLICY_FIXED;
+import static android.content.pm.PackageManager.FLAG_PERMISSION_SYSTEM_FIXED;
+import static android.content.pm.PackageManager.GET_PERMISSIONS;
+import static android.util.Xml.newSerializer;
+
+import static com.android.packageinstaller.Constants.DELAYED_RESTORE_PERMISSIONS_FILE;
+
+import static org.xmlpull.v1.XmlPullParser.END_DOCUMENT;
+import static org.xmlpull.v1.XmlPullParser.END_TAG;
+import static org.xmlpull.v1.XmlPullParser.START_TAG;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import android.os.UserHandle;
+import android.permission.PermissionManager;
+import android.permission.PermissionManager.SplitPermissionInfo;
+import android.util.Log;
+import android.util.Xml;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.os.BuildCompat;
+
+import com.android.packageinstaller.Constants;
+import com.android.packageinstaller.permission.model.AppPermissionGroup;
+import com.android.packageinstaller.permission.model.AppPermissions;
+import com.android.packageinstaller.permission.model.Permission;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+import org.xmlpull.v1.XmlSerializer;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Helper for creating and restoring permission backups.
+ */
+public class BackupHelper {
+ private static final String LOG_TAG = BackupHelper.class.getSimpleName();
+
+ private static final String TAG_PERMISSION_BACKUP = "perm-grant-backup";
+ private static final String ATTR_PLATFORM_VERSION = "version";
+
+ private static final String TAG_ALL_GRANTS = "rt-grants";
+
+ private static final String TAG_GRANT = "grant";
+ private static final String ATTR_PACKAGE_NAME = "pkg";
+
+ private static final String TAG_PERMISSION = "perm";
+ private static final String ATTR_PERMISSION_NAME = "name";
+ private static final String ATTR_IS_GRANTED = "g";
+ private static final String ATTR_USER_SET = "set";
+ private static final String ATTR_USER_FIXED = "fixed";
+ private static final String ATTR_WAS_REVIEWED = "was-reviewed";
+
+ /** Flags of permissions to <u>not</u> back up */
+ private static final int SYSTEM_RUNTIME_GRANT_MASK = FLAG_PERMISSION_POLICY_FIXED
+ | FLAG_PERMISSION_SYSTEM_FIXED;
+
+ /** Make sure only one user can change the delayed permissions at a time */
+ private static final Object sLock = new Object();
+
+ private final Context mContext;
+
+ /**
+ * Create a new backup utils for a user.
+ *
+ * @param context A context to use
+ * @param user The user that is backed up / restored
+ */
+ public BackupHelper(@NonNull Context context, @NonNull UserHandle user) {
+ try {
+ mContext = context.createPackageContextAsUser(context.getPackageName(), 0, user);
+ } catch (PackageManager.NameNotFoundException doesNotHappen) {
+ throw new IllegalStateException();
+ }
+ }
+
+ /**
+ * Forward parser and skip everything up to the end of the current tag.
+ *
+ * @param parser The parser to forward
+ */
+ private static void skipToEndOfTag(@NonNull XmlPullParser parser)
+ throws IOException, XmlPullParserException {
+ int numOpenTags = 1;
+ while (numOpenTags > 0) {
+ switch (parser.next()) {
+ case START_TAG:
+ numOpenTags++;
+ break;
+ case END_TAG:
+ numOpenTags--;
+ break;
+ default:
+ // ignore
+ }
+ }
+ }
+
+ /**
+ * Forward parser to a given direct sub-tag.
+ *
+ * @param parser The parser to forward
+ * @param tag The tag to search for
+ */
+ private void skipToTag(@NonNull XmlPullParser parser, @NonNull String tag)
+ throws IOException, XmlPullParserException {
+ int type;
+ do {
+ type = parser.next();
+
+ switch (type) {
+ case START_TAG:
+ if (!parser.getName().equals(tag)) {
+ skipToEndOfTag(parser);
+ }
+
+ return;
+ }
+ } while (type != END_DOCUMENT);
+ }
+
+ /**
+ * Read a XML file and return the packages stored in it.
+ *
+ * @param parser The file to read
+ *
+ * @return The packages in this file
+ */
+ private @NonNull ArrayList<BackupPackageState> parseFromXml(@NonNull XmlPullParser parser)
+ throws IOException, XmlPullParserException {
+ ArrayList<BackupPackageState> pkgStates = new ArrayList<>();
+
+ skipToTag(parser, TAG_PERMISSION_BACKUP);
+
+ int backupPlatformVersion;
+ try {
+ backupPlatformVersion = Integer.parseInt(
+ parser.getAttributeValue(null, ATTR_PLATFORM_VERSION));
+ } catch (NumberFormatException ignored) {
+ // Platforms P and before did not store the platform version
+ backupPlatformVersion = Build.VERSION_CODES.P;
+ }
+
+ skipToTag(parser, TAG_ALL_GRANTS);
+
+ if (parser.getEventType() != START_TAG && !parser.getName().equals(TAG_ALL_GRANTS)) {
+ throw new XmlPullParserException("Could not find " + TAG_PERMISSION_BACKUP + " > "
+ + TAG_ALL_GRANTS);
+ }
+
+ // Read packages to restore from xml
+ int type;
+ do {
+ type = parser.next();
+
+ switch (type) {
+ case START_TAG:
+ switch (parser.getName()) {
+ case TAG_GRANT:
+ try {
+ pkgStates.add(BackupPackageState.parseFromXml(parser, mContext,
+ backupPlatformVersion));
+ } catch (XmlPullParserException e) {
+ Log.e(LOG_TAG, "Could not parse permissions ", e);
+ skipToEndOfTag(parser);
+ }
+ break;
+ default:
+ // ignore tag
+ Log.w(LOG_TAG, "Found unexpected tag " + parser.getName()
+ + " during restore");
+ skipToEndOfTag(parser);
+ }
+ }
+ } while (type != END_DOCUMENT);
+
+ return pkgStates;
+ }
+
+ /**
+ * Try to restore the permission state from XML.
+ *
+ * <p>If some apps could not be restored, the leftover apps are written to
+ * {@link Constants#DELAYED_RESTORE_PERMISSIONS_FILE}.
+ *
+ * @param parser The xml to read
+ */
+ void restoreState(@NonNull XmlPullParser parser) throws IOException, XmlPullParserException {
+ ArrayList<BackupPackageState> pkgStates = parseFromXml(parser);
+
+ ArrayList<BackupPackageState> packagesToRestoreLater = new ArrayList<>();
+ int numPkgStates = pkgStates.size();
+ if (numPkgStates > 0) {
+ // Try to restore packages
+ for (int i = 0; i < numPkgStates; i++) {
+ BackupPackageState pkgState = pkgStates.get(i);
+
+ PackageInfo pkgInfo;
+ try {
+ pkgInfo = mContext.getPackageManager().getPackageInfo(pkgState.mPackageName,
+ GET_PERMISSIONS);
+ } catch (PackageManager.NameNotFoundException ignored) {
+ packagesToRestoreLater.add(pkgState);
+ continue;
+ }
+
+ pkgState.restore(mContext, pkgInfo);
+ }
+ }
+
+ synchronized (sLock) {
+ writeDelayedStorePkgsLocked(packagesToRestoreLater);
+ }
+ }
+
+ /**
+ * Write a xml file for the given packages.
+ *
+ * @param serializer The file to write to
+ * @param pkgs The packages to write
+ */
+ private static void writePkgsAsXml(@NonNull XmlSerializer serializer,
+ @NonNull ArrayList<BackupPackageState> pkgs) throws IOException {
+ serializer.startDocument(null, true);
+
+ serializer.startTag(null, TAG_PERMISSION_BACKUP);
+
+ if (BuildCompat.isAtLeastQ()) {
+ // STOPSHIP: Remove compatibility code once Q SDK level is declared
+ serializer.attribute(null, ATTR_PLATFORM_VERSION,
+ Integer.valueOf(Build.VERSION_CODES.Q).toString());
+ } else {
+ serializer.attribute(null, ATTR_PLATFORM_VERSION,
+ Integer.valueOf(Build.VERSION.SDK_INT).toString());
+ }
+
+ serializer.startTag(null, TAG_ALL_GRANTS);
+
+ int numPkgs = pkgs.size();
+ for (int i = 0; i < numPkgs; i++) {
+ BackupPackageState packageState = pkgs.get(i);
+
+ if (packageState != null) {
+ packageState.writeAsXml(serializer);
+ }
+ }
+
+ serializer.endTag(null, TAG_ALL_GRANTS);
+ serializer.endTag(null, TAG_PERMISSION_BACKUP);
+
+ serializer.endDocument();
+ }
+
+ /**
+ * Update the {@link Constants#DELAYED_RESTORE_PERMISSIONS_FILE} to contain the
+ * {@code packagesToRestoreLater}.
+ *
+ * @param packagesToRestoreLater The new pkgs in the delayed restore file
+ */
+ private void writeDelayedStorePkgsLocked(
+ @NonNull ArrayList<BackupPackageState> packagesToRestoreLater) {
+ try (OutputStream delayedRestoreData = mContext.openFileOutput(
+ DELAYED_RESTORE_PERMISSIONS_FILE, MODE_PRIVATE)) {
+ XmlSerializer serializer = newSerializer();
+ serializer.setOutput(delayedRestoreData, UTF_8.name());
+
+ writePkgsAsXml(serializer, packagesToRestoreLater);
+ serializer.flush();
+ } catch (IOException e) {
+ Log.e(LOG_TAG, "Could not remember which packages still need to be restored", e);
+ }
+ }
+
+ /**
+ * Write the state of all packages as XML.
+ *
+ * @param serializer The xml to write to
+ */
+ void writeState(@NonNull XmlSerializer serializer) throws IOException {
+ List<PackageInfo> pkgs = mContext.getPackageManager().getInstalledPackages(
+ GET_PERMISSIONS);
+ ArrayList<BackupPackageState> backupPkgs = new ArrayList<>();
+
+ int numPkgs = pkgs.size();
+ for (int i = 0; i < numPkgs; i++) {
+ BackupPackageState packageState = BackupPackageState.fromAppPermissions(mContext,
+ pkgs.get(i));
+
+ if (packageState != null) {
+ backupPkgs.add(packageState);
+ }
+ }
+
+ writePkgsAsXml(serializer, backupPkgs);
+ }
+
+ /**
+ * Restore delayed permission state for a package (if delayed during {@link #restoreState}).
+ *
+ * @param packageName The package to be restored
+ *
+ * @return {@code true} if there is still delayed backup left
+ */
+ boolean restoreDelayedState(@NonNull String packageName) {
+ synchronized (sLock) {
+ ArrayList<BackupPackageState> packagesToRestoreLater;
+
+ try (FileInputStream delayedRestoreData =
+ mContext.openFileInput(DELAYED_RESTORE_PERMISSIONS_FILE)) {
+ XmlPullParser parser = Xml.newPullParser();
+ parser.setInput(delayedRestoreData, UTF_8.name());
+
+ packagesToRestoreLater = parseFromXml(parser);
+ } catch (IOException | XmlPullParserException e) {
+ Log.e(LOG_TAG, "Could not parse delayed permissions", e);
+ return false;
+ }
+
+ PackageInfo pkgInfo = null;
+ try {
+ pkgInfo = mContext.getPackageManager().getPackageInfo(packageName, GET_PERMISSIONS);
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.e(LOG_TAG, "Could not restore delayed permissions for " + packageName, e);
+ }
+
+ if (pkgInfo != null) {
+ int numPkgs = packagesToRestoreLater.size();
+ for (int i = 0; i < numPkgs; i++) {
+ BackupPackageState pkgState = packagesToRestoreLater.get(i);
+
+ if (pkgState.mPackageName.equals(packageName)) {
+ pkgState.restore(mContext, pkgInfo);
+ packagesToRestoreLater.remove(i);
+
+ writeDelayedStorePkgsLocked(packagesToRestoreLater);
+
+ break;
+ }
+ }
+ }
+
+ return packagesToRestoreLater.size() > 0;
+ }
+ }
+
+ /**
+ * State that needs to be backed up for a permission.
+ */
+ private static class BackupPermissionState {
+ private final @NonNull String mPermissionName;
+ private final boolean mIsGranted;
+ private final boolean mIsUserSet;
+ private final boolean mIsUserFixed;
+ private final boolean mWasReviewed;
+
+ private BackupPermissionState(@NonNull String permissionName, boolean isGranted,
+ boolean isUserSet, boolean isUserFixed, boolean wasReviewed) {
+ mPermissionName = permissionName;
+ mIsGranted = isGranted;
+ mIsUserSet = isUserSet;
+ mIsUserFixed = isUserFixed;
+ mWasReviewed = wasReviewed;
+ }
+
+ /**
+ * Parse a package state from XML.
+ *
+ * @param parser The data to read
+ * @param context a context to use
+ * @param backupPlatformVersion The platform version the backup was created on
+ *
+ * @return The state
+ */
+ static @NonNull List<BackupPermissionState> parseFromXml(@NonNull XmlPullParser parser,
+ @NonNull Context context, int backupPlatformVersion)
+ throws XmlPullParserException {
+ String permName = parser.getAttributeValue(null, ATTR_PERMISSION_NAME);
+ if (permName == null) {
+ throw new XmlPullParserException("Found " + TAG_PERMISSION + " without "
+ + ATTR_PERMISSION_NAME);
+ }
+
+ ArrayList<String> expandedPermissions = new ArrayList<>();
+ expandedPermissions.add(permName);
+
+ List<SplitPermissionInfo> splitPerms = context.getSystemService(
+ PermissionManager.class).getSplitPermissions();
+
+ // Expand the properties to permissions that were split between the platform version the
+ // backup was taken and the current version.
+ int numSplitPerms = splitPerms.size();
+ for (int i = 0; i < numSplitPerms; i++) {
+ SplitPermissionInfo splitPerm = splitPerms.get(i);
+ if (backupPlatformVersion < splitPerm.getTargetSdk()
+ && permName.equals(splitPerm.getSplitPermission())) {
+ expandedPermissions.addAll(splitPerm.getNewPermissions());
+ }
+ }
+
+ ArrayList<BackupPermissionState> parsedPermissions = new ArrayList<>(
+ expandedPermissions.size());
+ int numExpandedPerms = expandedPermissions.size();
+ for (int i = 0; i < numExpandedPerms; i++) {
+ parsedPermissions.add(new BackupPermissionState(expandedPermissions.get(i),
+ "true".equals(parser.getAttributeValue(null, ATTR_IS_GRANTED)),
+ "true".equals(parser.getAttributeValue(null, ATTR_USER_SET)),
+ "true".equals(parser.getAttributeValue(null, ATTR_USER_FIXED)),
+ "true".equals(parser.getAttributeValue(null, ATTR_WAS_REVIEWED))));
+ }
+
+ return parsedPermissions;
+ }
+
+ /**
+ * Is the permission granted, also considering the app-op.
+ *
+ * <p>This does not consider the review-required state of the permission.
+ *
+ * @param perm The permission that might be granted
+ *
+ * @return {@code true} iff the permission and app-op is granted
+ */
+ private static boolean isPermGrantedIncludingAppOp(@NonNull Permission perm) {
+ return perm.isGranted() && (!perm.affectsAppOp() || perm.isAppOpAllowed());
+ }
+
+ /**
+ * Get the state of a permission to back up.
+ *
+ * @param perm The permission to back up
+ * @param appSupportsRuntimePermissions If the app supports runtimePermissions
+ *
+ * @return The state to back up or {@code null} if the permission does not need to be
+ * backed up.
+ */
+ private static @Nullable BackupPermissionState fromPermission(@NonNull Permission perm,
+ boolean appSupportsRuntimePermissions) {
+ int grantFlags = perm.getFlags();
+
+ if ((grantFlags & SYSTEM_RUNTIME_GRANT_MASK) != 0) {
+ return null;
+ }
+
+ if (!perm.isUserSet() && perm.isGrantedByDefault()) {
+ return null;
+ }
+
+ boolean permissionWasReviewed;
+ boolean isNotInDefaultGrantState;
+ if (appSupportsRuntimePermissions) {
+ isNotInDefaultGrantState = isPermGrantedIncludingAppOp(perm);
+ permissionWasReviewed = false;
+ } else {
+ isNotInDefaultGrantState = !isPermGrantedIncludingAppOp(perm);
+ permissionWasReviewed = !perm.isReviewRequired();
+ }
+
+ if (isNotInDefaultGrantState || perm.isUserSet() || perm.isUserFixed()
+ || permissionWasReviewed) {
+ return new BackupPermissionState(perm.getName(), isPermGrantedIncludingAppOp(perm),
+ perm.isUserSet(), perm.isUserFixed(), permissionWasReviewed);
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Get the states of all permissions of a group to back up.
+ *
+ * @param group The group of the permissions to back up
+ *
+ * @return The state to back up. Empty list if no permissions in the group need to be backed
+ * up
+ */
+ static @NonNull ArrayList<BackupPermissionState> fromPermissionGroup(
+ @NonNull AppPermissionGroup group) {
+ ArrayList<BackupPermissionState> permissionsToRestore = new ArrayList<>();
+ List<Permission> perms = group.getPermissions();
+
+ boolean appSupportsRuntimePermissions =
+ group.getApp().applicationInfo.targetSdkVersion >= Build.VERSION_CODES.M;
+
+ int numPerms = perms.size();
+ for (int i = 0; i < numPerms; i++) {
+ BackupPermissionState permState = fromPermission(perms.get(i),
+ appSupportsRuntimePermissions);
+ if (permState != null) {
+ permissionsToRestore.add(permState);
+ }
+ }
+
+ return permissionsToRestore;
+ }
+
+ /**
+ * Write this state as XML.
+ *
+ * @param serializer The file to write to
+ */
+ void writeAsXml(@NonNull XmlSerializer serializer) throws IOException {
+ serializer.startTag(null, TAG_PERMISSION);
+
+ serializer.attribute(null, ATTR_PERMISSION_NAME, mPermissionName);
+
+ if (mIsGranted) {
+ serializer.attribute(null, ATTR_IS_GRANTED, "true");
+ }
+
+ if (mIsUserSet) {
+ serializer.attribute(null, ATTR_USER_SET, "true");
+ }
+
+ if (mIsUserFixed) {
+ serializer.attribute(null, ATTR_USER_FIXED, "true");
+ }
+
+ if (mWasReviewed) {
+ serializer.attribute(null, ATTR_WAS_REVIEWED, "true");
+ }
+
+ serializer.endTag(null, TAG_PERMISSION);
+ }
+
+ /**
+ * Restore this permission state.
+ *
+ * @param appPerms The {@link AppPermissions} to restore the state to
+ * @param restoreBackgroundPerms if {@code true} only restore background permissions,
+ * if {@code false} do not restore background permissions
+ */
+ void restore(@NonNull AppPermissions appPerms, boolean restoreBackgroundPerms) {
+ AppPermissionGroup group = appPerms.getGroupForPermission(mPermissionName);
+ if (group == null) {
+ Log.w(LOG_TAG, "Could not find group for " + mPermissionName + " in "
+ + appPerms.getPackageInfo().packageName);
+ return;
+ }
+
+ if (restoreBackgroundPerms != group.isBackgroundGroup()) {
+ return;
+ }
+
+ Permission perm = group.getPermission(mPermissionName);
+ if (mWasReviewed) {
+ perm.unsetReviewRequired();
+ }
+
+ // Don't grant or revoke fixed permission groups
+ if (group.isSystemFixed() || group.isPolicyFixed()) {
+ return;
+ }
+
+ if (!perm.isUserSet()) {
+ if (mIsGranted) {
+ group.grantRuntimePermissions(mIsUserFixed,
+ new String[]{mPermissionName});
+ } else {
+ group.revokeRuntimePermissions(mIsUserFixed,
+ new String[]{mPermissionName});
+ }
+
+ perm.setUserSet(mIsUserSet);
+ }
+ }
+ }
+
+ /**
+ * State that needs to be backed up for a package.
+ */
+ private static class BackupPackageState {
+ final @NonNull String mPackageName;
+ private final @NonNull ArrayList<BackupPermissionState> mPermissionsToRestore;
+
+ private BackupPackageState(@NonNull String packageName,
+ @NonNull ArrayList<BackupPermissionState> permissionsToRestore) {
+ mPackageName = packageName;
+ mPermissionsToRestore = permissionsToRestore;
+ }
+
+ /**
+ * Parse a package state from XML.
+ *
+ * @param parser The data to read
+ * @param context a context to use
+ * @param backupPlatformVersion The platform version the backup was created on
+ *
+ * @return The state
+ */
+ static @NonNull BackupPackageState parseFromXml(@NonNull XmlPullParser parser,
+ @NonNull Context context, int backupPlatformVersion)
+ throws IOException, XmlPullParserException {
+ String packageName = parser.getAttributeValue(null, ATTR_PACKAGE_NAME);
+ if (packageName == null) {
+ throw new XmlPullParserException("Found " + TAG_GRANT + " without "
+ + ATTR_PACKAGE_NAME);
+ }
+
+ ArrayList<BackupPermissionState> permissionsToRestore = new ArrayList<>();
+
+ while (true) {
+ switch (parser.next()) {
+ case START_TAG:
+ switch (parser.getName()) {
+ case TAG_PERMISSION:
+ try {
+ permissionsToRestore.addAll(
+ BackupPermissionState.parseFromXml(parser, context,
+ backupPlatformVersion));
+ } catch (XmlPullParserException e) {
+ Log.e(LOG_TAG, "Could not parse permission for "
+ + packageName, e);
+ }
+
+ skipToEndOfTag(parser);
+ break;
+ default:
+ // ignore tag
+ Log.w(LOG_TAG, "Found unexpected tag " + parser.getName()
+ + " while restoring " + packageName);
+ skipToEndOfTag(parser);
+ }
+
+ break;
+ case END_TAG:
+ return new BackupPackageState(packageName, permissionsToRestore);
+ case END_DOCUMENT:
+ throw new XmlPullParserException("Could not parse state for "
+ + packageName);
+ }
+ }
+ }
+
+ /**
+ * Get the state of a package to back up.
+ *
+ * @param context A context to use
+ * @param pkgInfo The package to back up.
+ *
+ * @return The state to back up or {@code null} if no permission of the package need to be
+ * backed up.
+ */
+ static @Nullable BackupPackageState fromAppPermissions(@NonNull Context context,
+ @NonNull PackageInfo pkgInfo) {
+ AppPermissions appPerms = new AppPermissions(context, pkgInfo, false, null);
+
+ ArrayList<BackupPermissionState> permissionsToRestore = new ArrayList<>();
+ List<AppPermissionGroup> groups = appPerms.getPermissionGroups();
+
+ int numGroups = groups.size();
+ for (int groupNum = 0; groupNum < numGroups; groupNum++) {
+ AppPermissionGroup group = groups.get(groupNum);
+
+ permissionsToRestore.addAll(BackupPermissionState.fromPermissionGroup(group));
+
+ // Background permissions are in a subgroup that is not part of
+ // {@link AppPermission#getPermissionGroups}. Hence add it explicitly here.
+ if (group.getBackgroundPermissions() != null) {
+ permissionsToRestore.addAll(BackupPermissionState.fromPermissionGroup(
+ group.getBackgroundPermissions()));
+ }
+ }
+
+ if (permissionsToRestore.size() == 0) {
+ return null;
+ }
+
+ return new BackupPackageState(pkgInfo.packageName, permissionsToRestore);
+ }
+
+ /**
+ * Write this state as XML.
+ *
+ * @param serializer The file to write to
+ */
+ void writeAsXml(@NonNull XmlSerializer serializer) throws IOException {
+ if (mPermissionsToRestore.size() == 0) {
+ return;
+ }
+
+ serializer.startTag(null, TAG_GRANT);
+ serializer.attribute(null, ATTR_PACKAGE_NAME, mPackageName);
+
+ int numPerms = mPermissionsToRestore.size();
+ for (int i = 0; i < numPerms; i++) {
+ mPermissionsToRestore.get(i).writeAsXml(serializer);
+ }
+
+ serializer.endTag(null, TAG_GRANT);
+ }
+
+ /**
+ * Restore this package state.
+ *
+ * @param context A context to use
+ * @param pkgInfo The package to restore.
+ */
+ void restore(@NonNull Context context, @NonNull PackageInfo pkgInfo) {
+ AppPermissions appPerms = new AppPermissions(context, pkgInfo, false, true, null);
+
+ // Restore background permissions after foreground permissions as for pre-M apps bg
+ // granted and fg revoked cannot be expressed.
+ int numPerms = mPermissionsToRestore.size();
+ for (int i = 0; i < numPerms; i++) {
+ mPermissionsToRestore.get(i).restore(appPerms, false);
+ }
+ for (int i = 0; i < numPerms; i++) {
+ mPermissionsToRestore.get(i).restore(appPerms, true);
+ }
+
+ int numGroups = appPerms.getPermissionGroups().size();
+ for (int i = 0; i < numGroups; i++) {
+ AppPermissionGroup group = appPerms.getPermissionGroups().get(i);
+
+ // Only denied groups can be user fixed
+ if (group.areRuntimePermissionsGranted()) {
+ group.setUserFixed(false);
+ }
+
+ AppPermissionGroup bgGroup = group.getBackgroundPermissions();
+ if (bgGroup != null) {
+ // Only denied groups can be user fixed
+ if (bgGroup.areRuntimePermissionsGranted()) {
+ bgGroup.setUserFixed(false);
+ }
+ }
+ }
+
+ appPerms.persistChanges(true);
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/service/BaseSearchIndexablesProvider.java b/src/com/android/packageinstaller/permission/service/BaseSearchIndexablesProvider.java
new file mode 100644
index 0000000..34647cd
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/service/BaseSearchIndexablesProvider.java
@@ -0,0 +1,137 @@
+/*
+ * 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.packageinstaller.permission.service;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.provider.SearchIndexablesContract;
+import android.provider.SearchIndexablesProvider;
+import android.util.Log;
+
+import androidx.annotation.CheckResult;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.packageinstaller.Constants;
+import com.android.packageinstaller.permission.utils.Utils;
+
+import java.util.Objects;
+import java.util.UUID;
+
+/**
+ * Base class for {@link SearchIndexablesProvider} inside permission controller, which allows using
+ * a password in raw data key and verifying incoming intents afterwards.
+ */
+public abstract class BaseSearchIndexablesProvider extends SearchIndexablesProvider {
+
+ private static final String LOG_TAG = BaseSearchIndexablesProvider.class.getSimpleName();
+
+ private static final String EXTRA_SETTINGS_SEARCH_KEY = ":settings:fragment_args_key";
+
+ private static final int PASSWORD_LENGTH = 36;
+
+ @NonNull
+ private static final Object sPasswordLock = new Object();
+
+ @Override
+ public boolean onCreate() {
+ return true;
+ }
+
+ @Nullable
+ @Override
+ public Cursor queryXmlResources(@Nullable String[] projection) {
+ return new MatrixCursor(SearchIndexablesContract.INDEXABLES_XML_RES_COLUMNS);
+ }
+
+ @Nullable
+ @Override
+ public Cursor queryNonIndexableKeys(@Nullable String[] projection) {
+ return new MatrixCursor(SearchIndexablesContract.NON_INDEXABLES_KEYS_COLUMNS);
+ }
+
+ @NonNull
+ private static String getPassword(@NonNull Context context) {
+ synchronized (sPasswordLock) {
+ SharedPreferences sharedPreferences = Utils.getDeviceProtectedSharedPreferences(
+ context);
+ String password = sharedPreferences.getString(
+ Constants.SEARCH_INDEXABLE_PROVIDER_PASSWORD_KEY, null);
+ if (password == null) {
+ password = UUID.randomUUID().toString();
+ sharedPreferences.edit()
+ .putString(Constants.SEARCH_INDEXABLE_PROVIDER_PASSWORD_KEY, password)
+ .apply();
+ }
+ return password;
+ }
+ }
+
+ /**
+ * Create a unique raw data key with password.
+ *
+ * @param key the original key, can be retrieved later with {@link #getOriginalKey(Intent)}
+ * @param context the context to use
+ * @return the created raw data key
+ */
+ @NonNull
+ protected static String createRawDataKey(@NonNull String key, @NonNull Context context) {
+ return getPassword(context) + context.getPackageName() + ',' + key;
+ }
+
+ /**
+ * Check if the intent contains the properties expected from an intent launched from settings
+ * search.
+ *
+ * @param intent the intent to check
+ * @param context the context to get password
+ *
+ * @return whether the intent is valid
+ */
+ @CheckResult
+ public static boolean isIntentValid(@NonNull Intent intent, @NonNull Context context) {
+ String key = intent.getStringExtra(EXTRA_SETTINGS_SEARCH_KEY);
+ String passwordFromIntent = key.substring(0, PASSWORD_LENGTH);
+ String password = getPassword(context);
+ boolean verified = Objects.equals(passwordFromIntent, password);
+ if (!verified) {
+ Log.w(LOG_TAG, "Invalid password: " + passwordFromIntent);
+ }
+ return verified;
+ }
+
+ /**
+ * Get the original key passed to {@link #createRawDataKey(String, Context)}. Should only be
+ * called after {@link #isIntentValid(Intent, Context)}.
+ *
+ * @param intent the intent to get the original key
+ *
+ * @return the original key from the intent, or {@code null} if none
+ */
+ @Nullable
+ public static String getOriginalKey(@NonNull Intent intent) {
+ String key = intent.getStringExtra(EXTRA_SETTINGS_SEARCH_KEY);
+ if (key == null) {
+ return null;
+ }
+ int keyStart = key.indexOf(',') + 1;
+ return keyStart <= key.length() ? key.substring(keyStart) : null;
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/service/LocationAccessCheck.java b/src/com/android/packageinstaller/permission/service/LocationAccessCheck.java
new file mode 100644
index 0000000..727808b
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/service/LocationAccessCheck.java
@@ -0,0 +1,978 @@
+/*
+ * 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.packageinstaller.permission.service;
+
+import static android.Manifest.permission.ACCESS_FINE_LOCATION;
+import static android.app.AppOpsManager.OPSTR_FINE_LOCATION;
+import static android.app.NotificationManager.IMPORTANCE_HIGH;
+import static android.app.PendingIntent.FLAG_ONE_SHOT;
+import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;
+import static android.app.PendingIntent.getBroadcast;
+import static android.app.job.JobScheduler.RESULT_SUCCESS;
+import static android.content.Context.MODE_PRIVATE;
+import static android.content.Intent.EXTRA_PACKAGE_NAME;
+import static android.content.Intent.EXTRA_PERMISSION_NAME;
+import static android.content.Intent.EXTRA_UID;
+import static android.content.Intent.EXTRA_USER;
+import static android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK;
+import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
+import static android.content.Intent.FLAG_RECEIVER_FOREGROUND;
+import static android.content.pm.PackageManager.GET_PERMISSIONS;
+import static android.graphics.Bitmap.Config.ARGB_8888;
+import static android.graphics.Bitmap.createBitmap;
+import static android.os.UserHandle.getUserHandleForUid;
+import static android.os.UserHandle.myUserId;
+import static android.provider.Settings.Secure.LOCATION_ACCESS_CHECK_DELAY_MILLIS;
+import static android.provider.Settings.Secure.LOCATION_ACCESS_CHECK_INTERVAL_MILLIS;
+
+import static com.android.packageinstaller.Constants.EXTRA_SESSION_ID;
+import static com.android.packageinstaller.Constants.INVALID_SESSION_ID;
+import static com.android.packageinstaller.Constants.KEY_LAST_LOCATION_ACCESS_NOTIFICATION_SHOWN;
+import static com.android.packageinstaller.Constants.LOCATION_ACCESS_CHECK_ALREADY_NOTIFIED_FILE;
+import static com.android.packageinstaller.Constants.LOCATION_ACCESS_CHECK_JOB_ID;
+import static com.android.packageinstaller.Constants.LOCATION_ACCESS_CHECK_NOTIFICATION_ID;
+import static com.android.packageinstaller.Constants.PERIODIC_LOCATION_ACCESS_CHECK_JOB_ID;
+import static com.android.packageinstaller.Constants.PERMISSION_REMINDER_CHANNEL_ID;
+import static com.android.packageinstaller.Constants.PREFERENCES_FILE;
+import static com.android.packageinstaller.PermissionControllerStatsLog.LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION;
+import static com.android.packageinstaller.PermissionControllerStatsLog.LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION__RESULT__NOTIFICATION_CLICKED;
+import static com.android.packageinstaller.PermissionControllerStatsLog.LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION__RESULT__NOTIFICATION_DECLINED;
+import static com.android.packageinstaller.PermissionControllerStatsLog.LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION__RESULT__NOTIFICATION_PRESENTED;
+import static com.android.packageinstaller.permission.utils.Utils.OS_PKG;
+import static com.android.packageinstaller.permission.utils.Utils.getParcelableExtraSafe;
+import static com.android.packageinstaller.permission.utils.Utils.getParentUserContext;
+import static com.android.packageinstaller.permission.utils.Utils.getStringExtraSafe;
+import static com.android.packageinstaller.permission.utils.Utils.getSystemServiceSafe;
+import static com.android.packageinstaller.permission.utils.Utils.isLocationAccessCheckEnabled;
+
+import static java.lang.System.currentTimeMillis;
+import static java.util.concurrent.TimeUnit.DAYS;
+
+import android.app.AppOpsManager;
+import android.app.AppOpsManager.OpEntry;
+import android.app.AppOpsManager.PackageOps;
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.job.JobInfo;
+import android.app.job.JobParameters;
+import android.app.job.JobScheduler;
+import android.app.job.JobService;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.drawable.Drawable;
+import android.location.LocationManager;
+import android.net.Uri;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.provider.Settings;
+import android.service.notification.StatusBarNotification;
+import android.util.ArraySet;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+import androidx.core.util.Preconditions;
+
+import com.android.packageinstaller.PermissionControllerStatsLog;
+import com.android.packageinstaller.permission.model.AppPermissionGroup;
+import com.android.packageinstaller.permission.ui.AppPermissionActivity;
+import com.android.permissioncontroller.R;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.Random;
+import java.util.function.BooleanSupplier;
+
+/**
+ * Show notification that double-guesses the user if she/he really wants to grant fine background
+ * location access to an app.
+ *
+ * <p>A notification is scheduled after the background permission access is granted via
+ * {@link #checkLocationAccessSoon()} or periodically.
+ *
+ * <p>We rate limit the number of notification we show and only ever show one notification at a
+ * time. Further we only shown notifications if the app has actually accessed the fine location
+ * in the background.
+ *
+ * <p>As there are many cases why a notification should not been shown, we always schedule a
+ * {@link #addLocationNotificationIfNeeded check} which then might add a notification.
+ */
+public class LocationAccessCheck {
+ private static final String LOG_TAG = LocationAccessCheck.class.getSimpleName();
+ private static final boolean DEBUG = false;
+
+ /** Lock required for all methods called {@code ...Locked} */
+ private static final Object sLock = new Object();
+
+ private final Random mRandom = new Random();
+
+ private final @NonNull Context mContext;
+ private final @NonNull JobScheduler mJobScheduler;
+ private final @NonNull ContentResolver mContentResolver;
+ private final @NonNull AppOpsManager mAppOpsManager;
+ private final @NonNull PackageManager mPackageManager;
+ private final @NonNull UserManager mUserManager;
+ private final @NonNull SharedPreferences mSharedPrefs;
+
+ /** If the current long running operation should be canceled */
+ private final @Nullable BooleanSupplier mShouldCancel;
+
+ /**
+ * Get time in between two periodic checks.
+ *
+ * <p>Default: 1 day
+ *
+ * @return The time in between check in milliseconds
+ */
+ private long getPeriodicCheckIntervalMillis() {
+ return Settings.Secure.getLong(mContentResolver,
+ LOCATION_ACCESS_CHECK_INTERVAL_MILLIS, DAYS.toMillis(1));
+ }
+
+ /**
+ * Flexibility of the periodic check.
+ *
+ * <p>10% of {@link #getPeriodicCheckIntervalMillis()}
+ *
+ * @return The flexibility of the periodic check in milliseconds
+ */
+ private long getFlexForPeriodicCheckMillis() {
+ return getPeriodicCheckIntervalMillis() / 10;
+ }
+
+ /**
+ * Get the delay in between granting a permission and the follow up check.
+ *
+ * <p>Default: 1 day
+ *
+ * @return The delay in milliseconds
+ */
+ private long getDelayMillis() {
+ return Settings.Secure.getLong(mContentResolver,
+ LOCATION_ACCESS_CHECK_DELAY_MILLIS, DAYS.toMillis(1));
+ }
+
+ /**
+ * Minimum time in between showing two notifications.
+ *
+ * <p>This is just small enough so that the periodic check can always show a notification.
+ *
+ * @return The minimum time in milliseconds
+ */
+ private long getInBetweenNotificationsMillis() {
+ return getPeriodicCheckIntervalMillis() - (long) (getFlexForPeriodicCheckMillis() * 2.1);
+ }
+
+ /**
+ * Load the list of {@link UserPackage packages} we already shown a notification for.
+ *
+ * @return The list of packages we already shown a notification for.
+ */
+ private @NonNull ArraySet<UserPackage> loadAlreadyNotifiedPackagesLocked() {
+ try (BufferedReader reader = new BufferedReader(new InputStreamReader(
+ mContext.openFileInput(LOCATION_ACCESS_CHECK_ALREADY_NOTIFIED_FILE)))) {
+ ArraySet<UserPackage> packages = new ArraySet<>();
+
+ /*
+ * The format of the file is <package> <serial of user>, e.g.
+ *
+ * com.one.package 5630633845
+ * com.two.package 5630633853
+ * com.three.package 5630633853
+ */
+ while (true) {
+ String line = reader.readLine();
+ if (line == null) {
+ break;
+ }
+
+ String[] lineComponents = line.split(" ");
+ String pkg = lineComponents[0];
+ UserHandle user = mUserManager.getUserForSerialNumber(
+ Long.valueOf(lineComponents[1]));
+
+ if (user != null) {
+ packages.add(new UserPackage(mContext, pkg, user));
+ } else {
+ Log.i(LOG_TAG, "Not restoring state \"" + line + "\" as user is unknown");
+ }
+ }
+
+ return packages;
+ } catch (FileNotFoundException ignored) {
+ return new ArraySet<>();
+ } catch (Exception e) {
+ Log.w(LOG_TAG, "Could not read " + LOCATION_ACCESS_CHECK_ALREADY_NOTIFIED_FILE, e);
+ return new ArraySet<>();
+ }
+ }
+
+ /**
+ * Safe the list of {@link UserPackage packages} we have already shown a notification for.
+ *
+ * @param packages The list of packages we already shown a notification for.
+ */
+ private void safeAlreadyNotifiedPackagesLocked(@NonNull ArraySet<UserPackage> packages) {
+ try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
+ mContext.openFileOutput(LOCATION_ACCESS_CHECK_ALREADY_NOTIFIED_FILE,
+ MODE_PRIVATE)))) {
+ /*
+ * The format of the file is <package> <serial of user>, e.g.
+ *
+ * com.one.package 5630633845
+ * com.two.package 5630633853
+ * com.three.package 5630633853
+ */
+ int numPkgs = packages.size();
+ for (int i = 0; i < numPkgs; i++) {
+ UserPackage userPkg = packages.valueAt(i);
+
+ writer.append(userPkg.pkg);
+ writer.append(' ');
+ writer.append(
+ Long.valueOf(mUserManager.getSerialNumberForUser(userPkg.user)).toString());
+ writer.newLine();
+ }
+ } catch (IOException e) {
+ Log.e(LOG_TAG, "Could not write " + LOCATION_ACCESS_CHECK_ALREADY_NOTIFIED_FILE, e);
+ }
+ }
+
+ /**
+ * Remember that we showed a notification for a {@link UserPackage}
+ *
+ * @param pkg The package we notified for
+ * @param user The user we notified for
+ */
+ private void markAsNotified(@NonNull String pkg, @NonNull UserHandle user) {
+ synchronized (sLock) {
+ ArraySet<UserPackage> alreadyNotifiedPackages = loadAlreadyNotifiedPackagesLocked();
+ alreadyNotifiedPackages.add(new UserPackage(mContext, pkg, user));
+ safeAlreadyNotifiedPackagesLocked(alreadyNotifiedPackages);
+ }
+ }
+
+ /**
+ * Create the channel the location access notifications should be posted to.
+ *
+ * @param user The user to create the channel for
+ */
+ private void createPermissionReminderChannel(@NonNull UserHandle user) {
+ NotificationManager notificationManager = getSystemServiceSafe(mContext,
+ NotificationManager.class, user);
+
+ NotificationChannel permissionReminderChannel = new NotificationChannel(
+ PERMISSION_REMINDER_CHANNEL_ID, mContext.getString(R.string.permission_reminders),
+ IMPORTANCE_HIGH);
+ notificationManager.createNotificationChannel(permissionReminderChannel);
+ }
+
+ /**
+ * If {@link #mShouldCancel} throw an {@link InterruptedException}.
+ */
+ private void throwInterruptedExceptionIfTaskIsCanceled() throws InterruptedException {
+ if (mShouldCancel != null && mShouldCancel.getAsBoolean()) {
+ throw new InterruptedException();
+ }
+ }
+
+ /**
+ * Create a new {@link LocationAccessCheck} object.
+ *
+ * @param context Used to resolve managers
+ * @param shouldCancel If supplied, can be used to interrupt long running operations
+ */
+ public LocationAccessCheck(@NonNull Context context, @Nullable BooleanSupplier shouldCancel) {
+ mContext = getParentUserContext(context);
+
+ mJobScheduler = getSystemServiceSafe(mContext, JobScheduler.class);
+ mAppOpsManager = getSystemServiceSafe(mContext, AppOpsManager.class);
+ mPackageManager = mContext.getPackageManager();
+ mUserManager = getSystemServiceSafe(mContext, UserManager.class);
+ mSharedPrefs = mContext.getSharedPreferences(PREFERENCES_FILE, MODE_PRIVATE);
+ mContentResolver = mContext.getContentResolver();
+
+ mShouldCancel = shouldCancel;
+ }
+
+ /**
+ * Check if a location access notification should be shown and then add it.
+ *
+ * <p>Always run async inside a
+ * {@link LocationAccessCheckJobService.AddLocationNotificationIfNeededTask}.
+ */
+ @WorkerThread
+ private void addLocationNotificationIfNeeded(@NonNull JobParameters params,
+ @NonNull LocationAccessCheckJobService service) {
+ if (!isLocationAccessCheckEnabled()) {
+ service.jobFinished(params, false);
+ return;
+ }
+
+ synchronized (sLock) {
+ try {
+ if (currentTimeMillis() - mSharedPrefs.getLong(
+ KEY_LAST_LOCATION_ACCESS_NOTIFICATION_SHOWN, 0)
+ < getInBetweenNotificationsMillis()) {
+ service.jobFinished(params, false);
+ return;
+ }
+
+ if (getCurrentlyShownNotificationLocked() != null) {
+ service.jobFinished(params, false);
+ return;
+ }
+
+ addLocationNotificationIfNeeded(mAppOpsManager.getPackagesForOps(
+ new String[]{OPSTR_FINE_LOCATION}));
+ service.jobFinished(params, false);
+ } catch (Exception e) {
+ Log.e(LOG_TAG, "Could not check for location access", e);
+ service.jobFinished(params, true);
+ } finally {
+ synchronized (sLock) {
+ service.mAddLocationNotificationIfNeededTask = null;
+ }
+ }
+ }
+ }
+
+ private void addLocationNotificationIfNeeded(@NonNull List<PackageOps> ops)
+ throws InterruptedException {
+ synchronized (sLock) {
+ List<UserPackage> packages = getLocationUsersWithNoNotificationYetLocked(ops);
+
+ // Get a random package and resolve package info
+ PackageInfo pkgInfo = null;
+ while (pkgInfo == null) {
+ throwInterruptedExceptionIfTaskIsCanceled();
+
+ if (packages.isEmpty()) {
+ return;
+ }
+
+ UserPackage packageToNotifyFor = null;
+
+ // Prefer to show notification for location controller extra package
+ int numPkgs = packages.size();
+ for (int i = 0; i < numPkgs; i++) {
+ UserPackage pkg = packages.get(i);
+
+ LocationManager locationManager = getSystemServiceSafe(mContext,
+ LocationManager.class, pkg.user);
+ if (locationManager.isExtraLocationControllerPackageEnabled() && pkg.pkg.equals(
+ locationManager.getExtraLocationControllerPackage())) {
+ packageToNotifyFor = pkg;
+ break;
+ }
+ }
+
+ if (packageToNotifyFor == null) {
+ packageToNotifyFor = packages.get(mRandom.nextInt(packages.size()));
+ }
+
+ try {
+ pkgInfo = packageToNotifyFor.getPackageInfo();
+ } catch (PackageManager.NameNotFoundException e) {
+ packages.remove(packageToNotifyFor);
+ }
+ }
+
+ createPermissionReminderChannel(getUserHandleForUid(pkgInfo.applicationInfo.uid));
+ createNotificationForLocationUser(pkgInfo);
+ }
+ }
+
+ /**
+ * Get the {@link UserPackage packages} which accessed the location but we have not yet shown
+ * a notification for.
+ *
+ * <p>This also ignores all packages that are excepted from the notification.
+ *
+ * @return The packages we need to show a notification for
+ *
+ * @throws InterruptedException If {@link #mShouldCancel}
+ */
+ private @NonNull List<UserPackage> getLocationUsersWithNoNotificationYetLocked(
+ @NonNull List<PackageOps> allOps) throws InterruptedException {
+ List<UserPackage> pkgsWithLocationAccess = new ArrayList<>();
+ List<UserHandle> profiles = mUserManager.getUserProfiles();
+
+ LocationManager lm = mContext.getSystemService(LocationManager.class);
+
+ int numPkgs = allOps.size();
+ for (int pkgNum = 0; pkgNum < numPkgs; pkgNum++) {
+ PackageOps packageOps = allOps.get(pkgNum);
+
+ String pkg = packageOps.getPackageName();
+ if (pkg.equals(OS_PKG) || lm.isProviderPackage(pkg)) {
+ continue;
+ }
+
+ UserHandle user = getUserHandleForUid(packageOps.getUid());
+ // Do not handle apps that belong to a different profile user group
+ if (!profiles.contains(user)) {
+ continue;
+ }
+
+ UserPackage userPkg = new UserPackage(mContext, pkg, user);
+
+ AppPermissionGroup bgLocationGroup = userPkg.getBackgroundLocationGroup();
+ // Do not show notification that do not request the background permission anymore
+ if (bgLocationGroup == null) {
+ continue;
+ }
+
+ // Do not show notification that do not currently have the background permission
+ // granted
+ if (!bgLocationGroup.areRuntimePermissionsGranted()) {
+ continue;
+ }
+
+ // Do not show notification for permissions that are not user sensitive
+ if (!bgLocationGroup.isUserSensitive()) {
+ continue;
+ }
+
+ // Never show notification for pregranted permissions as warning the user via the
+ // notification and then warning the user again when revoking the permission is
+ // confusing
+ if (userPkg.getLocationGroup().hasGrantedByDefaultPermission()
+ && bgLocationGroup.hasGrantedByDefaultPermission()) {
+ continue;
+ }
+
+ int numOps = packageOps.getOps().size();
+ for (int opNum = 0; opNum < numOps; opNum++) {
+ OpEntry entry = packageOps.getOps().get(opNum);
+
+ if (entry.getLastAccessBackgroundTime(AppOpsManager.OP_FLAGS_ALL_TRUSTED) > 0) {
+ pkgsWithLocationAccess.add(userPkg);
+
+ break;
+ }
+ }
+ }
+
+ ArraySet<UserPackage> alreadyNotifiedPkgs = loadAlreadyNotifiedPackagesLocked();
+ throwInterruptedExceptionIfTaskIsCanceled();
+
+ resetAlreadyNotifiedPackagesWithoutPermissionLocked(alreadyNotifiedPkgs);
+
+ pkgsWithLocationAccess.removeAll(alreadyNotifiedPkgs);
+ return pkgsWithLocationAccess;
+ }
+
+ /**
+ * Create a notification reminding the user that a package used the location. From this
+ * notification the user can directly go to the screen that allows to change the permission.
+ *
+ * @param pkg The {@link PackageInfo} for the package to to be changed
+ */
+ private void createNotificationForLocationUser(@NonNull PackageInfo pkg) {
+ CharSequence pkgLabel = mPackageManager.getApplicationLabel(pkg.applicationInfo);
+ Drawable pkgIcon = mPackageManager.getApplicationIcon(pkg.applicationInfo);
+ Bitmap pkgIconBmp = createBitmap(pkgIcon.getIntrinsicWidth(), pkgIcon.getIntrinsicHeight(),
+ ARGB_8888);
+ Canvas canvas = new Canvas(pkgIconBmp);
+ pkgIcon.setBounds(0, 0, pkgIcon.getIntrinsicWidth(), pkgIcon.getIntrinsicHeight());
+ pkgIcon.draw(canvas);
+
+ String pkgName = pkg.packageName;
+ UserHandle user = getUserHandleForUid(pkg.applicationInfo.uid);
+
+ NotificationManager notificationManager = getSystemServiceSafe(mContext,
+ NotificationManager.class, user);
+
+ long sessionId = INVALID_SESSION_ID;
+ while (sessionId == INVALID_SESSION_ID) {
+ sessionId = new Random().nextLong();
+ }
+
+ Intent deleteIntent = new Intent(mContext, NotificationDeleteHandler.class);
+ deleteIntent.putExtra(EXTRA_PACKAGE_NAME, pkgName);
+ deleteIntent.putExtra(EXTRA_SESSION_ID, sessionId);
+ deleteIntent.putExtra(EXTRA_UID, pkg.applicationInfo.uid);
+ deleteIntent.putExtra(EXTRA_USER, user);
+ deleteIntent.setFlags(FLAG_RECEIVER_FOREGROUND);
+
+ Intent clickIntent = new Intent(mContext, NotificationClickHandler.class);
+ clickIntent.putExtra(EXTRA_PACKAGE_NAME, pkgName);
+ clickIntent.putExtra(EXTRA_SESSION_ID, sessionId);
+ clickIntent.putExtra(EXTRA_UID, pkg.applicationInfo.uid);
+ clickIntent.putExtra(EXTRA_USER, user);
+ clickIntent.setFlags(FLAG_RECEIVER_FOREGROUND);
+
+ CharSequence appName = getNotificationAppName();
+
+ Notification.Builder b = (new Notification.Builder(mContext,
+ PERMISSION_REMINDER_CHANNEL_ID))
+ .setContentTitle(mContext.getString(
+ R.string.background_location_access_reminder_notification_title, pkgLabel))
+ .setContentText(mContext.getString(
+ R.string.background_location_access_reminder_notification_content))
+ .setStyle(new Notification.BigTextStyle().bigText(mContext.getString(
+ R.string.background_location_access_reminder_notification_content)))
+ .setSmallIcon(R.drawable.ic_pin_drop)
+ .setLargeIcon(pkgIconBmp)
+ .setColor(mContext.getColor(android.R.color.system_notification_accent_color))
+ .setAutoCancel(true)
+ .setDeleteIntent(getBroadcast(mContext, 0, deleteIntent,
+ FLAG_ONE_SHOT | FLAG_UPDATE_CURRENT))
+ .setContentIntent(getBroadcast(mContext, 0, clickIntent,
+ FLAG_ONE_SHOT | FLAG_UPDATE_CURRENT));
+
+ if (appName != null) {
+ Bundle extras = new Bundle();
+ extras.putString(Notification.EXTRA_SUBSTITUTE_APP_NAME, appName.toString());
+ b.addExtras(extras);
+ }
+
+ notificationManager.notify(pkgName, LOCATION_ACCESS_CHECK_NOTIFICATION_ID, b.build());
+
+ if (DEBUG) Log.i(LOG_TAG, "Notified " + pkgName);
+
+ PermissionControllerStatsLog.write(LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION, sessionId,
+ pkg.applicationInfo.uid, pkgName,
+ LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION__RESULT__NOTIFICATION_PRESENTED);
+ Log.v(LOG_TAG, "Location access check notification shown with sessionId=" + sessionId + ""
+ + " uid=" + pkg.applicationInfo.uid + " pkgName=" + pkgName);
+
+ mSharedPrefs.edit().putLong(KEY_LAST_LOCATION_ACCESS_NOTIFICATION_SHOWN,
+ currentTimeMillis()).apply();
+ }
+
+ @Nullable
+ private CharSequence getNotificationAppName() {
+ // We pretend we're the Settings app sending the notification, so figure out its name.
+ Intent openSettingsIntent = new Intent(Settings.ACTION_SETTINGS);
+ ResolveInfo resolveInfo = mPackageManager.resolveActivity(openSettingsIntent, 0);
+ if (resolveInfo == null) {
+ return null;
+ }
+ return mPackageManager.getApplicationLabel(resolveInfo.activityInfo.applicationInfo);
+ }
+
+ /**
+ * Get currently shown notification. We only ever show one notification per profile group.
+ *
+ * @return The notification or {@code null} if no notification is currently shown
+ */
+ private @Nullable StatusBarNotification getCurrentlyShownNotificationLocked() {
+ List<UserHandle> profiles = mUserManager.getUserProfiles();
+
+ int numProfiles = profiles.size();
+ for (int profileNum = 0; profileNum < numProfiles; profileNum++) {
+ NotificationManager notificationManager = getSystemServiceSafe(mContext,
+ NotificationManager.class, profiles.get(profileNum));
+
+ StatusBarNotification[] notifications = notificationManager.getActiveNotifications();
+
+ int numNotifications = notifications.length;
+ for (int notificationNum = 0; notificationNum < numNotifications; notificationNum++) {
+ StatusBarNotification notification = notifications[notificationNum];
+
+ if (notification.getId() == LOCATION_ACCESS_CHECK_NOTIFICATION_ID) {
+ return notification;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Go through the list of packages we already shown a notification for and remove those that do
+ * not request fine background location access.
+ *
+ * @param alreadyNotifiedPkgs The packages we already shown a notification for. This paramter is
+ * modified inside of this method.
+ *
+ * @throws InterruptedException If {@link #mShouldCancel}
+ */
+ private void resetAlreadyNotifiedPackagesWithoutPermissionLocked(
+ @NonNull ArraySet<UserPackage> alreadyNotifiedPkgs) throws InterruptedException {
+ ArrayList<UserPackage> packagesToRemove = new ArrayList<>();
+
+ for (UserPackage userPkg : alreadyNotifiedPkgs) {
+ throwInterruptedExceptionIfTaskIsCanceled();
+
+ AppPermissionGroup bgLocationGroup = userPkg.getBackgroundLocationGroup();
+ if (bgLocationGroup == null || !bgLocationGroup.areRuntimePermissionsGranted()) {
+ packagesToRemove.add(userPkg);
+ }
+ }
+
+ if (!packagesToRemove.isEmpty()) {
+ alreadyNotifiedPkgs.removeAll(packagesToRemove);
+ safeAlreadyNotifiedPackagesLocked(alreadyNotifiedPkgs);
+ throwInterruptedExceptionIfTaskIsCanceled();
+ }
+ }
+
+ /**
+ * Remove all persisted state for a package.
+ *
+ * @param pkg name of package
+ * @param user user the package belongs to
+ */
+ private void forgetAboutPackage(@NonNull String pkg, @NonNull UserHandle user) {
+ synchronized (sLock) {
+ StatusBarNotification notification = getCurrentlyShownNotificationLocked();
+ if (notification != null && notification.getUser().equals(user)
+ && notification.getTag().equals(pkg)) {
+ getSystemServiceSafe(mContext, NotificationManager.class, user).cancel(
+ pkg, LOCATION_ACCESS_CHECK_NOTIFICATION_ID);
+ }
+
+ ArraySet<UserPackage> packages = loadAlreadyNotifiedPackagesLocked();
+ packages.remove(new UserPackage(mContext, pkg, user));
+ safeAlreadyNotifiedPackagesLocked(packages);
+ }
+ }
+
+ /**
+ * After a small delay schedule a check if we should show a notification.
+ *
+ * <p>This is called when location access is granted to an app. In this case it is likely that
+ * the app will access the location soon. If this happens the notification will appear only a
+ * little after the user granted the location.
+ */
+ public void checkLocationAccessSoon() {
+ JobInfo.Builder b = (new JobInfo.Builder(LOCATION_ACCESS_CHECK_JOB_ID,
+ new ComponentName(mContext, LocationAccessCheckJobService.class)))
+ .setMinimumLatency(getDelayMillis());
+
+ int scheduleResult = mJobScheduler.schedule(b.build());
+ if (scheduleResult != RESULT_SUCCESS) {
+ Log.e(LOG_TAG, "Could not schedule location access check " + scheduleResult);
+ }
+ }
+
+ /**
+ * Check if the current user is the profile parent.
+ *
+ * @return {@code true} if the current user is the profile parent.
+ */
+ private boolean isRunningInParentProfile() {
+ UserHandle user = UserHandle.of(myUserId());
+ UserHandle parent = mUserManager.getProfileParent(user);
+
+ return parent == null || user.equals(parent);
+ }
+
+ /**
+ * On boot set up a periodic job that starts checks.
+ */
+ public static class SetupPeriodicBackgroundLocationAccessCheck extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ LocationAccessCheck locationAccessCheck = new LocationAccessCheck(context, null);
+ JobScheduler jobScheduler = getSystemServiceSafe(context, JobScheduler.class);
+
+ if (!locationAccessCheck.isRunningInParentProfile()) {
+ // Profile parent handles child profiles too.
+ return;
+ }
+
+ 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)))
+ .setPeriodic(locationAccessCheck.getPeriodicCheckIntervalMillis(),
+ locationAccessCheck.getFlexForPeriodicCheckMillis());
+
+ int scheduleResult = jobScheduler.schedule(b.build());
+ if (scheduleResult != RESULT_SUCCESS) {
+ Log.e(LOG_TAG, "Could not schedule periodic location access check "
+ + scheduleResult);
+ }
+ }
+ }
+ }
+
+ /**
+ * Checks if a new notification should be shown.
+ */
+ public static class LocationAccessCheckJobService extends JobService {
+ private LocationAccessCheck mLocationAccessCheck;
+
+ /** If we currently check if we should show a notification, the task executing the check */
+ // @GuardedBy("sLock")
+ private @Nullable AddLocationNotificationIfNeededTask mAddLocationNotificationIfNeededTask;
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ mLocationAccessCheck = new LocationAccessCheck(this, () -> {
+ synchronized (sLock) {
+ AddLocationNotificationIfNeededTask task = mAddLocationNotificationIfNeededTask;
+
+ return task != null && task.isCancelled();
+ }
+ });
+ }
+
+ /**
+ * Starts an asynchronous check if a location access notification should be shown.
+ *
+ * @param params Not used other than for interacting with job scheduling
+ *
+ * @return {@code false} iff another check if already running
+ */
+ @Override
+ public boolean onStartJob(JobParameters params) {
+ synchronized (LocationAccessCheck.sLock) {
+ if (mAddLocationNotificationIfNeededTask != null) {
+ return false;
+ }
+
+ mAddLocationNotificationIfNeededTask =
+ new AddLocationNotificationIfNeededTask();
+
+ mAddLocationNotificationIfNeededTask.execute(params, this);
+ }
+
+ return true;
+ }
+
+ /**
+ * Abort the check if still running.
+ *
+ * @param params ignored
+ *
+ * @return false
+ */
+ @Override
+ public boolean onStopJob(JobParameters params) {
+ AddLocationNotificationIfNeededTask task;
+ synchronized (sLock) {
+ if (mAddLocationNotificationIfNeededTask == null) {
+ return false;
+ } else {
+ task = mAddLocationNotificationIfNeededTask;
+ }
+ }
+
+ task.cancel(false);
+
+ try {
+ // Wait for task to finish
+ task.get();
+ } catch (Exception e) {
+ Log.e(LOG_TAG, "While waiting for " + task + " to finish", e);
+ }
+
+ return false;
+ }
+
+ /**
+ * A {@link AsyncTask task} that runs the check in the background.
+ */
+ private class AddLocationNotificationIfNeededTask extends
+ AsyncTask<Object, Void, Void> {
+ @Override
+ protected final Void doInBackground(Object... in) {
+ JobParameters params = (JobParameters) in[0];
+ LocationAccessCheckJobService service = (LocationAccessCheckJobService) in[1];
+ mLocationAccessCheck.addLocationNotificationIfNeeded(params, service);
+ return null;
+ }
+ }
+ }
+
+ /**
+ * Handle the case where the notification is swiped away without further interaction.
+ */
+ public static class NotificationDeleteHandler extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String pkg = getStringExtraSafe(intent, EXTRA_PACKAGE_NAME);
+ UserHandle user = getParcelableExtraSafe(intent, EXTRA_USER);
+ long sessionId = intent.getLongExtra(EXTRA_SESSION_ID, INVALID_SESSION_ID);
+ int uid = intent.getIntExtra(EXTRA_UID, 0);
+
+ PermissionControllerStatsLog.write(LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION, sessionId,
+ uid, pkg,
+ LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION__RESULT__NOTIFICATION_DECLINED);
+ Log.v(LOG_TAG,
+ "Location access check notification declined with sessionId=" + sessionId + ""
+ + " uid=" + uid + " pkgName=" + pkg);
+
+ new LocationAccessCheck(context, null).markAsNotified(pkg, user);
+ }
+ }
+
+ /**
+ * Show the location permission switch when the notification is clicked.
+ */
+ public static class NotificationClickHandler extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String pkg = getStringExtraSafe(intent, EXTRA_PACKAGE_NAME);
+ UserHandle user = getParcelableExtraSafe(intent, EXTRA_USER);
+ int uid = intent.getIntExtra(EXTRA_UID, 0);
+ long sessionId = intent.getLongExtra(EXTRA_SESSION_ID, INVALID_SESSION_ID);
+
+ new LocationAccessCheck(context, null).markAsNotified(pkg, user);
+
+ PermissionControllerStatsLog.write(LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION, sessionId,
+ uid, pkg,
+ LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION__RESULT__NOTIFICATION_CLICKED);
+ Log.v(LOG_TAG,
+ "Location access check notification clicked with sessionId=" + sessionId + ""
+ + " uid=" + uid + " pkgName=" + pkg);
+
+ Intent manageAppPermission = new Intent(context, AppPermissionActivity.class);
+ manageAppPermission.addFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK);
+ manageAppPermission.putExtra(EXTRA_PERMISSION_NAME, ACCESS_FINE_LOCATION);
+ manageAppPermission.putExtra(EXTRA_PACKAGE_NAME, pkg);
+ manageAppPermission.putExtra(EXTRA_USER, user);
+ manageAppPermission.putExtra(EXTRA_SESSION_ID, sessionId);
+
+
+ context.startActivity(manageAppPermission);
+ }
+ }
+
+ /**
+ * If a package gets removed or the data of the package gets cleared, forget that we showed a
+ * notification for it.
+ */
+ public static class PackageResetHandler extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ if (!(Objects.equals(action, Intent.ACTION_PACKAGE_DATA_CLEARED)
+ || Objects.equals(action, Intent.ACTION_PACKAGE_FULLY_REMOVED))) {
+ return;
+ }
+
+ Uri data = Preconditions.checkNotNull(intent.getData());
+ UserHandle user = getUserHandleForUid(intent.getIntExtra(EXTRA_UID, 0));
+
+ if (DEBUG) Log.i(LOG_TAG, "Reset " + data.getSchemeSpecificPart());
+
+ new LocationAccessCheck(context, null).forgetAboutPackage(
+ data.getSchemeSpecificPart(), user);
+ }
+ }
+
+ /**
+ * A immutable class containing a package name and a {@link UserHandle}.
+ */
+ private static final class UserPackage {
+ private final @NonNull Context mContext;
+
+ public final @NonNull String pkg;
+ public final @NonNull UserHandle user;
+
+ /**
+ * Create a new {@link UserPackage}
+ *
+ * @param context A context to be used by methods of this object
+ * @param pkg The name of the package
+ * @param user The user the package belongs to
+ */
+ UserPackage(@NonNull Context context, @NonNull String pkg, @NonNull UserHandle user) {
+ try {
+ mContext = context.createPackageContextAsUser(context.getPackageName(), 0, user);
+ } catch (PackageManager.NameNotFoundException e) {
+ throw new IllegalStateException(e);
+ }
+
+ this.pkg = pkg;
+ this.user = user;
+ }
+
+ /**
+ * Get {@link PackageInfo} for this user package.
+ *
+ * @return The package info
+ *
+ * @throws PackageManager.NameNotFoundException if package/user does not exist
+ */
+ @NonNull PackageInfo getPackageInfo() throws PackageManager.NameNotFoundException {
+ return mContext.getPackageManager().getPackageInfo(pkg, GET_PERMISSIONS);
+ }
+
+ /**
+ * Get the {@link AppPermissionGroup} for
+ * {@link android.Manifest.permission#ACCESS_FINE_LOCATION} and this user package.
+ *
+ * @return The app permission group or {@code null} if the app does not request location
+ */
+ @Nullable AppPermissionGroup getLocationGroup() {
+ try {
+ return AppPermissionGroup.create(mContext, getPackageInfo(), ACCESS_FINE_LOCATION,
+ false);
+ } catch (PackageManager.NameNotFoundException e) {
+ return null;
+ }
+ }
+
+ /**
+ * Get the {@link AppPermissionGroup} for the background location of
+ * {@link android.Manifest.permission#ACCESS_FINE_LOCATION} and this user package.
+ *
+ * @return The app permission group or {@code null} if the app does not request background
+ * location
+ */
+ @Nullable AppPermissionGroup getBackgroundLocationGroup() {
+ AppPermissionGroup locationGroup = getLocationGroup();
+ if (locationGroup == null) {
+ return null;
+ }
+
+ return locationGroup.getBackgroundPermissions();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (!(o instanceof UserPackage)) {
+ return false;
+ }
+
+ UserPackage userPackage = (UserPackage) o;
+ return pkg.equals(userPackage.pkg) && user.equals(userPackage.user);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(pkg, user);
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/service/PermissionControllerServiceImpl.java b/src/com/android/packageinstaller/permission/service/PermissionControllerServiceImpl.java
new file mode 100644
index 0000000..6427ba3
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/service/PermissionControllerServiceImpl.java
@@ -0,0 +1,581 @@
+/*
+ * Copyright (C) 2016 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.packageinstaller.permission.service;
+
+import static android.app.admin.DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT;
+import static android.app.admin.DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED;
+import static android.app.admin.DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED;
+import static android.content.pm.PackageManager.GET_PERMISSIONS;
+import static android.permission.PermissionControllerManager.COUNT_ONLY_WHEN_GRANTED;
+import static android.permission.PermissionControllerManager.COUNT_WHEN_SYSTEM;
+import static android.permission.PermissionControllerManager.REASON_INSTALLER_POLICY_VIOLATION;
+import static android.permission.PermissionControllerManager.REASON_MALWARE;
+import static android.util.Xml.newSerializer;
+
+import static com.android.packageinstaller.permission.utils.Utils.shouldShowPermission;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.AsyncTask;
+import android.os.UserHandle;
+import android.permission.PermissionControllerService;
+import android.permission.PermissionManager;
+import android.permission.RuntimePermissionPresentationInfo;
+import android.permission.RuntimePermissionUsageInfo;
+import android.util.ArrayMap;
+import android.util.Log;
+import android.util.Xml;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.packageinstaller.permission.model.AppPermissionGroup;
+import com.android.packageinstaller.permission.model.AppPermissions;
+import com.android.packageinstaller.permission.model.Permission;
+import com.android.packageinstaller.permission.utils.Utils;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlSerializer;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Consumer;
+import java.util.function.IntConsumer;
+
+/**
+ * Calls from the system into the permission controller.
+ *
+ * All methods are called async beside the backup related method. For these we force to use the
+ * async-task single thread executor so that multiple parallel backups don't override the delayed
+ * the backup state racily.
+ */
+public final class PermissionControllerServiceImpl extends PermissionControllerService {
+ private static final String LOG_TAG = PermissionControllerServiceImpl.class.getSimpleName();
+
+ /**
+ * Expand {@code perms} by split permissions for an app with the given targetSDK.
+ *
+ * @param perms The permissions that should be expanded
+ * @param targetSDK The target SDK to expand for
+ *
+ * @return The expanded permissions
+ */
+ private @NonNull ArrayList<String> addSplitPermissions(@NonNull List<String> perms,
+ int targetSDK) {
+ List<PermissionManager.SplitPermissionInfo> splitPerms =
+ getSystemService(PermissionManager.class).getSplitPermissions();
+
+ // Add split permissions to the request
+ ArrayList<String> expandedPerms = new ArrayList<>(perms);
+ int numReqPerms = perms.size();
+ for (int reqPermNum = 0; reqPermNum < numReqPerms; reqPermNum++) {
+ String reqPerm = perms.get(reqPermNum);
+
+ int numSplitPerms = splitPerms.size();
+ for (int splitPermNum = 0; splitPermNum < numSplitPerms; splitPermNum++) {
+ PermissionManager.SplitPermissionInfo splitPerm = splitPerms.get(splitPermNum);
+
+ if (targetSDK < splitPerm.getTargetSdk()
+ && splitPerm.getSplitPermission().equals(reqPerm)) {
+ expandedPerms.addAll(splitPerm.getNewPermissions());
+ }
+ }
+ }
+
+ return expandedPerms;
+ }
+
+ /**
+ * Get the package info for a package.
+ *
+ * @param pkg The package name
+ *
+ * @return the package info or {@code null} if the package could not be found
+ */
+ private @Nullable PackageInfo getPkgInfo(@NonNull String pkg) {
+ try {
+ return getPackageManager().getPackageInfo(pkg, GET_PERMISSIONS);
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.w(LOG_TAG, pkg + " not found", e);
+ return null;
+ }
+ }
+
+ /**
+ * Given a set of permissions, find all permission groups of an app that can be revoked and that
+ * contain any of the permissions.
+ *
+ * @param permissions The permissions to revoke
+ * @param appPerms The {@link AppPermissions} for the app that is currently investigated
+ *
+ * @return The groups to revoke
+ */
+ private @NonNull ArrayList<AppPermissionGroup> getRevocableGroupsForPermissions(
+ @NonNull ArrayList<String> permissions, @NonNull AppPermissions appPerms) {
+ ArrayList<AppPermissionGroup> groupsToRevoke = new ArrayList<>();
+ int numGroups = appPerms.getPermissionGroups().size();
+ for (int groupNum = 0; groupNum < numGroups; groupNum++) {
+ AppPermissionGroup group = appPerms.getPermissionGroups().get(groupNum);
+
+ // Do not override fixed permissions
+ if (group.isPolicyFixed() || group.isSystemFixed()) {
+ continue;
+ }
+
+ int numPerms = permissions.size();
+ for (int permNum = 0; permNum < numPerms; permNum++) {
+ String reqPerm = permissions.get(permNum);
+
+ if (group.hasPermission(reqPerm)) {
+ groupsToRevoke.add(group);
+
+ // If fg permissions get revoked also revoke bg permissions as bg
+ // permissions require fg permissions.
+ AppPermissionGroup bgPerms = group.getBackgroundPermissions();
+ if (bgPerms != null) {
+ groupsToRevoke.add(bgPerms);
+ }
+ } else {
+ AppPermissionGroup bgPerms = group.getBackgroundPermissions();
+ if (bgPerms != null && bgPerms.hasPermission(reqPerm)) {
+ groupsToRevoke.add(bgPerms);
+ }
+ }
+ }
+ }
+
+ return groupsToRevoke;
+ }
+
+ /**
+ * Revoke all permissions of some groups.
+ *
+ * @param groupsToRevoke The groups
+ *
+ * @return The permissions that were revoked
+ */
+ private @NonNull ArrayList<String> revokePermissionGroups(
+ @NonNull ArrayList<AppPermissionGroup> groupsToRevoke) {
+ ArrayList<String> revokedPerms = new ArrayList<>();
+
+ int numGroupsToRevoke = groupsToRevoke.size();
+ for (int groupsToRevokeNum = 0; groupsToRevokeNum < numGroupsToRevoke;
+ groupsToRevokeNum++) {
+ AppPermissionGroup group = groupsToRevoke.get(groupsToRevokeNum);
+ ArrayList<Permission> perms = group.getPermissions();
+
+ // Mark the permissions as reviewed as we don't want to use to accidentally grant
+ // the permission during review
+ group.unsetReviewRequired();
+
+ int numPerms = perms.size();
+ for (int permNum = 0; permNum < numPerms; permNum++) {
+ Permission perm = perms.get(permNum);
+
+ // Only count individual permissions that are actually revoked
+ if (perm.isGrantedIncludingAppOp()) {
+ revokedPerms.add(perm.getName());
+ }
+ }
+
+ group.revokeRuntimePermissions(false);
+ }
+
+ return revokedPerms;
+ }
+
+ @Override
+ public void onRevokeRuntimePermissions(@NonNull Map<String, List<String>> request,
+ boolean doDryRun, int reason, @NonNull String callerPackageName,
+ @NonNull Consumer<Map<String, List<String>>> callback) {
+ AsyncTask.THREAD_POOL_EXECUTOR.execute(() -> callback.accept(
+ onRevokeRuntimePermissions(request, doDryRun, reason, callerPackageName)));
+ }
+
+ private @NonNull Map<String, List<String>> onRevokeRuntimePermissions(
+ @NonNull Map<String, List<String>> request, boolean doDryRun,
+ int reason, @NonNull String callerPackageName) {
+ // The reason parameter is not checked by platform code as this might need to be updated
+ // async to platform releases.
+ if (reason != REASON_MALWARE && reason != REASON_INSTALLER_POLICY_VIOLATION) {
+ Log.e(LOG_TAG, "Invalid reason " + reason);
+ return Collections.emptyMap();
+ }
+
+ PackageManager pm = getPackageManager();
+
+ PackageInfo callerPkgInfo = getPkgInfo(callerPackageName);
+ if (callerPkgInfo == null) {
+ return Collections.emptyMap();
+ }
+ int callerTargetSdk = callerPkgInfo.applicationInfo.targetSdkVersion;
+
+ Map<String, List<String>> actuallyRevokedPerms = new ArrayMap<>();
+ ArrayList<AppPermissions> appsWithRevokedPerms = new ArrayList<>();
+
+ for (Map.Entry<String, List<String>> appRequest : request.entrySet()) {
+ PackageInfo requestedPkgInfo = getPkgInfo(appRequest.getKey());
+ if (requestedPkgInfo == null) {
+ continue;
+ }
+
+ // Permissions are per UID. Hence permissions will be removed from all apps sharing an
+ // UID.
+ String[] pkgNames = pm.getPackagesForUid(requestedPkgInfo.applicationInfo.uid);
+ if (pkgNames == null) {
+ continue;
+ }
+
+ int numPkgNames = pkgNames.length;
+ for (int pkgNum = 0; pkgNum < numPkgNames; pkgNum++) {
+ String pkgName = pkgNames[pkgNum];
+
+ PackageInfo pkgInfo = getPkgInfo(pkgName);
+ if (pkgInfo == null) {
+ continue;
+ }
+
+ // If the revocation is because of a market policy violation only the installer can
+ // revoke the permissions.
+ if (reason == REASON_INSTALLER_POLICY_VIOLATION
+ && !callerPackageName.equals(pm.getInstallerPackageName(pkgName))) {
+ Log.i(LOG_TAG, "Ignoring " + pkgName + " as it is not installed by "
+ + callerPackageName);
+ continue;
+ }
+
+ // In rare cases the caller does not know about the permissions that have been added
+ // due to splits. Hence add them now.
+ ArrayList<String> expandedPerms = addSplitPermissions(appRequest.getValue(),
+ callerTargetSdk);
+
+ AppPermissions appPerms = new AppPermissions(this, pkgInfo, false, true, null);
+
+ // First find the groups that should be revoked and then revoke all permissions of
+ // these groups. This is needed as soon as a single permission in the group is
+ // granted, all other permissions get auto-granted on request.
+ ArrayList<AppPermissionGroup> groupsToRevoke = getRevocableGroupsForPermissions(
+ expandedPerms, appPerms);
+ ArrayList<String> revokedPerms = revokePermissionGroups(groupsToRevoke);
+
+ // In racy conditions the group might not have had granted permissions anymore
+ if (!revokedPerms.isEmpty()) {
+ actuallyRevokedPerms.put(pkgName, revokedPerms);
+ appsWithRevokedPerms.add(appPerms);
+ }
+ }
+ }
+
+ // Persist changes after we computed everything to remove
+ // This is necessary as we would otherwise only look at the first app of a shared UID.
+ if (!doDryRun) {
+ int numChangedApps = appsWithRevokedPerms.size();
+ for (int i = 0; i < numChangedApps; i++) {
+ appsWithRevokedPerms.get(i).persistChanges(true);
+ }
+ }
+
+ return actuallyRevokedPerms;
+ }
+
+ @Override
+ public void onGetRuntimePermissionsBackup(@NonNull UserHandle user,
+ @NonNull OutputStream backup, @NonNull Runnable callback) {
+ AsyncTask.execute(() -> {
+ onGetRuntimePermissionsBackup(user, backup);
+ callback.run();
+ });
+ }
+
+ private void onGetRuntimePermissionsBackup(@NonNull UserHandle user,
+ @NonNull OutputStream backup) {
+ BackupHelper backupHelper = new BackupHelper(this, user);
+
+ try {
+ XmlSerializer serializer = newSerializer();
+ serializer.setOutput(backup, UTF_8.name());
+
+ backupHelper.writeState(serializer);
+ serializer.flush();
+ } catch (Exception e) {
+ Log.e(LOG_TAG, "Unable to write permissions backup", e);
+ }
+ }
+
+ @Override
+ public void onRestoreRuntimePermissionsBackup(@NonNull UserHandle user,
+ @NonNull InputStream backup, Runnable callback) {
+ AsyncTask.execute(() -> {
+ onRestoreRuntimePermissionsBackup(user, backup);
+ callback.run();
+ });
+ }
+
+ private void onRestoreRuntimePermissionsBackup(@NonNull UserHandle user,
+ @NonNull InputStream backup) {
+ try {
+ XmlPullParser parser = Xml.newPullParser();
+ parser.setInput(backup, StandardCharsets.UTF_8.name());
+
+ new BackupHelper(this, user).restoreState(parser);
+ } catch (Exception e) {
+ Log.e(LOG_TAG, "Exception restoring permissions: " + e.getMessage());
+ }
+ }
+
+ @Override
+ public void onRestoreDelayedRuntimePermissionsBackup(@NonNull String packageName,
+ @NonNull UserHandle user, @NonNull Consumer<Boolean> callback) {
+ AsyncTask.execute(() -> callback.accept(
+ onRestoreDelayedRuntimePermissionsBackup(packageName, user)));
+ }
+
+ private boolean onRestoreDelayedRuntimePermissionsBackup(@NonNull String packageName,
+ @NonNull UserHandle user) {
+ try {
+ return new BackupHelper(this, user).restoreDelayedState(packageName);
+ } catch (Exception e) {
+ Log.e(LOG_TAG, "Exception restoring delayed permissions: " + e.getMessage());
+ return false;
+ }
+ }
+
+ @Override
+ public void onGetAppPermissions(@NonNull String packageName,
+ @NonNull Consumer<List<RuntimePermissionPresentationInfo>> callback) {
+ AsyncTask.THREAD_POOL_EXECUTOR.execute(() -> callback.accept(
+ onGetAppPermissions(this, packageName)));
+ }
+
+ /**
+ * Implementation of {@link PermissionControllerService#onGetAppPermissions(String)}}.
+ * Called by this class and the legacy implementation.
+ */
+ static @NonNull List<RuntimePermissionPresentationInfo> onGetAppPermissions(
+ @NonNull Context context, @NonNull String packageName) {
+ final PackageInfo packageInfo;
+ try {
+ packageInfo = context.getPackageManager().getPackageInfo(packageName, GET_PERMISSIONS);
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.e(LOG_TAG, "Error getting package:" + packageName, e);
+ return Collections.emptyList();
+ }
+
+ List<RuntimePermissionPresentationInfo> permissions = new ArrayList<>();
+
+ AppPermissions appPermissions = new AppPermissions(context, packageInfo, false, null);
+ for (AppPermissionGroup group : appPermissions.getPermissionGroups()) {
+ if (shouldShowPermission(context, group)) {
+ final boolean granted = group.areRuntimePermissionsGranted();
+ final boolean standard = Utils.OS_PKG.equals(group.getDeclaringPackage());
+ RuntimePermissionPresentationInfo permission =
+ new RuntimePermissionPresentationInfo(group.getLabel(),
+ granted, standard);
+ permissions.add(permission);
+ }
+ }
+
+ return permissions;
+ }
+
+ @Override
+ public void onRevokeRuntimePermission(@NonNull String packageName,
+ @NonNull String permissionName, @NonNull Runnable callback) {
+ AsyncTask.THREAD_POOL_EXECUTOR.execute(() -> {
+ onRevokeRuntimePermission(packageName, permissionName);
+ callback.run();
+ });
+ }
+
+ private void onRevokeRuntimePermission(@NonNull String packageName,
+ @NonNull String permissionName) {
+ try {
+ final PackageInfo packageInfo = getPackageManager().getPackageInfo(packageName,
+ GET_PERMISSIONS);
+ final AppPermissions appPermissions = new AppPermissions(this, packageInfo, false,
+ null);
+
+ final AppPermissionGroup appPermissionGroup = appPermissions.getGroupForPermission(
+ permissionName);
+
+ if (appPermissionGroup != null) {
+ appPermissionGroup.revokeRuntimePermissions(false);
+ }
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.e(LOG_TAG, "Error getting package:" + packageName, e);
+ }
+ }
+
+ @Override
+ public void onCountPermissionApps(@NonNull List<String> permissionNames, int flags,
+ @NonNull IntConsumer callback) {
+ AsyncTask.THREAD_POOL_EXECUTOR.execute(() -> callback.accept(
+ onCountPermissionApps(permissionNames, flags)));
+ }
+
+ private int onCountPermissionApps(@NonNull List<String> permissionNames, int flags) {
+ boolean countSystem = (flags & COUNT_WHEN_SYSTEM) != 0;
+ boolean countOnlyGranted = (flags & COUNT_ONLY_WHEN_GRANTED) != 0;
+
+ List<PackageInfo> pkgs = getPackageManager().getInstalledPackages(GET_PERMISSIONS);
+
+ int numApps = 0;
+
+ int numPkgs = pkgs.size();
+ for (int pkgNum = 0; pkgNum < numPkgs; pkgNum++) {
+ PackageInfo pkg = pkgs.get(pkgNum);
+
+ int numPerms = permissionNames.size();
+ for (int permNum = 0; permNum < numPerms; permNum++) {
+ String perm = permissionNames.get(permNum);
+
+ AppPermissionGroup group = AppPermissionGroup.create(this, pkg,
+ permissionNames.get(permNum), true);
+ if (group == null || !shouldShowPermission(this, group)) {
+ continue;
+ }
+
+ AppPermissionGroup subGroup = null;
+ if (group.hasPermission(perm)) {
+ subGroup = group;
+ } else {
+ AppPermissionGroup bgGroup = group.getBackgroundPermissions();
+ if (bgGroup != null && bgGroup.hasPermission(perm)) {
+ subGroup = bgGroup;
+ }
+ }
+
+ if (subGroup != null) {
+ if (!countSystem && !subGroup.isUserSensitive()) {
+ continue;
+ }
+
+ if (!countOnlyGranted || subGroup.areRuntimePermissionsGranted()) {
+ // The permission might not be granted, but some permissions of the group
+ // are granted. In this case the permission is granted silently when the app
+ // asks for it.
+ // Hence this is as-good-as-granted and we count it.
+ numApps++;
+ break;
+ }
+ }
+ }
+ }
+
+ return numApps;
+ }
+
+ @Override
+ public void onGetPermissionUsages(boolean countSystem, long numMillis,
+ @NonNull Consumer<List<RuntimePermissionUsageInfo>> callback) {
+ AsyncTask.THREAD_POOL_EXECUTOR.execute(
+ () -> callback.accept(onGetPermissionUsages(countSystem, numMillis)));
+ }
+
+ private @NonNull List<RuntimePermissionUsageInfo> onGetPermissionUsages(
+ boolean countSystem, long numMillis) {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public void onSetRuntimePermissionGrantStateByDeviceAdmin(@NonNull String callerPackageName,
+ @NonNull String packageName, @NonNull String unexpandedPermission, int grantState,
+ @NonNull Consumer<Boolean> callback) {
+ AsyncTask.THREAD_POOL_EXECUTOR.execute(() -> callback.accept(
+ onSetRuntimePermissionGrantStateByDeviceAdmin(callerPackageName, packageName,
+ unexpandedPermission, grantState)));
+ }
+
+ private boolean onSetRuntimePermissionGrantStateByDeviceAdmin(@NonNull String callerPackageName,
+ @NonNull String packageName, @NonNull String unexpandedPermission, int grantState) {
+ PackageInfo callerPkgInfo = getPkgInfo(callerPackageName);
+ if (callerPkgInfo == null) {
+ Log.w(LOG_TAG, "Cannot fix " + unexpandedPermission + " as admin "
+ + callerPackageName + " cannot be found");
+ return false;
+ }
+
+ PackageInfo pkgInfo = getPkgInfo(packageName);
+ if (pkgInfo == null) {
+ Log.w(LOG_TAG, "Cannot fix " + unexpandedPermission + " as " + packageName
+ + " cannot be found");
+ return false;
+ }
+
+ ArrayList<String> expandedPermissions = addSplitPermissions(
+ Collections.singletonList(unexpandedPermission),
+ callerPkgInfo.applicationInfo.targetSdkVersion);
+
+ AppPermissions app = new AppPermissions(this, pkgInfo, false, true, null);
+
+ int numPerms = expandedPermissions.size();
+ for (int i = 0; i < numPerms; i++) {
+ String permName = expandedPermissions.get(i);
+ AppPermissionGroup group = app.getGroupForPermission(permName);
+ if (group == null || group.isSystemFixed()) {
+ continue;
+ }
+
+ Permission perm = group.getPermission(permName);
+ if (perm == null) {
+ continue;
+ }
+
+ switch (grantState) {
+ case PERMISSION_GRANT_STATE_GRANTED:
+ perm.setPolicyFixed(true);
+ group.grantRuntimePermissions(false, new String[]{permName});
+ break;
+ case PERMISSION_GRANT_STATE_DENIED:
+ perm.setPolicyFixed(true);
+ group.revokeRuntimePermissions(false, new String[]{permName});
+ break;
+ case PERMISSION_GRANT_STATE_DEFAULT:
+ perm.setPolicyFixed(false);
+ break;
+ default:
+ return false;
+ }
+ }
+
+ app.persistChanges(grantState == PERMISSION_GRANT_STATE_DENIED
+ || !callerPackageName.equals(packageName));
+
+ return true;
+ }
+
+ @Override
+ public void onGrantOrUpgradeDefaultRuntimePermissions(@NonNull Runnable callback) {
+ AsyncTask.THREAD_POOL_EXECUTOR.execute(() -> {
+ onGrantOrUpgradeDefaultRuntimePermissions();
+ callback.run();
+ });
+ }
+
+ private void onGrantOrUpgradeDefaultRuntimePermissions() {
+ // TODO: Default permission grants should go here
+ RuntimePermissionsUpgradeController.upgradeIfNeeded(this);
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/service/PermissionSearchIndexablesProvider.java b/src/com/android/packageinstaller/permission/service/PermissionSearchIndexablesProvider.java
new file mode 100644
index 0000000..4be2b1a
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/service/PermissionSearchIndexablesProvider.java
@@ -0,0 +1,87 @@
+/*
+ * 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.packageinstaller.permission.service;
+
+import static android.provider.SearchIndexablesContract.INDEXABLES_RAW_COLUMNS;
+import static android.provider.SearchIndexablesContract.RawData.COLUMN_INTENT_ACTION;
+import static android.provider.SearchIndexablesContract.RawData.COLUMN_KEY;
+import static android.provider.SearchIndexablesContract.RawData.COLUMN_KEYWORDS;
+import static android.provider.SearchIndexablesContract.RawData.COLUMN_RANK;
+import static android.provider.SearchIndexablesContract.RawData.COLUMN_TITLE;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.util.Log;
+
+import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
+
+import java.util.List;
+
+/**
+ * {@link android.provider.SearchIndexablesProvider} for permissions.
+ */
+public class PermissionSearchIndexablesProvider extends BaseSearchIndexablesProvider {
+ private static final String LOG_TAG = PermissionSearchIndexablesProvider.class.getSimpleName();
+
+ public static final String ACTION_MANAGE_PERMISSION_APPS =
+ "com.android.permissioncontroller.settingssearch.action.MANAGE_PERMISSION_APPS";
+ public static final String ACTION_REVIEW_PERMISSION_USAGE =
+ "com.android.permissioncontroller.settingssearch.action.REVIEW_PERMISSION_USAGE";
+
+ @Override
+ public Cursor queryRawData(String[] projection) {
+ Context context = getContext();
+ PackageManager pm = context.getPackageManager();
+
+ List<String> permissionGroupNames = Utils.getPlatformPermissionGroups();
+ MatrixCursor cursor = new MatrixCursor(INDEXABLES_RAW_COLUMNS);
+
+ int numPermissionGroups = permissionGroupNames.size();
+ for (int i = 0; i < numPermissionGroups; i++) {
+ String groupName = permissionGroupNames.get(i);
+
+ CharSequence label = getPermissionGroupLabel(groupName, pm);
+
+ cursor.newRow().add(COLUMN_RANK, 0)
+ .add(COLUMN_TITLE, label)
+ .add(COLUMN_KEYWORDS, label + ", " + context.getString(
+ R.string.permission_search_keyword))
+ .add(COLUMN_KEY, createRawDataKey(groupName, context))
+ .add(COLUMN_INTENT_ACTION, ACTION_MANAGE_PERMISSION_APPS);
+ }
+
+ cursor.newRow().add(COLUMN_RANK, 0)
+ .add(COLUMN_TITLE, context.getString(R.string.permission_usage_title))
+ .add(COLUMN_KEYWORDS, context.getString(R.string.permission_search_keyword))
+ .add(COLUMN_KEY, createRawDataKey("permissions usage", context))
+ .add(COLUMN_INTENT_ACTION, ACTION_REVIEW_PERMISSION_USAGE);
+
+ return cursor;
+ }
+
+ private CharSequence getPermissionGroupLabel(String groupName, PackageManager pm) {
+ try {
+ return pm.getPermissionGroupInfo(groupName, 0).loadLabel(pm);
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.w(LOG_TAG, "Cannot find group label for " + groupName, e);
+ }
+ return null;
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/service/RuntimePermissionPresenterServiceImpl.java b/src/com/android/packageinstaller/permission/service/RuntimePermissionPresenterServiceImpl.java
deleted file mode 100644
index 0d9f53a..0000000
--- a/src/com/android/packageinstaller/permission/service/RuntimePermissionPresenterServiceImpl.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2016 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.packageinstaller.permission.service;
-
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.permission.RuntimePermissionPresentationInfo;
-import android.permissionpresenterservice.RuntimePermissionPresenterService;
-import android.util.Log;
-
-import com.android.packageinstaller.permission.model.AppPermissionGroup;
-import com.android.packageinstaller.permission.model.AppPermissions;
-import com.android.packageinstaller.permission.utils.Utils;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Service that provides presentation information for runtime permissions.
- */
-public final class RuntimePermissionPresenterServiceImpl extends RuntimePermissionPresenterService {
- private static final String LOG_TAG = "PermissionPresenter";
-
- @Override
- public List<RuntimePermissionPresentationInfo> onGetAppPermissions(String packageName) {
- final PackageInfo packageInfo;
- try {
- packageInfo = getPackageManager().getPackageInfo(packageName,
- PackageManager.GET_PERMISSIONS);
- } catch (PackageManager.NameNotFoundException e) {
- Log.e(LOG_TAG, "Error getting package:" + packageName, e);
- return null;
- }
-
- List<RuntimePermissionPresentationInfo> permissions = new ArrayList<>();
-
- AppPermissions appPermissions = new AppPermissions(this, packageInfo, null, false, null);
- for (AppPermissionGroup group : appPermissions.getPermissionGroups()) {
- if (Utils.shouldShowPermission(group, packageName)) {
- final boolean granted = group.areRuntimePermissionsGranted();
- final boolean standard = Utils.OS_PKG.equals(group.getDeclaringPackage());
- RuntimePermissionPresentationInfo permission =
- new RuntimePermissionPresentationInfo(group.getLabel(),
- granted, standard);
- permissions.add(permission);
- }
- }
-
- return permissions;
- }
-
- @Override
- public void onRevokeRuntimePermission(String packageName, String permissionName) {
- try {
- final PackageInfo packageInfo = getPackageManager().getPackageInfo(packageName,
- PackageManager.GET_PERMISSIONS);
- final AppPermissions appPermissions = new AppPermissions(this, packageInfo, null, false,
- null);
-
- final AppPermissionGroup appPermissionGroup = appPermissions.getGroupForPermission(
- permissionName);
-
- if (appPermissionGroup != null) {
- appPermissionGroup.revokeRuntimePermissions(false);
- }
- } catch (PackageManager.NameNotFoundException e) {
- Log.e(LOG_TAG, "Error getting package:" + packageName, e);
- }
- }
-}
diff --git a/src/com/android/packageinstaller/permission/service/RuntimePermissionPresenterServiceLegacyImpl.java b/src/com/android/packageinstaller/permission/service/RuntimePermissionPresenterServiceLegacyImpl.java
new file mode 100644
index 0000000..544a887
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/service/RuntimePermissionPresenterServiceLegacyImpl.java
@@ -0,0 +1,50 @@
+/*
+ * 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.packageinstaller.permission.service;
+
+import android.content.pm.permission.RuntimePermissionPresentationInfo;
+import android.permissionpresenterservice.RuntimePermissionPresenterService;
+
+import androidx.annotation.NonNull;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Service that provides presentation information for runtime permissions.
+ */
+public final class RuntimePermissionPresenterServiceLegacyImpl extends
+ RuntimePermissionPresenterService {
+ @Override
+ public @NonNull List<RuntimePermissionPresentationInfo> onGetAppPermissions(
+ @NonNull String packageName) {
+ List<android.permission.RuntimePermissionPresentationInfo> permissions =
+ PermissionControllerServiceImpl.onGetAppPermissions(this, packageName);
+
+ ArrayList<RuntimePermissionPresentationInfo> legacyPermissions = new ArrayList<>(
+ permissions.size());
+
+ int numPermissions = permissions.size();
+ for (int i = 0; i < numPermissions; i++) {
+ android.permission.RuntimePermissionPresentationInfo permission = permissions.get(i);
+ legacyPermissions.add(new RuntimePermissionPresentationInfo(permission.getLabel(),
+ permission.isGranted(), permission.isStandard()));
+ }
+
+ return legacyPermissions;
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java b/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java
new file mode 100644
index 0000000..cac2ef2
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java
@@ -0,0 +1,292 @@
+/*
+ * 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.packageinstaller.permission.service;
+
+import static com.android.packageinstaller.PermissionControllerStatsLog.RUNTIME_PERMISSIONS_UPGRADE_RESULT;
+
+import android.Manifest;
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PermissionInfo;
+import android.permission.PermissionManager;
+import android.text.TextUtils;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+
+import com.android.packageinstaller.PermissionControllerStatsLog;
+import com.android.packageinstaller.permission.model.AppPermissionGroup;
+import com.android.packageinstaller.permission.model.Permission;
+import com.android.packageinstaller.permission.utils.Utils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * This class handles upgrading the runtime permissions database
+ */
+class RuntimePermissionsUpgradeController {
+ private static final String LOG_TAG = RuntimePermissionsUpgradeController.class.getSimpleName();
+
+ // The latest version of the runtime permissions database
+ private static final int LATEST_VERSION = 7;
+
+ private RuntimePermissionsUpgradeController() {
+ /* do nothing - hide constructor */
+ }
+
+ static void upgradeIfNeeded(@NonNull Context context) {
+ final PermissionManager permissionManager = context.getSystemService(
+ PermissionManager.class);
+ final int currentVersion = permissionManager.getRuntimePermissionsVersion();
+
+ whitelistAllSystemAppPermissions(context);
+
+ final int upgradedVersion = onUpgradeLocked(context, currentVersion);
+
+ if (upgradedVersion != LATEST_VERSION) {
+ Log.wtf("PermissionControllerService", "warning: upgrading permission database"
+ + " to version " + LATEST_VERSION + " left it at " + currentVersion
+ + " instead; this is probably a bug. Did you update LATEST_VERSION?",
+ new Throwable());
+ throw new RuntimeException("db upgrade error");
+ }
+
+ if (currentVersion != upgradedVersion) {
+ permissionManager.setRuntimePermissionsVersion(LATEST_VERSION);
+ }
+ }
+
+ /**
+ * Whitelist permissions of system-apps.
+ *
+ * <p>Apps that are updated via OTAs are never installed. Hence their permission are never
+ * whitelisted. This code replaces that by always whitelisting them.
+ *
+ * @param context A context to talk to the platform
+ */
+ private static void whitelistAllSystemAppPermissions(@NonNull Context context) {
+ // Only whitelist permissions that are in the OTA. For non-OTA updates the installer should
+ // do the white-listing
+ final List<PackageInfo> apps = context.getPackageManager()
+ .getInstalledPackages(PackageManager.GET_PERMISSIONS
+ | PackageManager.MATCH_UNINSTALLED_PACKAGES
+ | PackageManager.MATCH_FACTORY_ONLY);
+
+ final int appCount = apps.size();
+ for (int i = 0; i < appCount; i++) {
+ final PackageInfo app = apps.get(i);
+
+ if (app.requestedPermissions == null) {
+ continue;
+ }
+
+ for (String requestedPermission : app.requestedPermissions) {
+ final PermissionInfo permInfo;
+ try {
+ permInfo = context.getPackageManager().getPermissionInfo(
+ requestedPermission, 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ continue;
+ }
+
+ if ((permInfo.flags & (PermissionInfo.FLAG_HARD_RESTRICTED
+ | PermissionInfo.FLAG_SOFT_RESTRICTED)) == 0) {
+ continue;
+ }
+
+ context.getPackageManager().addWhitelistedRestrictedPermission(
+ app.packageName, requestedPermission,
+ PackageManager.FLAG_PERMISSION_WHITELIST_UPGRADE);
+ }
+ }
+ }
+
+ /**
+ * You must perform all necessary mutations to bring the runtime permissions
+ * database from the old to the new version. When you add a new upgrade step
+ * you *must* update LATEST_VERSION.
+ *
+ * @param context Context to access APIs.
+ * @param currentVersion The current db version.
+ */
+ private static int onUpgradeLocked(@NonNull Context context, int currentVersion) {
+ final List<PackageInfo> apps = context.getPackageManager()
+ .getInstalledPackages(PackageManager.MATCH_ALL
+ | PackageManager.GET_PERMISSIONS);
+ final int appCount = apps.size();
+
+ final boolean sdkUpgradedFromP;
+ if (currentVersion <= -1) {
+ Log.i(LOG_TAG, "Upgrading from Android P");
+
+ sdkUpgradedFromP = true;
+
+ currentVersion = 0;
+ } else {
+ sdkUpgradedFromP = false;
+ }
+
+ if (currentVersion == 0) {
+ Log.i(LOG_TAG, "Grandfathering SMS and CallLog permissions");
+
+ final List<String> smsPermissions = Utils.getPlatformPermissionNamesOfGroup(
+ android.Manifest.permission_group.SMS);
+ final List<String> callLogPermissions = Utils.getPlatformPermissionNamesOfGroup(
+ Manifest.permission_group.CALL_LOG);
+
+ for (int i = 0; i < appCount; i++) {
+ final PackageInfo app = apps.get(i);
+ if (app.requestedPermissions == null) {
+ continue;
+ }
+
+ for (String requestedPermission : app.requestedPermissions) {
+ if (smsPermissions.contains(requestedPermission)
+ || callLogPermissions.contains(requestedPermission)) {
+ context.getPackageManager().addWhitelistedRestrictedPermission(
+ app.packageName, requestedPermission,
+ PackageManager.FLAG_PERMISSION_WHITELIST_UPGRADE);
+ }
+ }
+ }
+ currentVersion = 1;
+ }
+
+ if (currentVersion == 1) {
+ // moved to step 4->5 as it has to be after the grandfathering of loc bg perms
+ currentVersion = 2;
+ }
+
+ if (currentVersion == 2) {
+ // moved to step 5->6 to clean up broken permission state during dogfooding
+ currentVersion = 3;
+ }
+
+ if (currentVersion == 3) {
+ Log.i(LOG_TAG, "Grandfathering location background permissions");
+
+ for (int i = 0; i < appCount; i++) {
+ final PackageInfo app = apps.get(i);
+ if (app.requestedPermissions == null) {
+ continue;
+ }
+
+ for (String requestedPermission : app.requestedPermissions) {
+ if (requestedPermission.equals(
+ Manifest.permission.ACCESS_BACKGROUND_LOCATION)) {
+ context.getPackageManager().addWhitelistedRestrictedPermission(
+ app.packageName, Manifest.permission.ACCESS_BACKGROUND_LOCATION,
+ PackageManager.FLAG_PERMISSION_WHITELIST_UPGRADE);
+ break;
+ }
+ }
+ }
+ currentVersion = 4;
+ }
+
+ if (currentVersion == 4) {
+ // moved to step 5->6 to clean up broken permission state during beta 4->5 upgrade
+ currentVersion = 5;
+ }
+
+ if (currentVersion == 5) {
+ Log.i(LOG_TAG, "Grandfathering Storage permissions");
+
+ final List<String> storagePermissions = Utils.getPlatformPermissionNamesOfGroup(
+ Manifest.permission_group.STORAGE);
+
+ for (int i = 0; i < appCount; i++) {
+ final PackageInfo app = apps.get(i);
+ if (app.requestedPermissions == null) {
+ continue;
+ }
+
+ // We don't want to allow modification of storage post install, so put it
+ // on the internal system whitelist to prevent the installer changing it.
+ for (String requestedPermission : app.requestedPermissions) {
+ if (storagePermissions.contains(requestedPermission)) {
+ context.getPackageManager().addWhitelistedRestrictedPermission(
+ app.packageName, requestedPermission,
+ PackageManager.FLAG_PERMISSION_WHITELIST_UPGRADE);
+ }
+ }
+ }
+ currentVersion = 6;
+ }
+
+ if (currentVersion == 6) {
+ if (sdkUpgradedFromP) {
+ Log.i(LOG_TAG, "Expanding location permissions");
+
+ for (int i = 0; i < appCount; i++) {
+ final PackageInfo app = apps.get(i);
+ if (app.requestedPermissions == null) {
+ continue;
+ }
+
+ for (String perm : app.requestedPermissions) {
+ String groupName = Utils.getGroupOfPlatformPermission(perm);
+
+ if (!TextUtils.equals(groupName, Manifest.permission_group.LOCATION)) {
+ continue;
+ }
+
+ final AppPermissionGroup group = AppPermissionGroup.create(context, app,
+ perm, false);
+ final AppPermissionGroup bgGroup = group.getBackgroundPermissions();
+
+ if (group.areRuntimePermissionsGranted()
+ && bgGroup != null
+ && !bgGroup.isUserSet() && !bgGroup.isSystemFixed()
+ && !bgGroup.isPolicyFixed()) {
+ bgGroup.grantRuntimePermissions(group.isUserFixed());
+
+ logRuntimePermissionUpgradeResult(bgGroup,
+ app.applicationInfo.uid, app.packageName);
+ }
+
+ break;
+ }
+ }
+ } else {
+ Log.i(LOG_TAG, "Not expanding location permissions as this is not an upgrade "
+ + "from Android P");
+ }
+
+ currentVersion = 7;
+ }
+
+ // XXX: Add new upgrade steps above this point.
+
+ return currentVersion;
+ }
+
+ private static void logRuntimePermissionUpgradeResult(AppPermissionGroup permissionGroup,
+ int uid, String packageName) {
+ ArrayList<Permission> permissions = permissionGroup.getPermissions();
+ int numPermissions = permissions.size();
+ for (int i = 0; i < numPermissions; i++) {
+ Permission permission = permissions.get(i);
+ PermissionControllerStatsLog.write(RUNTIME_PERMISSIONS_UPGRADE_RESULT,
+ permission.getName(), uid, packageName);
+ Log.v(LOG_TAG, "Runtime permission upgrade logged for permissionName="
+ + permission.getName() + " uid=" + uid + " packageName=" + packageName);
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/service/TEST_MAPPING b/src/com/android/packageinstaller/permission/service/TEST_MAPPING
new file mode 100644
index 0000000..3de5d73
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/service/TEST_MAPPING
@@ -0,0 +1,65 @@
+{
+ "presubmit": [
+ {
+ "name": "CtsPermissionTestCases",
+ "options": [
+ {
+ "include-filter": "android.permission.cts.PermissionControllerTest"
+ },
+ {
+ "exclude-annotation": "androidx.test.filters.FlakyTest"
+ }
+ ]
+ },
+ {
+ "name": "CtsBackupTestCases",
+ "options": [
+ {
+ "include-filter": "android.backup.cts.PermissionTest"
+ },
+ {
+ "exclude-annotation": "androidx.test.filters.FlakyTest"
+ }
+ ]
+ }
+ ],
+ "postsubmit": [
+ {
+ "name": "CtsPermissionTestCases",
+ "options": [
+ {
+ "include-filter": "android.permission.cts.LocationAccessCheckTest"
+ },
+ {
+ "exclude-annotation": "androidx.test.filters.FlakyTest"
+ }
+ ]
+ },
+ {
+ "name": "CtsDevicePolicyManagerTestCases",
+ "options": [
+ {
+ "include-filter": "com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testPermissionGrant"
+ },
+ {
+ "include-filter": "com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testPermissionPolicy"
+ },
+ {
+ "include-filter": "com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testPermissionMixedPolicies"
+ },
+ {
+ "include-filter": "com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testPermissionAppUpdate"
+ },
+ {
+ "include-filter": "com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testPermissionGrantPreMApp"
+ },
+ {
+ "include-filter": "com.android.cts.devicepolicy.MixedManagedProfileOwnerTestApi25#testPermissionGrantPreMApp"
+ },
+ {
+ "exclude-annotation": "androidx.test.filters.FlakyTest"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/com/android/packageinstaller/permission/ui/AdjustUserSensitiveActivity.java b/src/com/android/packageinstaller/permission/ui/AdjustUserSensitiveActivity.java
new file mode 100644
index 0000000..732fa20
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/AdjustUserSensitiveActivity.java
@@ -0,0 +1,59 @@
+/*
+ * 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.packageinstaller.permission.ui;
+
+import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
+
+import android.os.Bundle;
+import android.view.MenuItem;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.FragmentActivity;
+
+import com.android.packageinstaller.DeviceUtils;
+import com.android.packageinstaller.permission.ui.handheld.AdjustUserSensitiveFragment;
+
+/**
+ * Contains a {@link AdjustUserSensitiveFragment}.
+ */
+public class AdjustUserSensitiveActivity extends FragmentActivity {
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
+
+ getSupportFragmentManager().beginTransaction().replace(android.R.id.content,
+ AdjustUserSensitiveFragment.newInstance()).commit();
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ // in automotive mode, there's no system wide back button, so need to add that
+ if (DeviceUtils.isAuto(this)) {
+ onBackPressed();
+ } else {
+ finish();
+ }
+ return true;
+ default:
+ return super.onOptionsItemSelected(item);
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/ui/AppPermissionActivity.java b/src/com/android/packageinstaller/permission/ui/AppPermissionActivity.java
new file mode 100644
index 0000000..7e70129
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/AppPermissionActivity.java
@@ -0,0 +1,130 @@
+/*
+ * 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.packageinstaller.permission.ui;
+
+import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
+
+import static com.android.packageinstaller.Constants.INVALID_SESSION_ID;
+
+import android.content.Intent;
+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 com.android.packageinstaller.Constants;
+import com.android.packageinstaller.DeviceUtils;
+import com.android.packageinstaller.permission.ui.auto.AutoAppPermissionFragment;
+import com.android.packageinstaller.permission.ui.handheld.AppPermissionFragment;
+import com.android.packageinstaller.permission.utils.LocationUtils;
+import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
+
+/**
+ * Manage a single permission of a single app
+ */
+public final class AppPermissionActivity extends FragmentActivity {
+ private static final String LOG_TAG = AppPermissionActivity.class.getSimpleName();
+
+ public static final String EXTRA_CALLER_NAME =
+ "com.android.packageinstaller.extra.CALLER_NAME";
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ if (DeviceUtils.isAuto(this)) {
+ // Automotive relies on a different theme. Apply before calling super so that
+ // fragments are restored properly on configuration changes.
+ setTheme(R.style.CarSettings);
+ }
+ super.onCreate(savedInstanceState);
+
+ getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
+
+ String packageName = getIntent().getStringExtra(Intent.EXTRA_PACKAGE_NAME);
+ if (packageName == null) {
+ Log.i(LOG_TAG, "Missing mandatory argument EXTRA_PACKAGE_NAME");
+ finish();
+ return;
+ }
+
+ String permissionName = getIntent().getStringExtra(Intent.EXTRA_PERMISSION_NAME);
+ if (permissionName == null) {
+ Log.i(LOG_TAG, "Missing mandatory argument EXTRA_PERMISSION_NAME");
+ finish();
+ return;
+ }
+ String groupName = Utils.getGroupOfPlatformPermission(permissionName);
+
+ UserHandle userHandle = getIntent().getParcelableExtra(Intent.EXTRA_USER);
+ if (userHandle == null) {
+ Log.i(LOG_TAG, "Missing mandatory argument EXTRA_USER");
+ finish();
+ return;
+ }
+
+ if (LocationUtils.isLocationGroupAndProvider(this, groupName,
+ packageName)) {
+ Intent intent = new Intent(this, LocationProviderInterceptDialog.class);
+ intent.putExtra(Intent.EXTRA_PACKAGE_NAME, packageName);
+ startActivity(intent);
+ finish();
+ return;
+ }
+
+ if (LocationUtils.isLocationGroupAndControllerExtraPackage(
+ this, groupName, packageName)) {
+ // Redirect to location controller extra package settings.
+ LocationUtils.startLocationControllerExtraPackageSettings(this);
+ finish();
+ return;
+ }
+
+ String caller = getIntent().getStringExtra(EXTRA_CALLER_NAME);
+
+ Fragment androidXFragment;
+ if (DeviceUtils.isAuto(this)) {
+ androidXFragment = AutoAppPermissionFragment.newInstance(packageName, permissionName,
+ groupName, userHandle);
+ } else {
+ long sessionId = getIntent().getLongExtra(Constants.EXTRA_SESSION_ID,
+ INVALID_SESSION_ID);
+ androidXFragment = AppPermissionFragment.newInstance(packageName, permissionName,
+ groupName, userHandle, caller, sessionId);
+ }
+
+ getSupportFragmentManager().beginTransaction().replace(android.R.id.content,
+ androidXFragment).commit();
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ // in automotive mode, there's no system wide back button, so need to add that
+ if (DeviceUtils.isAuto(this)) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ onBackPressed();
+ return true;
+ default:
+ return super.onOptionsItemSelected(item);
+ }
+ }
+ return super.onOptionsItemSelected(item);
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/ui/ButtonBarLayout.java b/src/com/android/packageinstaller/permission/ui/ButtonBarLayout.java
index 50af20e..12a4bbd 100644
--- a/src/com/android/packageinstaller/permission/ui/ButtonBarLayout.java
+++ b/src/com/android/packageinstaller/permission/ui/ButtonBarLayout.java
@@ -21,7 +21,8 @@
import android.view.Gravity;
import android.view.View;
import android.widget.LinearLayout;
-import com.android.packageinstaller.R;
+
+import com.android.permissioncontroller.R;
/**
* An extension of LinearLayout that automatically switches to vertical
@@ -96,19 +97,14 @@
private void setStacked(boolean stacked) {
setOrientation(stacked ? LinearLayout.VERTICAL : LinearLayout.HORIZONTAL);
- setGravity(stacked ? Gravity.END : Gravity.BOTTOM);
+ if (getGravity() != Gravity.CENTER) {
+ setGravity(stacked ? Gravity.END : Gravity.BOTTOM);
+ }
final View spacer = findViewById(R.id.spacer);
if (spacer != null) {
spacer.setVisibility(stacked ? View.GONE : View.INVISIBLE);
}
-
- // Reverse the child order. This is specific to the Material button
- // bar's layout XML and will probably not generalize.
- final int childCount = getChildCount();
- for (int i = childCount - 2; i >= 0; i--) {
- bringChildToFront(getChildAt(i));
- }
}
private boolean isStacked() {
diff --git a/src/com/android/packageinstaller/permission/ui/ConfirmActionDialogFragment.java b/src/com/android/packageinstaller/permission/ui/ConfirmActionDialogFragment.java
index d6d7900..cd05efe 100644
--- a/src/com/android/packageinstaller/permission/ui/ConfirmActionDialogFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/ConfirmActionDialogFragment.java
@@ -19,17 +19,18 @@
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
-import android.app.DialogFragment;
-import android.content.DialogInterface;
import android.os.Bundle;
-import com.android.packageinstaller.R;
+
+import androidx.fragment.app.DialogFragment;
+
+import com.android.permissioncontroller.R;
public final class ConfirmActionDialogFragment extends DialogFragment {
public static final String ARG_MESSAGE = "MESSAGE";
public static final String ARG_ACTION = "ACTION";
- public static interface OnActionConfirmedListener {
- public void onActionConfirmed(String action);
+ public interface OnActionConfirmedListener {
+ void onActionConfirmed(String action);
}
public static ConfirmActionDialogFragment newInstance(CharSequence message, String action) {
@@ -47,17 +48,14 @@
.setMessage(getArguments().getString(ARG_MESSAGE))
.setNegativeButton(R.string.cancel, null)
.setPositiveButton(R.string.grant_dialog_button_deny_anyway,
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- Activity activity = getActivity();
- if (activity instanceof OnActionConfirmedListener) {
- String groupName = getArguments().getString(ARG_ACTION);
- ((OnActionConfirmedListener) activity)
- .onActionConfirmed(groupName);
- }
- }
- })
+ (dialog, which) -> {
+ Activity activity = getActivity();
+ if (activity instanceof OnActionConfirmedListener) {
+ String groupName = getArguments().getString(ARG_ACTION);
+ ((OnActionConfirmedListener) activity)
+ .onActionConfirmed(groupName);
+ }
+ })
.create();
}
}
diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
index e182655..18de0cd 100644
--- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
+++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
@@ -17,114 +17,261 @@
package com.android.packageinstaller.permission.ui;
import static android.content.pm.PackageManager.PERMISSION_DENIED;
-import static android.content.pm.PackageManager.PERMISSION_GRANTED;
+import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
-import android.app.admin.DevicePolicyManager;
+import static com.android.packageinstaller.PermissionControllerStatsLog.GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS;
+import static com.android.packageinstaller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__AUTO_DENIED;
+import static com.android.packageinstaller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__AUTO_GRANTED;
+import static com.android.packageinstaller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__IGNORED;
+import static com.android.packageinstaller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__IGNORED_POLICY_FIXED;
+import static com.android.packageinstaller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__IGNORED_RESTRICTED_PERMISSION;
+import static com.android.packageinstaller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__IGNORED_USER_FIXED;
+import static com.android.packageinstaller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED;
+import static com.android.packageinstaller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED_WITH_PREJUDICE;
+import static com.android.packageinstaller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_GRANTED;
+import static com.android.packageinstaller.permission.ui.GrantPermissionsViewHandler.DENIED;
+import static com.android.packageinstaller.permission.ui.GrantPermissionsViewHandler.DENIED_DO_NOT_ASK_AGAIN;
+import static com.android.packageinstaller.permission.ui.GrantPermissionsViewHandler.GRANTED_ALWAYS;
+import static com.android.packageinstaller.permission.ui.GrantPermissionsViewHandler.GRANTED_FOREGROUND_ONLY;
+import static com.android.packageinstaller.permission.utils.Utils.getRequestMessage;
+
+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.pm.PackageParser;
-import android.content.pm.PermissionInfo;
-import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.drawable.Icon;
import android.os.Build;
import android.os.Bundle;
+import android.os.UserHandle;
+import android.permission.PermissionManager;
import android.text.Html;
import android.text.Spanned;
-import android.util.ArraySet;
+import android.util.ArrayMap;
import android.util.Log;
+import android.util.Pair;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
-import com.android.internal.content.PackageMonitor;
-import com.android.internal.logging.nano.MetricsProto;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.packageinstaller.DeviceUtils;
-import com.android.packageinstaller.R;
+import com.android.packageinstaller.PermissionControllerStatsLog;
import com.android.packageinstaller.permission.model.AppPermissionGroup;
import com.android.packageinstaller.permission.model.AppPermissions;
import com.android.packageinstaller.permission.model.Permission;
import com.android.packageinstaller.permission.ui.auto.GrantPermissionsAutoViewHandler;
-import com.android.packageinstaller.permission.ui.handheld.GrantPermissionsViewHandlerImpl;
import com.android.packageinstaller.permission.utils.ArrayUtils;
-import com.android.packageinstaller.permission.utils.EventLogger;
+import com.android.packageinstaller.permission.utils.PackageRemovalMonitor;
import com.android.packageinstaller.permission.utils.SafetyNetLogger;
+import com.android.permissioncontroller.R;
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Random;
-public class GrantPermissionsActivity extends OverlayTouchActivity
+public class GrantPermissionsActivity extends Activity
implements GrantPermissionsViewHandler.ResultListener {
private static final String LOG_TAG = "GrantPermissionsActivity";
- private String[] mRequestedPermissions;
- private int[] mGrantResults;
+ private static final String KEY_REQUEST_ID = GrantPermissionsActivity.class.getName()
+ + "_REQUEST_ID";
- private LinkedHashMap<String, GroupState> mRequestGrantPermissionGroups = new LinkedHashMap<>();
+ public static int NUM_BUTTONS = 5;
+ public static int LABEL_ALLOW_BUTTON = 0;
+ public static int LABEL_ALLOW_ALWAYS_BUTTON = 1;
+ public static int LABEL_ALLOW_FOREGROUND_BUTTON = 2;
+ public static int LABEL_DENY_BUTTON = 3;
+ public static int LABEL_DENY_AND_DONT_ASK_AGAIN_BUTTON = 4;
+
+ /** Unique Id of a request */
+ private long mRequestId;
+
+ private String[] mRequestedPermissions;
+ private CharSequence[] mButtonLabels;
+
+ private ArrayMap<Pair<String, Boolean>, GroupState> mRequestGrantPermissionGroups =
+ new ArrayMap<>();
private GrantPermissionsViewHandler mViewHandler;
private AppPermissions mAppPermissions;
boolean mResultSet;
- private PackageManager.OnPermissionsChangedListener mPermissionChangeListener;
- private PackageMonitor mPackageMonitor;
+ /**
+ * 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;
+ /** uid of {@link #mCallingPackage} */
+ private int mCallingUid;
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, filterPermissions);
+ group.setPolicyFixed(filterPermissions);
+ state.mState = GroupState.STATE_ALLOWED;
+ skipGroup = true;
+
+ 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, 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) {
+ mRequestId = new Random().nextLong();
+ } else {
+ mRequestId = icicle.getLong(KEY_REQUEST_ID);
+ }
+
+ getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
+
// Cache this as this can only read on onCreate, not later.
mCallingPackage = getCallingPackage();
- mPackageMonitor = new PackageMonitor() {
- @Override
- public void onPackageRemoved(String packageName, int uid) {
- if (mCallingPackage.equals(packageName)) {
- Log.w(LOG_TAG, mCallingPackage + " was uninstalled");
-
- finish();
- }
- }
- };
-
setFinishOnTouchOutside(false);
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
-
setTitle(R.string.permission_request_title);
- if (DeviceUtils.isTelevision(this)) {
- mViewHandler = new com.android.packageinstaller.permission.ui.television
- .GrantPermissionsViewHandlerImpl(this,
- mCallingPackage).setResultListener(this);
- } else if (DeviceUtils.isWear(this)) {
- mViewHandler = new GrantPermissionsWatchViewHandler(this).setResultListener(this);
- } else if (DeviceUtils.isAuto(this)) {
- mViewHandler = new GrantPermissionsAutoViewHandler(this, mCallingPackage)
- .setResultListener(this);
- } else {
- mViewHandler = new com.android.packageinstaller.permission.ui.handheld
- .GrantPermissionsViewHandlerImpl(this, mCallingPackage)
- .setResultListener(this);
- }
-
mRequestedPermissions = getIntent().getStringArrayExtra(
PackageManager.EXTRA_REQUEST_PERMISSIONS_NAMES);
if (mRequestedPermissions == null) {
@@ -132,21 +279,12 @@
}
final int requestedPermCount = mRequestedPermissions.length;
- mGrantResults = new int[requestedPermCount];
- Arrays.fill(mGrantResults, PackageManager.PERMISSION_DENIED);
if (requestedPermCount == 0) {
setResultAndFinish();
return;
}
- try {
- mPermissionChangeListener = new PermissionChangeListener();
- } catch (NameNotFoundException e) {
- setResultAndFinish();
- return;
- }
-
PackageInfo callingPackageInfo = getCallingPackageInfo();
if (callingPackageInfo == null || callingPackageInfo.requestedPermissions == null
@@ -159,14 +297,30 @@
if (callingPackageInfo.applicationInfo.targetSdkVersion < Build.VERSION_CODES.M) {
// Returning empty arrays means a cancellation.
mRequestedPermissions = new String[0];
- mGrantResults = new int[0];
setResultAndFinish();
return;
}
- updateAlreadyGrantedPermissions(callingPackageInfo, getPermissionPolicy());
+ mCallingUid = callingPackageInfo.applicationInfo.uid;
- mAppPermissions = new AppPermissions(this, callingPackageInfo, null, false,
+ UserHandle userHandle = UserHandle.getUserHandleForUid(mCallingUid);
+
+ if (DeviceUtils.isTelevision(this)) {
+ mViewHandler = new com.android.packageinstaller.permission.ui.television
+ .GrantPermissionsViewHandlerImpl(this,
+ mCallingPackage).setResultListener(this);
+ } else if (DeviceUtils.isWear(this)) {
+ mViewHandler = new GrantPermissionsWatchViewHandler(this).setResultListener(this);
+ } else if (DeviceUtils.isAuto(this)) {
+ mViewHandler = new GrantPermissionsAutoViewHandler(this, mCallingPackage, userHandle)
+ .setResultListener(this);
+ } else {
+ mViewHandler = new com.android.packageinstaller.permission.ui.handheld
+ .GrantPermissionsViewHandlerImpl(this, mCallingPackage, userHandle)
+ .setResultListener(this);
+ }
+
+ mAppPermissions = new AppPermissions(this, callingPackageInfo, false,
new Runnable() {
@Override
public void run() {
@@ -175,65 +329,63 @@
});
for (String requestedPermission : mRequestedPermissions) {
- AppPermissionGroup group = null;
- for (AppPermissionGroup nextGroup : mAppPermissions.getPermissionGroups()) {
- if (nextGroup.hasPermission(requestedPermission)) {
- group = nextGroup;
- break;
- }
- }
- if (group == null) {
+ if (requestedPermission == null) {
continue;
}
- if (!group.isGrantingAllowed()) {
- // Skip showing groups that we know cannot be granted.
- continue;
- }
- // We allow the user to choose only non-fixed permissions. A permission
- // is fixed either by device policy or the user denying with prejudice.
- if (!group.isUserFixed() && !group.isPolicyFixed()) {
- switch (getPermissionPolicy()) {
- case DevicePolicyManager.PERMISSION_POLICY_AUTO_GRANT: {
- if (!group.areRuntimePermissionsGranted()) {
- group.grantRuntimePermissions(false, computeAffectedPermissions(
- callingPackageInfo, requestedPermission));
- }
- group.setPolicyFixed();
- } break;
- case DevicePolicyManager.PERMISSION_POLICY_AUTO_DENY: {
- if (group.areRuntimePermissionsGranted()) {
- group.revokeRuntimePermissions(false, computeAffectedPermissions(
- callingPackageInfo, requestedPermission));
- }
- group.setPolicyFixed();
- } break;
+ ArrayList<String> affectedPermissions =
+ computeAffectedPermissions(requestedPermission);
- default: {
- if (!group.areRuntimePermissionsGranted()) {
- GroupState state = mRequestGrantPermissionGroups.get(group.getName());
- if (state == null) {
- state = new GroupState(group);
- mRequestGrantPermissionGroups.put(group.getName(), state);
- }
- String[] affectedPermissions = computeAffectedPermissions(
- callingPackageInfo, requestedPermission);
- if (affectedPermissions != null) {
- for (String affectedPermission : affectedPermissions) {
- state.affectedPermissions = ArrayUtils.appendString(
- state.affectedPermissions, affectedPermission);
- }
- }
- } else {
- group.grantRuntimePermissions(false, computeAffectedPermissions(
- callingPackageInfo, requestedPermission));
- updateGrantResults(group);
- }
- } break;
+ 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;
}
- } else {
- // if the permission is fixed, ensure that we return the right request result
- updateGrantResults(group);
+
+ 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);
+ }
}
}
@@ -244,21 +396,18 @@
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);
+ }
+
if (!showNextPermissionGroupGrantRequest()) {
setResultAndFinish();
- } else if (icicle == null) {
- int numRequestedPermissions = mRequestedPermissions.length;
- for (int permissionNum = 0; permissionNum < numRequestedPermissions; permissionNum++) {
- String permission = mRequestedPermissions[permissionNum];
-
- EventLogger.logPermission(
- MetricsProto.MetricsEvent.ACTION_PERMISSION_REQUESTED, permission,
- mAppPermissions.getPackageInfo().packageName);
- }
}
}
-
/**
* Update the {@link #mRequestedPermissions} if the system reports them as granted.
*
@@ -266,20 +415,12 @@
* request if the current group becomes granted.
*/
private void updateIfPermissionsWereGranted() {
- updateAlreadyGrantedPermissions(getCallingPackageInfo(), getPermissionPolicy());
-
- ArraySet<String> grantedPermissionNames = new ArraySet<>(mRequestedPermissions.length);
- for (int i = 0; i < mRequestedPermissions.length; i++) {
- if (mGrantResults[i] == PERMISSION_GRANTED) {
- grantedPermissionNames.add(mRequestedPermissions[i]);
- }
- }
+ PackageManager pm = getPackageManager();
boolean mightShowNextGroup = true;
- int numGroups = mAppPermissions.getPermissionGroups().size();
- for (int groupNum = 0; groupNum < numGroups; groupNum++) {
- AppPermissionGroup group = mAppPermissions.getPermissionGroups().get(groupNum);
- GroupState groupState = mRequestGrantPermissionGroups.get(group.getName());
+ 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
@@ -295,8 +436,8 @@
} else {
for (int permNum = 0; permNum < groupState.affectedPermissions.length;
permNum++) {
- if (!grantedPermissionNames.contains(
- groupState.affectedPermissions[permNum])) {
+ if (pm.checkPermission(groupState.affectedPermissions[permNum], mCallingPackage)
+ == PERMISSION_DENIED) {
allAffectedPermissionsOfThisGroupAreGranted = false;
break;
}
@@ -324,11 +465,25 @@
protected void onStart() {
super.onStart();
+ try {
+ mPermissionChangeListener = new PermissionChangeListener();
+ } catch (NameNotFoundException e) {
+ setResultAndFinish();
+ return;
+ }
PackageManager pm = getPackageManager();
pm.addOnPermissionsChangeListener(mPermissionChangeListener);
// get notified when the package is removed
- mPackageMonitor.register(this, getMainLooper(), false);
+ mPackageRemovalMonitor = new PackageRemovalMonitor(this, mCallingPackage) {
+ @Override
+ public void onPackageRemoved() {
+ Log.w(LOG_TAG, mCallingPackage + " was uninstalled");
+
+ finish();
+ }
+ };
+ mPackageRemovalMonitor.register();
// check if the package was removed while this activity was not started
try {
@@ -345,25 +500,14 @@
protected void onStop() {
super.onStop();
- mPackageMonitor.unregister();
+ if (mPackageRemovalMonitor != null) {
+ mPackageRemovalMonitor.unregister();
+ mPackageRemovalMonitor = null;
+ }
- getPackageManager().removeOnPermissionsChangeListener(mPermissionChangeListener);
- }
-
- @Override
- public void onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
- // We need to relayout the window as dialog width may be
- // different in landscape vs portrait which affect the min
- // window height needed to show all content. We have to
- // re-add the window to force it to be resized if needed.
- View decor = getWindow().getDecorView();
- if (decor.getParent() != null) {
- getWindowManager().removeViewImmediate(decor);
- getWindowManager().addView(decor, decor.getLayoutParams());
- if (mViewHandler instanceof GrantPermissionsViewHandlerImpl) {
- ((GrantPermissionsViewHandlerImpl) mViewHandler).onConfigurationChanged();
- }
+ if (mPermissionChangeListener != null) {
+ getPackageManager().removeOnPermissionsChangeListener(mPermissionChangeListener);
+ mPermissionChangeListener = null;
}
}
@@ -377,139 +521,312 @@
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(Bundle outState) {
super.onSaveInstanceState(outState);
+
mViewHandler.saveInstanceState(outState);
+
+ outState.putLong(KEY_REQUEST_ID, mRequestId);
+
+ 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);
+ }
+ }
}
- @Override
- protected void onRestoreInstanceState(Bundle savedInstanceState) {
- super.onRestoreInstanceState(savedInstanceState);
- mViewHandler.loadInstanceState(savedInstanceState);
+ /**
+ * @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 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 true;
}
private boolean showNextPermissionGroupGrantRequest() {
- final int groupCount = mRequestGrantPermissionGroups.size();
+ int numGroupStates = mRequestGrantPermissionGroups.size();
+ int numGrantRequests = 0;
+ for (int i = 0; i < numGroupStates; i++) {
+ if (shouldShowRequestForGroupState(mRequestGrantPermissionGroups.valueAt(i))) {
+ numGrantRequests++;
+ }
+ }
int currentIndex = 0;
for (GroupState groupState : mRequestGrantPermissionGroups.values()) {
+ 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();
- Spanned message = null;
- int requestMessageId = groupState.mGroup.getRequest();
- if (requestMessageId != 0) {
- try {
- message = Html.fromHtml(getPackageManager().getResourcesForApplication(
- groupState.mGroup.getDeclaringPackage()).getString(requestMessageId,
- appLabel), 0);
- } catch (NameNotFoundException ignored) {
- }
- }
-
- if (message == null) {
- message = Html.fromHtml(getString(R.string.permission_warning_template,
- appLabel, groupState.mGroup.getDescription()), 0);
- }
-
- // Set the permission message as the title so it can be announced.
- setTitle(message);
-
- // Set the new grant view
- // TODO: Use a real message for the action. We need group action APIs
- Resources resources;
- try {
- resources = getPackageManager().getResourcesForApplication(
- groupState.mGroup.getIconPkg());
- } catch (NameNotFoundException e) {
- // Fallback to system.
- resources = Resources.getSystem();
- }
-
Icon icon;
try {
- icon = Icon.createWithResource(resources, groupState.mGroup.getIconResId());
+ 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;
}
- mViewHandler.updateUi(groupState.mGroup.getName(), groupCount, currentIndex,
- icon, message, groupState.mGroup.isUserSet());
+ // 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();
+ }
+ }
+
+ // The button doesn't show when its label is null
+ mButtonLabels = new CharSequence[NUM_BUTTONS];
+ mButtonLabels[LABEL_ALLOW_BUTTON] = getString(R.string.grant_dialog_button_allow);
+ mButtonLabels[LABEL_ALLOW_ALWAYS_BUTTON] = null;
+ mButtonLabels[LABEL_ALLOW_FOREGROUND_BUTTON] = null;
+ mButtonLabels[LABEL_DENY_BUTTON] = getString(R.string.grant_dialog_button_deny);
+ if (isForegroundPermissionUserSet || isBackgroundPermissionUserSet) {
+ mButtonLabels[LABEL_DENY_AND_DONT_ASK_AGAIN_BUTTON] =
+ getString(R.string.grant_dialog_button_deny_and_dont_ask_again);
+ } else {
+ mButtonLabels[LABEL_DENY_AND_DONT_ASK_AGAIN_BUTTON] = null;
+ }
+
+ int messageId;
+ int detailMessageId = 0;
+ if (needForegroundPermission) {
+ messageId = groupState.mGroup.getRequest();
+
+ if (groupState.mGroup.hasPermissionWithBackgroundMode()) {
+ mButtonLabels[LABEL_ALLOW_BUTTON] = null;
+ mButtonLabels[LABEL_ALLOW_FOREGROUND_BUTTON] =
+ getString(R.string.grant_dialog_button_allow_foreground);
+ if (needBackgroundPermission) {
+ mButtonLabels[LABEL_ALLOW_ALWAYS_BUTTON] =
+ getString(R.string.grant_dialog_button_allow_always);
+ if (isForegroundPermissionUserSet || isBackgroundPermissionUserSet) {
+ mButtonLabels[LABEL_DENY_BUTTON] = null;
+ }
+ }
+ } else {
+ detailMessageId = groupState.mGroup.getRequestDetail();
+ }
+ } else {
+ if (needBackgroundPermission) {
+ messageId = groupState.mGroup.getBackgroundRequest();
+ detailMessageId = groupState.mGroup.getBackgroundRequestDetail();
+ mButtonLabels[LABEL_ALLOW_BUTTON] =
+ getString(R.string.grant_dialog_button_allow_background);
+ mButtonLabels[LABEL_DENY_BUTTON] =
+ getString(R.string.grant_dialog_button_deny_background);
+ mButtonLabels[LABEL_DENY_AND_DONT_ASK_AGAIN_BUTTON] =
+ getString(R.string
+ .grant_dialog_button_deny_background_and_dont_ask_again);
+ } else {
+ // Not reached as the permissions should be auto-granted
+ return false;
+ }
+ }
+
+ CharSequence message = getRequestMessage(appLabel, groupState.mGroup, this,
+ messageId);
+
+ Spanned detailMessage = null;
+ if (detailMessageId != 0) {
+ try {
+ detailMessage = Html.fromHtml(
+ getPackageManager().getResourcesForApplication(
+ groupState.mGroup.getDeclaringPackage()).getString(
+ detailMessageId), 0);
+ } catch (NameNotFoundException ignored) {
+ }
+ }
+
+ // Set the permission message as the title so it can be announced.
+ setTitle(message);
+
+ mViewHandler.updateUi(groupState.mGroup.getName(), numGrantRequests, currentIndex,
+ icon, message, detailMessage, mButtonLabels);
+
return true;
}
- currentIndex++;
+ if (groupState.mState != GroupState.STATE_SKIPPED) {
+ currentIndex++;
+ }
}
return false;
}
@Override
- public void onPermissionGrantResult(String name, boolean granted, boolean doNotAskAgain) {
- KeyguardManager kgm = getSystemService(KeyguardManager.class);
+ public void onPermissionGrantResult(String name,
+ @GrantPermissionsViewHandler.Result int result) {
+ logGrantPermissionActivityButtons(name, result);
+ GroupState foregroundGroupState = getForegroundGroupState(name);
+ GroupState backgroundGroupState = getBackgroundGroupState(name);
- if (kgm.isDeviceLocked()) {
- kgm.requestDismissKeyguard(this, new KeyguardManager.KeyguardDismissCallback() {
- @Override
- public void onDismissError() {
- Log.e(LOG_TAG, "Cannot dismiss keyguard perm=" + name + " granted="
- + granted + " doNotAskAgain=" + doNotAskAgain);
- }
+ if (result == GRANTED_ALWAYS || result == GRANTED_FOREGROUND_ONLY
+ || result == DENIED_DO_NOT_ASK_AGAIN) {
+ KeyguardManager kgm = getSystemService(KeyguardManager.class);
- @Override
- public void onDismissCancelled() {
- // do nothing (i.e. stay at the current permission group)
- }
+ 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 onDismissSucceeded() {
- // Now the keyguard is dismissed, hence the device is not locked
- // anymore
- onPermissionGrantResult(name, granted, doNotAskAgain);
- }
- });
+ @Override
+ public void onDismissCancelled() {
+ // do nothing (i.e. stay at the current permission group)
+ }
- return;
- }
+ @Override
+ public void onDismissSucceeded() {
+ // Now the keyguard is dismissed, hence the device is not locked
+ // anymore
+ onPermissionGrantResult(name, result);
+ }
+ });
- GroupState groupState = mRequestGrantPermissionGroups.get(name);
- if (groupState != null && groupState.mGroup != null) {
- if (granted) {
- groupState.mGroup.grantRuntimePermissions(doNotAskAgain,
- groupState.affectedPermissions);
- groupState.mState = GroupState.STATE_ALLOWED;
- } else {
- groupState.mGroup.revokeRuntimePermissions(doNotAskAgain,
- groupState.affectedPermissions);
- groupState.mState = GroupState.STATE_DENIED;
-
- int numRequestedPermissions = mRequestedPermissions.length;
- for (int i = 0; i < numRequestedPermissions; i++) {
- String permission = mRequestedPermissions[i];
-
- if (groupState.mGroup.hasPermission(permission)) {
- EventLogger.logPermission(
- MetricsProto.MetricsEvent.ACTION_PERMISSION_DENIED, permission,
- mAppPermissions.getPackageInfo().packageName);
- }
- }
+ return;
}
- updateGrantResults(groupState.mGroup);
}
+
+ switch (result) {
+ case GRANTED_ALWAYS :
+ if (foregroundGroupState != null) {
+ onPermissionGrantResultSingleState(foregroundGroupState, true, false);
+ }
+ if (backgroundGroupState != null) {
+ onPermissionGrantResultSingleState(backgroundGroupState, true, false);
+ }
+ break;
+ case GRANTED_FOREGROUND_ONLY :
+ if (foregroundGroupState != null) {
+ onPermissionGrantResultSingleState(foregroundGroupState, true, false);
+ }
+ if (backgroundGroupState != null) {
+ onPermissionGrantResultSingleState(backgroundGroupState, false, false);
+ }
+ break;
+ case DENIED :
+ if (foregroundGroupState != null) {
+ onPermissionGrantResultSingleState(foregroundGroupState, false, false);
+ }
+ if (backgroundGroupState != null) {
+ onPermissionGrantResultSingleState(backgroundGroupState, false, false);
+ }
+ break;
+ case DENIED_DO_NOT_ASK_AGAIN :
+ if (foregroundGroupState != null) {
+ onPermissionGrantResultSingleState(foregroundGroupState, false, true);
+ }
+ if (backgroundGroupState != null) {
+ onPermissionGrantResultSingleState(backgroundGroupState, false, true);
+ }
+ break;
+ }
+
if (!showNextPermissionGroupGrantRequest()) {
setResultAndFinish();
}
}
- private void updateGrantResults(AppPermissionGroup group) {
- for (Permission permission : group.getPermissions()) {
- final int index = ArrayUtils.indexOf(
- mRequestedPermissions, permission.getName());
- if (index >= 0) {
- mGrantResults[index] = permission.isGranted() ? PackageManager.PERMISSION_GRANTED
- : PackageManager.PERMISSION_DENIED;
+ /**
+ * 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 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 doNotAskAgain) {
+ if (groupState != null && groupState.mGroup != null
+ && groupState.mState == GroupState.STATE_UNKNOWN) {
+ if (granted) {
+ groupState.mGroup.grantRuntimePermissions(doNotAskAgain,
+ groupState.affectedPermissions);
+ groupState.mState = GroupState.STATE_ALLOWED;
+
+ reportRequestResult(groupState.affectedPermissions,
+ PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_GRANTED);
+ } else {
+ groupState.mGroup.revokeRuntimePermissions(doNotAskAgain,
+ groupState.affectedPermissions);
+ 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);
}
}
}
@@ -532,54 +849,6 @@
super.finish();
}
- private int computePermissionGrantState(PackageInfo callingPackageInfo,
- String permission, int permissionPolicy) {
- boolean permissionRequested = false;
-
- for (int i = 0; i < callingPackageInfo.requestedPermissions.length; i++) {
- if (permission.equals(callingPackageInfo.requestedPermissions[i])) {
- permissionRequested = true;
- if ((callingPackageInfo.requestedPermissionsFlags[i]
- & PackageInfo.REQUESTED_PERMISSION_GRANTED) != 0) {
- return PERMISSION_GRANTED;
- }
- break;
- }
- }
-
- if (!permissionRequested) {
- return PERMISSION_DENIED;
- }
-
- try {
- PermissionInfo pInfo = getPackageManager().getPermissionInfo(permission, 0);
- if ((pInfo.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE)
- != PermissionInfo.PROTECTION_DANGEROUS) {
- return PERMISSION_DENIED;
- }
- if ((pInfo.protectionLevel & PermissionInfo.PROTECTION_FLAG_INSTANT) == 0
- && callingPackageInfo.applicationInfo.isInstantApp()) {
- return PERMISSION_DENIED;
- }
- if ((pInfo.protectionLevel & PermissionInfo.PROTECTION_FLAG_RUNTIME_ONLY) != 0
- && callingPackageInfo.applicationInfo.targetSdkVersion
- < Build.VERSION_CODES.M) {
- return PERMISSION_DENIED;
- }
- } catch (NameNotFoundException e) {
- return PERMISSION_DENIED;
- }
-
- switch (permissionPolicy) {
- case DevicePolicyManager.PERMISSION_POLICY_AUTO_GRANT: {
- return PERMISSION_GRANTED;
- }
- default: {
- return PERMISSION_DENIED;
- }
- }
- }
-
private PackageInfo getCallingPackageInfo() {
try {
return getPackageManager().getPackageInfo(mCallingPackage,
@@ -590,28 +859,21 @@
}
}
- private void updateAlreadyGrantedPermissions(PackageInfo callingPackageInfo,
- int permissionPolicy) {
- final int requestedPermCount = mRequestedPermissions.length;
- for (int i = 0; i < requestedPermCount; i++) {
- String permission = mRequestedPermissions[i];
-
- if (permission != null) {
- if (computePermissionGrantState(callingPackageInfo, permission, permissionPolicy)
- == PERMISSION_GRANTED) {
- mGrantResults[i] = PERMISSION_GRANTED;
- }
- }
- }
- }
-
private void setResultIfNeeded(int resultCode) {
if (!mResultSet) {
mResultSet = true;
logRequestedPermissionGroups();
Intent result = new Intent(PackageManager.ACTION_REQUEST_PERMISSIONS);
result.putExtra(PackageManager.EXTRA_REQUEST_PERMISSIONS_NAMES, mRequestedPermissions);
- result.putExtra(PackageManager.EXTRA_REQUEST_PERMISSIONS_RESULTS, mGrantResults);
+
+ 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_RESULTS, grantResults);
setResult(resultCode, result);
}
}
@@ -635,40 +897,121 @@
SafetyNetLogger.logPermissionsRequested(mAppPermissions.getPackageInfo(), groups);
}
- private static String[] computeAffectedPermissions(PackageInfo callingPkg,
- String permission) {
- // For <= N_MR1 apps all permissions are affected.
- if (callingPkg.applicationInfo.targetSdkVersion <= Build.VERSION_CODES.N_MR1) {
- return null;
- }
+ /**
+ * 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;
- // For N_MR1+ apps only the requested permission is affected with addition
- // to splits of this permission applicable to apps targeting N_MR1.
- String[] permissions = new String[] {permission};
- for (PackageParser.SplitPermissionInfo splitPerm : PackageParser.SPLIT_PERMISSIONS) {
- if (splitPerm.targetSdk <= Build.VERSION_CODES.N_MR1
- || callingPkg.applicationInfo.targetSdkVersion >= splitPerm.targetSdk
- || !permission.equals(splitPerm.rootPerm)) {
- continue;
- }
- for (int i = 0; i < splitPerm.newPerms.length; i++) {
- final String newPerm = splitPerm.newPerms[i];
- permissions = ArrayUtils.appendString(permissions, newPerm);
+ // 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());
}
}
- return permissions;
+ // 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:
+ if ((presentedButtons & (1 << LABEL_ALLOW_BUTTON)) != 0) {
+ clickedButton = 1 << LABEL_ALLOW_BUTTON;
+ } else {
+ clickedButton = 1 << LABEL_ALLOW_ALWAYS_BUTTON;
+ }
+ break;
+ case GRANTED_FOREGROUND_ONLY:
+ clickedButton = 1 << LABEL_ALLOW_FOREGROUND_BUTTON;
+ break;
+ case DENIED:
+ clickedButton = 1 << LABEL_DENY_BUTTON;
+ break;
+ case DENIED_DO_NOT_ASK_AGAIN:
+ clickedButton = 1 << LABEL_DENY_AND_DONT_ASK_AGAIN_BUTTON;
+ break;
+ default:
+ break;
+ }
+
+ PermissionControllerStatsLog.write(GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS,
+ permissionGroupName, mCallingUid, mCallingPackage, presentedButtons,
+ clickedButton);
+ Log.v(LOG_TAG, "Logged buttons presented and clicked permissionGroupName="
+ + permissionGroupName + " uid=" + mCallingUid + " package=" + mCallingPackage
+ + " presentedButtons=" + presentedButtons + " clickedButton=" + clickedButton);
+ }
+
+ private int getButtonState() {
+ if (mButtonLabels == null) {
+ return 0;
+ }
+ int buttonState = 0;
+ for (int i = NUM_BUTTONS - 1; i >= 0; i--) {
+ buttonState *= 2;
+ if (mButtonLabels[i] != null) {
+ buttonState++;
+ }
+ }
+ 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 == all permissions of group */
+ /** Permissions of this group that need to be granted, null == no permissions of group */
String[] affectedPermissions;
GroupState(AppPermissionGroup group) {
diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsViewHandler.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsViewHandler.java
index 5e2259a..efd180a 100644
--- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsViewHandler.java
+++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsViewHandler.java
@@ -16,23 +16,36 @@
package com.android.packageinstaller.permission.ui;
+import static java.lang.annotation.RetentionPolicy.SOURCE;
+
import android.graphics.drawable.Icon;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
+import androidx.annotation.IntDef;
+
+import java.lang.annotation.Retention;
+
/**
* Class for managing the presentation and user interaction of the "grant
* permissions" user interface.
*/
public interface GrantPermissionsViewHandler {
+ @Retention(SOURCE)
+ @IntDef({GRANTED_ALWAYS, GRANTED_FOREGROUND_ONLY, DENIED, DENIED_DO_NOT_ASK_AGAIN})
+ @interface Result {}
+ int GRANTED_ALWAYS = 0;
+ int GRANTED_FOREGROUND_ONLY = 1;
+ int DENIED = 2;
+ int DENIED_DO_NOT_ASK_AGAIN = 3;
/**
* Listener interface for getting notified when the user responds to a
* permissions grant request.
*/
interface ResultListener {
- void onPermissionGrantResult(String groupName, boolean granted, boolean doNotAskAgain);
+ void onPermissionGrantResult(String groupName, @Result int result);
}
/**
@@ -59,10 +72,12 @@
* @param groupIndex the index of the current group being requested
* @param icon the icon representation of the current group
* @param message the message to display the user
- * @param showDoNotAsk whether to show the "do not ask again" option
+ * @param detailMessage another message to display to the user. This clarifies "message" in more
+ * detail
+ * @param buttonLabels labels for each button. Use null to make the button gone
*/
void updateUi(String groupName, int groupCount, int groupIndex, Icon icon,
- CharSequence message, boolean showDoNotAsk);
+ CharSequence message, CharSequence detailMessage, CharSequence[] buttonLabels);
/**
* Sets the result listener that will be notified when the user responds
diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsWatchViewHandler.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsWatchViewHandler.java
index be1e760..3f22cce 100644
--- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsWatchViewHandler.java
+++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsWatchViewHandler.java
@@ -1,29 +1,29 @@
package com.android.packageinstaller.permission.ui;
+import static com.android.packageinstaller.permission.ui.GrantPermissionsActivity.LABEL_DENY_AND_DONT_ASK_AGAIN_BUTTON;
+
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.res.TypedArray;
+import android.graphics.PixelFormat;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
-import android.graphics.PixelFormat;
-import android.graphics.PorterDuff;
import android.os.Bundle;
-import androidx.wear.ble.view.AcceptDenyDialog;
-import androidx.wear.ble.view.WearableDialogHelper;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
-import android.text.style.ImageSpan;
-import android.text.style.TextAppearanceSpan;
import android.text.TextUtils;
+import android.text.style.TextAppearanceSpan;
import android.util.Log;
-import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.Space;
-import com.android.packageinstaller.R;
+import androidx.wear.ble.view.AcceptDenyDialog;
+import androidx.wear.ble.view.WearableDialogHelper;
+
+import com.android.permissioncontroller.R;
/**
* Watch-specific view handler for the grant permissions activity.
@@ -79,7 +79,12 @@
@Override
public void updateUi(String groupName, int groupCount, int groupIndex, Icon icon,
- CharSequence message, boolean showDoNotAsk) {
+ CharSequence message, CharSequence detailMessage,
+ CharSequence[] buttonLabels) {
+ // TODO: Handle detailMessage
+
+ boolean showDoNotAsk = buttonLabels[LABEL_DENY_AND_DONT_ASK_AGAIN_BUTTON] != null;
+
if (Log.isLoggable(TAG, Log.DEBUG)) {
Log.d(TAG, "updateUi() - groupName: " + groupName
+ ", groupCount: " + groupCount
@@ -183,29 +188,32 @@
@Override
public void onBackPressed() {
- notifyListener(false, false);
+ notifyListener(DENIED);
}
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
- notifyListener(true, false);
+ notifyListener(GRANTED_ALWAYS);
break;
case DialogInterface.BUTTON_NEUTRAL:
- notifyListener(false, false);
+ notifyListener(DENIED);
break;
case DialogInterface.BUTTON_NEGATIVE:
- notifyListener(false,
- /* In AlertDialog, the negative button is also a don't ask again button. */
- dialog instanceof AlertDialog);
+ /* In AlertDialog, the negative button is also a don't ask again button. */
+ if (dialog instanceof AlertDialog) {
+ notifyListener(DENIED_DO_NOT_ASK_AGAIN);
+ } else {
+ notifyListener(DENIED);
+ }
break;
}
}
- private void notifyListener(boolean granted, boolean doNotAskAgain) {
+ private void notifyListener(@Result int result) {
if (mResultListener != null) {
- mResultListener.onPermissionGrantResult(mGroupName, granted, doNotAskAgain);
+ mResultListener.onPermissionGrantResult(mGroupName, result);
}
}
}
diff --git a/src/com/android/packageinstaller/permission/ui/LocationProviderInterceptDialog.java b/src/com/android/packageinstaller/permission/ui/LocationProviderInterceptDialog.java
new file mode 100644
index 0000000..c0b7e6a
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/LocationProviderInterceptDialog.java
@@ -0,0 +1,72 @@
+/*
+ * 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.packageinstaller.permission.ui;
+
+import android.app.AlertDialog;
+import android.content.Intent;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.FragmentActivity;
+
+import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
+
+/**
+ * A dialog saying that you cannot change the location provider's location permission.
+ */
+public final class LocationProviderInterceptDialog extends FragmentActivity {
+ private static final String LOG_TAG = LocationProviderInterceptDialog.class.getSimpleName();
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ String packageName = getIntent().getStringExtra(Intent.EXTRA_PACKAGE_NAME);
+ if (packageName == null) {
+ Log.i(LOG_TAG, "Missing mandatory argument EXTRA_PACKAGE_NAME");
+ finish();
+ return;
+ }
+
+ new AlertDialog.Builder(this)
+ .setIcon(R.drawable.ic_dialog_alert_material)
+ .setTitle(android.R.string.dialog_alert_title)
+ .setMessage(getString(R.string.location_warning,
+ Utils.getAppLabel(getPackageInfo(packageName).applicationInfo, this)))
+ .setNegativeButton(R.string.ok, null)
+ .setPositiveButton(R.string.location_settings, (dialog, which) ->
+ startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)))
+ .setOnDismissListener((dialog) -> finish())
+ .show();
+ }
+
+ private @Nullable PackageInfo getPackageInfo(@NonNull String packageName) {
+ try {
+ return getPackageManager().getPackageInfo(packageName, PackageManager.GET_PERMISSIONS);
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.i(LOG_TAG, "No package: " + packageName, e);
+ finish();
+ return null;
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/ui/ManagePermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/ManagePermissionsActivity.java
index 712b860..98c26d1 100644
--- a/src/com/android/packageinstaller/permission/ui/ManagePermissionsActivity.java
+++ b/src/com/android/packageinstaller/permission/ui/ManagePermissionsActivity.java
@@ -16,19 +16,33 @@
package com.android.packageinstaller.permission.ui;
-import android.app.Fragment;
+import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
+
+import static com.android.packageinstaller.Constants.INVALID_SESSION_ID;
+
import android.content.Intent;
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 com.android.packageinstaller.Constants;
import com.android.packageinstaller.DeviceUtils;
-import com.android.packageinstaller.R;
+import com.android.packageinstaller.permission.ui.auto.AutoAllAppPermissionsFragment;
+import com.android.packageinstaller.permission.ui.auto.AutoAppPermissionsFragment;
+import com.android.packageinstaller.permission.ui.auto.AutoManageStandardPermissionsFragment;
+import com.android.packageinstaller.permission.ui.auto.AutoPermissionAppsFragment;
import com.android.packageinstaller.permission.ui.handheld.ManageStandardPermissionsFragment;
import com.android.packageinstaller.permission.ui.wear.AppPermissionsFragmentWear;
+import com.android.permissioncontroller.R;
-public final class ManagePermissionsActivity extends OverlayTouchActivity {
- private static final String LOG_TAG = "ManagePermissionsActivity";
+import java.util.Random;
+
+public final class ManagePermissionsActivity extends FragmentActivity {
+ private static final String LOG_TAG = ManagePermissionsActivity.class.getSimpleName();
public static final String EXTRA_ALL_PERMISSIONS =
"com.android.packageinstaller.extra.ALL_PERMISSIONS";
@@ -36,26 +50,45 @@
@Override
public void onCreate(Bundle savedInstanceState) {
if (DeviceUtils.isAuto(this)) {
- setTheme(R.style.CarSettingTheme);
+ // Automotive relies on a different theme. Apply before calling super so that
+ // fragments are restored properly on configuration changes.
+ setTheme(R.style.CarSettings);
}
super.onCreate(savedInstanceState);
+ // If there is a previous instance, re-use its Fragment instead of making a new one.
if (savedInstanceState != null) {
return;
}
- Fragment fragment;
+ android.app.Fragment fragment = null;
+ Fragment androidXFragment = null;
String action = getIntent().getAction();
+ getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
+
+ long sessionId = getIntent().getLongExtra(Constants.EXTRA_SESSION_ID, INVALID_SESSION_ID);
+ while (sessionId == INVALID_SESSION_ID) {
+ sessionId = new Random().nextLong();
+ }
+
+ String permissionName;
switch (action) {
- case Intent.ACTION_MANAGE_PERMISSIONS: {
- if (DeviceUtils.isTelevision(this)) {
- fragment = com.android.packageinstaller.permission.ui.television
- .ManagePermissionsFragment.newInstance();
+ case Intent.ACTION_MANAGE_PERMISSIONS:
+ if (DeviceUtils.isAuto(this)) {
+ androidXFragment = AutoManageStandardPermissionsFragment.newInstance();
+ } else if (DeviceUtils.isTelevision(this)) {
+ fragment =
+ com.android.packageinstaller.permission.ui.television
+ .ManagePermissionsFragment.newInstance();
} else {
- fragment = ManageStandardPermissionsFragment.newInstance();
+ androidXFragment = ManageStandardPermissionsFragment.newInstance(sessionId);
}
- } break;
+ break;
+
+ case Intent.ACTION_REVIEW_PERMISSION_USAGE:
+ finish();
+ return;
case Intent.ACTION_MANAGE_APP_PERMISSIONS: {
String packageName = getIntent().getStringExtra(Intent.EXTRA_PACKAGE_NAME);
@@ -64,40 +97,56 @@
finish();
return;
}
+
+ final boolean allPermissions = getIntent().getBooleanExtra(
+ EXTRA_ALL_PERMISSIONS, false);
+
+ UserHandle userHandle = getIntent().getParcelableExtra(Intent.EXTRA_USER);
+ if (userHandle == null) {
+ userHandle = UserHandle.of(UserHandle.myUserId());
+ }
+
if (DeviceUtils.isAuto(this)) {
- fragment = com.android.packageinstaller.permission.ui.auto
- .AppPermissionsFragment.newInstance(packageName);
+ if (allPermissions) {
+ androidXFragment = AutoAllAppPermissionsFragment.newInstance(packageName,
+ userHandle);
+ } else {
+ androidXFragment = AutoAppPermissionsFragment.newInstance(packageName,
+ userHandle);
+ }
} else if (DeviceUtils.isWear(this)) {
- fragment = AppPermissionsFragmentWear.newInstance(packageName);
+ androidXFragment = AppPermissionsFragmentWear.newInstance(packageName);
} else if (DeviceUtils.isTelevision(this)) {
fragment = com.android.packageinstaller.permission.ui.television
.AppPermissionsFragment.newInstance(packageName);
} else {
- final boolean allPermissions = getIntent().getBooleanExtra(
- EXTRA_ALL_PERMISSIONS, false);
if (allPermissions) {
- fragment = com.android.packageinstaller.permission.ui.handheld
- .AllAppPermissionsFragment.newInstance(packageName);
+ androidXFragment = com.android.packageinstaller.permission.ui.handheld
+ .AllAppPermissionsFragment.newInstance(packageName, userHandle);
} else {
- fragment = com.android.packageinstaller.permission.ui.handheld
- .AppPermissionsFragment.newInstance(packageName);
+ androidXFragment = com.android.packageinstaller.permission.ui.handheld
+ .AppPermissionsFragment.newInstance(
+ packageName, userHandle, sessionId);
}
}
} break;
case Intent.ACTION_MANAGE_PERMISSION_APPS: {
- String permissionName = getIntent().getStringExtra(Intent.EXTRA_PERMISSION_NAME);
+ permissionName = getIntent().getStringExtra(Intent.EXTRA_PERMISSION_NAME);
+
if (permissionName == null) {
Log.i(LOG_TAG, "Missing mandatory argument EXTRA_PERMISSION_NAME");
finish();
return;
}
- if (DeviceUtils.isTelevision(this)) {
+ if (DeviceUtils.isAuto(this)) {
+ androidXFragment = AutoPermissionAppsFragment.newInstance(permissionName);
+ } else if (DeviceUtils.isTelevision(this)) {
fragment = com.android.packageinstaller.permission.ui.television
.PermissionAppsFragment.newInstance(permissionName);
} else {
- fragment = com.android.packageinstaller.permission.ui.handheld
- .PermissionAppsFragment.newInstance(permissionName);
+ androidXFragment = com.android.packageinstaller.permission.ui.handheld
+ .PermissionAppsFragment.newInstance(permissionName, sessionId);
}
} break;
@@ -108,7 +157,13 @@
}
}
- getFragmentManager().beginTransaction().replace(android.R.id.content, fragment).commit();
+ if (fragment != null) {
+ getFragmentManager().beginTransaction().replace(android.R.id.content, fragment)
+ .commit();
+ } else {
+ getSupportFragmentManager().beginTransaction().replace(android.R.id.content,
+ androidXFragment).commit();
+ }
}
@Override
diff --git a/src/com/android/packageinstaller/permission/ui/ManagePermissionsActivityTrampoline.java b/src/com/android/packageinstaller/permission/ui/ManagePermissionsActivityTrampoline.java
new file mode 100644
index 0000000..570782b
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/ManagePermissionsActivityTrampoline.java
@@ -0,0 +1,66 @@
+/*
+ * 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.packageinstaller.permission.ui;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+
+import com.android.packageinstaller.permission.service.PermissionSearchIndexablesProvider;
+
+/**
+ * Trampoline activity for {@link ManagePermissionsActivity}.
+ */
+public class ManagePermissionsActivityTrampoline extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ Intent intent = getIntent();
+ if (!PermissionSearchIndexablesProvider.isIntentValid(intent, this)) {
+ finish();
+ return;
+ }
+
+ String action = intent.getAction();
+ if (action == null) {
+ finish();
+ return;
+ }
+
+ Intent newIntent = new Intent(this, ManagePermissionsActivity.class)
+ .addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
+ switch (action) {
+ case PermissionSearchIndexablesProvider.ACTION_REVIEW_PERMISSION_USAGE:
+ newIntent.setAction(Intent.ACTION_REVIEW_PERMISSION_USAGE);
+ break;
+ case PermissionSearchIndexablesProvider.ACTION_MANAGE_PERMISSION_APPS:
+ newIntent
+ .setAction(Intent.ACTION_MANAGE_PERMISSION_APPS)
+ .putExtra(Intent.EXTRA_PERMISSION_NAME,
+ PermissionSearchIndexablesProvider.getOriginalKey(intent));
+ break;
+ default:
+ finish();
+ return;
+ }
+
+ startActivity(newIntent);
+ finish();
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/ui/ManualLayoutFrame.java b/src/com/android/packageinstaller/permission/ui/ManualLayoutFrame.java
deleted file mode 100644
index 0b07c80..0000000
--- a/src/com/android/packageinstaller/permission/ui/ManualLayoutFrame.java
+++ /dev/null
@@ -1,78 +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.packageinstaller.permission.ui;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.View;
-import android.view.ViewGroup;
-
-public class ManualLayoutFrame extends ViewGroup {
- private int mContentBottom;
- private int mWidth;
-
- public ManualLayoutFrame(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public void onConfigurationChanged() {
- mContentBottom = 0;
- mWidth = 0;
- }
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- if (mWidth != 0) {
- int newWidth = mWidth;
- final int widthMode = MeasureSpec.getMode(widthMeasureSpec);
- switch (widthMode) {
- case MeasureSpec.AT_MOST: {
- newWidth = Math.min(mWidth, MeasureSpec.getSize(widthMeasureSpec));
- } break;
- case MeasureSpec.EXACTLY: {
- newWidth = MeasureSpec.getSize(widthMeasureSpec);
- } break;
- }
- if (newWidth != mWidth) {
- mWidth = newWidth;
- }
- widthMeasureSpec = MeasureSpec.makeMeasureSpec(mWidth, MeasureSpec.EXACTLY);
- }
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
- if (mWidth == 0) {
- mWidth = getMeasuredWidth();
- }
-
- measureChild(getChildAt(0), widthMeasureSpec, heightMeasureSpec);
- }
-
- @Override
- protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
- // We want to keep the content bottom at the same place to avoid movement of the "Allow"
- // button.
- // Try to keep the content bottom at the same height. If this would move the dialog out of
- // the top of the screen move it down as much as possible, then keep it at that position for
- // the rest of the sequence of permission dialogs.
- View content = getChildAt(0);
- if (mContentBottom == 0 || content.getMeasuredHeight() > mContentBottom) {
- mContentBottom = (getMeasuredHeight() + content.getMeasuredHeight()) / 2;
- }
- final int contentLeft = (getMeasuredWidth() - content.getMeasuredWidth()) / 2;
- final int contentTop = mContentBottom - content.getMeasuredHeight();
- final int contentRight = contentLeft + content.getMeasuredWidth();
- content.layout(contentLeft, contentTop, contentRight, mContentBottom);
- }
-}
diff --git a/src/com/android/packageinstaller/permission/ui/OverlayWarningDialog.java b/src/com/android/packageinstaller/permission/ui/OverlayWarningDialog.java
index 61734b4..9935dcb 100644
--- a/src/com/android/packageinstaller/permission/ui/OverlayWarningDialog.java
+++ b/src/com/android/packageinstaller/permission/ui/OverlayWarningDialog.java
@@ -27,7 +27,7 @@
import android.provider.Settings;
import android.util.Log;
-import com.android.packageinstaller.R;
+import com.android.permissioncontroller.R;
public class OverlayWarningDialog extends Activity implements OnClickListener, OnDismissListener {
diff --git a/src/com/android/packageinstaller/permission/ui/ReviewAccessibilityServicesActivity.java b/src/com/android/packageinstaller/permission/ui/ReviewAccessibilityServicesActivity.java
new file mode 100644
index 0000000..9ed5f42
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/ReviewAccessibilityServicesActivity.java
@@ -0,0 +1,171 @@
+/*
+ * 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.packageinstaller.permission.ui;
+
+import android.accessibilityservice.AccessibilityServiceInfo;
+import android.app.AlertDialog;
+import android.app.AppOpsManager;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.accessibility.AccessibilityManager;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.core.text.BidiFormatter;
+import androidx.fragment.app.FragmentActivity;
+
+import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
+
+import java.util.List;
+
+/**
+ * A dialog listing the currently enabled accessibility services and their last access times.
+ */
+public final class ReviewAccessibilityServicesActivity extends FragmentActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ AccessibilityManager accessibilityManager = getSystemService(
+ AccessibilityManager.class);
+ List<AccessibilityServiceInfo> services = accessibilityManager
+ .getEnabledAccessibilityServiceList(AccessibilityServiceInfo.FEEDBACK_ALL_MASK);
+
+ new AlertDialog.Builder(this)
+ .setView(createDialogView(services))
+ .setPositiveButton(R.string.ok, null)
+ .setNeutralButton(R.string.settings, (dialog, which) -> {
+ if (services.size() == 1) {
+ startAccessibilityScreen(services.get(0).getResolveInfo().serviceInfo);
+ } else {
+ startActivity(new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS));
+ }
+ })
+ .setOnDismissListener((dialog) -> finish())
+ .show();
+ }
+
+ private @NonNull View createDialogView(List<AccessibilityServiceInfo> services) {
+ AppOpsManager appOpsManager = getSystemService(AppOpsManager.class);
+
+ LayoutInflater layoutInflater = LayoutInflater.from(this);
+ View view = layoutInflater.inflate(R.layout.accessibility_service_dialog, null);
+
+ int numServices = services.size();
+ for (int i = 0; i < numServices; i++) {
+ ResolveInfo resolveInfo = services.get(i).getResolveInfo();
+ ServiceInfo serviceInfo = resolveInfo.serviceInfo;
+ ApplicationInfo appInfo = serviceInfo.applicationInfo;
+ CharSequence label = getLabel(resolveInfo);
+ long lastAccessTime = getLastAccessTime(appInfo, appOpsManager);
+
+ if (numServices == 1) {
+ // If there is only one enabled service, the dialog has its icon as a header.
+
+ ((TextView) view.requireViewById(R.id.title)).setText(
+ getString(R.string.accessibility_service_dialog_title_single, label));
+ ((TextView) view.requireViewById(R.id.bottom_text)).setText(
+ getString(R.string.accessibility_service_dialog_bottom_text_single, label));
+
+ ImageView headerIcon = view.requireViewById(R.id.header_icon);
+ headerIcon.setImageDrawable(Utils.getBadgedIcon(this, appInfo));
+ headerIcon.setVisibility(View.VISIBLE);
+
+ if (lastAccessTime != 0) {
+ TextView middleText = view.requireViewById(R.id.middle_text);
+ middleText.setText(getString(R.string.app_permission_most_recent_summary,
+ Utils.getAbsoluteTimeString(this, lastAccessTime)));
+ middleText.setVisibility(View.VISIBLE);
+ }
+ } else {
+ // Add an entry for each enabled service.
+
+ ((TextView) view.requireViewById(R.id.title)).setText(
+ getString(R.string.accessibility_service_dialog_title_multiple,
+ services.size()));
+ ((TextView) view.requireViewById(R.id.bottom_text)).setText(
+ getString(R.string.accessibility_service_dialog_bottom_text_multiple));
+
+ ViewGroup servicesListView = view.requireViewById(R.id.items_container);
+ View itemView = layoutInflater.inflate(R.layout.accessibility_service_dialog_item,
+ servicesListView, false);
+
+ ((TextView) itemView.requireViewById(R.id.title)).setText(label);
+ ((ImageView) itemView.requireViewById(R.id.icon)).setImageDrawable(
+ Utils.getBadgedIcon(this, appInfo));
+
+ if (lastAccessTime == 0) {
+ itemView.requireViewById(R.id.summary).setVisibility(View.GONE);
+ } else {
+ ((TextView) itemView.requireViewById(R.id.summary)).setText(
+ getString(R.string.app_permission_most_recent_summary,
+ Utils.getAbsoluteTimeString(this, lastAccessTime)));
+ }
+
+ itemView.setOnClickListener((v) -> startAccessibilityScreen(serviceInfo));
+
+ servicesListView.addView(itemView);
+ }
+ }
+
+ return view;
+ }
+
+ private void startAccessibilityScreen(ServiceInfo serviceInfo) {
+ Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_DETAILS_SETTINGS);
+ intent.putExtra(Intent.EXTRA_COMPONENT_NAME,
+ new ComponentName(serviceInfo.packageName, serviceInfo.name).flattenToString());
+ startActivity(intent);
+ }
+
+ private @NonNull CharSequence getLabel(@NonNull ResolveInfo resolveInfo) {
+ return BidiFormatter.getInstance().unicodeWrap(
+ TextUtils.makeSafeForPresentation(
+ resolveInfo.loadLabel(getPackageManager()).toString(), 0, 0,
+ TextUtils.SAFE_STRING_FLAG_TRIM | TextUtils.SAFE_STRING_FLAG_FIRST_LINE));
+ }
+
+ private static long getLastAccessTime(@NonNull ApplicationInfo appInfo,
+ @NonNull AppOpsManager appOpsManager) {
+ List<AppOpsManager.PackageOps> ops = appOpsManager.getOpsForPackage(appInfo.uid,
+ appInfo.packageName, AppOpsManager.OPSTR_ACCESS_ACCESSIBILITY);
+ long lastAccessTime = 0;
+ int numPkgOps = ops.size();
+ for (int pkgOpNum = 0; pkgOpNum < numPkgOps; pkgOpNum++) {
+ AppOpsManager.PackageOps pkgOp = ops.get(pkgOpNum);
+ int numOps = pkgOp.getOps().size();
+ for (int opNum = 0; opNum < numOps; opNum++) {
+ AppOpsManager.OpEntry op = pkgOp.getOps().get(opNum);
+ lastAccessTime = Math.max(lastAccessTime,
+ op.getLastAccessTime(AppOpsManager.OP_FLAGS_ALL_TRUSTED));
+ }
+ }
+ return lastAccessTime;
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/ui/OverlayTouchActivity.java b/src/com/android/packageinstaller/permission/ui/ReviewOngoingUsageActivity.java
similarity index 70%
rename from src/com/android/packageinstaller/permission/ui/OverlayTouchActivity.java
rename to src/com/android/packageinstaller/permission/ui/ReviewOngoingUsageActivity.java
index 8aa158b..f81c1d1 100644
--- a/src/com/android/packageinstaller/permission/ui/OverlayTouchActivity.java
+++ b/src/com/android/packageinstaller/permission/ui/ReviewOngoingUsageActivity.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2015 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.
@@ -13,17 +13,19 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.android.packageinstaller.permission.ui;
-import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
-
-import android.app.Activity;
import android.os.Bundle;
-public class OverlayTouchActivity extends Activity {
+import androidx.fragment.app.FragmentActivity;
+
+public final class ReviewOngoingUsageActivity extends FragmentActivity {
+
@Override
protected void onCreate(Bundle savedInstanceState) {
- getWindow().addPrivateFlags(PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
super.onCreate(savedInstanceState);
+ finish();
+ return;
}
}
diff --git a/src/com/android/packageinstaller/permission/ui/ReviewPermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/ReviewPermissionsActivity.java
index 4caf4ce..c21bb16 100644
--- a/src/com/android/packageinstaller/permission/ui/ReviewPermissionsActivity.java
+++ b/src/com/android/packageinstaller/permission/ui/ReviewPermissionsActivity.java
@@ -16,21 +16,23 @@
package com.android.packageinstaller.permission.ui;
-import android.app.Activity;
-
-import android.app.Fragment;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.text.TextUtils;
-import com.android.packageinstaller.DeviceUtils;
-import com.android.packageinstaller.R;
-import com.android.packageinstaller.permission.ui.handheld.ReviewPermissionsFragment;
-import com.android.packageinstaller.permission.ui.ConfirmActionDialogFragment.OnActionConfirmedListener;
-import com.android.packageinstaller.permission.ui.wear.ReviewPermissionsWearFragment;
-public final class ReviewPermissionsActivity extends Activity
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
+
+import com.android.packageinstaller.DeviceUtils;
+import com.android.packageinstaller.permission.ui.ConfirmActionDialogFragment
+ .OnActionConfirmedListener;
+import com.android.packageinstaller.permission.ui.handheld.ReviewPermissionsFragment;
+import com.android.packageinstaller.permission.ui.wear.ReviewPermissionsWearFragment;
+import com.android.permissioncontroller.R;
+
+public final class ReviewPermissionsActivity extends FragmentActivity
implements OnActionConfirmedListener {
@Override
@@ -45,12 +47,12 @@
if (DeviceUtils.isWear(this)) {
Fragment fragment = ReviewPermissionsWearFragment.newInstance(packageInfo);
- getFragmentManager().beginTransaction()
+ getSupportFragmentManager().beginTransaction()
.replace(android.R.id.content, fragment).commit();
} else {
setContentView(R.layout.review_permissions);
- if (getFragmentManager().findFragmentById(R.id.preferences_frame) == null) {
- getFragmentManager().beginTransaction().add(R.id.preferences_frame,
+ if (getSupportFragmentManager().findFragmentById(R.id.preferences_frame) == null) {
+ getSupportFragmentManager().beginTransaction().add(R.id.preferences_frame,
ReviewPermissionsFragment.newInstance(packageInfo)).commit();
}
}
@@ -58,7 +60,7 @@
@Override
public void onActionConfirmed(String action) {
- Fragment fragment = getFragmentManager().findFragmentById(R.id.preferences_frame);
+ Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.preferences_frame);
if (fragment instanceof OnActionConfirmedListener) {
((OnActionConfirmedListener) fragment).onActionConfirmed(action);
}
diff --git a/src/com/android/packageinstaller/permission/ui/TEST_MAPPING b/src/com/android/packageinstaller/permission/ui/TEST_MAPPING
new file mode 100644
index 0000000..4ab861f
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/TEST_MAPPING
@@ -0,0 +1,38 @@
+{
+ "postsubmit": [
+ {
+ "name": "CtsAppSecurityHostTestCases",
+ "options": [
+ {
+ "include-filter": "android.appsecurity.cts.PermissionsHostTest"
+ }
+ ]
+ },
+ {
+ "name": "CtsDevicePolicyManagerTestCases",
+ "options": [
+ {
+ "include-filter": "com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testPermissionGrantOfDisallowedPermissionWhileOtherPermIsGranted"
+ },
+ {
+ "include-filter": "com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testPermissionGrant"
+ },
+ {
+ "include-filter": "com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testPermissionPolicy"
+ },
+ {
+ "include-filter": "com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testPermissionMixedPolicies"
+ },
+ {
+ "include-filter": "com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testPermissionAppUpdate"
+ },
+ {
+ "include-filter": "com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testPermissionGrantPreMApp"
+ },
+ {
+ "include-filter": "com.android.cts.devicepolicy.MixedManagedProfileOwnerTestApi25#testPermissionGrantPreMApp"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/com/android/packageinstaller/permission/ui/auto/AppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/auto/AppPermissionsFragment.java
deleted file mode 100644
index b3ecf26..0000000
--- a/src/com/android/packageinstaller/permission/ui/auto/AppPermissionsFragment.java
+++ /dev/null
@@ -1,238 +0,0 @@
-/**
- * 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.
- */
-
-package com.android.packageinstaller.permission.ui.auto;
-
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Fragment;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Switch;
-import android.widget.Toast;
-
-import androidx.annotation.DrawableRes;
-import androidx.car.widget.PagedListView;
-
-import com.android.car.list.IconToggleLineItem;
-import com.android.car.list.TypedPagedListAdapter;
-import com.android.packageinstaller.R;
-import com.android.packageinstaller.permission.model.AppPermissionGroup;
-import com.android.packageinstaller.permission.model.AppPermissions;
-import com.android.packageinstaller.permission.utils.Utils;
-
-import java.util.ArrayList;
-
-/**
- * Contains all permissions in a list for a given application.
- */
-public final class AppPermissionsFragment extends Fragment{
-
- private static final String LOG_TAG = "ManagePermsFragment";
- public static final String EXTRA_LAYOUT = "extra_layout";
-
- private AppPermissions mAppPermissions;
-
- private String mPackageName;
-
- protected PagedListView mListView;
- protected TypedPagedListAdapter mPagedListAdapter;
-
-
- /**
- * Creates a new instance.
- * @param packageName the packageName of the application that we are listing the
- * permissions here.
- */
- public static AppPermissionsFragment newInstance(String packageName) {
- AppPermissionsFragment fragment = new AppPermissionsFragment();
- Bundle arguments = new Bundle();
- arguments.putInt(EXTRA_LAYOUT, R.layout.car_app_permissions);
- arguments.putString(Intent.EXTRA_PACKAGE_NAME, packageName);
- fragment.setArguments(arguments);
- return fragment;
- }
-
- @Override
- public void onActivityCreated(Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
- getView().findViewById(R.id.action_bar_icon_container).setOnClickListener(
- v -> getActivity().onBackPressed());
-
- mListView = (PagedListView) getView().findViewById(R.id.list);
- mPagedListAdapter = new TypedPagedListAdapter(getLineItems());
- mListView.setAdapter(mPagedListAdapter);
- }
-
- protected void notifyDataSetChanged() {
- mPagedListAdapter.notifyDataSetChanged();
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- if (savedInstanceState != null
- && savedInstanceState.containsKey(Intent.EXTRA_PACKAGE_NAME)) {
- mPackageName = savedInstanceState.getString(Intent.EXTRA_PACKAGE_NAME);
- } else if (getArguments() != null
- && getArguments().containsKey(Intent.EXTRA_PACKAGE_NAME)) {
- mPackageName = getArguments().getString(Intent.EXTRA_PACKAGE_NAME);
- }
-
- if (mPackageName == null) {
- Log.e(LOG_TAG, "package name is missing");
- return;
- }
- Activity activity = getActivity();
- PackageInfo packageInfo = getPackageInfo(activity, mPackageName);
- if (packageInfo == null) {
- Toast.makeText(activity, R.string.app_not_found_dlg_title, Toast.LENGTH_LONG).show();
- activity.finish();
- return;
- }
-
- mAppPermissions = new AppPermissions(activity, packageInfo, null, true, new Runnable() {
- @Override
- public void run() {
- activity.finish();
- }
- });
- }
-
- @Override
- public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- outState.putString(Intent.EXTRA_PACKAGE_NAME, mPackageName);
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- return inflater.inflate(getArguments().getInt(EXTRA_LAYOUT), container, false);
- }
-
- @Override
- public void onResume() {
- super.onResume();
- mAppPermissions.refresh();
- }
-
- /**
- * Gets the list of the LineItems to show up in the list
- */
- public ArrayList<TypedPagedListAdapter.LineItem> getLineItems() {
- ArrayList<TypedPagedListAdapter.LineItem> items = new ArrayList<>();
- Context context = getContext();
- if (context == null) {
- return items;
- }
-
- for (AppPermissionGroup group : mAppPermissions.getPermissionGroups()) {
- if (!Utils.shouldShowPermission(group, mAppPermissions.getPackageInfo().packageName)) {
- continue;
- }
- items.add(new PermissionLineItem(group, context));
- }
- return items;
- }
-
- private static PackageInfo getPackageInfo(Activity activity, String packageName) {
- try {
- return activity.getPackageManager().getPackageInfo(
- packageName, PackageManager.GET_PERMISSIONS);
- } catch (PackageManager.NameNotFoundException e) {
- if (Log.isLoggable(LOG_TAG, Log.INFO)) {
- Log.i(LOG_TAG, "No package:" + activity.getCallingPackage(), e);
- }
- return null;
- }
- }
-
- private class PermissionLineItem extends IconToggleLineItem {
- private final AppPermissionGroup mPermissionGroup;
- private final Context mContext;
-
- PermissionLineItem(AppPermissionGroup permissionGroup, Context context) {
- super(permissionGroup.getLabel(), context);
- mContext = context;
- mPermissionGroup = permissionGroup;
- }
-
- @Override
- public boolean onToggleTouched(Switch toggleSwitch, MotionEvent event) {
- if (event.getAction() != MotionEvent.ACTION_DOWN) {
- return true;
- }
- if (!isChecked()) {
- mPermissionGroup.grantRuntimePermissions(false);
- toggleSwitch.performClick();
- } else {
- final boolean grantedByDefault =
- mPermissionGroup.hasGrantedByDefaultPermission();
- if (grantedByDefault || !mPermissionGroup.doesSupportRuntimePermissions()) {
- new AlertDialog.Builder(mContext)
- .setMessage(grantedByDefault
- ? R.string.system_warning : R.string.old_sdk_deny_warning)
- .setNegativeButton(R.string.cancel, null /* listener */)
- .setPositiveButton(R.string.grant_dialog_button_deny_anyway,
- (dialog, which) -> {
- mPermissionGroup.revokeRuntimePermissions(false);
- toggleSwitch.performClick();
- })
- .show();
- } else {
- mPermissionGroup.revokeRuntimePermissions(false);
- toggleSwitch.performClick();
- }
- }
- return true;
- }
-
- @DrawableRes
- public int getIcon() {
- return mPermissionGroup.getIconResId();
- }
-
- @Override
- public boolean isChecked() {
- return mPermissionGroup.areRuntimePermissionsGranted();
- }
-
- @Override
- public CharSequence getDesc() {
- return null;
- }
-
- @Override
- public boolean isEnabled() {
- return true;
- }
-
- @Override
- public boolean isExpandable() {
- return false;
- }
- }
-}
diff --git a/src/com/android/packageinstaller/permission/ui/auto/AutoAllAppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/auto/AutoAllAppPermissionsFragment.java
new file mode 100644
index 0000000..c07fe5f
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/auto/AutoAllAppPermissionsFragment.java
@@ -0,0 +1,386 @@
+/*
+ * 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.packageinstaller.permission.ui.auto;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageItemInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PermissionGroupInfo;
+import android.content.pm.PermissionInfo;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.View;
+import android.widget.Switch;
+
+import androidx.annotation.NonNull;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceViewHolder;
+import androidx.preference.SwitchPreference;
+
+import com.android.packageinstaller.auto.AutoSettingsFrameFragment;
+import com.android.packageinstaller.permission.model.AppPermissionGroup;
+import com.android.packageinstaller.permission.model.Permission;
+import com.android.packageinstaller.permission.utils.ArrayUtils;
+import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/** Screen which shows all permissions for a particular app. */
+public class AutoAllAppPermissionsFragment extends AutoSettingsFrameFragment {
+
+ private static final String LOG_TAG = "AllAppPermsFrag";
+ private static final String KEY_OTHER = "other_perms";
+
+ private List<AppPermissionGroup> mGroups;
+
+ /** Creates an {@link AutoAllAppPermissionsFragment} with no filter. */
+ public static AutoAllAppPermissionsFragment newInstance(@NonNull String packageName,
+ @NonNull UserHandle userHandle) {
+ return newInstance(packageName, /* filterGroup= */ null, userHandle);
+ }
+
+ /** Creates an {@link AutoAllAppPermissionsFragment} with a specific filter group. */
+ public static AutoAllAppPermissionsFragment newInstance(@NonNull String packageName,
+ @NonNull String filterGroup, @NonNull UserHandle userHandle) {
+ AutoAllAppPermissionsFragment instance = new AutoAllAppPermissionsFragment();
+ Bundle arguments = new Bundle();
+ arguments.putString(Intent.EXTRA_PACKAGE_NAME, packageName);
+ arguments.putString(Intent.EXTRA_PERMISSION_GROUP_NAME, filterGroup);
+ arguments.putParcelable(Intent.EXTRA_USER, userHandle);
+ instance.setArguments(arguments);
+ return instance;
+ }
+
+ @Override
+ public void onCreatePreferences(Bundle bundle, String s) {
+ setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getContext()));
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+
+ // If we target a group make this look like app permissions.
+ if (getArguments().getString(Intent.EXTRA_PERMISSION_GROUP_NAME) == null) {
+ setHeaderLabel(getContext().getString(R.string.all_permissions));
+ } else {
+ setHeaderLabel(getContext().getString(R.string.app_permissions));
+ }
+
+ updateUi();
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+ getPreferenceScreen().removeAll();
+ }
+
+ private void updateUi() {
+ PreferenceGroup otherGroup = new PreferenceCategory(getContext());
+ otherGroup.setKey(KEY_OTHER);
+ otherGroup.setTitle(R.string.other_permissions);
+ getPreferenceScreen().addPreference(otherGroup);
+ ArrayList<Preference> prefs = new ArrayList<>(); // Used for sorting.
+ prefs.add(otherGroup);
+ String pkg = getArguments().getString(Intent.EXTRA_PACKAGE_NAME);
+ String filterGroup = getArguments().getString(Intent.EXTRA_PERMISSION_GROUP_NAME);
+ UserHandle userHandle = getArguments().getParcelable(Intent.EXTRA_USER);
+ otherGroup.removeAll();
+ PackageManager pm = getContext().getPackageManager();
+
+ PackageInfo info = AutoPermissionsUtils.getPackageInfo(requireActivity(), pkg, userHandle);
+ if (info == null) {
+ return;
+ }
+
+ ApplicationInfo appInfo = info.applicationInfo;
+ Preference header = AutoPermissionsUtils.createHeaderPreference(getContext(), appInfo);
+ header.setOrder(0);
+ getPreferenceScreen().addPreference(header);
+
+ if (info.requestedPermissions != null) {
+ for (int i = 0; i < info.requestedPermissions.length; i++) {
+ PermissionInfo perm;
+ try {
+ perm = pm.getPermissionInfo(info.requestedPermissions[i], /* flags= */ 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.e(LOG_TAG,
+ "Can't get permission info for " + info.requestedPermissions[i], e);
+ continue;
+ }
+
+ if ((perm.flags & PermissionInfo.FLAG_INSTALLED) == 0
+ || (perm.flags & PermissionInfo.FLAG_REMOVED) != 0) {
+ continue;
+ }
+
+ if (appInfo.isInstantApp()
+ && (perm.protectionLevel & PermissionInfo.PROTECTION_FLAG_INSTANT)
+ == 0) {
+ continue;
+ }
+ if (appInfo.targetSdkVersion < Build.VERSION_CODES.M
+ && (perm.protectionLevel & PermissionInfo.PROTECTION_FLAG_RUNTIME_ONLY)
+ != 0) {
+ continue;
+ }
+
+ if ((perm.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE)
+ == PermissionInfo.PROTECTION_DANGEROUS) {
+ PackageItemInfo group = getGroup(Utils.getGroupOfPermission(perm), pm);
+ if (group == null) {
+ group = perm;
+ }
+ // If we show a targeted group, then ignore everything else.
+ if (filterGroup != null && !group.name.equals(filterGroup)) {
+ continue;
+ }
+ PreferenceGroup pref = findOrCreate(group, pm, prefs);
+ pref.addPreference(getPreference(info, perm, group, pm));
+ } else if (filterGroup == null) {
+ if ((perm.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE)
+ == PermissionInfo.PROTECTION_NORMAL) {
+ PermissionGroupInfo group = getGroup(perm.group, pm);
+ otherGroup.addPreference(getPreference(info,
+ perm, group, pm));
+ }
+ }
+
+ // If we show a targeted group, then don't show 'other' permissions.
+ if (filterGroup != null) {
+ getPreferenceScreen().removePreference(otherGroup);
+ }
+ }
+ }
+
+ // Sort an ArrayList of the groups and then set the order from the sorting.
+ Collections.sort(prefs, (lhs, rhs) -> {
+ String lKey = lhs.getKey();
+ String rKey = rhs.getKey();
+ if (lKey.equals(KEY_OTHER)) {
+ return 1;
+ } else if (rKey.equals(KEY_OTHER)) {
+ return -1;
+ } else if (Utils.isModernPermissionGroup(lKey)
+ != Utils.isModernPermissionGroup(rKey)) {
+ return Utils.isModernPermissionGroup(lKey) ? -1 : 1;
+ }
+ return lhs.getTitle().toString().compareTo(rhs.getTitle().toString());
+ });
+ for (int i = 0; i < prefs.size(); i++) {
+ prefs.get(i).setOrder(i + 1);
+ }
+ }
+
+ private PermissionGroupInfo getGroup(String group, PackageManager pm) {
+ try {
+ return pm.getPermissionGroupInfo(group, /* flags= */ 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ return null;
+ }
+ }
+
+ private PreferenceGroup findOrCreate(PackageItemInfo group, PackageManager pm,
+ ArrayList<Preference> prefs) {
+ PreferenceGroup pref = findPreference(group.name);
+ if (pref == null) {
+ pref = new PreferenceCategory(getPreferenceManager().getContext());
+ pref.setKey(group.name);
+ pref.setTitle(group.loadLabel(pm));
+ prefs.add(pref);
+ getPreferenceScreen().addPreference(pref);
+ }
+ return pref;
+ }
+
+ private Preference getPreference(PackageInfo packageInfo, PermissionInfo perm,
+ PackageItemInfo group, PackageManager pm) {
+ final Preference pref;
+ Context context = getPreferenceManager().getContext();
+
+ // We allow individual permission control for some permissions if review enabled
+ final boolean mutable = Utils.isPermissionIndividuallyControlled(getContext(), perm.name);
+ if (mutable) {
+ pref = new MyMultiTargetSwitchPreference(context, perm.name,
+ getPermissionForegroundGroup(packageInfo, perm.name));
+ } else {
+ pref = new Preference(context);
+ }
+
+ Drawable icon;
+ if (perm.icon != 0) {
+ icon = perm.loadUnbadgedIcon(pm);
+ } else if (group != null && group.icon != 0) {
+ icon = group.loadUnbadgedIcon(pm);
+ } else {
+ icon = context.getDrawable(
+ com.android.permissioncontroller.R.drawable.ic_perm_device_info);
+ }
+ pref.setIcon(Utils.applyTint(context, icon, android.R.attr.colorControlNormal));
+ pref.setTitle(
+ perm.loadSafeLabel(pm, /* ellipsizeDip= */ 20000, TextUtils.SAFE_STRING_FLAG_TRIM));
+ pref.setSingleLineTitle(false);
+ final CharSequence desc = perm.loadDescription(pm);
+
+ pref.setOnPreferenceClickListener((Preference preference) -> {
+ new AlertDialog.Builder(getContext())
+ .setMessage(desc)
+ .setPositiveButton(android.R.string.ok, /* listener= */ null)
+ .show();
+ return mutable;
+ });
+
+ return pref;
+ }
+
+ /**
+ * Return the (foreground-) {@link AppPermissionGroup group} a permission belongs to.
+ *
+ * <p>For foreground or non background-foreground permissions this returns the group
+ * {@link AppPermissionGroup} the permission is in. For background permisisons this returns
+ * the group the matching foreground
+ *
+ * @param packageInfo Package information about the app
+ * @param permission The permission that belongs to a group
+ * @return the group the permissions belongs to
+ */
+ private AppPermissionGroup getPermissionForegroundGroup(PackageInfo packageInfo,
+ String permission) {
+ AppPermissionGroup appPermissionGroup = null;
+ if (mGroups != null) {
+ final int groupCount = mGroups.size();
+ for (int i = 0; i < groupCount; i++) {
+ AppPermissionGroup currentPermissionGroup = mGroups.get(i);
+ if (currentPermissionGroup.hasPermission(permission)) {
+ appPermissionGroup = currentPermissionGroup;
+ break;
+ }
+ if (currentPermissionGroup.getBackgroundPermissions() != null
+ && currentPermissionGroup.getBackgroundPermissions().hasPermission(
+ permission)) {
+ appPermissionGroup = currentPermissionGroup.getBackgroundPermissions();
+ break;
+ }
+ }
+ }
+ if (appPermissionGroup == null) {
+ appPermissionGroup = AppPermissionGroup.create(
+ getContext(), packageInfo, permission, /* delayChanges= */ false);
+ if (mGroups == null) {
+ mGroups = new ArrayList<>();
+ }
+ mGroups.add(appPermissionGroup);
+ }
+ return appPermissionGroup;
+ }
+
+
+ private static final class MyMultiTargetSwitchPreference extends SwitchPreference {
+ private View.OnClickListener mSwitchOnClickLister;
+
+ MyMultiTargetSwitchPreference(Context context, String permission,
+ AppPermissionGroup appPermissionGroup) {
+ super(context);
+
+ setChecked(appPermissionGroup.areRuntimePermissionsGranted(
+ new String[]{permission}));
+
+ setSwitchOnClickListener(v -> {
+ Switch switchView = (Switch) v;
+ if (switchView.isChecked()) {
+ appPermissionGroup.grantRuntimePermissions(false,
+ new String[]{permission});
+ // We are granting a permission from a group but since this is an
+ // individual permission control other permissions in the group may
+ // be revoked, hence we need to mark them user fixed to prevent the
+ // app from requesting a non-granted permission and it being granted
+ // because another permission in the group is granted. This applies
+ // only to apps that support runtime permissions.
+ if (appPermissionGroup.doesSupportRuntimePermissions()) {
+ int grantedCount = 0;
+ String[] revokedPermissionsToFix = null;
+ final int permissionCount = appPermissionGroup.getPermissions().size();
+ for (int i = 0; i < permissionCount; i++) {
+ Permission current = appPermissionGroup.getPermissions().get(i);
+ if (!current.isGrantedIncludingAppOp()) {
+ if (!current.isUserFixed()) {
+ revokedPermissionsToFix = ArrayUtils.appendString(
+ revokedPermissionsToFix, current.getName());
+ }
+ } else {
+ grantedCount++;
+ }
+ }
+ if (revokedPermissionsToFix != null) {
+ // If some permissions were not granted then they should be fixed.
+ appPermissionGroup.revokeRuntimePermissions(/* fixedByTheUser= */ true,
+ revokedPermissionsToFix);
+ } else if (appPermissionGroup.getPermissions().size() == grantedCount) {
+ // If all permissions are granted then they should not be fixed.
+ appPermissionGroup.grantRuntimePermissions(/* fixedByTheUser= */ false);
+ }
+ }
+ } else {
+ appPermissionGroup.revokeRuntimePermissions(/* fixedByTheUser= */ true,
+ new String[]{permission});
+ // If we just revoked the last permission we need to clear
+ // the user fixed state as now the app should be able to
+ // request them at runtime if supported.
+ if (appPermissionGroup.doesSupportRuntimePermissions()
+ && !appPermissionGroup.areRuntimePermissionsGranted()) {
+ appPermissionGroup.revokeRuntimePermissions(/* fixedByTheUser= */ false);
+ }
+ }
+ });
+ }
+
+ @Override
+ public void setChecked(boolean checked) {
+ // If double target behavior is enabled do nothing
+ if (mSwitchOnClickLister == null) {
+ super.setChecked(checked);
+ }
+ }
+
+ void setSwitchOnClickListener(View.OnClickListener listener) {
+ mSwitchOnClickLister = listener;
+ }
+
+ @Override
+ public void onBindViewHolder(PreferenceViewHolder holder) {
+ super.onBindViewHolder(holder);
+ Switch switchView = holder.itemView.findViewById(android.R.id.switch_widget);
+ if (switchView != null) {
+ switchView.setOnClickListener(mSwitchOnClickLister);
+ }
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/ui/auto/AutoAppPermissionFragment.java b/src/com/android/packageinstaller/permission/ui/auto/AutoAppPermissionFragment.java
new file mode 100644
index 0000000..ecbde6c
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/auto/AutoAppPermissionFragment.java
@@ -0,0 +1,806 @@
+/*
+ * 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.packageinstaller.permission.ui.auto;
+
+import static java.lang.annotation.RetentionPolicy.SOURCE;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageItemInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PermissionInfo;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.util.Log;
+import android.view.View;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.content.res.TypedArrayUtils;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceScreen;
+import androidx.preference.TwoStatePreference;
+
+import com.android.packageinstaller.auto.AutoSettingsFrameFragment;
+import com.android.packageinstaller.permission.model.AppPermissionGroup;
+import com.android.packageinstaller.permission.model.Permission;
+import com.android.packageinstaller.permission.utils.LocationUtils;
+import com.android.packageinstaller.permission.utils.PackageRemovalMonitor;
+import com.android.packageinstaller.permission.utils.SafetyNetLogger;
+import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
+import com.android.settingslib.RestrictedLockUtils;
+
+import java.lang.annotation.Retention;
+import java.util.List;
+
+/** Settings related to a particular permission for the given app. */
+public class AutoAppPermissionFragment extends AutoSettingsFrameFragment {
+
+ private static final String LOG_TAG = "AppPermissionFragment";
+
+ @Retention(SOURCE)
+ @IntDef(value = {CHANGE_FOREGROUND, CHANGE_BACKGROUND}, flag = true)
+ @interface ChangeTarget {
+ }
+
+ static final int CHANGE_FOREGROUND = 1;
+ static final int CHANGE_BACKGROUND = 2;
+ static final int CHANGE_BOTH = CHANGE_FOREGROUND | CHANGE_BACKGROUND;
+
+ @NonNull
+ private AppPermissionGroup mGroup;
+
+ @NonNull
+ private TwoStatePreference mAlwaysPermissionPreference;
+ @NonNull
+ private TwoStatePreference mForegroundOnlyPermissionPreference;
+ @NonNull
+ private TwoStatePreference mDenyPermissionPreference;
+ @NonNull
+ private AutoTwoTargetPreference mDetailsPreference;
+
+ private boolean mHasConfirmedRevoke;
+
+ /**
+ * Listens for changes to the permission of the app the permission is currently getting
+ * granted to. {@code null} when unregistered.
+ */
+ @Nullable
+ private PackageManager.OnPermissionsChangedListener mPermissionChangeListener;
+
+ /**
+ * Listens for changes to the app the permission is currently getting granted to. {@code null}
+ * when unregistered.
+ */
+ @Nullable
+ private PackageRemovalMonitor mPackageRemovalMonitor;
+
+ /**
+ * Returns a new {@link AutoAppPermissionFragment}.
+ *
+ * @param packageName the package name for which the permission is being changed
+ * @param permName the name of the permission being changed
+ * @param groupName the name of the permission group being changed
+ * @param userHandle the user for which the permission is being changed
+ */
+ @NonNull
+ public static AutoAppPermissionFragment newInstance(@NonNull String packageName,
+ @NonNull String permName, @Nullable String groupName, @NonNull UserHandle userHandle) {
+ AutoAppPermissionFragment fragment = new AutoAppPermissionFragment();
+ Bundle arguments = new Bundle();
+ arguments.putString(Intent.EXTRA_PACKAGE_NAME, packageName);
+ if (groupName == null) {
+ arguments.putString(Intent.EXTRA_PERMISSION_NAME, permName);
+ } else {
+ arguments.putString(Intent.EXTRA_PERMISSION_GROUP_NAME, groupName);
+ }
+ arguments.putParcelable(Intent.EXTRA_USER, userHandle);
+ fragment.setArguments(arguments);
+ return fragment;
+ }
+
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ mHasConfirmedRevoke = false;
+
+ mGroup = getAppPermissionGroup();
+ if (mGroup == null) {
+ requireActivity().setResult(Activity.RESULT_CANCELED);
+ requireActivity().finish();
+ return;
+ }
+
+ setHeaderLabel(
+ getContext().getString(R.string.app_permission_title, mGroup.getFullLabel()));
+ }
+
+ private AppPermissionGroup getAppPermissionGroup() {
+ Activity activity = getActivity();
+ Context context = getPreferenceManager().getContext();
+
+ String packageName = getArguments().getString(Intent.EXTRA_PACKAGE_NAME);
+ String groupName = getArguments().getString(Intent.EXTRA_PERMISSION_GROUP_NAME);
+ if (groupName == null) {
+ groupName = getArguments().getString(Intent.EXTRA_PERMISSION_NAME);
+ }
+ PackageItemInfo groupInfo = Utils.getGroupInfo(groupName, context);
+ List<PermissionInfo> groupPermInfos = Utils.getGroupPermissionInfos(groupName, context);
+ if (groupInfo == null || groupPermInfos == null) {
+ Log.i(LOG_TAG, "Illegal group: " + groupName);
+ return null;
+ }
+ UserHandle userHandle = getArguments().getParcelable(Intent.EXTRA_USER);
+ PackageInfo packageInfo = AutoPermissionsUtils.getPackageInfo(activity, packageName,
+ userHandle);
+ if (packageInfo == null) {
+ Log.i(LOG_TAG, "PackageInfo is null");
+ return null;
+ }
+ AppPermissionGroup group = AppPermissionGroup.create(context, packageInfo, groupInfo,
+ groupPermInfos, false);
+
+ if (group == null || !Utils.shouldShowPermission(context, group)) {
+ Log.i(LOG_TAG, "Illegal group: " + (group == null ? "null" : group.getName()));
+ return null;
+ }
+
+ return group;
+ }
+
+ @Override
+ public void onCreatePreferences(Bundle bundle, String s) {
+ setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getContext()));
+ }
+
+ @Override
+ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+
+ PreferenceScreen screen = getPreferenceScreen();
+ screen.addPreference(
+ AutoPermissionsUtils.createHeaderPreference(getContext(),
+ mGroup.getApp().applicationInfo));
+
+ // Add permissions selector preferences.
+ PreferenceGroup permissionSelector = new PreferenceCategory(getContext());
+ permissionSelector.setTitle(
+ getContext().getString(R.string.app_permission_header, mGroup.getFullLabel()));
+ screen.addPreference(permissionSelector);
+
+ mAlwaysPermissionPreference = new SelectedPermissionPreference(getContext());
+ mAlwaysPermissionPreference.setTitle(R.string.app_permission_button_allow_always);
+ permissionSelector.addPreference(mAlwaysPermissionPreference);
+
+ mForegroundOnlyPermissionPreference = new SelectedPermissionPreference(getContext());
+ mForegroundOnlyPermissionPreference.setTitle(
+ R.string.app_permission_button_allow_foreground);
+ permissionSelector.addPreference(mForegroundOnlyPermissionPreference);
+
+ mDenyPermissionPreference = new SelectedPermissionPreference(getContext());
+ mDenyPermissionPreference.setTitle(R.string.app_permission_button_deny);
+ permissionSelector.addPreference(mDenyPermissionPreference);
+
+ mDetailsPreference = new AutoTwoTargetPreference(getContext());
+ screen.addPreference(mDetailsPreference);
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ Activity activity = requireActivity();
+
+ mPermissionChangeListener = new PermissionChangeListener(
+ mGroup.getApp().applicationInfo.uid);
+ PackageManager pm = activity.getPackageManager();
+ pm.addOnPermissionsChangeListener(mPermissionChangeListener);
+
+ // Get notified when the package is removed.
+ String packageName = mGroup.getApp().packageName;
+ mPackageRemovalMonitor = new PackageRemovalMonitor(getContext(), packageName) {
+ @Override
+ public void onPackageRemoved() {
+ Log.w(LOG_TAG, packageName + " was uninstalled");
+ activity.setResult(Activity.RESULT_CANCELED);
+ activity.finish();
+ }
+ };
+ mPackageRemovalMonitor.register();
+
+ // Check if the package was removed while this activity was not started.
+ try {
+ activity.createPackageContextAsUser(packageName, /* flags= */ 0,
+ mGroup.getUser()).getPackageManager().getPackageInfo(packageName,
+ /* flags= */ 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.w(LOG_TAG, packageName + " was uninstalled while this activity was stopped", e);
+ activity.setResult(Activity.RESULT_CANCELED);
+ activity.finish();
+ }
+
+ // Re-create the permission group in case permissions have changed and update the UI.
+ mGroup = getAppPermissionGroup();
+ updateUi();
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+
+ if (mPackageRemovalMonitor != null) {
+ mPackageRemovalMonitor.unregister();
+ mPackageRemovalMonitor = null;
+ }
+
+ if (mPermissionChangeListener != null) {
+ getActivity().getPackageManager().removeOnPermissionsChangeListener(
+ mPermissionChangeListener);
+ mPermissionChangeListener = null;
+ }
+ }
+
+ private void updateUi() {
+ mDetailsPreference.setOnSecondTargetClickListener(null);
+ mDetailsPreference.setVisible(false);
+
+ if (mGroup.areRuntimePermissionsGranted()) {
+ if (!mGroup.hasPermissionWithBackgroundMode()
+ || (mGroup.getBackgroundPermissions() != null
+ && mGroup.getBackgroundPermissions().areRuntimePermissionsGranted())) {
+ setSelectedPermissionState(mAlwaysPermissionPreference);
+ } else {
+ setSelectedPermissionState(mForegroundOnlyPermissionPreference);
+ }
+ } else {
+ setSelectedPermissionState(mDenyPermissionPreference);
+ }
+
+ mAlwaysPermissionPreference.setOnPreferenceClickListener(
+ v -> requestChange(/* requestGrant= */true, CHANGE_BOTH));
+ mForegroundOnlyPermissionPreference.setOnPreferenceClickListener(v -> {
+ requestChange(/* requestGrant= */false, CHANGE_BACKGROUND);
+ requestChange(/* requestGrant= */true, CHANGE_FOREGROUND);
+ return true;
+ });
+ mDenyPermissionPreference.setOnPreferenceClickListener(
+ v -> requestChange(/* requestGrant= */ false, CHANGE_BOTH));
+
+ // Set the allow and foreground-only button states appropriately.
+ if (mGroup.hasPermissionWithBackgroundMode()) {
+ if (mGroup.getBackgroundPermissions() == null) {
+ mAlwaysPermissionPreference.setVisible(false);
+ } else {
+ mForegroundOnlyPermissionPreference.setVisible(true);
+ mAlwaysPermissionPreference.setTitle(R.string.app_permission_button_allow_always);
+ }
+ } else {
+ mForegroundOnlyPermissionPreference.setVisible(false);
+ mAlwaysPermissionPreference.setTitle(R.string.app_permission_button_allow);
+ }
+
+ // Handle the UI for various special cases.
+ if (isSystemFixed() || isPolicyFullyFixed() || isForegroundDisabledByPolicy()) {
+ // Disable changing permissions and potentially show administrator message.
+ mAlwaysPermissionPreference.setEnabled(false);
+ mForegroundOnlyPermissionPreference.setEnabled(false);
+ mDenyPermissionPreference.setEnabled(false);
+
+ RestrictedLockUtils.EnforcedAdmin admin = getAdmin();
+ if (admin != null) {
+ mDetailsPreference.setWidgetLayoutResource(R.layout.info_preference_widget);
+ mDetailsPreference.setOnSecondTargetClickListener(
+ preference -> RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
+ getContext(), admin));
+ }
+
+ updateDetailForFixedByPolicyPermissionGroup();
+ } else if (Utils.areGroupPermissionsIndividuallyControlled(getContext(),
+ mGroup.getName())) {
+ // If the permissions are individually controlled, also show a link to the page that
+ // lets you control them.
+ mDetailsPreference.setWidgetLayoutResource(R.layout.settings_preference_widget);
+ mDetailsPreference.setOnSecondTargetClickListener(
+ preference -> showAllPermissions(mGroup.getName()));
+
+ updateDetailForIndividuallyControlledPermissionGroup();
+ } else {
+ if (mGroup.hasPermissionWithBackgroundMode()) {
+ if (mGroup.getBackgroundPermissions() == null) {
+ // The group has background permissions but the app did not request any. I.e.
+ // The app can only switch between 'never" and "only in foreground".
+ mAlwaysPermissionPreference.setEnabled(false);
+
+ mDenyPermissionPreference.setOnPreferenceClickListener(v -> requestChange(false,
+ CHANGE_FOREGROUND));
+ } else {
+ if (isBackgroundPolicyFixed()) {
+ // If background policy is fixed, we only allow switching the foreground.
+ // Note that this assumes that the background policy is fixed to deny,
+ // since if it is fixed to grant, so is the foreground.
+ mAlwaysPermissionPreference.setEnabled(false);
+ setSelectedPermissionState(mForegroundOnlyPermissionPreference);
+
+ mDenyPermissionPreference.setOnPreferenceClickListener(
+ v -> requestChange(false, CHANGE_FOREGROUND));
+
+ updateDetailForFixedByPolicyPermissionGroup();
+ } else if (isForegroundPolicyFixed()) {
+ // Foreground permissions are fixed to allow (the first case above handles
+ // fixing to deny), so we only allow toggling background permissions.
+ mDenyPermissionPreference.setEnabled(false);
+
+ mAlwaysPermissionPreference.setOnPreferenceClickListener(
+ v -> requestChange(true, CHANGE_BACKGROUND));
+ mForegroundOnlyPermissionPreference.setOnPreferenceClickListener(
+ v -> requestChange(false, CHANGE_BACKGROUND));
+
+ updateDetailForFixedByPolicyPermissionGroup();
+ } else {
+ // The default tri-state case is handled by default.
+ }
+ }
+
+ } else {
+ // The default bi-state case is handled by default.
+ }
+ }
+ }
+
+ /**
+ * Set the given permission state as the only checked permission state.
+ */
+ private void setSelectedPermissionState(@NonNull TwoStatePreference permissionState) {
+ permissionState.setChecked(true);
+ if (permissionState != mAlwaysPermissionPreference) {
+ mAlwaysPermissionPreference.setChecked(false);
+ }
+ if (permissionState != mForegroundOnlyPermissionPreference) {
+ mForegroundOnlyPermissionPreference.setChecked(false);
+ }
+ if (permissionState != mDenyPermissionPreference) {
+ mDenyPermissionPreference.setChecked(false);
+ }
+ }
+
+ /**
+ * Are any permissions of this group fixed by the system, i.e. not changeable by the user.
+ *
+ * @return {@code true} iff any permission is fixed
+ */
+ private boolean isSystemFixed() {
+ return mGroup.isSystemFixed();
+ }
+
+ /**
+ * Is any foreground permissions of this group fixed by the policy, i.e. not changeable by the
+ * user.
+ *
+ * @return {@code true} iff any foreground permission is fixed
+ */
+ private boolean isForegroundPolicyFixed() {
+ return mGroup.isPolicyFixed();
+ }
+
+ /**
+ * Is any background permissions of this group fixed by the policy, i.e. not changeable by the
+ * user.
+ *
+ * @return {@code true} iff any background permission is fixed
+ */
+ private boolean isBackgroundPolicyFixed() {
+ return mGroup.getBackgroundPermissions() != null
+ && mGroup.getBackgroundPermissions().isPolicyFixed();
+ }
+
+ /**
+ * Are there permissions fixed, so that the user cannot change the preference at all?
+ *
+ * @return {@code true} iff the permissions of this group are fixed
+ */
+ private boolean isPolicyFullyFixed() {
+ return isForegroundPolicyFixed() && (mGroup.getBackgroundPermissions() == null
+ || isBackgroundPolicyFixed());
+ }
+
+ /**
+ * Is the foreground part of this group disabled. If the foreground is disabled, there is no
+ * need to possible grant background access.
+ *
+ * @return {@code true} iff the permissions of this group are fixed
+ */
+ private boolean isForegroundDisabledByPolicy() {
+ return isForegroundPolicyFixed() && !mGroup.areRuntimePermissionsGranted();
+ }
+
+ /**
+ * Get the app that acts as admin for this profile.
+ *
+ * @return The admin or {@code null} if there is no admin.
+ */
+ @Nullable
+ private RestrictedLockUtils.EnforcedAdmin getAdmin() {
+ return RestrictedLockUtils.getProfileOrDeviceOwner(getContext(), mGroup.getUser());
+ }
+
+ /**
+ * Update the detail in the case the permission group has individually controlled permissions.
+ */
+ private void updateDetailForIndividuallyControlledPermissionGroup() {
+ int revokedCount = 0;
+ List<Permission> permissions = mGroup.getPermissions();
+ int permissionCount = permissions.size();
+ for (int i = 0; i < permissionCount; i++) {
+ Permission permission = permissions.get(i);
+ if (!permission.isGrantedIncludingAppOp()) {
+ revokedCount++;
+ }
+ }
+
+ int resId;
+ if (revokedCount == 0) {
+ resId = R.string.permission_revoked_none;
+ } else if (revokedCount == permissionCount) {
+ resId = R.string.permission_revoked_all;
+ } else {
+ resId = R.string.permission_revoked_count;
+ }
+
+ mDetailsPreference.setSummary(getContext().getString(resId, revokedCount));
+ mDetailsPreference.setVisible(true);
+ }
+
+ /**
+ * Update the detail of a permission group that is at least partially fixed by policy.
+ */
+ private void updateDetailForFixedByPolicyPermissionGroup() {
+ RestrictedLockUtils.EnforcedAdmin admin = getAdmin();
+ AppPermissionGroup backgroundGroup = mGroup.getBackgroundPermissions();
+
+ boolean hasAdmin = admin != null;
+
+ if (isSystemFixed()) {
+ // Permission is fully controlled by the system and cannot be switched
+
+ setDetail(R.string.permission_summary_enabled_system_fixed);
+ } else if (isForegroundDisabledByPolicy()) {
+ // Permission is fully controlled by policy and cannot be switched
+
+ if (hasAdmin) {
+ setDetail(R.string.disabled_by_admin);
+ } else {
+ // Disabled state will be displayed by switch, so no need to add text for that
+ setDetail(R.string.permission_summary_enforced_by_policy);
+ }
+ } else if (isPolicyFullyFixed()) {
+ // Permission is fully controlled by policy and cannot be switched
+
+ if (backgroundGroup == null) {
+ if (hasAdmin) {
+ setDetail(R.string.enabled_by_admin);
+ } else {
+ // Enabled state will be displayed by switch, so no need to add text for
+ // that
+ setDetail(R.string.permission_summary_enforced_by_policy);
+ }
+ } else {
+ if (backgroundGroup.areRuntimePermissionsGranted()) {
+ if (hasAdmin) {
+ setDetail(R.string.enabled_by_admin);
+ } else {
+ // Enabled state will be displayed by switch, so no need to add text for
+ // that
+ setDetail(R.string.permission_summary_enforced_by_policy);
+ }
+ } else {
+ if (hasAdmin) {
+ setDetail(
+ R.string.permission_summary_enabled_by_admin_foreground_only);
+ } else {
+ setDetail(
+ R.string.permission_summary_enabled_by_policy_foreground_only);
+ }
+ }
+ }
+ } else {
+ // Part of the permission group can still be switched
+
+ if (isBackgroundPolicyFixed()) {
+ if (backgroundGroup.areRuntimePermissionsGranted()) {
+ if (hasAdmin) {
+ setDetail(R.string.permission_summary_enabled_by_admin_background_only);
+ } else {
+ setDetail(R.string.permission_summary_enabled_by_policy_background_only);
+ }
+ } else {
+ if (hasAdmin) {
+ setDetail(R.string.permission_summary_disabled_by_admin_background_only);
+ } else {
+ setDetail(R.string.permission_summary_disabled_by_policy_background_only);
+ }
+ }
+ } else if (isForegroundPolicyFixed()) {
+ if (hasAdmin) {
+ setDetail(R.string.permission_summary_enabled_by_admin_foreground_only);
+ } else {
+ setDetail(R.string.permission_summary_enabled_by_policy_foreground_only);
+ }
+ }
+ }
+ }
+
+ /**
+ * Show the given string as informative text below permission picker preferences.
+ *
+ * @param strId the resourceId of the string to display.
+ */
+ private void setDetail(int strId) {
+ mDetailsPreference.setSummary(strId);
+ mDetailsPreference.setVisible(true);
+ }
+
+ /**
+ * Show all individual permissions in this group in a new fragment.
+ */
+ private void showAllPermissions(@NonNull String filterGroup) {
+ Fragment frag = AutoAllAppPermissionsFragment.newInstance(mGroup.getApp().packageName,
+ filterGroup, UserHandle.getUserHandleForUid(mGroup.getApp().applicationInfo.uid));
+ getFragmentManager().beginTransaction()
+ .replace(android.R.id.content, frag)
+ .addToBackStack("AllPerms")
+ .commit();
+ }
+
+ /**
+ * Request to grant/revoke permissions group.
+ *
+ * <p>Does <u>not</u> handle:
+ * <ul>
+ * <li>Individually granted permissions</li>
+ * <li>Permission groups with background permissions</li>
+ * </ul>
+ * <p><u>Does</u> handle:
+ * <ul>
+ * <li>Default grant permissions</li>
+ * </ul>
+ *
+ * @param requestGrant If this group should be granted
+ * @param changeTarget Which permission group (foreground/background/both) should be changed
+ * @return If the request was processed.
+ */
+ private boolean requestChange(boolean requestGrant, @ChangeTarget int changeTarget) {
+ if (LocationUtils.isLocationGroupAndProvider(getContext(), mGroup.getName(),
+ mGroup.getApp().packageName)) {
+ LocationUtils.showLocationDialog(getContext(),
+ Utils.getAppLabel(mGroup.getApp().applicationInfo, getContext()));
+
+ // The request was denied, so update the buttons.
+ updateUi();
+ return false;
+ }
+
+ if (requestGrant) {
+ if ((changeTarget & CHANGE_FOREGROUND) != 0) {
+ if (!mGroup.areRuntimePermissionsGranted()) {
+ SafetyNetLogger.logPermissionToggled(mGroup);
+ }
+
+ mGroup.grantRuntimePermissions(false);
+ }
+ if ((changeTarget & CHANGE_BACKGROUND) != 0) {
+ if (mGroup.getBackgroundPermissions() != null) {
+ if (!mGroup.getBackgroundPermissions().areRuntimePermissionsGranted()) {
+ SafetyNetLogger.logPermissionToggled(mGroup.getBackgroundPermissions());
+ }
+
+ mGroup.getBackgroundPermissions().grantRuntimePermissions(false);
+ }
+ }
+ } else {
+ boolean showDefaultDenyDialog = false;
+
+ if ((changeTarget & CHANGE_FOREGROUND) != 0
+ && mGroup.areRuntimePermissionsGranted()) {
+ showDefaultDenyDialog = mGroup.hasGrantedByDefaultPermission()
+ || !mGroup.doesSupportRuntimePermissions()
+ || mGroup.hasInstallToRuntimeSplit();
+ }
+ if ((changeTarget & CHANGE_BACKGROUND) != 0) {
+ if (mGroup.getBackgroundPermissions() != null
+ && mGroup.getBackgroundPermissions().areRuntimePermissionsGranted()) {
+ AppPermissionGroup bgPerm = mGroup.getBackgroundPermissions();
+ showDefaultDenyDialog |= bgPerm.hasGrantedByDefaultPermission()
+ || !bgPerm.doesSupportRuntimePermissions()
+ || bgPerm.hasInstallToRuntimeSplit();
+ }
+ }
+
+ if (showDefaultDenyDialog && !mHasConfirmedRevoke) {
+ showDefaultDenyDialog(changeTarget);
+ updateUi();
+ return false;
+ } else {
+ if ((changeTarget & CHANGE_FOREGROUND) != 0
+ && mGroup.areRuntimePermissionsGranted()) {
+ if (mGroup.areRuntimePermissionsGranted()) {
+ SafetyNetLogger.logPermissionToggled(mGroup);
+ }
+
+ mGroup.revokeRuntimePermissions(false);
+ }
+ if ((changeTarget & CHANGE_BACKGROUND) != 0) {
+ if (mGroup.getBackgroundPermissions() != null
+ && mGroup.getBackgroundPermissions().areRuntimePermissionsGranted()) {
+ if (mGroup.getBackgroundPermissions().areRuntimePermissionsGranted()) {
+ SafetyNetLogger.logPermissionToggled(mGroup.getBackgroundPermissions());
+ }
+
+ mGroup.getBackgroundPermissions().revokeRuntimePermissions(false);
+ }
+ }
+ }
+ }
+
+ updateUi();
+
+ return true;
+ }
+
+ /**
+ * Show a dialog that warns the user that she/he is about to revoke permissions that were
+ * granted by default.
+ *
+ * <p>The order of operation to revoke a permission granted by default is:
+ * <ol>
+ * <li>{@code showDefaultDenyDialog}</li>
+ * <li>{@link DefaultDenyDialog#onCreateDialog}</li>
+ * <li>{@link AutoAppPermissionFragment#onDenyAnyWay}</li>
+ * </ol>
+ *
+ * @param changeTarget Whether background or foreground should be changed
+ */
+ private void showDefaultDenyDialog(@ChangeTarget int changeTarget) {
+ Bundle args = new Bundle();
+
+ boolean showGrantedByDefaultWarning = false;
+ if ((changeTarget & CHANGE_FOREGROUND) != 0) {
+ showGrantedByDefaultWarning = mGroup.hasGrantedByDefaultPermission();
+ }
+ if ((changeTarget & CHANGE_BACKGROUND) != 0) {
+ if (mGroup.getBackgroundPermissions() != null) {
+ showGrantedByDefaultWarning |=
+ mGroup.getBackgroundPermissions().hasGrantedByDefaultPermission();
+ }
+ }
+
+ args.putInt(DefaultDenyDialog.MSG, showGrantedByDefaultWarning ? R.string.system_warning
+ : R.string.old_sdk_deny_warning);
+ args.putInt(DefaultDenyDialog.CHANGE_TARGET, changeTarget);
+
+ DefaultDenyDialog defaultDenyDialog = new DefaultDenyDialog();
+ defaultDenyDialog.setArguments(args);
+ defaultDenyDialog.setTargetFragment(this, 0);
+ defaultDenyDialog.show(getFragmentManager().beginTransaction(),
+ DefaultDenyDialog.class.getName());
+ }
+
+ /**
+ * Once we user has confirmed that he/she wants to revoke a permission that was granted by
+ * default, actually revoke the permissions.
+ *
+ * @param changeTarget whether to change foreground, background, or both.
+ * @see #showDefaultDenyDialog(int)
+ */
+ void onDenyAnyWay(@ChangeTarget int changeTarget) {
+ boolean hasDefaultPermissions = false;
+ if ((changeTarget & CHANGE_FOREGROUND) != 0) {
+ if (mGroup.areRuntimePermissionsGranted()) {
+ SafetyNetLogger.logPermissionToggled(mGroup);
+ }
+
+ mGroup.revokeRuntimePermissions(false);
+ hasDefaultPermissions = mGroup.hasGrantedByDefaultPermission();
+ }
+ if ((changeTarget & CHANGE_BACKGROUND) != 0) {
+ if (mGroup.getBackgroundPermissions() != null) {
+ if (mGroup.getBackgroundPermissions().areRuntimePermissionsGranted()) {
+ SafetyNetLogger.logPermissionToggled(mGroup.getBackgroundPermissions());
+ }
+
+ mGroup.getBackgroundPermissions().revokeRuntimePermissions(false);
+ hasDefaultPermissions |=
+ mGroup.getBackgroundPermissions().hasGrantedByDefaultPermission();
+ }
+ }
+
+ if (hasDefaultPermissions || !mGroup.doesSupportRuntimePermissions()) {
+ mHasConfirmedRevoke = true;
+ }
+ updateUi();
+ }
+
+ /** Preference used to represent apps that can be picked as a default app. */
+ private static class SelectedPermissionPreference extends TwoStatePreference {
+
+ SelectedPermissionPreference(Context context) {
+ super(context, null, TypedArrayUtils.getAttr(context, R.attr.preferenceStyle,
+ android.R.attr.preferenceStyle));
+ setPersistent(false);
+ }
+
+ @Override
+ public void setChecked(boolean checked) {
+ super.setChecked(checked);
+ setSummary(checked ? getContext().getString(R.string.car_permission_selected) : null);
+ }
+ }
+
+ /**
+ * A dialog warning the user that they are about to deny a permission that was granted by
+ * default.
+ *
+ * @see #showDefaultDenyDialog(int)
+ */
+ public static class DefaultDenyDialog extends DialogFragment {
+ private static final String MSG = DefaultDenyDialog.class.getName() + ".arg.msg";
+ private static final String CHANGE_TARGET = DefaultDenyDialog.class.getName()
+ + ".arg.changeTarget";
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ AutoAppPermissionFragment fragment = (AutoAppPermissionFragment) getTargetFragment();
+ AlertDialog.Builder b = new AlertDialog.Builder(getContext())
+ .setMessage(getArguments().getInt(MSG))
+ .setNegativeButton(R.string.cancel,
+ (dialog, which) -> fragment.updateUi())
+ .setPositiveButton(R.string.grant_dialog_button_deny_anyway,
+ (dialog, which) ->
+ fragment.onDenyAnyWay(getArguments().getInt(CHANGE_TARGET)));
+
+ return b.create();
+ }
+ }
+
+ /**
+ * A listener for permission changes.
+ */
+ private class PermissionChangeListener implements PackageManager.OnPermissionsChangedListener {
+ private final int mUid;
+
+ PermissionChangeListener(int uid) {
+ mUid = uid;
+ }
+
+ @Override
+ public void onPermissionsChanged(int uid) {
+ if (uid == mUid) {
+ Log.w(LOG_TAG, "Permissions changed.");
+ mGroup = getAppPermissionGroup();
+ updateUi();
+ }
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/ui/auto/AutoAppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/auto/AutoAppPermissionsFragment.java
new file mode 100644
index 0000000..010fa7a
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/auto/AutoAppPermissionsFragment.java
@@ -0,0 +1,292 @@
+/*
+ * 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.packageinstaller.permission.ui.auto;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageInfo;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceScreen;
+
+import com.android.packageinstaller.auto.AutoSettingsFrameFragment;
+import com.android.packageinstaller.permission.model.AppPermissionGroup;
+import com.android.packageinstaller.permission.model.AppPermissions;
+import com.android.packageinstaller.permission.ui.AppPermissionActivity;
+import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
+
+import java.text.Collator;
+import java.util.ArrayList;
+
+/** Screen to show the permissions for a specific application. */
+public class AutoAppPermissionsFragment extends AutoSettingsFrameFragment {
+
+ private static final String KEY_ALLOWED_PERMISSIONS_GROUP = "allowed_permissions_group";
+ private static final String KEY_DENIED_PERMISSIONS_GROUP = "denied_permissions_group";
+
+ private AppPermissions mAppPermissions;
+ private PreferenceScreen mExtraScreen;
+
+ private Collator mCollator;
+
+ /**
+ * @return A new fragment
+ */
+ public static AutoAppPermissionsFragment newInstance(@NonNull String packageName,
+ @NonNull UserHandle userHandle) {
+ return setPackageNameAndUserHandle(new AutoAppPermissionsFragment(), packageName,
+ userHandle);
+ }
+
+ private static <T extends Fragment> T setPackageNameAndUserHandle(@NonNull T fragment,
+ @NonNull String packageName, @NonNull UserHandle userHandle) {
+ Bundle arguments = new Bundle();
+ arguments.putString(Intent.EXTRA_PACKAGE_NAME, packageName);
+ arguments.putParcelable(Intent.EXTRA_USER, userHandle);
+ fragment.setArguments(arguments);
+ return fragment;
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setLoading(true);
+
+ String packageName = getArguments().getString(Intent.EXTRA_PACKAGE_NAME);
+ UserHandle userHandle = getArguments().getParcelable(Intent.EXTRA_USER);
+ Activity activity = requireActivity();
+ PackageInfo packageInfo = AutoPermissionsUtils.getPackageInfo(activity, packageName,
+ userHandle);
+ if (packageInfo == null) {
+ Toast.makeText(getContext(), R.string.app_not_found_dlg_title,
+ Toast.LENGTH_LONG).show();
+ activity.finish();
+ 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));
+ }
+
+ @Override
+ public void onCreatePreferences(Bundle bundle, String s) {
+ 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),
+ getArguments().getParcelable(Intent.EXTRA_USER));
+ getFragmentManager().beginTransaction()
+ .replace(android.R.id.content, frag)
+ .addToBackStack("AllPerms")
+ .commit();
+ }
+
+ protected void bindUi(PackageInfo packageInfo) {
+ getPreferenceScreen().addPreference(
+ AutoPermissionsUtils.createHeaderPreference(getContext(),
+ packageInfo.applicationInfo));
+
+ PreferenceGroup allowed = new PreferenceCategory(getContext());
+ allowed.setKey(KEY_ALLOWED_PERMISSIONS_GROUP);
+ allowed.setTitle(R.string.allowed_header);
+ getPreferenceScreen().addPreference(allowed);
+
+ PreferenceGroup denied = new PreferenceCategory(getContext());
+ denied.setKey(KEY_DENIED_PERMISSIONS_GROUP);
+ denied.setTitle(R.string.denied_header);
+ getPreferenceScreen().addPreference(denied);
+ }
+
+ private void updatePreferences() {
+ Context context = getPreferenceManager().getContext();
+ if (context == null) {
+ return;
+ }
+
+ PreferenceCategory allowed = findPreference(KEY_ALLOWED_PERMISSIONS_GROUP);
+ PreferenceCategory denied = findPreference(KEY_DENIED_PERMISSIONS_GROUP);
+
+ allowed.removeAll();
+ denied.removeAll();
+
+ if (mExtraScreen != null) {
+ mExtraScreen.removeAll();
+ mExtraScreen.addPreference(AutoPermissionsUtils.createHeaderPreference(getContext(),
+ mAppPermissions.getPackageInfo().applicationInfo));
+ }
+
+ Preference extraPerms = new Preference(context);
+ extraPerms.setIcon(R.drawable.ic_toc);
+ extraPerms.setTitle(R.string.additional_permissions);
+ boolean extraPermsAreAllowed = false;
+
+ ArrayList<AppPermissionGroup> groups = new ArrayList<>(
+ mAppPermissions.getPermissionGroups());
+ groups.sort((x, y) -> mCollator.compare(x.getLabel(), y.getLabel()));
+ allowed.setOrderingAsAdded(true);
+ denied.setOrderingAsAdded(true);
+
+ for (int i = 0; i < groups.size(); i++) {
+ AppPermissionGroup group = groups.get(i);
+ if (!Utils.shouldShowPermission(getContext(), group)) {
+ continue;
+ }
+
+ boolean isPlatform = group.getDeclaringPackage().equals(Utils.OS_PKG);
+
+ Preference preference = createPermissionPreference(getContext(), group);
+ if (isPlatform) {
+ PreferenceCategory category =
+ group.areRuntimePermissionsGranted() ? allowed : denied;
+ category.addPreference(preference);
+ } else {
+ if (mExtraScreen == null) {
+ mExtraScreen = getPreferenceManager().createPreferenceScreen(context);
+ mExtraScreen.addPreference(
+ AutoPermissionsUtils.createHeaderPreference(getContext(),
+ mAppPermissions.getPackageInfo().applicationInfo));
+ }
+ mExtraScreen.addPreference(preference);
+ if (group.areRuntimePermissionsGranted()) {
+ extraPermsAreAllowed = true;
+ }
+ }
+ }
+
+ if (mExtraScreen != null) {
+ extraPerms.setOnPreferenceClickListener(preference -> {
+ AutoAppPermissionsFragment.AdditionalPermissionsFragment
+ frag = new AutoAppPermissionsFragment.AdditionalPermissionsFragment();
+ setPackageNameAndUserHandle(frag,
+ getArguments().getString(Intent.EXTRA_PACKAGE_NAME),
+ getArguments().getParcelable(Intent.EXTRA_USER));
+ frag.setTargetFragment(AutoAppPermissionsFragment.this, 0);
+ getFragmentManager().beginTransaction()
+ .replace(android.R.id.content, frag)
+ .addToBackStack(null)
+ .commit();
+ return true;
+ });
+ // Delete 1 to account for app header preference.
+ int count = mExtraScreen.getPreferenceCount() - 1;
+ extraPerms.setSummary(getResources().getQuantityString(
+ R.plurals.additional_permissions_more, count,
+ count));
+ PreferenceCategory category = extraPermsAreAllowed ? allowed : denied;
+ category.addPreference(extraPerms);
+ }
+
+ if (allowed.getPreferenceCount() == 0) {
+ Preference empty = new Preference(context);
+ empty.setTitle(getString(R.string.no_permissions_allowed));
+ empty.setSelectable(false);
+ allowed.addPreference(empty);
+ }
+ if (denied.getPreferenceCount() == 0) {
+ Preference empty = new Preference(context);
+ empty.setTitle(getString(R.string.no_permissions_denied));
+ empty.setSelectable(false);
+ denied.addPreference(empty);
+ }
+
+ setLoading(false);
+ }
+
+ private Preference createPermissionPreference(Context context, AppPermissionGroup group) {
+ Preference preference = new Preference(context);
+ Drawable icon = Utils.loadDrawable(context.getPackageManager(),
+ group.getIconPkg(), group.getIconResId());
+ preference.setKey(group.getName());
+ preference.setTitle(group.getFullLabel());
+ preference.setIcon(Utils.applyTint(context, icon, android.R.attr.colorControlNormal));
+ preference.setOnPreferenceClickListener(pref -> {
+ Intent intent = new Intent(Intent.ACTION_MANAGE_APP_PERMISSION);
+ intent.putExtra(Intent.EXTRA_PACKAGE_NAME, group.getApp().packageName);
+ intent.putExtra(Intent.EXTRA_PERMISSION_NAME, group.getPermissions().get(0).getName());
+ intent.putExtra(Intent.EXTRA_USER, group.getUser());
+ intent.putExtra(AppPermissionActivity.EXTRA_CALLER_NAME,
+ AutoAppPermissionsFragment.class.getName());
+ context.startActivity(intent);
+ return true;
+ });
+ return preference;
+ }
+
+ private String getGroupSummary(AppPermissionGroup group) {
+ if (group.hasPermissionWithBackgroundMode() && group.areRuntimePermissionsGranted()) {
+ AppPermissionGroup backgroundGroup = group.getBackgroundPermissions();
+ if (backgroundGroup == null || !backgroundGroup.areRuntimePermissionsGranted()) {
+ return getContext().getString(R.string.permission_subtitle_only_in_foreground);
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Class that shows additional permissions.
+ */
+ public static class AdditionalPermissionsFragment extends AutoSettingsFrameFragment {
+ AutoAppPermissionsFragment mOuterFragment;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ // Set this before calling super.onCreate as it is needed in onCreatePreferences
+ // (which is called from super.onCreate).
+ mOuterFragment = (AutoAppPermissionsFragment) getTargetFragment();
+ super.onCreate(savedInstanceState);
+ setHeaderLabel(mOuterFragment.getHeaderLabel());
+ }
+
+ @Override
+ public void onCreatePreferences(Bundle bundle, String s) {
+ setPreferenceScreen(mOuterFragment.mExtraScreen);
+ }
+ }
+}
+
diff --git a/src/com/android/packageinstaller/permission/ui/auto/AutoManageCustomPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/auto/AutoManageCustomPermissionsFragment.java
new file mode 100644
index 0000000..9b1d0db
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/auto/AutoManageCustomPermissionsFragment.java
@@ -0,0 +1,33 @@
+/*
+ * 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.packageinstaller.permission.ui.auto;
+
+import com.android.permissioncontroller.R;
+
+/** Shows additional non-system permissions that can be granted/denied. */
+public class AutoManageCustomPermissionsFragment extends AutoManagePermissionsFragment {
+
+ @Override
+ protected int getScreenHeaderRes() {
+ return R.string.additional_permissions;
+ }
+
+ @Override
+ protected void updatePermissionsUi() {
+ updatePermissionsUi(/* addSystemPermissions= */ false);
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/ui/auto/AutoManagePermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/auto/AutoManagePermissionsFragment.java
new file mode 100644
index 0000000..2bff3ee
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/auto/AutoManagePermissionsFragment.java
@@ -0,0 +1,151 @@
+/*
+ * 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.packageinstaller.permission.ui.auto;
+
+import android.content.ActivityNotFoundException;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+import androidx.preference.Preference;
+
+import com.android.packageinstaller.auto.AutoSettingsFrameFragment;
+import com.android.packageinstaller.permission.model.PermissionGroup;
+import com.android.packageinstaller.permission.model.PermissionGroups;
+import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
+
+import java.text.Collator;
+import java.util.ArrayList;
+
+/** Base class to show the list of permissions that can be granted/denied. */
+abstract class AutoManagePermissionsFragment extends AutoSettingsFrameFragment implements
+ PermissionGroups.PermissionsGroupsChangeCallback, Preference.OnPreferenceClickListener {
+
+ private static final String LOG_TAG = "ManagePermissionsFragment";
+
+ static final String OS_PKG = "android";
+
+ private PermissionGroups mPermissions;
+
+ private Collator mCollator;
+
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setLoading(true);
+
+ mPermissions = new PermissionGroups(getContext(), requireActivity().getLoaderManager(),
+ /* callback= */ this, /* getAppUiInfo= */ false,
+ /* getNonPlatformPermissions= */ true);
+ mCollator = Collator.getInstance(
+ getContext().getResources().getConfiguration().getLocales().get(0));
+
+ setHeaderLabel(getString(getScreenHeaderRes()));
+ }
+
+ @Override
+ public void onCreatePreferences(Bundle bundle, String s) {
+ setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getContext()));
+ }
+
+ @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;
+ }
+
+ /** Returns the header string resource. */
+ @StringRes
+ protected abstract int getScreenHeaderRes();
+
+ /** Returns the current permissions. */
+ protected PermissionGroups getPermissions() {
+ return mPermissions;
+ }
+
+ @Override
+ public void onPermissionGroupsChanged() {
+ updatePermissionsUi();
+ }
+
+ /** Update the preferences to show the new {@link #getPermissions() permissions}. */
+ protected abstract void updatePermissionsUi();
+
+ /**
+ * Add preferences for all permissions of a type to the preference screen.
+ */
+ protected void updatePermissionsUi(boolean addSystemPermissions) {
+ Context context = getPreferenceManager().getContext();
+ if (context == null || getActivity() == null) {
+ return;
+ }
+
+ ArrayList<PermissionGroup> groups = new ArrayList<>(mPermissions.getGroups());
+ groups.sort((x, y) -> mCollator.compare(x.getLabel(), y.getLabel()));
+ getPreferenceScreen().removeAll();
+ getPreferenceScreen().setOrderingAsAdded(true);
+
+ // 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.
+ for (int i = 0; i < groups.size(); i++) {
+ PermissionGroup group = groups.get(i);
+ boolean isSystemPermission = group.getDeclaringPackage().equals(OS_PKG);
+
+ if (addSystemPermissions == isSystemPermission) {
+ Preference preference = 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);
+ getPreferenceScreen().addPreference(preference);
+ }
+ preference.setSummary(
+ getString(R.string.app_permissions_group_summary, group.getGranted(),
+ group.getTotal()));
+ }
+ }
+ if (getPreferenceScreen().getPreferenceCount() != 0) {
+ setLoading(false);
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/ui/auto/AutoManageStandardPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/auto/AutoManageStandardPermissionsFragment.java
new file mode 100644
index 0000000..1cbfb0a
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/auto/AutoManageStandardPermissionsFragment.java
@@ -0,0 +1,91 @@
+/*
+ * 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.packageinstaller.permission.ui.auto;
+
+import androidx.fragment.app.FragmentTransaction;
+import androidx.preference.Preference;
+
+import com.android.packageinstaller.permission.model.PermissionGroup;
+import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
+
+import java.util.List;
+
+/** Shows the standard permissions that can be granted/denied. */
+public class AutoManageStandardPermissionsFragment extends AutoManagePermissionsFragment {
+
+ private static final String EXTRA_PREFS_KEY = "extra_prefs_key";
+
+ /** Returns a new instance of {@link AutoManageStandardPermissionsFragment}. */
+ public static AutoManageStandardPermissionsFragment newInstance() {
+ return new AutoManageStandardPermissionsFragment();
+ }
+
+ @Override
+ protected int getScreenHeaderRes() {
+ return R.string.app_permission_manager;
+ }
+
+ @Override
+ protected void updatePermissionsUi() {
+ updatePermissionsUi(/* addSystemPermissions= */ true);
+
+ // Check if we need an additional permissions preference
+ List<PermissionGroup> groups = getPermissions().getGroups();
+ int numExtraPermissions = 0;
+ for (PermissionGroup group : groups) {
+ if (!group.getDeclaringPackage().equals(AutoManagePermissionsFragment.OS_PKG)) {
+ numExtraPermissions++;
+ }
+ }
+
+ Preference additionalPermissionsPreference = getPreferenceScreen().findPreference(
+ EXTRA_PREFS_KEY);
+ if (numExtraPermissions == 0) {
+ if (additionalPermissionsPreference != null) {
+ getPreferenceScreen().removePreference(additionalPermissionsPreference);
+ }
+ } else {
+ if (additionalPermissionsPreference == null) {
+ additionalPermissionsPreference = new Preference(
+ getPreferenceManager().getContext());
+ additionalPermissionsPreference.setKey(EXTRA_PREFS_KEY);
+ additionalPermissionsPreference.setIcon(Utils.applyTint(getActivity(),
+ R.drawable.ic_more_items,
+ android.R.attr.colorControlNormal));
+ additionalPermissionsPreference.setTitle(R.string.additional_permissions);
+ additionalPermissionsPreference.setOnPreferenceClickListener(preference -> {
+ AutoManageCustomPermissionsFragment frag =
+ new AutoManageCustomPermissionsFragment();
+ 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(additionalPermissionsPreference);
+ }
+
+ additionalPermissionsPreference.setSummary(getResources().getQuantityString(
+ R.plurals.additional_permissions_more, numExtraPermissions,
+ numExtraPermissions));
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/ui/auto/AutoPermissionAppsFragment.java b/src/com/android/packageinstaller/permission/ui/auto/AutoPermissionAppsFragment.java
new file mode 100644
index 0000000..9d31000
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/auto/AutoPermissionAppsFragment.java
@@ -0,0 +1,304 @@
+/*
+ * 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.packageinstaller.permission.ui.auto;
+
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.util.ArrayMap;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceGroup;
+
+import com.android.packageinstaller.auto.AutoSettingsFrameFragment;
+import com.android.packageinstaller.permission.model.AppPermissionGroup;
+import com.android.packageinstaller.permission.model.PermissionApps;
+import com.android.packageinstaller.permission.model.PermissionApps.Callback;
+import com.android.packageinstaller.permission.ui.handheld.PermissionAppsFragment;
+import com.android.packageinstaller.permission.ui.handheld.PermissionControlPreference;
+import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
+
+import java.text.Collator;
+import java.util.ArrayList;
+import java.util.Map;
+
+/** Shows the list of applications which have (or do not have) the given permission. */
+public class AutoPermissionAppsFragment extends AutoSettingsFrameFragment implements Callback {
+
+ private static final String KEY_SHOW_SYSTEM_PREFS = "_showSystem";
+ private static final String KEY_ALLOWED_PERMISSIONS_GROUP = "allowed_permissions_group";
+ private static final String KEY_ALLOWED_FOREGROUND_PERMISSIONS_GROUP =
+ "allowed_foreground_permissions_group";
+ private static final String KEY_DENIED_PERMISSIONS_GROUP = "denied_permissions_group";
+
+ private static final String SHOW_SYSTEM_KEY = AutoPermissionAppsFragment.class.getName()
+ + KEY_SHOW_SYSTEM_PREFS;
+
+ /** Creates a new instance of {@link AutoPermissionAppsFragment} for the given permission. */
+ public static AutoPermissionAppsFragment newInstance(String permissionName) {
+ return setPermissionName(new AutoPermissionAppsFragment(), permissionName);
+ }
+
+ private static <T extends Fragment> T setPermissionName(T fragment, String permissionName) {
+ Bundle arguments = new Bundle();
+ arguments.putString(Intent.EXTRA_PERMISSION_NAME, permissionName);
+ fragment.setArguments(arguments);
+ return fragment;
+ }
+
+ private PermissionApps mPermissionApps;
+
+ private boolean mShowSystem;
+ private boolean mHasSystemApps;
+
+ private Collator mCollator;
+
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ if (savedInstanceState != null) {
+ mShowSystem = savedInstanceState.getBoolean(SHOW_SYSTEM_KEY);
+ }
+
+ setLoading(true);
+
+ String groupName = getArguments().getString(Intent.EXTRA_PERMISSION_NAME);
+ mPermissionApps = new PermissionApps(getActivity(), groupName, /* callback= */ this);
+ mPermissionApps.refresh(/* getUiInfo= */ true);
+
+ mCollator = Collator.getInstance(
+ getContext().getResources().getConfiguration().getLocales().get(0));
+
+ setShowSystemAppsToggle();
+ bindUi(mPermissionApps, groupName);
+ }
+
+ @Override
+ public void onCreatePreferences(Bundle bundle, String s) {
+ setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getContext()));
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+
+ outState.putBoolean(SHOW_SYSTEM_KEY, mShowSystem);
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ mPermissionApps.refresh(/* getUiInfo= */ true);
+ }
+
+ private void setShowSystemAppsToggle() {
+ if (!mHasSystemApps) {
+ setAction(/* label= */ null, /* onClickListener= */ null);
+ return;
+ }
+
+ // Show the opposite label from the current state.
+ String label;
+ if (mShowSystem) {
+ label = getString(R.string.menu_hide_system);
+ } else {
+ label = getString(R.string.menu_show_system);
+ }
+
+ setAction(label, v -> {
+ mShowSystem = !mShowSystem;
+ if (mPermissionApps.getApps() != null) {
+ onPermissionsLoaded(mPermissionApps);
+ }
+ setShowSystemAppsToggle();
+ });
+ }
+
+ private void bindUi(PermissionApps permissionApps, @NonNull String groupName) {
+ CharSequence label = permissionApps.getFullLabel();
+ setHeaderLabel(label);
+
+ Drawable icon = permissionApps.getIcon();
+ Preference header = new Preference(getContext());
+ header.setTitle(label);
+ header.setIcon(icon);
+ header.setSummary(Utils.getPermissionGroupDescriptionString(getContext(), groupName,
+ permissionApps.getDescription()));
+ getPreferenceScreen().addPreference(header);
+
+ PreferenceGroup allowed = new PreferenceCategory(getContext());
+ allowed.setKey(KEY_ALLOWED_PERMISSIONS_GROUP);
+ allowed.setTitle(R.string.allowed_header);
+ allowed.setVisible(false);
+ getPreferenceScreen().addPreference(allowed);
+
+ PreferenceGroup foreground = new PreferenceCategory(getContext());
+ foreground.setKey(KEY_ALLOWED_FOREGROUND_PERMISSIONS_GROUP);
+ foreground.setTitle(R.string.allowed_foreground_header);
+ foreground.setVisible(false);
+ getPreferenceScreen().addPreference(foreground);
+
+ PreferenceGroup denied = new PreferenceCategory(getContext());
+ denied.setKey(KEY_DENIED_PERMISSIONS_GROUP);
+ denied.setTitle(R.string.denied_header);
+ denied.setVisible(false);
+ getPreferenceScreen().addPreference(denied);
+ }
+
+ @Override
+ public void onPermissionsLoaded(PermissionApps permissionApps) {
+ Context context = getPreferenceManager().getContext();
+
+ if (context == null || getActivity() == null) {
+ return;
+ }
+
+ PreferenceCategory allowed = findPreference(KEY_ALLOWED_PERMISSIONS_GROUP);
+ PreferenceCategory allowedForeground = findPreference(
+ KEY_ALLOWED_FOREGROUND_PERMISSIONS_GROUP);
+ PreferenceCategory denied = findPreference(KEY_DENIED_PERMISSIONS_GROUP);
+
+ allowed.setOrderingAsAdded(true);
+ allowedForeground.setOrderingAsAdded(true);
+ denied.setOrderingAsAdded(true);
+
+ Map<String, Preference> existingPrefs = new ArrayMap<>();
+ int numPreferences = allowed.getPreferenceCount();
+ for (int i = 0; i < numPreferences; i++) {
+ Preference preference = allowed.getPreference(i);
+ existingPrefs.put(preference.getKey(), preference);
+ }
+ allowed.removeAll();
+ numPreferences = allowedForeground.getPreferenceCount();
+ for (int i = 0; i < numPreferences; i++) {
+ Preference preference = allowedForeground.getPreference(i);
+ existingPrefs.put(preference.getKey(), preference);
+ }
+ allowedForeground.removeAll();
+ numPreferences = denied.getPreferenceCount();
+ for (int i = 0; i < numPreferences; i++) {
+ Preference preference = denied.getPreference(i);
+ existingPrefs.put(preference.getKey(), preference);
+ }
+ denied.removeAll();
+
+ mHasSystemApps = false;
+ boolean hasPermissionWithBackgroundMode = false;
+
+ ArrayList<PermissionApps.PermissionApp> sortedApps = new ArrayList<>(
+ permissionApps.getApps());
+ sortedApps.sort((x, y) -> {
+ int result = mCollator.compare(x.getLabel(), y.getLabel());
+ if (result == 0) {
+ result = x.getUid() - y.getUid();
+ }
+ return result;
+ });
+
+ for (int i = 0; i < sortedApps.size(); i++) {
+ PermissionApps.PermissionApp app = sortedApps.get(i);
+ AppPermissionGroup group = app.getPermissionGroup();
+
+ hasPermissionWithBackgroundMode =
+ hasPermissionWithBackgroundMode || group.hasPermissionWithBackgroundMode();
+
+ if (!Utils.shouldShowPermission(getContext(), group)) {
+ continue;
+ }
+
+ if (!app.getAppInfo().enabled) {
+ continue;
+ }
+
+ String key = app.getKey();
+ Preference existingPref = existingPrefs.get(key);
+ if (existingPref != null) {
+ // Without this, existing preferences remember their old order.
+ existingPref.setOrder(Preference.DEFAULT_ORDER);
+ }
+
+ boolean isSystemApp = !Utils.isGroupOrBgGroupUserSensitive(group);
+
+ if (isSystemApp) {
+ mHasSystemApps = true;
+ }
+
+ if (isSystemApp && !mShowSystem) {
+ continue;
+ }
+
+ PreferenceCategory category;
+ if (group.areRuntimePermissionsGranted()) {
+ if (!group.hasPermissionWithBackgroundMode()
+ || (group.getBackgroundPermissions() != null
+ && group.getBackgroundPermissions().areRuntimePermissionsGranted())) {
+ category = allowed;
+ } else {
+ category = allowedForeground;
+ }
+ } else {
+ category = denied;
+ }
+
+ if (existingPref != null) {
+ category.addPreference(existingPref);
+ continue;
+ }
+
+ PermissionControlPreference pref = new PermissionControlPreference(context, group,
+ PermissionAppsFragment.class.getName());
+ pref.setKey(key);
+ pref.setIcon(app.getIcon());
+ pref.setTitle(Utils.getFullAppLabel(app.getAppInfo(), context));
+ pref.setEllipsizeEnd();
+ pref.useSmallerIcon();
+ category.addPreference(pref);
+ }
+
+ if (hasPermissionWithBackgroundMode) {
+ allowed.setTitle(R.string.allowed_always_header);
+ }
+
+ if (allowed.getPreferenceCount() == 0) {
+ Preference empty = new Preference(context);
+ empty.setTitle(R.string.no_apps_allowed);
+ empty.setSelectable(false);
+ allowed.addPreference(empty);
+ }
+ allowed.setVisible(true);
+
+ allowedForeground.setVisible(allowedForeground.getPreferenceCount() > 0);
+
+ if (denied.getPreferenceCount() == 0) {
+ Preference empty = new Preference(context);
+ empty.setTitle(R.string.no_apps_denied);
+ empty.setSelectable(false);
+ denied.addPreference(empty);
+ }
+ denied.setVisible(true);
+
+ setShowSystemAppsToggle();
+ setLoading(false);
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/ui/auto/AutoPermissionsUtils.java b/src/com/android/packageinstaller/permission/ui/auto/AutoPermissionsUtils.java
new file mode 100644
index 0000000..77c07c7
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/auto/AutoPermissionsUtils.java
@@ -0,0 +1,62 @@
+/*
+ * 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.packageinstaller.permission.ui.auto;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.graphics.drawable.Drawable;
+import android.os.UserHandle;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.preference.Preference;
+
+import com.android.packageinstaller.permission.utils.Utils;
+
+/** Common utilities shared between permissions settings. */
+public final class AutoPermissionsUtils {
+ private static final String LOG_TAG = "AutoPermissionsUtils";
+
+ private AutoPermissionsUtils() {
+ }
+
+ /** Gets the {@link PackageInfo} for the given package name and user. */
+ public static PackageInfo getPackageInfo(Activity activity, @NonNull String packageName,
+ @NonNull UserHandle userHandle) {
+ try {
+ return activity.createPackageContextAsUser(packageName, 0, userHandle)
+ .getPackageManager()
+ .getPackageInfo(packageName, PackageManager.GET_PERMISSIONS);
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.i(LOG_TAG, "No package:" + activity.getCallingPackage(), e);
+ return null;
+ }
+ }
+
+ /** Creates a {@link Preference} which shows the app icon and app name. */
+ public static Preference createHeaderPreference(Context context, ApplicationInfo appInfo) {
+ Drawable icon = Utils.getBadgedIcon(context, appInfo);
+ Preference preference = new Preference(context);
+ preference.setIcon(icon);
+ preference.setKey(appInfo.packageName);
+ preference.setTitle(Utils.getFullAppLabel(appInfo, context));
+ return preference;
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/ui/auto/AutoTwoTargetPreference.java b/src/com/android/packageinstaller/permission/ui/auto/AutoTwoTargetPreference.java
new file mode 100644
index 0000000..dd2686f
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/auto/AutoTwoTargetPreference.java
@@ -0,0 +1,106 @@
+/*
+ * 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.packageinstaller.permission.ui.auto;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.FrameLayout;
+
+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;
+
+/** {@link Preference} with the widget layout as a separate target. */
+public class AutoTwoTargetPreference extends Preference {
+
+ private OnSecondTargetClickListener mListener;
+ private boolean mIsDividerVisible = true;
+
+ public AutoTwoTargetPreference(@NonNull Context context, @Nullable AttributeSet attrs,
+ @AttrRes int defStyleAttr, @StyleRes int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ init();
+ }
+
+ public AutoTwoTargetPreference(@NonNull Context context, @Nullable AttributeSet attrs,
+ @AttrRes int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ init();
+ }
+
+ public AutoTwoTargetPreference(@NonNull Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+ init();
+ }
+
+ public AutoTwoTargetPreference(@NonNull Context context) {
+ super(context);
+ init();
+ }
+
+ private void init() {
+ setLayoutResource(R.layout.car_two_target_preference);
+ }
+
+ /** Set the listener for second target click. */
+ public void setOnSecondTargetClickListener(@Nullable OnSecondTargetClickListener listener) {
+ mListener = listener;
+ notifyChanged();
+ }
+
+ /** Sets the visibility of the divider. */
+ public void setDividerVisible(boolean visible) {
+ mIsDividerVisible = visible;
+ notifyChanged();
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull PreferenceViewHolder holder) {
+ super.onBindViewHolder(holder);
+
+ View actionContainer = holder.findViewById(R.id.action_widget_container);
+ View divider = holder.findViewById(R.id.two_target_divider);
+ FrameLayout widgetFrame = (FrameLayout) holder.findViewById(android.R.id.widget_frame);
+ if (mListener != null) {
+ actionContainer.setVisibility(View.VISIBLE);
+ divider.setVisibility(mIsDividerVisible ? View.VISIBLE : View.GONE);
+ widgetFrame.setVisibility(View.VISIBLE);
+ widgetFrame.setOnClickListener(v -> mListener.onSecondTargetClick(this));
+ } else {
+ actionContainer.setVisibility(View.GONE);
+ }
+ }
+
+ /**
+ * Listener for second target click.
+ */
+ public interface OnSecondTargetClickListener {
+
+ /**
+ * Callback when the second target is clicked.
+ *
+ * @param preference the {@link AutoTwoTargetPreference} that was clicked
+ */
+ void onSecondTargetClick(@NonNull AutoTwoTargetPreference preference);
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/ui/auto/GrantPermissionsAutoViewHandler.java b/src/com/android/packageinstaller/permission/ui/auto/GrantPermissionsAutoViewHandler.java
index 9e40d66..2b7702e 100644
--- a/src/com/android/packageinstaller/permission/ui/auto/GrantPermissionsAutoViewHandler.java
+++ b/src/com/android/packageinstaller/permission/ui/auto/GrantPermissionsAutoViewHandler.java
@@ -17,6 +17,7 @@
package com.android.packageinstaller.permission.ui.auto;
import android.app.Activity;
+import android.os.UserHandle;
import android.view.WindowManager;
import com.android.packageinstaller.permission.ui.handheld.GrantPermissionsViewHandlerImpl;
@@ -30,8 +31,9 @@
* change the window params to allow the dialog's width to be larger.
*/
public class GrantPermissionsAutoViewHandler extends GrantPermissionsViewHandlerImpl {
- public GrantPermissionsAutoViewHandler(Activity activity, String appPackageName) {
- super(activity, appPackageName);
+ public GrantPermissionsAutoViewHandler(Activity activity, String appPackageName,
+ UserHandle userHandle) {
+ super(activity, appPackageName, userHandle);
}
/**
diff --git a/src/com/android/packageinstaller/permission/ui/handheld/AdjustUserSensitiveFragment.java b/src/com/android/packageinstaller/permission/ui/handheld/AdjustUserSensitiveFragment.java
new file mode 100644
index 0000000..e447979
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/handheld/AdjustUserSensitiveFragment.java
@@ -0,0 +1,423 @@
+/*
+ * 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.packageinstaller.permission.ui.handheld;
+
+import static android.content.Context.MODE_PRIVATE;
+
+import static com.android.packageinstaller.Constants.ALLOW_OVERRIDE_USER_SENSITIVE_KEY;
+import static com.android.packageinstaller.Constants.ASSISTANT_RECORD_AUDIO_IS_USER_SENSITIVE_KEY;
+import static com.android.packageinstaller.Constants.FORCED_USER_SENSITIVE_UIDS_KEY;
+import static com.android.packageinstaller.Constants.PREFERENCES_FILE;
+import static com.android.packageinstaller.permission.utils.Utils.getFullAppLabel;
+import static com.android.packageinstaller.permission.utils.Utils.getParentUserContext;
+import static com.android.packageinstaller.permission.utils.Utils.updateUserSensitive;
+
+import android.app.ActionBar;
+import android.app.Application;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.pm.ApplicationInfo;
+import android.graphics.drawable.Drawable;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.util.ArrayMap;
+import android.util.ArraySet;
+import android.widget.ImageView;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.AndroidViewModel;
+import androidx.lifecycle.ViewModel;
+import androidx.lifecycle.ViewModelProvider;
+import androidx.lifecycle.ViewModelProviders;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceViewHolder;
+import androidx.preference.SwitchPreference;
+
+import com.android.packageinstaller.Constants;
+import com.android.packageinstaller.permission.data.BooleanSharedPreferenceLiveData;
+import com.android.packageinstaller.permission.data.ForcedUserSensitiveUidsLiveData;
+import com.android.packageinstaller.permission.data.NonSensitivePackagesLiveData;
+import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
+
+import java.text.Collator;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Allow the user to select which apps (that are usually not considered user sensitive) should still
+ * be considered user sensitive.
+ */
+public class AdjustUserSensitiveFragment extends PermissionsFrameFragment {
+ private Collator mCollator;
+ private UserSensitiveOverrideViewModel mViewModel;
+
+ /**
+ * Switch that matches the value of the {@link Constants#ALLOW_OVERRIDE_USER_SENSITIVE_KEY}
+ * shared preference
+ */
+ private SwitchPreference mGlobalUserSensitiveSwitch;
+
+ /**
+ * Switch that matches the value of the
+ * {@link Constants#ASSISTANT_RECORD_AUDIO_IS_USER_SENSITIVE_KEY} shared preference
+ */
+ private SwitchPreference mAssistantRecordAudioIsUserSensitiveSwitch;
+
+ /** The packages that might have non user sensitive permissions */
+ private ArrayList<ApplicationInfo> mSortedNonSensitivityPackages;
+
+ /**
+ * Caches the app labels for packages in {@link #mSortedNonSensitivityPackages}.
+ *
+ * <p>{@code pkgName -> label}
+ */
+ private ArrayMap<String, String> mLabelCache;
+
+ /**
+ * @return A new {@link AdjustUserSensitiveFragment}
+ */
+ public static AdjustUserSensitiveFragment newInstance() {
+ return new AdjustUserSensitiveFragment();
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ setLoading(true /* loading */, false /* animate */);
+ setHasOptionsMenu(true);
+
+ ActionBar ab = getActivity().getActionBar();
+ if (ab != null) {
+ ab.setDisplayHomeAsUpEnabled(true);
+ ab.setTitle(getString(R.string.adjust_user_sensitive_title));
+ }
+
+ mCollator = Collator.getInstance(getContext().getResources().getConfiguration().getLocales()
+ .get(0));
+
+ mViewModel = ViewModelProviders.of(this, new UserSensitiveOverrideViewModel.Factory(
+ getActivity().getApplication())).get(UserSensitiveOverrideViewModel.class);
+ mViewModel.getNonSensitivePackagesLiveData().observe(this,
+ (v) -> updateOverrideUi());
+ mViewModel.getAllowOverrideUserSensitiveLiveData().observe(this,
+ (v) -> updateOverrideSwitches());
+ mViewModel.getForcedUserSensitiveUidsLiveData().observe(this,
+ (v) -> updatePerPackageOverrideSwitches());
+ mViewModel.getAssistantRecordAudioIsUserSensitiveLiveData().observe(this,
+ (v) -> mAssistantRecordAudioIsUserSensitiveSwitch.setChecked(v));
+
+ addPreferencesFromResource(R.xml.adjust_user_sensitive);
+
+ mGlobalUserSensitiveSwitch = findPreference("global");
+ mGlobalUserSensitiveSwitch.setOnPreferenceChangeListener((p, newValue) -> {
+ mViewModel.setAllowOverrideUserSensitive((Boolean) newValue);
+ return true;
+ });
+
+ mAssistantRecordAudioIsUserSensitiveSwitch = findPreference("assistantrecordaudio");
+ mAssistantRecordAudioIsUserSensitiveSwitch.setOnPreferenceChangeListener((p, newValue) -> {
+ mViewModel.setAssistantRecordAudioIsUserSensitive((Boolean) newValue);
+ return true;
+ });
+ }
+
+ private void updateOverrideUi() {
+ mSortedNonSensitivityPackages = mViewModel.getNonSensitivePackagesLiveData().getValue();
+
+ int numPkgs = mSortedNonSensitivityPackages.size();
+ mLabelCache = new ArrayMap<>(numPkgs);
+ for (int i = 0; i < numPkgs; i++) {
+ ApplicationInfo appInfo = mSortedNonSensitivityPackages.get(i);
+ mLabelCache.put(appInfo.packageName, getFullAppLabel(appInfo, getContext()));
+ }
+
+ mSortedNonSensitivityPackages.sort((a, b) ->
+ mCollator.compare(mLabelCache.get(a.packageName), mLabelCache.get(b.packageName)));
+
+ updateOverrideSwitches();
+ }
+
+ private void updateOverrideSwitches() {
+ mGlobalUserSensitiveSwitch.setChecked(
+ mViewModel.getAllowOverrideUserSensitiveLiveData().getValue());
+
+ updatePerPackageOverrideSwitches();
+ }
+
+ private void updatePerPackageOverrideSwitches() {
+ if (mSortedNonSensitivityPackages == null
+ || mViewModel.getForcedUserSensitiveUidsLiveData().getValue() == null) {
+ return;
+ }
+
+ Context context = getContext();
+
+ setLoading(false, true);
+
+ PreferenceCategory perApp = findPreference("perapp");
+
+ ArrayMap<String, NonUserSensitiveAppPreference> oldPrefs = new ArrayMap<>();
+ int numPrefs = perApp.getPreferenceCount();
+ for (int i = 0; i < numPrefs; i++) {
+ NonUserSensitiveAppPreference pref =
+ (NonUserSensitiveAppPreference) perApp.getPreference(i);
+ oldPrefs.put(pref.getKey(), pref);
+ }
+
+ int numPkgs = mSortedNonSensitivityPackages.size();
+ for (int pkgNum = 0; pkgNum < numPkgs; pkgNum++) {
+ ApplicationInfo appInfo = mSortedNonSensitivityPackages.get(pkgNum);
+
+ NonUserSensitiveAppPreference pref = oldPrefs.remove(appInfo.packageName + appInfo.uid);
+ if (pref == null) {
+ pref = new NonUserSensitiveAppPreference(context,
+ mLabelCache.get(appInfo.packageName),
+ Utils.getBadgedIcon(context, appInfo));
+ pref.setKey(appInfo.packageName + appInfo.uid);
+
+ pref.setOnPreferenceChangeListener(
+ (p, isChecked) -> {
+ mViewModel.setUidUserSensitive(appInfo.uid, (Boolean) isChecked);
+ return true;
+ });
+
+ perApp.addPreference(pref);
+ }
+ pref.setOrder(pkgNum);
+
+ pref.setChecked(mViewModel.getForcedUserSensitiveUidsLiveData().getValue().indexOfKey(
+ appInfo.uid) >= 0);
+ pref.setEnabled(mViewModel.getAllowOverrideUserSensitiveLiveData().getValue());
+ }
+
+ int numRemovedPrefs = oldPrefs.size();
+ for (int i = 0; i < numRemovedPrefs; i++) {
+ perApp.removePreference(oldPrefs.valueAt(i));
+ }
+ }
+
+ /**
+ * A preference for a package.
+ */
+ private static class NonUserSensitiveAppPreference extends SwitchPreference {
+ private final int mIconSize;
+ private boolean mIsIconSizeSet = false;
+
+ NonUserSensitiveAppPreference(@NonNull Context context, @NonNull String appLabel,
+ @NonNull Drawable appIcon) {
+ super(context);
+
+ mIconSize = context.getResources().getDimensionPixelSize(
+ R.dimen.secondary_app_icon_size);
+
+ setTitle(appLabel);
+ setIcon(appIcon);
+ }
+
+ @Override
+ public void onBindViewHolder(PreferenceViewHolder holder) {
+ if (!mIsIconSizeSet) {
+ ImageView icon = ((ImageView) holder.findViewById(android.R.id.icon));
+
+ icon.setMaxWidth(mIconSize);
+ icon.setMaxHeight(mIconSize);
+
+ mIsIconSizeSet = true;
+ }
+
+ super.onBindViewHolder(holder);
+ }
+ }
+
+ private static class UserSensitiveOverrideViewModel extends AndroidViewModel {
+ private final @NonNull SharedPreferences mPrefs;
+
+ private final @NonNull NonSensitivePackagesLiveData mNonSensitivePackages;
+ private final @NonNull BooleanSharedPreferenceLiveData mAllowOverrideUserSensitive;
+ private final @NonNull ForcedUserSensitiveUidsLiveData mForcedUserSensitiveUids;
+ private final @NonNull BooleanSharedPreferenceLiveData mAssistantRecordAudioIsUserSensitive;
+
+ UserSensitiveOverrideViewModel(@NonNull Application application) {
+ super(application);
+
+ mPrefs = getParentUserContext(application).getSharedPreferences(PREFERENCES_FILE,
+ MODE_PRIVATE);
+
+ mNonSensitivePackages = NonSensitivePackagesLiveData.get(application);
+ mAllowOverrideUserSensitive = BooleanSharedPreferenceLiveData.get(
+ ALLOW_OVERRIDE_USER_SENSITIVE_KEY, application);
+ mForcedUserSensitiveUids = ForcedUserSensitiveUidsLiveData.get(application);
+ mAssistantRecordAudioIsUserSensitive = BooleanSharedPreferenceLiveData.get(
+ ASSISTANT_RECORD_AUDIO_IS_USER_SENSITIVE_KEY, application);
+ }
+
+ @NonNull NonSensitivePackagesLiveData getNonSensitivePackagesLiveData() {
+ return mNonSensitivePackages;
+ }
+
+ @NonNull BooleanSharedPreferenceLiveData getAllowOverrideUserSensitiveLiveData() {
+ return mAllowOverrideUserSensitive;
+ }
+
+ @NonNull ForcedUserSensitiveUidsLiveData getForcedUserSensitiveUidsLiveData() {
+ return mForcedUserSensitiveUids;
+ }
+
+ @NonNull BooleanSharedPreferenceLiveData getAssistantRecordAudioIsUserSensitiveLiveData() {
+ return mAssistantRecordAudioIsUserSensitive;
+ }
+
+ /**
+ * Update permission state to reflect user sensitivity selected.
+ *
+ * @param user The user to update.
+ */
+ private void updatePermissionFlags(@NonNull UserHandle user) {
+ AsyncTask.execute(() -> updateUserSensitive(getApplication(), user));
+ }
+
+ /**
+ * Update permission state to reflect user sensitivity selected. (for all users)
+ */
+ private void updatePermissionFlags() {
+ AsyncTask.execute(() -> {
+ List<UserHandle> users = getApplication().getSystemService(UserManager.class)
+ .getUserProfiles();
+
+ int numUsers = users.size();
+ for (int userNum = 0; userNum < numUsers; userNum++) {
+ UserHandle user = users.get(userNum);
+ updateUserSensitive(getApplication(), user);
+ }
+ });
+ }
+
+ /**
+ * Mark/unmark a uid as user sensitive.
+ *
+ * @param uid The uid to mark
+ * @param makeAlwaysUserSensitive {@code true} iff the uid should be made user sensitive
+ */
+ void setUidUserSensitive(int uid, boolean makeAlwaysUserSensitive) {
+ Set<String> currentOverrides = mPrefs.getStringSet(FORCED_USER_SENSITIVE_UIDS_KEY,
+ null);
+ String key = String.valueOf(uid);
+
+ Set<String> newOverrides;
+ if (makeAlwaysUserSensitive) {
+ if (currentOverrides == null) {
+ newOverrides = Collections.singleton(key);
+ } else {
+ newOverrides = new ArraySet<>(currentOverrides);
+ newOverrides.add(key);
+ }
+ } else {
+ if (currentOverrides == null) {
+ return;
+ }
+
+ newOverrides = new ArraySet<>(currentOverrides);
+ newOverrides.remove(key);
+ }
+
+ if (newOverrides.isEmpty()) {
+ mPrefs.edit().remove(FORCED_USER_SENSITIVE_UIDS_KEY).apply();
+ } else {
+ mPrefs.edit().putStringSet(FORCED_USER_SENSITIVE_UIDS_KEY, newOverrides).apply();
+ }
+
+ updatePermissionFlags(UserHandle.getUserHandleForUid(uid));
+ }
+
+ /**
+ * Allow/disallow the user to mark uids as user sensitive.
+ *
+ * <p>If this flips from false -> true, all uids are considered user sensitive by default.
+ *
+ * @param makeAlwaysUserSensitive {@code true} iff the user should be allowed to mark uids
+ * as user sensitive.
+ */
+ void setAllowOverrideUserSensitive(boolean makeAlwaysUserSensitive) {
+ SharedPreferences.Editor sharedPrefChanges = mPrefs.edit();
+
+ if (makeAlwaysUserSensitive) {
+ sharedPrefChanges.putBoolean(ALLOW_OVERRIDE_USER_SENSITIVE_KEY, true);
+
+ ArraySet<String> overrides = new ArraySet<>();
+
+ ArrayList<ApplicationInfo> pkgs = getNonSensitivePackagesLiveData().getValue();
+ int numPkgs = pkgs.size();
+ for (int i = 0; i < numPkgs; i++) {
+ overrides.add(String.valueOf(pkgs.get(i).uid));
+ }
+
+ sharedPrefChanges.putStringSet(FORCED_USER_SENSITIVE_UIDS_KEY, overrides);
+ } else {
+ sharedPrefChanges.remove(ALLOW_OVERRIDE_USER_SENSITIVE_KEY);
+ sharedPrefChanges.remove(FORCED_USER_SENSITIVE_UIDS_KEY);
+ }
+
+ sharedPrefChanges.apply();
+
+ updatePermissionFlags();
+ }
+
+ /**
+ * Mark the assistant's record audio permissions as user sensitive.
+ *
+ * @param isAssistantRecordAudioUserSensitive {@code true} to mark it as user sensitive,
+ * {@code false} to mark it as non sensitive
+ */
+ void setAssistantRecordAudioIsUserSensitive(boolean isAssistantRecordAudioUserSensitive) {
+ SharedPreferences.Editor sharedPrefChanges = mPrefs.edit();
+
+ if (isAssistantRecordAudioUserSensitive) {
+ sharedPrefChanges.putBoolean(ASSISTANT_RECORD_AUDIO_IS_USER_SENSITIVE_KEY, true);
+ } else {
+ sharedPrefChanges.remove(ASSISTANT_RECORD_AUDIO_IS_USER_SENSITIVE_KEY);
+ }
+
+ sharedPrefChanges.apply();
+
+ // We don't know which user contains the assistant
+ updatePermissionFlags();
+ }
+
+ /**
+ * {@link ViewModelProvider.Factory} for {@link UserSensitiveOverrideViewModel}.
+ */
+ public static class Factory implements ViewModelProvider.Factory {
+ private @NonNull Application mApplication;
+
+ Factory(@NonNull Application application) {
+ mApplication = application;
+ }
+
+ @Override
+ public @NonNull <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
+ //noinspection unchecked
+ return (T) new UserSensitiveOverrideViewModel(mApplication);
+ }
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/ui/handheld/AllAppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/handheld/AllAppPermissionsFragment.java
index d7ef981..5276f7a 100644
--- a/src/com/android/packageinstaller/permission/ui/handheld/AllAppPermissionsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/handheld/AllAppPermissionsFragment.java
@@ -31,69 +31,75 @@
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
-import android.preference.Preference;
-import android.preference.PreferenceCategory;
-import android.preference.PreferenceGroup;
+import android.os.UserHandle;
import android.provider.Settings;
-import android.util.IconDrawableFactory;
+import android.text.TextUtils;
import android.util.Log;
import android.view.MenuItem;
import android.widget.Switch;
-import com.android.packageinstaller.R;
+import androidx.annotation.NonNull;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceGroup;
+
import com.android.packageinstaller.permission.model.AppPermissionGroup;
import com.android.packageinstaller.permission.model.Permission;
import com.android.packageinstaller.permission.utils.ArrayUtils;
import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
-public final class AllAppPermissionsFragment extends SettingsWithHeader {
+/**
+ * Show and manage individual permissions for an app.
+ *
+ * <p>Shows the list of individual runtime and non-runtime permissions the app has requested.
+ */
+public final class AllAppPermissionsFragment extends SettingsWithLargeHeader {
private static final String LOG_TAG = "AllAppPermissionsFragment";
private static final String KEY_OTHER = "other_perms";
- private static final String EXTRA_FILTER_GROUP =
- "com.android.packageinstaller.extra.FILTER_GROUP";
-
private List<AppPermissionGroup> mGroups;
- public static AllAppPermissionsFragment newInstance(String packageName) {
- return newInstance(packageName, null);
+ public static AllAppPermissionsFragment newInstance(@NonNull String packageName,
+ @NonNull UserHandle userHandle) {
+ return newInstance(packageName, null, userHandle);
}
- public static AllAppPermissionsFragment newInstance(String packageName, String filterGroup) {
+ public static AllAppPermissionsFragment newInstance(@NonNull String packageName,
+ @NonNull String filterGroup, @NonNull UserHandle userHandle) {
AllAppPermissionsFragment instance = new AllAppPermissionsFragment();
Bundle arguments = new Bundle();
arguments.putString(Intent.EXTRA_PACKAGE_NAME, packageName);
- arguments.putString(EXTRA_FILTER_GROUP, filterGroup);
+ arguments.putString(Intent.EXTRA_PERMISSION_GROUP_NAME, filterGroup);
+ arguments.putParcelable(Intent.EXTRA_USER, userHandle);
instance.setArguments(arguments);
return instance;
}
@Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setHasOptionsMenu(true);
+ public void onStart() {
+ super.onStart();
+
final ActionBar ab = getActivity().getActionBar();
if (ab != null) {
// If we target a group make this look like app permissions.
- if (getArguments().getString(EXTRA_FILTER_GROUP) == null) {
+ if (getArguments().getString(Intent.EXTRA_PERMISSION_GROUP_NAME) == null) {
ab.setTitle(R.string.all_permissions);
} else {
ab.setTitle(R.string.app_permissions);
}
ab.setDisplayHomeAsUpEnabled(true);
}
- }
- @Override
- public void onResume() {
- super.onResume();
+ setHasOptionsMenu(true);
+
updateUi();
}
@@ -117,16 +123,17 @@
ArrayList<Preference> prefs = new ArrayList<>(); // Used for sorting.
prefs.add(otherGroup);
String pkg = getArguments().getString(Intent.EXTRA_PACKAGE_NAME);
- String filterGroup = getArguments().getString(EXTRA_FILTER_GROUP);
+ String filterGroup = getArguments().getString(Intent.EXTRA_PERMISSION_GROUP_NAME);
+ UserHandle userHandle = getArguments().getParcelable(Intent.EXTRA_USER);
otherGroup.removeAll();
PackageManager pm = getContext().getPackageManager();
try {
- PackageInfo info = pm.getPackageInfo(pkg, PackageManager.GET_PERMISSIONS);
+ PackageInfo info = getActivity().createPackageContextAsUser(pkg, 0, userHandle)
+ .getPackageManager().getPackageInfo(pkg, PackageManager.GET_PERMISSIONS);
ApplicationInfo appInfo = info.applicationInfo;
- final Drawable icon =
- IconDrawableFactory.newInstance(getContext()).getBadgedIcon(appInfo);
+ final Drawable icon = Utils.getBadgedIcon(getContext(), appInfo);
final CharSequence label = appInfo.loadLabel(pm);
Intent infoIntent = null;
if (!getActivity().getIntent().getBooleanExtra(
@@ -134,7 +141,7 @@
infoIntent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
.setData(Uri.fromParts("package", pkg, null));
}
- setHeader(icon, label, infoIntent);
+ setHeader(icon, label, infoIntent, userHandle, false);
if (info.requestedPermissions != null) {
for (int i = 0; i < info.requestedPermissions.length; i++) {
@@ -165,7 +172,7 @@
if ((perm.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE)
== PermissionInfo.PROTECTION_DANGEROUS) {
- PackageItemInfo group = getGroup(perm.group, pm);
+ PackageItemInfo group = getGroup(Utils.getGroupOfPermission(perm), pm);
if (group == null) {
group = perm;
}
@@ -227,7 +234,7 @@
ArrayList<Preference> prefs) {
PreferenceGroup pref = (PreferenceGroup) findPreference(group.name);
if (pref == null) {
- pref = new PreferenceCategory(getContext());
+ pref = new PreferenceCategory(getPreferenceManager().getContext());
pref.setKey(group.name);
pref.setTitle(group.loadLabel(pm));
prefs.add(pref);
@@ -239,26 +246,27 @@
private Preference getPreference(PackageInfo packageInfo, PermissionInfo perm,
PackageItemInfo group, PackageManager pm) {
final Preference pref;
+ Context context = getPreferenceManager().getContext();
// We allow individual permission control for some permissions if review enabled
final boolean mutable = Utils.isPermissionIndividuallyControlled(getContext(), perm.name);
if (mutable) {
- pref = new MyMultiTargetSwitchPreference(getContext(), perm.name,
- getPermissionGroup(packageInfo, perm.name));
+ pref = new MyMultiTargetSwitchPreference(context, perm.name,
+ getPermissionForegroundGroup(packageInfo, perm.name));
} else {
- pref = new Preference(getContext());
+ pref = new Preference(context);
}
Drawable icon = null;
if (perm.icon != 0) {
- icon = perm.loadIcon(pm);
+ icon = perm.loadUnbadgedIcon(pm);
} else if (group != null && group.icon != 0) {
- icon = group.loadIcon(pm);
+ icon = group.loadUnbadgedIcon(pm);
} else {
- icon = getContext().getDrawable(R.drawable.ic_perm_device_info);
+ icon = context.getDrawable(R.drawable.ic_perm_device_info);
}
- pref.setIcon(Utils.applyTint(getContext(), icon, android.R.attr.colorControlNormal));
- pref.setTitle(perm.loadSafeLabel(pm, 20000, PackageItemInfo.SAFE_LABEL_FLAG_TRIM));
+ pref.setIcon(Utils.applyTint(context, icon, android.R.attr.colorControlNormal));
+ pref.setTitle(perm.loadSafeLabel(pm, 20000, TextUtils.SAFE_STRING_FLAG_TRIM));
pref.setSingleLineTitle(false);
final CharSequence desc = perm.loadDescription(pm);
@@ -273,7 +281,19 @@
return pref;
}
- private AppPermissionGroup getPermissionGroup(PackageInfo packageInfo,
+ /**
+ * Return the (foreground-) {@link AppPermissionGroup group} a permission belongs to.
+ *
+ * <p>For foreground or non background-foreground permissions this returns the group
+ * {@link AppPermissionGroup} the permission is in. For background permisisons this returns
+ * the group the matching foreground
+ *
+ * @param packageInfo Package information about the app
+ * @param permission The permission that belongs to a group
+ *
+ * @return the group the permissions belongs to
+ */
+ private AppPermissionGroup getPermissionForegroundGroup(PackageInfo packageInfo,
String permission) {
AppPermissionGroup appPermissionGroup = null;
if (mGroups != null) {
@@ -284,11 +304,17 @@
appPermissionGroup = currentPermissionGroup;
break;
}
+ if (currentPermissionGroup.getBackgroundPermissions() != null
+ && currentPermissionGroup.getBackgroundPermissions().hasPermission(
+ permission)) {
+ appPermissionGroup = currentPermissionGroup.getBackgroundPermissions();
+ break;
+ }
}
}
if (appPermissionGroup == null) {
appPermissionGroup = AppPermissionGroup.create(
- getContext(), packageInfo, permission);
+ getContext(), packageInfo, permission, false);
if (mGroups == null) {
mGroups = new ArrayList<>();
}
@@ -322,7 +348,7 @@
final int permissionCount = appPermissionGroup.getPermissions().size();
for (int i = 0; i < permissionCount; i++) {
Permission current = appPermissionGroup.getPermissions().get(i);
- if (!current.isGranted()) {
+ if (!current.isGrantedIncludingAppOp()) {
if (!current.isUserFixed()) {
revokedPermissionsToFix = ArrayUtils.appendString(
revokedPermissionsToFix, current.getName());
diff --git a/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionFragment.java b/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionFragment.java
new file mode 100644
index 0000000..214d720
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionFragment.java
@@ -0,0 +1,993 @@
+/*
+ * 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.packageinstaller.permission.ui.handheld;
+
+import static com.android.packageinstaller.Constants.EXTRA_SESSION_ID;
+import static com.android.packageinstaller.Constants.INVALID_SESSION_ID;
+import static com.android.packageinstaller.PermissionControllerStatsLog.APP_PERMISSION_FRAGMENT_ACTION_REPORTED;
+import static com.android.packageinstaller.PermissionControllerStatsLog.APP_PERMISSION_FRAGMENT_VIEWED;
+
+import static java.lang.annotation.RetentionPolicy.SOURCE;
+
+import android.app.ActionBar;
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+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.PermissionInfo;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.RadioButton;
+import android.widget.RadioGroup;
+import android.widget.TextView;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.widget.NestedScrollView;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+
+import com.android.packageinstaller.PermissionControllerStatsLog;
+import com.android.packageinstaller.permission.model.AppPermissionGroup;
+import com.android.packageinstaller.permission.model.Permission;
+import com.android.packageinstaller.permission.ui.AppPermissionActivity;
+import com.android.packageinstaller.permission.utils.LocationUtils;
+import com.android.packageinstaller.permission.utils.PackageRemovalMonitor;
+import com.android.packageinstaller.permission.utils.SafetyNetLogger;
+import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
+import com.android.settingslib.RestrictedLockUtils;
+import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+import com.android.settingslib.widget.ActionBarShadowController;
+
+import java.lang.annotation.Retention;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * Show and manage a single permission group for an app.
+ *
+ * <p>Allows the user to control whether the app is granted the permission.
+ */
+public class AppPermissionFragment extends SettingsWithLargeHeader {
+ private static final String LOG_TAG = "AppPermissionFragment";
+
+ @Retention(SOURCE)
+ @IntDef(value = {CHANGE_FOREGROUND, CHANGE_BACKGROUND}, flag = true)
+ @interface ChangeTarget {}
+ static final int CHANGE_FOREGROUND = 1;
+ static final int CHANGE_BACKGROUND = 2;
+ static final int CHANGE_BOTH = CHANGE_FOREGROUND | CHANGE_BACKGROUND;
+
+ private @NonNull AppPermissionGroup mGroup;
+
+ private @NonNull RadioGroup mRadioGroup;
+ private @NonNull RadioButton mAlwaysButton;
+ private @NonNull RadioButton mForegroundOnlyButton;
+ private @NonNull RadioButton mDenyButton;
+ private @NonNull View mDivider;
+ private @NonNull ViewGroup mWidgetFrame;
+ private @NonNull TextView mPermissionDetails;
+ private @NonNull NestedScrollView mNestedScrollView;
+
+ private boolean mHasConfirmedRevoke;
+
+ /**
+ * Listens for changes to the permission of the app the permission is currently getting
+ * granted to. {@code null} when unregistered.
+ */
+ private @Nullable PackageManager.OnPermissionsChangedListener mPermissionChangeListener;
+
+ /**
+ * Listens for changes to the app the permission is currently getting granted to. {@code null}
+ * when unregistered.
+ */
+ private @Nullable PackageRemovalMonitor mPackageRemovalMonitor;
+
+ /**
+ * @return A new fragment
+ */
+ public static @NonNull AppPermissionFragment newInstance(@NonNull String packageName,
+ @NonNull String permName, @Nullable String groupName,
+ @NonNull UserHandle userHandle, @Nullable String caller, long sessionId) {
+ AppPermissionFragment fragment = new AppPermissionFragment();
+ Bundle arguments = new Bundle();
+ arguments.putString(Intent.EXTRA_PACKAGE_NAME, packageName);
+ if (groupName == null) {
+ arguments.putString(Intent.EXTRA_PERMISSION_NAME, permName);
+ } else {
+ arguments.putString(Intent.EXTRA_PERMISSION_GROUP_NAME, groupName);
+ }
+ arguments.putParcelable(Intent.EXTRA_USER, userHandle);
+ arguments.putString(AppPermissionActivity.EXTRA_CALLER_NAME, caller);
+ arguments.putLong(EXTRA_SESSION_ID, sessionId);
+ fragment.setArguments(arguments);
+ return fragment;
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setHasOptionsMenu(true);
+ ActionBar ab = getActivity().getActionBar();
+ if (ab != null) {
+ ab.setDisplayHomeAsUpEnabled(true);
+ }
+
+ mHasConfirmedRevoke = false;
+
+ createAppPermissionGroup();
+
+ if (mGroup != null) {
+ getActivity().setTitle(
+ getPreferenceManager().getContext().getString(R.string.app_permission_title,
+ mGroup.getFullLabel()));
+ logAppPermissionFragmentViewed();
+ }
+ }
+
+ private void createAppPermissionGroup() {
+ Activity activity = getActivity();
+ Context context = getPreferenceManager().getContext();
+
+ String packageName = getArguments().getString(Intent.EXTRA_PACKAGE_NAME);
+ String groupName = getArguments().getString(Intent.EXTRA_PERMISSION_GROUP_NAME);
+ if (groupName == null) {
+ groupName = getArguments().getString(Intent.EXTRA_PERMISSION_NAME);
+ }
+ PackageItemInfo groupInfo = Utils.getGroupInfo(groupName, context);
+ List<PermissionInfo> groupPermInfos = Utils.getGroupPermissionInfos(groupName, context);
+ if (groupInfo == null || groupPermInfos == null) {
+ Log.i(LOG_TAG, "Illegal group: " + groupName);
+ activity.setResult(Activity.RESULT_CANCELED);
+ activity.finish();
+ return;
+ }
+ UserHandle userHandle = getArguments().getParcelable(Intent.EXTRA_USER);
+ mGroup = AppPermissionGroup.create(context,
+ getPackageInfo(activity, packageName, userHandle),
+ groupInfo, groupPermInfos, false);
+
+ if (mGroup == null || !Utils.shouldShowPermission(context, mGroup)) {
+ Log.i(LOG_TAG, "Illegal group: " + (mGroup == null ? "null" : mGroup.getName()));
+ activity.setResult(Activity.RESULT_CANCELED);
+ activity.finish();
+ return;
+ }
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ Context context = getPreferenceManager().getContext();
+ ViewGroup root = (ViewGroup) inflater.inflate(R.layout.app_permission, container, false);
+
+ if (mGroup == null) {
+ return root;
+ }
+
+ String appLabel = Utils.getFullAppLabel(mGroup.getApp().applicationInfo, context);
+ setHeader(getAppIcon(), appLabel, null, null, false);
+ updateHeader(root.requireViewById(R.id.large_header));
+
+ ((TextView) root.requireViewById(R.id.permission_message)).setText(
+ context.getString(R.string.app_permission_header, mGroup.getFullLabel()));
+
+ root.requireViewById(R.id.usage_summary).setVisibility(View.GONE);
+ long sessionId = getArguments().getLong(EXTRA_SESSION_ID);
+
+ TextView footer1Link = root.requireViewById(R.id.footer_link_1);
+ footer1Link.setText(context.getString(R.string.app_permission_footer_app_permissions_link,
+ appLabel));
+ footer1Link.setOnClickListener((v) -> {
+ UserHandle user = UserHandle.getUserHandleForUid(mGroup.getApp().applicationInfo.uid);
+ Intent intent = new Intent(Intent.ACTION_MANAGE_APP_PERMISSIONS);
+ intent.putExtra(Intent.EXTRA_PACKAGE_NAME, mGroup.getApp().packageName);
+ intent.putExtra(EXTRA_SESSION_ID, sessionId);
+ intent.putExtra(Intent.EXTRA_USER, user);
+ context.startActivity(intent);
+ });
+
+ TextView footer2Link = root.requireViewById(R.id.footer_link_2);
+ footer2Link.setText(context.getString(R.string.app_permission_footer_permission_apps_link));
+ footer2Link.setOnClickListener((v) -> {
+ Intent intent = new Intent(Intent.ACTION_MANAGE_PERMISSION_APPS);
+ intent.putExtra(Intent.EXTRA_PERMISSION_NAME, mGroup.getName());
+ intent.putExtra(EXTRA_SESSION_ID, sessionId);
+ context.startActivity(intent);
+ });
+
+ String caller = getArguments().getString(AppPermissionActivity.EXTRA_CALLER_NAME);
+ if (AppPermissionsFragment.class.getName().equals(caller)) {
+ footer1Link.setVisibility(View.GONE);
+ } else if (PermissionAppsFragment.class.getName().equals(caller)) {
+ footer2Link.setVisibility(View.GONE);
+ }
+
+ mRadioGroup = root.requireViewById(R.id.radiogroup);
+ mAlwaysButton = root.requireViewById(R.id.allow_radio_button);
+ mForegroundOnlyButton = root.requireViewById(R.id.foreground_only_radio_button);
+ mDenyButton = root.requireViewById(R.id.deny_radio_button);
+ mDivider = root.requireViewById(R.id.two_target_divider);
+ mWidgetFrame = root.requireViewById(R.id.widget_frame);
+ mPermissionDetails = root.requireViewById(R.id.permission_details);
+
+ mNestedScrollView = root.requireViewById(R.id.nested_scroll_view);
+
+ return root;
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+
+ if (mGroup == null) {
+ return;
+ }
+
+ String packageName = getArguments().getString(Intent.EXTRA_PACKAGE_NAME);
+ UserHandle userHandle = getArguments().getParcelable(Intent.EXTRA_USER);
+ Activity activity = getActivity();
+
+ // Get notified when permissions change.
+ try {
+ mPermissionChangeListener = new PermissionChangeListener(
+ mGroup.getApp().applicationInfo.uid);
+ } catch (NameNotFoundException e) {
+ activity.setResult(Activity.RESULT_CANCELED);
+ activity.finish();
+ return;
+ }
+ PackageManager pm = activity.getPackageManager();
+ pm.addOnPermissionsChangeListener(mPermissionChangeListener);
+
+ // Get notified when the package is removed.
+ mPackageRemovalMonitor = new PackageRemovalMonitor(getContext(), packageName) {
+ @Override
+ public void onPackageRemoved() {
+ Log.w(LOG_TAG, packageName + " was uninstalled");
+ activity.setResult(Activity.RESULT_CANCELED);
+ activity.finish();
+ }
+ };
+ mPackageRemovalMonitor.register();
+
+ // Check if the package was removed while this activity was not started.
+ try {
+ activity.createPackageContextAsUser(
+ packageName, 0, userHandle).getPackageManager().getPackageInfo(packageName, 0);
+ } catch (NameNotFoundException e) {
+ Log.w(LOG_TAG, packageName + " was uninstalled while this activity was stopped", e);
+ activity.setResult(Activity.RESULT_CANCELED);
+ activity.finish();
+ }
+
+ ActionBar ab = getActivity().getActionBar();
+ if (ab != null) {
+ ab.setElevation(0);
+ }
+ ActionBarShadowController.attachToView(activity, getLifecycle(), mNestedScrollView);
+
+ // Re-create the permission group in case permissions have changed and update the UI.
+ createAppPermissionGroup();
+ updateButtons();
+ }
+
+ void logAppPermissionFragmentViewed() {
+ long sessionId = getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID);
+ PermissionControllerStatsLog.write(APP_PERMISSION_FRAGMENT_VIEWED, sessionId,
+ mGroup.getApp().applicationInfo.uid, mGroup.getApp().packageName, mGroup.getName());
+ Log.v(LOG_TAG, "AppPermission fragment viewed with sessionId=" + sessionId + " uid="
+ + mGroup.getApp().applicationInfo.uid + " packageName="
+ + mGroup.getApp().packageName + " permissionGroupName=" + mGroup.getName());
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+
+ if (mPackageRemovalMonitor != null) {
+ mPackageRemovalMonitor.unregister();
+ mPackageRemovalMonitor = null;
+ }
+
+ if (mPermissionChangeListener != null) {
+ getActivity().getPackageManager().removeOnPermissionsChangeListener(
+ mPermissionChangeListener);
+ mPermissionChangeListener = null;
+ }
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (item.getItemId() == android.R.id.home) {
+ getActivity().finish();
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ private ArrayList<PermissionState> createPermissionSnapshot() {
+ ArrayList<PermissionState> permissionSnapshot = new ArrayList<>();
+ ArrayList<Permission> permissions = mGroup.getPermissions();
+ int numPermissions = permissions.size();
+
+ for (int i = 0; i < numPermissions; i++) {
+ Permission permission = permissions.get(i);
+ permissionSnapshot.add(new PermissionState(permission.getName(),
+ permission.isGrantedIncludingAppOp()));
+ }
+
+ AppPermissionGroup permissionGroup = mGroup.getBackgroundPermissions();
+
+ if (permissionGroup == null) {
+ return permissionSnapshot;
+ }
+
+ permissions = mGroup.getPermissions();
+ numPermissions = permissions.size();
+
+ for (int i = 0; i < numPermissions; i++) {
+ Permission permission = permissions.get(i);
+ permissionSnapshot.add(new PermissionState(permission.getName(),
+ permission.isGrantedIncludingAppOp()));
+ }
+
+ return permissionSnapshot;
+ }
+
+ private void logPermissionChanges(ArrayList<PermissionState> previousPermissionSnapshot) {
+ long changeId = new Random().nextLong();
+ int numPermissions = previousPermissionSnapshot.size();
+ long sessionId = getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID);
+
+ for (int i = 0; i < numPermissions; i++) {
+ PermissionState permissionState = previousPermissionSnapshot.get(i);
+ boolean wasGranted = permissionState.permissionGranted;
+ Permission permission = mGroup.getPermission(permissionState.permissionName);
+
+ if (permission == null) {
+ if (mGroup.getBackgroundPermissions() == null) {
+ continue;
+ }
+ permission = mGroup.getBackgroundPermissions().getPermission(
+ permissionState.permissionName);
+ }
+
+ boolean isGranted = permission.isGrantedIncludingAppOp();
+
+ if (wasGranted != isGranted) {
+ logAppPermissionFragmentActionReported(sessionId, changeId,
+ permissionState.permissionName, isGranted);
+ }
+ }
+ }
+
+ private void logAppPermissionFragmentActionReported(
+ long sessionId, long changeId, String permissionName, boolean isGranted) {
+ PermissionControllerStatsLog.write(APP_PERMISSION_FRAGMENT_ACTION_REPORTED, sessionId,
+ changeId, mGroup.getApp().applicationInfo.uid, mGroup.getApp().packageName,
+ permissionName, isGranted);
+ Log.v(LOG_TAG, "Permission changed via UI with sessionId=" + sessionId + " changeId="
+ + changeId + " uid=" + mGroup.getApp().applicationInfo.uid + " packageName="
+ + mGroup.getApp().packageName + " permission="
+ + permissionName + " isGranted=" + isGranted);
+ }
+
+ private void updateButtons() {
+ Context context = getContext();
+ if (context == null) {
+ return;
+ }
+
+ // Reset everything to the "default" state: tri-state buttons are shown with exactly one
+ // selected and no special messages.
+ mDivider.setVisibility(View.GONE);
+ mWidgetFrame.setVisibility(View.GONE);
+ mPermissionDetails.setVisibility(View.GONE);
+
+ if (mGroup.areRuntimePermissionsGranted()) {
+ if (!mGroup.hasPermissionWithBackgroundMode()
+ || (mGroup.getBackgroundPermissions() != null
+ && mGroup.getBackgroundPermissions().areRuntimePermissionsGranted())) {
+ setCheckedButton(mAlwaysButton);
+ } else {
+ setCheckedButton(mForegroundOnlyButton);
+ }
+ } else {
+ setCheckedButton(mDenyButton);
+ }
+
+ mAlwaysButton.setOnClickListener((v) -> requestChange(true, CHANGE_BOTH));
+ mForegroundOnlyButton.setOnClickListener((v) -> {
+ requestChange(false, CHANGE_BACKGROUND);
+ requestChange(true, CHANGE_FOREGROUND);
+ });
+ mDenyButton.setOnClickListener((v) -> requestChange(false, CHANGE_BOTH));
+
+ // Set the allow and foreground-only button states appropriately.
+ if (mGroup.hasPermissionWithBackgroundMode()) {
+ if (mGroup.getBackgroundPermissions() == null) {
+ mAlwaysButton.setVisibility(View.GONE);
+ } else {
+ mForegroundOnlyButton.setVisibility(View.VISIBLE);
+ mAlwaysButton.setText(
+ context.getString(R.string.app_permission_button_allow_always));
+ }
+ } else {
+ mForegroundOnlyButton.setVisibility(View.GONE);
+ mAlwaysButton.setText(context.getString(R.string.app_permission_button_allow));
+ }
+
+ // Handle the UI for various special cases.
+ if (isSystemFixed() || isPolicyFullyFixed() || isForegroundDisabledByPolicy()) {
+ // Disable changing permissions and potentially show administrator message.
+ mAlwaysButton.setEnabled(false);
+ mForegroundOnlyButton.setEnabled(false);
+ mDenyButton.setEnabled(false);
+
+ EnforcedAdmin admin = getAdmin();
+ if (admin != null) {
+ showRightIcon(R.drawable.ic_info);
+ mWidgetFrame.setOnClickListener(v ->
+ RestrictedLockUtils.sendShowAdminSupportDetailsIntent(context, admin)
+ );
+ }
+
+ updateDetailForFixedByPolicyPermissionGroup();
+ } else if (Utils.areGroupPermissionsIndividuallyControlled(context, mGroup.getName())) {
+ // If the permissions are individually controlled, also show a link to the page that
+ // lets you control them.
+ mDivider.setVisibility(View.VISIBLE);
+ showRightIcon(R.drawable.ic_settings);
+ mWidgetFrame.setOnClickListener(v -> showAllPermissions(mGroup.getName()));
+
+ updateDetailForIndividuallyControlledPermissionGroup();
+ } else {
+ if (mGroup.hasPermissionWithBackgroundMode()) {
+ if (mGroup.getBackgroundPermissions() == null) {
+ // The group has background permissions but the app did not request any. I.e.
+ // The app can only switch between 'never" and "only in foreground".
+ mAlwaysButton.setEnabled(false);
+
+ mDenyButton.setOnClickListener((v) -> requestChange(false, CHANGE_FOREGROUND));
+ } else {
+ if (isBackgroundPolicyFixed()) {
+ // If background policy is fixed, we only allow switching the foreground.
+ // Note that this assumes that the background policy is fixed to deny,
+ // since if it is fixed to grant, so is the foreground.
+ mAlwaysButton.setEnabled(false);
+ setCheckedButton(mForegroundOnlyButton);
+
+ mDenyButton.setOnClickListener(
+ (v) -> requestChange(false, CHANGE_FOREGROUND));
+
+ updateDetailForFixedByPolicyPermissionGroup();
+ } else if (isForegroundPolicyFixed()) {
+ // Foreground permissions are fixed to allow (the first case above handles
+ // fixing to deny), so we only allow toggling background permissions.
+ mDenyButton.setEnabled(false);
+
+ mAlwaysButton.setOnClickListener(
+ (v) -> requestChange(true, CHANGE_BACKGROUND));
+ mForegroundOnlyButton.setOnClickListener(
+ (v) -> requestChange(false, CHANGE_BACKGROUND));
+
+ updateDetailForFixedByPolicyPermissionGroup();
+ } else {
+ // The default tri-state case is handled by default.
+ }
+ }
+
+ } else {
+ // The default bi-state case is handled by default.
+ }
+ }
+ }
+
+ /**
+ * Set the given button as the only checked button in the radio group.
+ *
+ * @param button the button that should be checked.
+ */
+ private void setCheckedButton(@NonNull RadioButton button) {
+ mRadioGroup.clearCheck();
+ button.setChecked(true);
+ if (button != mAlwaysButton) {
+ mAlwaysButton.setChecked(false);
+ }
+ if (button != mForegroundOnlyButton) {
+ mForegroundOnlyButton.setChecked(false);
+ }
+ if (button != mDenyButton) {
+ mDenyButton.setChecked(false);
+ }
+ }
+
+ /**
+ * Show the given icon on the right of the first radio button.
+ *
+ * @param iconId the resourceId of the drawable to use.
+ */
+ private void showRightIcon(int iconId) {
+ mWidgetFrame.removeAllViews();
+ ImageView imageView = new ImageView(getPreferenceManager().getContext());
+ imageView.setImageResource(iconId);
+ mWidgetFrame.addView(imageView);
+ mWidgetFrame.setVisibility(View.VISIBLE);
+ }
+
+ private static @Nullable PackageInfo getPackageInfo(@NonNull Activity activity,
+ @NonNull String packageName, @NonNull UserHandle userHandle) {
+ try {
+ return activity.createPackageContextAsUser(packageName, 0,
+ userHandle).getPackageManager().getPackageInfo(packageName,
+ PackageManager.GET_PERMISSIONS);
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.i(LOG_TAG, "No package: " + activity.getCallingPackage(), e);
+ activity.setResult(Activity.RESULT_CANCELED);
+ activity.finish();
+ return null;
+ }
+ }
+
+ /**
+ * Are any permissions of this group fixed by the system, i.e. not changeable by the user.
+ *
+ * @return {@code true} iff any permission is fixed
+ */
+ private boolean isSystemFixed() {
+ return mGroup.isSystemFixed();
+ }
+
+ /**
+ * Is any foreground permissions of this group fixed by the policy, i.e. not changeable by the
+ * user.
+ *
+ * @return {@code true} iff any foreground permission is fixed
+ */
+ private boolean isForegroundPolicyFixed() {
+ return mGroup.isPolicyFixed();
+ }
+
+ /**
+ * Is any background permissions of this group fixed by the policy, i.e. not changeable by the
+ * user.
+ *
+ * @return {@code true} iff any background permission is fixed
+ */
+ private boolean isBackgroundPolicyFixed() {
+ return mGroup.getBackgroundPermissions() != null
+ && mGroup.getBackgroundPermissions().isPolicyFixed();
+ }
+
+ /**
+ * Are there permissions fixed, so that the user cannot change the preference at all?
+ *
+ * @return {@code true} iff the permissions of this group are fixed
+ */
+ private boolean isPolicyFullyFixed() {
+ return isForegroundPolicyFixed() && (mGroup.getBackgroundPermissions() == null
+ || isBackgroundPolicyFixed());
+ }
+
+ /**
+ * Is the foreground part of this group disabled. If the foreground is disabled, there is no
+ * need to possible grant background access.
+ *
+ * @return {@code true} iff the permissions of this group are fixed
+ */
+ private boolean isForegroundDisabledByPolicy() {
+ return isForegroundPolicyFixed() && !mGroup.areRuntimePermissionsGranted();
+ }
+
+ /**
+ * Get the app that acts as admin for this profile.
+ *
+ * @return The admin or {@code null} if there is no admin.
+ */
+ private @Nullable EnforcedAdmin getAdmin() {
+ return RestrictedLockUtils.getProfileOrDeviceOwner(getContext(), mGroup.getUser());
+ }
+
+ /**
+ * Update the detail in the case the permission group has individually controlled permissions.
+ */
+ private void updateDetailForIndividuallyControlledPermissionGroup() {
+ int revokedCount = 0;
+ List<Permission> permissions = mGroup.getPermissions();
+ int permissionCount = permissions.size();
+ for (int i = 0; i < permissionCount; i++) {
+ Permission permission = permissions.get(i);
+ if (!permission.isGrantedIncludingAppOp()) {
+ revokedCount++;
+ }
+ }
+
+ int resId;
+ if (revokedCount == 0) {
+ resId = R.string.permission_revoked_none;
+ } else if (revokedCount == permissionCount) {
+ resId = R.string.permission_revoked_all;
+ } else {
+ resId = R.string.permission_revoked_count;
+ }
+
+ mPermissionDetails.setText(getContext().getString(resId, revokedCount));
+ mPermissionDetails.setVisibility(View.VISIBLE);
+ }
+
+ /**
+ * Update the detail of a permission group that is at least partially fixed by policy.
+ */
+ private void updateDetailForFixedByPolicyPermissionGroup() {
+ EnforcedAdmin admin = getAdmin();
+ AppPermissionGroup backgroundGroup = mGroup.getBackgroundPermissions();
+
+ boolean hasAdmin = admin != null;
+
+ if (isSystemFixed()) {
+ // Permission is fully controlled by the system and cannot be switched
+
+ setDetail(R.string.permission_summary_enabled_system_fixed);
+ } else if (isForegroundDisabledByPolicy()) {
+ // Permission is fully controlled by policy and cannot be switched
+
+ if (hasAdmin) {
+ setDetail(R.string.disabled_by_admin);
+ } else {
+ // Disabled state will be displayed by switch, so no need to add text for that
+ setDetail(R.string.permission_summary_enforced_by_policy);
+ }
+ } else if (isPolicyFullyFixed()) {
+ // Permission is fully controlled by policy and cannot be switched
+
+ if (backgroundGroup == null) {
+ if (hasAdmin) {
+ setDetail(R.string.enabled_by_admin);
+ } else {
+ // Enabled state will be displayed by switch, so no need to add text for
+ // that
+ setDetail(R.string.permission_summary_enforced_by_policy);
+ }
+ } else {
+ if (backgroundGroup.areRuntimePermissionsGranted()) {
+ if (hasAdmin) {
+ setDetail(R.string.enabled_by_admin);
+ } else {
+ // Enabled state will be displayed by switch, so no need to add text for
+ // that
+ setDetail(R.string.permission_summary_enforced_by_policy);
+ }
+ } else {
+ if (hasAdmin) {
+ setDetail(
+ R.string.permission_summary_enabled_by_admin_foreground_only);
+ } else {
+ setDetail(
+ R.string.permission_summary_enabled_by_policy_foreground_only);
+ }
+ }
+ }
+ } else {
+ // Part of the permission group can still be switched
+
+ if (isBackgroundPolicyFixed()) {
+ if (backgroundGroup.areRuntimePermissionsGranted()) {
+ if (hasAdmin) {
+ setDetail(R.string.permission_summary_enabled_by_admin_background_only);
+ } else {
+ setDetail(R.string.permission_summary_enabled_by_policy_background_only);
+ }
+ } else {
+ if (hasAdmin) {
+ setDetail(R.string.permission_summary_disabled_by_admin_background_only);
+ } else {
+ setDetail(R.string.permission_summary_disabled_by_policy_background_only);
+ }
+ }
+ } else if (isForegroundPolicyFixed()) {
+ if (hasAdmin) {
+ setDetail(R.string.permission_summary_enabled_by_admin_foreground_only);
+ } else {
+ setDetail(R.string.permission_summary_enabled_by_policy_foreground_only);
+ }
+ }
+ }
+ }
+
+ /**
+ * Show the given string as informative text below the radio buttons.
+ * @param strId the resourceId of the string to display.
+ */
+ private void setDetail(int strId) {
+ mPermissionDetails.setText(getPreferenceManager().getContext().getString(strId));
+ mPermissionDetails.setVisibility(View.VISIBLE);
+ }
+
+ /**
+ * Show all individual permissions in this group in a new fragment.
+ */
+ private void showAllPermissions(@NonNull String filterGroup) {
+ Fragment frag = AllAppPermissionsFragment.newInstance(mGroup.getApp().packageName,
+ filterGroup, UserHandle.getUserHandleForUid(mGroup.getApp().applicationInfo.uid));
+ getFragmentManager().beginTransaction()
+ .replace(android.R.id.content, frag)
+ .addToBackStack("AllPerms")
+ .commit();
+ }
+
+ /**
+ * Get the icon of this app.
+ *
+ * @return the app's icon.
+ */
+ private @NonNull Drawable getAppIcon() {
+ ApplicationInfo appInfo = mGroup.getApp().applicationInfo;
+ return Utils.getBadgedIcon(getActivity(), appInfo);
+ }
+
+ /**
+ * Request to grant/revoke permissions group.
+ *
+ * <p>Does <u>not</u> handle:
+ * <ul>
+ * <li>Individually granted permissions</li>
+ * <li>Permission groups with background permissions</li>
+ * </ul>
+ * <p><u>Does</u> handle:
+ * <ul>
+ * <li>Default grant permissions</li>
+ * </ul>
+ *
+ * @param requestGrant If this group should be granted
+ * @param changeTarget Which permission group (foreground/background/both) should be changed
+ *
+ * @return If the request was processed.
+ */
+ private boolean requestChange(boolean requestGrant, @ChangeTarget int changeTarget) {
+ if (LocationUtils.isLocationGroupAndProvider(getContext(), mGroup.getName(),
+ mGroup.getApp().packageName)) {
+ LocationUtils.showLocationDialog(getContext(),
+ Utils.getAppLabel(mGroup.getApp().applicationInfo, getContext()));
+
+ // The request was denied, so update the buttons.
+ updateButtons();
+ return false;
+ }
+
+ if (requestGrant) {
+ ArrayList<PermissionState> stateBefore = createPermissionSnapshot();
+ if ((changeTarget & CHANGE_FOREGROUND) != 0) {
+ if (!mGroup.areRuntimePermissionsGranted()) {
+ SafetyNetLogger.logPermissionToggled(mGroup);
+ }
+
+ mGroup.grantRuntimePermissions(false);
+ }
+ if ((changeTarget & CHANGE_BACKGROUND) != 0) {
+ if (mGroup.getBackgroundPermissions() != null) {
+ if (!mGroup.getBackgroundPermissions().areRuntimePermissionsGranted()) {
+ SafetyNetLogger.logPermissionToggled(mGroup.getBackgroundPermissions());
+ }
+
+ mGroup.getBackgroundPermissions().grantRuntimePermissions(false);
+ }
+ }
+ logPermissionChanges(stateBefore);
+ } else {
+ boolean showDefaultDenyDialog = false;
+
+ if ((changeTarget & CHANGE_FOREGROUND) != 0
+ && mGroup.areRuntimePermissionsGranted()) {
+ showDefaultDenyDialog = mGroup.hasGrantedByDefaultPermission()
+ || !mGroup.doesSupportRuntimePermissions()
+ || mGroup.hasInstallToRuntimeSplit();
+ }
+ if ((changeTarget & CHANGE_BACKGROUND) != 0) {
+ if (mGroup.getBackgroundPermissions() != null
+ && mGroup.getBackgroundPermissions().areRuntimePermissionsGranted()) {
+ AppPermissionGroup bgPerm = mGroup.getBackgroundPermissions();
+ showDefaultDenyDialog |= bgPerm.hasGrantedByDefaultPermission()
+ || !bgPerm.doesSupportRuntimePermissions()
+ || bgPerm.hasInstallToRuntimeSplit();
+ }
+ }
+
+ if (showDefaultDenyDialog && !mHasConfirmedRevoke) {
+ showDefaultDenyDialog(changeTarget);
+ updateButtons();
+ return false;
+ } else {
+ ArrayList<PermissionState> stateBefore = createPermissionSnapshot();
+ if ((changeTarget & CHANGE_FOREGROUND) != 0
+ && mGroup.areRuntimePermissionsGranted()) {
+ if (mGroup.areRuntimePermissionsGranted()) {
+ SafetyNetLogger.logPermissionToggled(mGroup);
+ }
+
+ mGroup.revokeRuntimePermissions(false);
+ }
+ if ((changeTarget & CHANGE_BACKGROUND) != 0) {
+ if (mGroup.getBackgroundPermissions() != null
+ && mGroup.getBackgroundPermissions().areRuntimePermissionsGranted()) {
+ if (mGroup.getBackgroundPermissions().areRuntimePermissionsGranted()) {
+ SafetyNetLogger.logPermissionToggled(mGroup.getBackgroundPermissions());
+ }
+
+ mGroup.getBackgroundPermissions().revokeRuntimePermissions(false);
+ }
+ }
+ logPermissionChanges(stateBefore);
+ }
+ }
+
+ updateButtons();
+
+ return true;
+ }
+
+ /**
+ * Show a dialog that warns the user that she/he is about to revoke permissions that were
+ * granted by default.
+ *
+ * <p>The order of operation to revoke a permission granted by default is:
+ * <ol>
+ * <li>{@code showDefaultDenyDialog}</li>
+ * <li>{@link DefaultDenyDialog#onCreateDialog}</li>
+ * <li>{@link AppPermissionFragment#onDenyAnyWay}</li>
+ * </ol>
+ *
+ * @param changeTarget Whether background or foreground should be changed
+ */
+ private void showDefaultDenyDialog(@ChangeTarget int changeTarget) {
+ Bundle args = new Bundle();
+
+ boolean showGrantedByDefaultWarning = false;
+ if ((changeTarget & CHANGE_FOREGROUND) != 0) {
+ showGrantedByDefaultWarning = mGroup.hasGrantedByDefaultPermission();
+ }
+ if ((changeTarget & CHANGE_BACKGROUND) != 0) {
+ if (mGroup.getBackgroundPermissions() != null) {
+ showGrantedByDefaultWarning |=
+ mGroup.getBackgroundPermissions().hasGrantedByDefaultPermission();
+ }
+ }
+
+ args.putInt(DefaultDenyDialog.MSG, showGrantedByDefaultWarning ? R.string.system_warning
+ : R.string.old_sdk_deny_warning);
+ args.putInt(DefaultDenyDialog.CHANGE_TARGET, changeTarget);
+
+ DefaultDenyDialog defaultDenyDialog = new DefaultDenyDialog();
+ defaultDenyDialog.setArguments(args);
+ defaultDenyDialog.setTargetFragment(this, 0);
+ defaultDenyDialog.show(getFragmentManager().beginTransaction(),
+ DefaultDenyDialog.class.getName());
+ }
+
+ /**
+ * Once we user has confirmed that he/she wants to revoke a permission that was granted by
+ * default, actually revoke the permissions.
+ *
+ * @param changeTarget whether to change foreground, background, or both.
+ *
+ * @see #showDefaultDenyDialog(int)
+ */
+ void onDenyAnyWay(@ChangeTarget int changeTarget) {
+ boolean hasDefaultPermissions = false;
+ ArrayList<PermissionState> stateBefore = createPermissionSnapshot();
+ if ((changeTarget & CHANGE_FOREGROUND) != 0) {
+ if (mGroup.areRuntimePermissionsGranted()) {
+ SafetyNetLogger.logPermissionToggled(mGroup);
+ }
+
+ mGroup.revokeRuntimePermissions(false);
+ hasDefaultPermissions = mGroup.hasGrantedByDefaultPermission();
+ }
+ if ((changeTarget & CHANGE_BACKGROUND) != 0) {
+ if (mGroup.getBackgroundPermissions() != null) {
+ if (mGroup.getBackgroundPermissions().areRuntimePermissionsGranted()) {
+ SafetyNetLogger.logPermissionToggled(mGroup.getBackgroundPermissions());
+ }
+
+ mGroup.getBackgroundPermissions().revokeRuntimePermissions(false);
+ hasDefaultPermissions |=
+ mGroup.getBackgroundPermissions().hasGrantedByDefaultPermission();
+ }
+ }
+ logPermissionChanges(stateBefore);
+
+ if (hasDefaultPermissions || !mGroup.doesSupportRuntimePermissions()) {
+ mHasConfirmedRevoke = true;
+ }
+ updateButtons();
+ }
+
+ /**
+ * A dialog warning the user that she/he is about to deny a permission that was granted by
+ * default.
+ *
+ * @see #showDefaultDenyDialog(int)
+ */
+ public static class DefaultDenyDialog extends DialogFragment {
+ private static final String MSG = DefaultDenyDialog.class.getName() + ".arg.msg";
+ private static final String CHANGE_TARGET = DefaultDenyDialog.class.getName()
+ + ".arg.changeTarget";
+ private static final String KEY = DefaultDenyDialog.class.getName() + ".arg.key";
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ AppPermissionFragment fragment = (AppPermissionFragment) getTargetFragment();
+ AlertDialog.Builder b = new AlertDialog.Builder(getContext())
+ .setMessage(getArguments().getInt(MSG))
+ .setNegativeButton(R.string.cancel,
+ (DialogInterface dialog, int which) -> fragment.updateButtons())
+ .setPositiveButton(R.string.grant_dialog_button_deny_anyway,
+ (DialogInterface dialog, int which) ->
+ fragment.onDenyAnyWay(getArguments().getInt(CHANGE_TARGET)));
+
+ return b.create();
+ }
+ }
+
+ /**
+ * A listener for permission changes.
+ */
+ private class PermissionChangeListener implements PackageManager.OnPermissionsChangedListener {
+ private final int mUid;
+
+ PermissionChangeListener(int uid) throws NameNotFoundException {
+ mUid = uid;
+ }
+
+ @Override
+ public void onPermissionsChanged(int uid) {
+ if (uid == mUid) {
+ Log.w(LOG_TAG, "Permissions changed.");
+ createAppPermissionGroup();
+ updateButtons();
+ }
+ }
+ }
+
+ private static class PermissionState {
+ @NonNull public final String permissionName;
+ public final boolean permissionGranted;
+
+ PermissionState(@NonNull String permissionName, boolean permissionGranted) {
+ this.permissionName = permissionName;
+ this.permissionGranted = permissionGranted;
+ }
+ }
+
+}
diff --git a/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java
index 05e46fd..2aa3072 100644
--- a/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java
@@ -1,29 +1,31 @@
/*
-* 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.
-*/
+ * 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.packageinstaller.permission.ui.handheld;
-import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+import static com.android.packageinstaller.Constants.EXTRA_SESSION_ID;
+import static com.android.packageinstaller.Constants.INVALID_SESSION_ID;
+import static com.android.packageinstaller.PermissionControllerStatsLog.APP_PERMISSIONS_FRAGMENT_VIEWED;
+import static com.android.packageinstaller.PermissionControllerStatsLog.APP_PERMISSIONS_FRAGMENT_VIEWED__CATEGORY__ALLOWED;
+import static com.android.packageinstaller.PermissionControllerStatsLog.APP_PERMISSIONS_FRAGMENT_VIEWED__CATEGORY__ALLOWED_FOREGROUND;
+import static com.android.packageinstaller.PermissionControllerStatsLog.APP_PERMISSIONS_FRAGMENT_VIEWED__CATEGORY__DENIED;
import android.app.ActionBar;
import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Fragment;
import android.content.Context;
-import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
@@ -31,56 +33,67 @@
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
-import android.preference.Preference;
-import android.preference.Preference.OnPreferenceChangeListener;
-import android.preference.Preference.OnPreferenceClickListener;
-import android.preference.PreferenceScreen;
-import android.preference.SwitchPreference;
+import android.os.UserHandle;
import android.provider.Settings;
-import android.util.IconDrawableFactory;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
-import android.widget.Switch;
import android.widget.Toast;
-import com.android.packageinstaller.R;
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceScreen;
+
+import com.android.packageinstaller.PermissionControllerStatsLog;
import com.android.packageinstaller.permission.model.AppPermissionGroup;
import com.android.packageinstaller.permission.model.AppPermissions;
-import com.android.packageinstaller.permission.model.Permission;
-import com.android.packageinstaller.permission.utils.LocationUtils;
-import com.android.packageinstaller.permission.utils.SafetyNetLogger;
import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
import com.android.settingslib.HelpUtils;
-import com.android.settingslib.RestrictedLockUtils;
+import java.text.Collator;
import java.util.ArrayList;
-import java.util.List;
+import java.util.Random;
-public final class AppPermissionsFragment extends SettingsWithHeader
- implements OnPreferenceChangeListener {
+/**
+ * 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 AppPermissionsFragment extends SettingsWithLargeHeader {
private static final String LOG_TAG = "ManagePermsFragment";
static final String EXTRA_HIDE_INFO_BUTTON = "hideInfoButton";
+ static final String PREFERENCE_ALLOWED = "allowed";
+ static final String PREFERENCE_DENIED = "denied";
+ static final String PREFERENCE_ALLOWED_FOREGROUND = "allowed_foreground";
- private static final int MENU_ALL_PERMS = 0;
-
- private List<AppPermissionGroup> mToggledGroups;
private AppPermissions mAppPermissions;
private PreferenceScreen mExtraScreen;
- private boolean mHasConfirmedRevoke;
+ private Collator mCollator;
- public static AppPermissionsFragment newInstance(String packageName) {
- return setPackageName(new AppPermissionsFragment(), packageName);
+ /**
+ * @return A new fragment
+ */
+ public static AppPermissionsFragment newInstance(@NonNull String packageName,
+ @NonNull UserHandle userHandle, long sessionId) {
+ return setPackageNameAndUserHandleAndSessionId(
+ new AppPermissionsFragment(), packageName, userHandle, sessionId);
}
- private static <T extends Fragment> T setPackageName(T fragment, String packageName) {
+ private static <T extends Fragment> T setPackageNameAndUserHandleAndSessionId(
+ @NonNull T fragment, @NonNull String packageName, @NonNull UserHandle userHandle,
+ long sessionId) {
Bundle arguments = new Bundle();
arguments.putString(Intent.EXTRA_PACKAGE_NAME, packageName);
+ arguments.putParcelable(Intent.EXTRA_USER, userHandle);
+ arguments.putLong(EXTRA_SESSION_ID, sessionId);
fragment.setArguments(arguments);
return fragment;
}
@@ -96,29 +109,35 @@
}
String packageName = getArguments().getString(Intent.EXTRA_PACKAGE_NAME);
+ UserHandle userHandle = getArguments().getParcelable(Intent.EXTRA_USER);
Activity activity = getActivity();
- PackageInfo packageInfo = getPackageInfo(activity, packageName);
+ PackageInfo packageInfo = getPackageInfo(activity, packageName, userHandle);
if (packageInfo == null) {
Toast.makeText(activity, R.string.app_not_found_dlg_title, Toast.LENGTH_LONG).show();
activity.finish();
return;
}
- mAppPermissions = new AppPermissions(activity, packageInfo, null, true, new Runnable() {
+ addPreferencesFromResource(R.xml.allowed_denied);
+
+ mAppPermissions = new AppPermissions(activity, packageInfo, true, new Runnable() {
@Override
public void run() {
getActivity().finish();
}
});
- loadPreferences();
+
+ mCollator = Collator.getInstance(
+ getContext().getResources().getConfiguration().getLocales().get(0));
+ updatePreferences();
+ logAppPermissionsFragmentView();
}
@Override
public void onResume() {
super.onResume();
mAppPermissions.refresh();
- loadPreferences();
- setPreferencesCheckedState();
+ updatePreferences();
}
@Override
@@ -156,16 +175,15 @@
private void showAllPermissions(String filterGroup) {
Fragment frag = AllAppPermissionsFragment.newInstance(
getArguments().getString(Intent.EXTRA_PACKAGE_NAME),
- filterGroup);
+ filterGroup, getArguments().getParcelable(Intent.EXTRA_USER));
getFragmentManager().beginTransaction()
.replace(android.R.id.content, frag)
.addToBackStack("AllPerms")
.commit();
}
- private static void bindUi(SettingsWithHeader fragment, PackageInfo packageInfo) {
+ private static void bindUi(SettingsWithLargeHeader fragment, PackageInfo packageInfo) {
Activity activity = fragment.getActivity();
- PackageManager pm = activity.getPackageManager();
ApplicationInfo appInfo = packageInfo.applicationInfo;
Intent infoIntent = null;
if (!activity.getIntent().getBooleanExtra(EXTRA_HIDE_INFO_BUTTON, false)) {
@@ -173,9 +191,9 @@
.setData(Uri.fromParts("package", packageInfo.packageName, null));
}
- Drawable icon = IconDrawableFactory.newInstance(activity).getBadgedIcon(appInfo);
- CharSequence label = appInfo.loadLabel(pm);
- fragment.setHeader(icon, label, infoIntent);
+ Drawable icon = Utils.getBadgedIcon(activity, appInfo);
+ fragment.setHeader(icon, Utils.getFullAppLabel(appInfo, activity), infoIntent,
+ UserHandle.getUserHandleForUid(appInfo.uid), false);
ActionBar ab = activity.getActionBar();
if (ab != null) {
@@ -183,19 +201,19 @@
}
}
- private void loadPreferences() {
- Context context = getActivity();
+ private void updatePreferences() {
+ Context context = getPreferenceManager().getContext();
if (context == null) {
return;
}
- PreferenceScreen screen = getPreferenceScreen();
- if (screen == null) {
- screen = getPreferenceManager().createPreferenceScreen(getActivity());
- setPreferenceScreen(screen);
- }
+ PreferenceCategory allowed = (PreferenceCategory) findPreference(PREFERENCE_ALLOWED);
+ PreferenceCategory denied = (PreferenceCategory) findPreference(PREFERENCE_DENIED);
- screen.removeAll();
+ allowed.removeAll();
+ denied.removeAll();
+
+ findPreference(PREFERENCE_ALLOWED_FOREGROUND).setVisible(false);
if (mExtraScreen != null) {
mExtraScreen.removeAll();
@@ -204,235 +222,165 @@
final Preference extraPerms = new Preference(context);
extraPerms.setIcon(R.drawable.ic_toc);
extraPerms.setTitle(R.string.additional_permissions);
+ boolean extraPermsAreAllowed = false;
- for (AppPermissionGroup group : mAppPermissions.getPermissionGroups()) {
- if (!Utils.shouldShowPermission(group, mAppPermissions.getPackageInfo().packageName)) {
+ ArrayList<AppPermissionGroup> groups = new ArrayList<>(
+ mAppPermissions.getPermissionGroups());
+ groups.sort((x, y) -> mCollator.compare(x.getLabel(), y.getLabel()));
+ allowed.setOrderingAsAdded(true);
+ denied.setOrderingAsAdded(true);
+
+ long sessionId = getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID);
+
+ for (int i = 0; i < groups.size(); i++) {
+ AppPermissionGroup group = groups.get(i);
+ if (!Utils.shouldShowPermission(getContext(), group)) {
continue;
}
boolean isPlatform = group.getDeclaringPackage().equals(Utils.OS_PKG);
- RestrictedSwitchPreference preference = new RestrictedSwitchPreference(context);
- preference.setChecked(group.areRuntimePermissionsGranted());
-
- // Some groups may be a double target - one to toggle and one to fine manage
- if (Utils.areGroupPermissionsIndividuallyControlled(getContext(), group.getName())) {
- preference.setOnPreferenceClickListener((pref) -> {
- showAllPermissions(group.getName());
- return false;
- });
-
- preference.setSwitchOnClickListener(v -> {
- Switch switchView = (Switch) v;
- onPreferenceChange(preference, switchView.isChecked());
- updateSummaryForIndividuallyControlledPermissionGroup(
- group, preference);
- preference.setCheckedOverride(switchView.isChecked());
- });
-
- updateSummaryForIndividuallyControlledPermissionGroup(group, preference);
- } else {
- preference.setOnPreferenceChangeListener(this);
- }
-
+ PermissionControlPreference preference = new PermissionControlPreference(context,
+ group, AppPermissionsFragment.class.getName(), sessionId);
preference.setKey(group.getName());
Drawable icon = Utils.loadDrawable(context.getPackageManager(),
group.getIconPkg(), group.getIconResId());
- preference.setIcon(Utils.applyTint(getContext(), icon,
+ preference.setIcon(Utils.applyTint(context, icon,
android.R.attr.colorControlNormal));
- preference.setTitle(group.getLabel());
-
-
- if (group.isPolicyFixed()) {
- EnforcedAdmin admin = RestrictedLockUtils.getProfileOrDeviceOwner(getContext(),
- group.getUserId());
- if (admin != null) {
- preference.setDisabledByAdmin(admin);
- preference.setSummary(R.string.disabled_by_admin_summary_text);
- } else {
- preference.setSummary(R.string.permission_summary_enforced_by_policy);
- preference.setEnabled(false);
- }
- }
- preference.setPersistent(false);
+ preference.setTitle(group.getFullLabel());
+ preference.setGroupSummary(group);
if (isPlatform) {
- screen.addPreference(preference);
+ PreferenceCategory category =
+ group.areRuntimePermissionsGranted() ? allowed : denied;
+ category.addPreference(preference);
} else {
if (mExtraScreen == null) {
mExtraScreen = getPreferenceManager().createPreferenceScreen(context);
}
mExtraScreen.addPreference(preference);
+ if (group.areRuntimePermissionsGranted()) {
+ extraPermsAreAllowed = true;
+ }
}
}
if (mExtraScreen != null) {
- extraPerms.setOnPreferenceClickListener(new OnPreferenceClickListener() {
- @Override
- public boolean onPreferenceClick(Preference preference) {
- AdditionalPermissionsFragment frag = new AdditionalPermissionsFragment();
- setPackageName(frag, getArguments().getString(Intent.EXTRA_PACKAGE_NAME));
- frag.setTargetFragment(AppPermissionsFragment.this, 0);
- getFragmentManager().beginTransaction()
- .replace(android.R.id.content, frag)
- .addToBackStack(null)
- .commit();
- return true;
- }
+ extraPerms.setOnPreferenceClickListener(preference -> {
+ AdditionalPermissionsFragment frag = new AdditionalPermissionsFragment();
+ setPackageNameAndUserHandleAndSessionId(frag,
+ getArguments().getString(Intent.EXTRA_PACKAGE_NAME),
+ getArguments().getParcelable(Intent.EXTRA_USER),
+ getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID));
+ frag.setTargetFragment(AppPermissionsFragment.this, 0);
+ getFragmentManager().beginTransaction()
+ .replace(android.R.id.content, frag)
+ .addToBackStack(null)
+ .commit();
+ return true;
});
int count = mExtraScreen.getPreferenceCount();
extraPerms.setSummary(getResources().getQuantityString(
R.plurals.additional_permissions_more, count, count));
- screen.addPreference(extraPerms);
+ PreferenceCategory category = extraPermsAreAllowed ? allowed : denied;
+ category.addPreference(extraPerms);
+ }
+
+ if (allowed.getPreferenceCount() == 0) {
+ Preference empty = new Preference(context);
+ empty.setTitle(getString(R.string.no_permissions_allowed));
+ empty.setSelectable(false);
+ allowed.addPreference(empty);
+ }
+ if (denied.getPreferenceCount() == 0) {
+ Preference empty = new Preference(context);
+ empty.setTitle(getString(R.string.no_permissions_denied));
+ empty.setSelectable(false);
+ denied.addPreference(empty);
}
setLoading(false /* loading */, true /* animate */);
}
- @Override
- public boolean onPreferenceChange(final Preference preference, Object newValue) {
- String groupName = preference.getKey();
- final AppPermissionGroup group = mAppPermissions.getPermissionGroup(groupName);
-
- if (group == null) {
- return false;
+ private void logAppPermissionsFragmentView() {
+ Context context = getPreferenceManager().getContext();
+ if (context == null) {
+ return;
}
+ String permissionSubtitleOnlyInForeground =
+ context.getString(R.string.permission_subtitle_only_in_foreground);
- addToggledGroup(group);
- if (LocationUtils.isLocationGroupAndProvider(group.getName(), group.getApp().packageName)) {
- LocationUtils.showLocationDialog(getContext(), mAppPermissions.getAppLabel());
- return false;
- }
- if (newValue == Boolean.TRUE) {
- group.grantRuntimePermissions(false);
- } else {
- final boolean grantedByDefault = group.hasGrantedByDefaultPermission();
- if (grantedByDefault || (!group.doesSupportRuntimePermissions()
- && !mHasConfirmedRevoke)) {
- new AlertDialog.Builder(getContext())
- .setMessage(grantedByDefault ? R.string.system_warning
- : R.string.old_sdk_deny_warning)
- .setNegativeButton(R.string.cancel, (DialogInterface dialog, int which) -> {
- if (preference instanceof MultiTargetSwitchPreference) {
- ((MultiTargetSwitchPreference) preference).setCheckedOverride(true);
- }
- })
- .setPositiveButton(R.string.grant_dialog_button_deny_anyway,
- (DialogInterface dialog, int which) -> {
- ((SwitchPreference) preference).setChecked(false);
- group.revokeRuntimePermissions(false);
- if (Utils.areGroupPermissionsIndividuallyControlled(getContext(),
- group.getName())) {
- updateSummaryForIndividuallyControlledPermissionGroup(
- group, preference);
- }
- if (!grantedByDefault) {
- mHasConfirmedRevoke = true;
- }
- })
- .show();
- return false;
- } else {
- group.revokeRuntimePermissions(false);
+ long sessionId = getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID);
+ long viewId = new Random().nextLong();
+
+ PreferenceCategory allowed = findPreference(PREFERENCE_ALLOWED);
+
+ int numAllowed = allowed.getPreferenceCount();
+ for (int i = 0; i < numAllowed; i++) {
+ Preference preference = allowed.getPreference(i);
+
+ if (preference.getSummary() == null) {
+ // R.string.no_permission_allowed was added to PreferenceCategory
+ continue;
}
- }
- return true;
- }
-
- @Override
- public void onPause() {
- super.onPause();
- logToggledGroups();
- }
-
- private void updateSummaryForIndividuallyControlledPermissionGroup(
- AppPermissionGroup group, Preference preference) {
- int revokedCount = 0;
- List<Permission> permissions = group.getPermissions();
- final int permissionCount = permissions.size();
- for (int i = 0; i < permissionCount; i++) {
- Permission permission = permissions.get(i);
- if (group.doesSupportRuntimePermissions()
- ? !permission.isGranted() : (!permission.isAppOpAllowed()
- || permission.isReviewRequired())) {
- revokedCount++;
+ int category = APP_PERMISSIONS_FRAGMENT_VIEWED__CATEGORY__ALLOWED;
+ if (permissionSubtitleOnlyInForeground.contentEquals(preference.getSummary())) {
+ category = APP_PERMISSIONS_FRAGMENT_VIEWED__CATEGORY__ALLOWED_FOREGROUND;
}
+
+ logAppPermissionsFragmentViewEntry(sessionId, viewId, preference.getKey(), category);
}
- final int resId;
- if (revokedCount == 0) {
- resId = R.string.permission_revoked_none;
- } else if (revokedCount == permissionCount) {
- resId = R.string.permission_revoked_all;
- } else {
- resId = R.string.permission_revoked_count;
- }
+ PreferenceCategory denied = findPreference(PREFERENCE_DENIED);
- String summary = getString(resId, revokedCount);
- preference.setSummary(summary);
- }
-
- private void addToggledGroup(AppPermissionGroup group) {
- if (mToggledGroups == null) {
- mToggledGroups = new ArrayList<>();
- }
- // Double toggle is back to initial state.
- if (mToggledGroups.contains(group)) {
- mToggledGroups.remove(group);
- } else {
- mToggledGroups.add(group);
- }
- }
-
- private void logToggledGroups() {
- if (mToggledGroups != null) {
- String packageName = mAppPermissions.getPackageInfo().packageName;
- SafetyNetLogger.logPermissionsToggled(packageName, mToggledGroups);
- mToggledGroups = null;
- }
- }
-
- private void setPreferencesCheckedState() {
- setPreferencesCheckedState(getPreferenceScreen());
- if (mExtraScreen != null) {
- setPreferencesCheckedState(mExtraScreen);
- }
- }
-
- private void setPreferencesCheckedState(PreferenceScreen screen) {
- int preferenceCount = screen.getPreferenceCount();
- for (int i = 0; i < preferenceCount; i++) {
- Preference preference = screen.getPreference(i);
- if (preference instanceof SwitchPreference) {
- SwitchPreference switchPref = (SwitchPreference) preference;
- AppPermissionGroup group = mAppPermissions.getPermissionGroup(switchPref.getKey());
- if (group != null) {
- switchPref.setChecked(group.areRuntimePermissionsGranted());
- }
+ int numDenied = denied.getPreferenceCount();
+ for (int i = 0; i < numDenied; i++) {
+ Preference preference = denied.getPreference(i);
+ if (preference.getSummary() == null) {
+ // R.string.no_permission_denied was added to PreferenceCategory
+ continue;
}
+ logAppPermissionsFragmentViewEntry(sessionId, viewId, preference.getKey(),
+ APP_PERMISSIONS_FRAGMENT_VIEWED__CATEGORY__DENIED);
}
}
- private static PackageInfo getPackageInfo(Activity activity, String packageName) {
+ private void logAppPermissionsFragmentViewEntry(
+ long sessionId, long viewId, String permissionGroupName, int category) {
+ PermissionControllerStatsLog.write(APP_PERMISSIONS_FRAGMENT_VIEWED, sessionId, viewId,
+ permissionGroupName, mAppPermissions.getPackageInfo().applicationInfo.uid,
+ mAppPermissions.getPackageInfo().packageName, category);
+ Log.v(LOG_TAG, "AppPermissionFragment view logged with sessionId=" + sessionId + " viewId="
+ + viewId + " permissionGroupName=" + permissionGroupName + " uid="
+ + mAppPermissions.getPackageInfo().applicationInfo.uid + " packageName="
+ + mAppPermissions.getPackageInfo().packageName + " category=" + category);
+ }
+
+ private static PackageInfo getPackageInfo(Activity activity, @NonNull String packageName,
+ @NonNull UserHandle userHandle) {
try {
- return activity.getPackageManager().getPackageInfo(
- packageName, PackageManager.GET_PERMISSIONS);
+ return activity.createPackageContextAsUser(packageName, 0,
+ userHandle).getPackageManager().getPackageInfo(packageName,
+ PackageManager.GET_PERMISSIONS);
} catch (PackageManager.NameNotFoundException e) {
Log.i(LOG_TAG, "No package:" + activity.getCallingPackage(), e);
return null;
}
}
- public static class AdditionalPermissionsFragment extends SettingsWithHeader {
+ /**
+ * Class that shows additional permissions.
+ */
+ public static class AdditionalPermissionsFragment extends SettingsWithLargeHeader {
AppPermissionsFragment mOuterFragment;
@Override
public void onCreate(Bundle savedInstanceState) {
mOuterFragment = (AppPermissionsFragment) getTargetFragment();
super.onCreate(savedInstanceState);
- setHeader(mOuterFragment.mIcon, mOuterFragment.mLabel, mOuterFragment.mInfoIntent);
+ setHeader(mOuterFragment.mIcon, mOuterFragment.mLabel, null, null, false);
setHasOptionsMenu(true);
setPreferenceScreen(mOuterFragment.mExtraScreen);
}
@@ -441,7 +389,8 @@
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
String packageName = getArguments().getString(Intent.EXTRA_PACKAGE_NAME);
- bindUi(this, getPackageInfo(getActivity(), packageName));
+ UserHandle userHandle = getArguments().getParcelable(Intent.EXTRA_USER);
+ bindUi(this, getPackageInfo(getActivity(), packageName, userHandle));
}
@Override
diff --git a/src/com/android/packageinstaller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java b/src/com/android/packageinstaller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java
index ef365b3..d6eebef 100644
--- a/src/com/android/packageinstaller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java
+++ b/src/com/android/packageinstaller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java
@@ -16,10 +16,19 @@
package com.android.packageinstaller.permission.ui.handheld;
+import static com.android.packageinstaller.permission.ui.GrantPermissionsActivity.LABEL_ALLOW_ALWAYS_BUTTON;
+import static com.android.packageinstaller.permission.ui.GrantPermissionsActivity.LABEL_ALLOW_BUTTON;
+import static com.android.packageinstaller.permission.ui.GrantPermissionsActivity.LABEL_ALLOW_FOREGROUND_BUTTON;
+import static com.android.packageinstaller.permission.ui.GrantPermissionsActivity.LABEL_DENY_AND_DONT_ASK_AGAIN_BUTTON;
+import static com.android.packageinstaller.permission.ui.GrantPermissionsActivity.LABEL_DENY_BUTTON;
+
import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.Icon;
import android.os.Bundle;
+import android.os.UserHandle;
+import android.transition.ChangeBounds;
+import android.transition.TransitionManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
@@ -27,17 +36,15 @@
import android.view.WindowManager.LayoutParams;
import android.view.accessibility.AccessibilityNodeInfo;
import android.view.animation.AnimationUtils;
-import android.view.animation.Interpolator;
import android.widget.Button;
-import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
-import com.android.packageinstaller.R;
-import com.android.packageinstaller.permission.ui.ButtonBarLayout;
+import androidx.annotation.NonNull;
+
import com.android.packageinstaller.permission.ui.GrantPermissionsViewHandler;
import com.android.packageinstaller.permission.ui.ManagePermissionsActivity;
-import com.android.packageinstaller.permission.ui.ManualLayoutFrame;
+import com.android.permissioncontroller.R;
public class GrantPermissionsViewHandlerImpl implements GrantPermissionsViewHandler,
OnClickListener {
@@ -47,46 +54,44 @@
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";
- public static final String ARG_GROUP_SHOW_DO_NOT_ASK = "ARG_GROUP_SHOW_DO_NOT_ASK";
- public static final String ARG_GROUP_DO_NOT_ASK_CHECKED = "ARG_GROUP_DO_NOT_ASK_CHECKED";
+ private static final String ARG_GROUP_DETAIL_MESSAGE = "ARG_GROUP_DETAIL_MESSAGE";
+ private static final String ARG_DIALOG_BUTTON_LABELS = "ARG_DIALOG_BUTTON_LABELS";
// Animation parameters.
- private static final long OUT_DURATION = 200;
- private static final long IN_DURATION = 300;
+ private static final long SWITCH_TIME_MILLIS = 75;
+ private static final long ANIMATION_DURATION_MILLIS = 200;
private final Activity mActivity;
private final String mAppPackageName;
- private final boolean mPermissionReviewRequired;
+ 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 boolean mShowDonNotAsk;
- private boolean mDoNotAskChecked;
+ private CharSequence mDetailMessage;
+ private CharSequence[] mButtonLabels;
+ // Views
private ImageView mIconView;
- private TextView mCurrentGroupView;
private TextView mMessageView;
- private CheckBox mDoNotAskCheckbox;
+ private TextView mDetailMessageView;
private Button mAllowButton;
- private Button mMoreInfoButton;
+ private Button mAllowAlwaysButton;
+ private Button mAllowForegroundButton;
+ private Button mDenyButton;
+ private Button mDenyAndDontAskAgainButton;
+ private ViewGroup mRootView;
- private ManualLayoutFrame mRootView;
-
- // Needed for animation
- private ViewGroup mDescContainer;
- private ViewGroup mCurrentDesc;
- private ViewGroup mDialogContainer;
- private ButtonBarLayout mButtonBar;
-
- public GrantPermissionsViewHandlerImpl(Activity activity, String appPackageName) {
+ public GrantPermissionsViewHandlerImpl(Activity activity, String appPackageName,
+ @NonNull UserHandle userHandle) {
mActivity = activity;
mAppPackageName = appPackageName;
- mPermissionReviewRequired = activity.getPackageManager().isPermissionReviewModeEnabled();
+ mUserHandle = userHandle;
}
@Override
@@ -102,8 +107,9 @@
arguments.putInt(ARG_GROUP_INDEX, mGroupIndex);
arguments.putParcelable(ARG_GROUP_ICON, mGroupIcon);
arguments.putCharSequence(ARG_GROUP_MESSAGE, mGroupMessage);
- arguments.putBoolean(ARG_GROUP_SHOW_DO_NOT_ASK, mShowDonNotAsk);
- arguments.putBoolean(ARG_GROUP_DO_NOT_ASK_CHECKED, mDoNotAskCheckbox.isChecked());
+ arguments.putCharSequence(ARG_GROUP_DETAIL_MESSAGE, mDetailMessage);
+ arguments.putCharSequenceArray(ARG_DIALOG_BUTTON_LABELS, mButtonLabels);
+
}
@Override
@@ -113,194 +119,73 @@
mGroupIcon = savedInstanceState.getParcelable(ARG_GROUP_ICON);
mGroupCount = savedInstanceState.getInt(ARG_GROUP_COUNT);
mGroupIndex = savedInstanceState.getInt(ARG_GROUP_INDEX);
- mShowDonNotAsk = savedInstanceState.getBoolean(ARG_GROUP_SHOW_DO_NOT_ASK);
- mDoNotAskChecked = savedInstanceState.getBoolean(ARG_GROUP_DO_NOT_ASK_CHECKED);
+ mDetailMessage = savedInstanceState.getCharSequence(ARG_GROUP_DETAIL_MESSAGE);
+ mButtonLabels = savedInstanceState.getCharSequenceArray(ARG_DIALOG_BUTTON_LABELS);
- updateDoNotAskCheckBox();
+ updateAll();
}
@Override
public void updateUi(String groupName, int groupCount, int groupIndex, Icon icon,
- CharSequence message, boolean showDonNotAsk) {
+ CharSequence message, CharSequence detailMessage, CharSequence[] buttonLabels) {
+ boolean isNewGroup = mGroupIndex != groupIndex;
+
mGroupName = groupName;
mGroupCount = groupCount;
mGroupIndex = groupIndex;
mGroupIcon = icon;
mGroupMessage = message;
- mShowDonNotAsk = showDonNotAsk;
- mDoNotAskChecked = false;
+ mDetailMessage = detailMessage;
+ mButtonLabels = buttonLabels;
+
// If this is a second (or later) permission and the views exist, then animate.
if (mIconView != null) {
- if (mGroupIndex > 0) {
- animateToPermission();
- } else {
- updateDescription();
- updateGroup();
- updateDoNotAskCheckBox();
- }
+ updateAll();
}
}
- public void onConfigurationChanged() {
- mRootView.onConfigurationChanged();
- }
-
- private void animateOldContent(Runnable callback) {
- // Fade out old description group and scale out the icon for it.
- Interpolator interpolator = AnimationUtils.loadInterpolator(mActivity,
- android.R.interpolator.fast_out_linear_in);
-
- // Icon scale to zero
- mIconView.animate()
- .scaleX(0)
- .scaleY(0)
- .setDuration(OUT_DURATION)
- .setInterpolator(interpolator)
- .start();
-
- // Description fade out
- mCurrentDesc.animate()
- .alpha(0)
- .setDuration(OUT_DURATION)
- .setInterpolator(interpolator)
- .withEndAction(callback)
- .start();
-
- // Checkbox fade out if needed
- if (!mShowDonNotAsk && mDoNotAskCheckbox.getVisibility() == View.VISIBLE) {
- mDoNotAskCheckbox.animate()
- .alpha(0)
- .setDuration(OUT_DURATION)
- .setInterpolator(interpolator)
- .start();
- }
- }
-
- private void attachNewContent(final Runnable callback) {
- mCurrentDesc = (ViewGroup) LayoutInflater.from(mActivity).inflate(
- R.layout.permission_description, mDescContainer, false);
- mDescContainer.removeAllViews();
- mDescContainer.addView(mCurrentDesc);
-
- mDialogContainer.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
- @Override
- public void onLayoutChange(View v, int left, int top, int right, int bottom,
- int oldLeft, int oldTop, int oldRight, int oldBottom) {
- mDialogContainer.removeOnLayoutChangeListener(this);
-
- // Prepare new content to the right to be moved in
- final int containerWidth = mDescContainer.getWidth();
- mCurrentDesc.setTranslationX(containerWidth);
-
- // How much scale for the dialog to appear the same?
- final int oldDynamicHeight = oldBottom - oldTop - mButtonBar.getHeight();
- final float scaleY = (float) oldDynamicHeight / mDescContainer.getHeight();
-
- // How much to translate for the dialog to appear the same?
- final int translationCompensatingScale = (int) (scaleY
- * mDescContainer.getHeight() - mDescContainer.getHeight()) / 2;
- final int translationY = (oldTop - top) + translationCompensatingScale;
-
- // Animate to the current layout
- mDescContainer.setScaleY(scaleY);
- mDescContainer.setTranslationY(translationY);
- mDescContainer.animate()
- .translationY(0)
- .scaleY(1.0f)
- .setInterpolator(AnimationUtils.loadInterpolator(mActivity,
- android.R.interpolator.linear_out_slow_in))
- .setDuration(IN_DURATION)
- .withEndAction(callback)
- .start();
- }
- }
- );
-
- mMessageView = (TextView) mCurrentDesc.findViewById(R.id.permission_message);
- mIconView = (ImageView) mCurrentDesc.findViewById(R.id.permission_icon);
-
- final boolean doNotAskWasShown = mDoNotAskCheckbox.getVisibility() == View.VISIBLE;
-
+ private void updateAll() {
updateDescription();
- updateGroup();
- updateDoNotAskCheckBox();
+ updateDetailDescription();
+ updateButtons();
- if (!doNotAskWasShown && mShowDonNotAsk) {
- mDoNotAskCheckbox.setAlpha(0);
- }
- }
-
- private void animateNewContent() {
- Interpolator interpolator = AnimationUtils.loadInterpolator(mActivity,
- android.R.interpolator.linear_out_slow_in);
-
- // Description slide in
- mCurrentDesc.animate()
- .translationX(0)
- .setDuration(IN_DURATION)
- .setInterpolator(interpolator)
- .start();
-
- // Checkbox fade in if needed
- if (mShowDonNotAsk && mDoNotAskCheckbox.getVisibility() == View.VISIBLE
- && mDoNotAskCheckbox.getAlpha() < 1.0f) {
- mDoNotAskCheckbox.setAlpha(0);
- mDoNotAskCheckbox.animate()
- .alpha(1.0f)
- .setDuration(IN_DURATION)
- .setInterpolator(interpolator)
- .start();
- }
- }
-
- private void animateToPermission() {
- // Remove the old content
- animateOldContent(new Runnable() {
- @Override
- public void run() {
- // Add the new content
- attachNewContent(new Runnable() {
- @Override
- public void run() {
- // Animate the new content
- animateNewContent();
- }
- });
- }
- });
+// 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 = (ManualLayoutFrame) LayoutInflater.from(mActivity)
+ mRootView = (ViewGroup) LayoutInflater.from(mActivity)
.inflate(R.layout.grant_permissions, null);
- mButtonBar = (ButtonBarLayout) mRootView.findViewById(R.id.button_group);
- mButtonBar.setAllowStacking(true);
- mMessageView = (TextView) mRootView.findViewById(R.id.permission_message);
- mIconView = (ImageView) mRootView.findViewById(R.id.permission_icon);
- mCurrentGroupView = (TextView) mRootView.findViewById(R.id.current_page_text);
- mDoNotAskCheckbox = (CheckBox) mRootView.findViewById(R.id.do_not_ask_checkbox);
+ int h = mActivity.getResources().getDisplayMetrics().heightPixels;
+ mRootView.setMinimumHeight(h);
+
+ mMessageView = (TextView) mRootView.findViewById(R.id.permission_message);
+ mDetailMessageView = (TextView) mRootView.findViewById(R.id.detail_message);
+ mIconView = (ImageView) mRootView.findViewById(R.id.permission_icon);
mAllowButton = (Button) mRootView.findViewById(R.id.permission_allow_button);
mAllowButton.setOnClickListener(this);
-
- if (mPermissionReviewRequired) {
- mMoreInfoButton = (Button) mRootView.findViewById(R.id.permission_more_info_button);
- mMoreInfoButton.setVisibility(View.VISIBLE);
- mMoreInfoButton.setOnClickListener(this);
- }
-
- mDialogContainer = (ViewGroup) mRootView.findViewById(R.id.dialog_container);
- mDescContainer = (ViewGroup) mRootView.findViewById(R.id.desc_container);
- mCurrentDesc = (ViewGroup) mRootView.findViewById(R.id.perm_desc_root);
+ mAllowAlwaysButton = (Button) mRootView.findViewById(R.id.permission_allow_always_button);
+ mAllowAlwaysButton.setOnClickListener(this);
+ mAllowForegroundButton =
+ (Button) mRootView.findViewById(R.id.permission_allow_foreground_only_button);
+ mAllowForegroundButton.setOnClickListener(this);
+ mDenyButton = (Button) mRootView.findViewById(R.id.permission_deny_button);
+ mDenyButton.setOnClickListener(this);
+ mDenyAndDontAskAgainButton =
+ (Button) mRootView.findViewById(R.id.permission_deny_and_dont_ask_again_button);
+ mDenyAndDontAskAgainButton.setOnClickListener(this);
mRootView.findViewById(R.id.permission_deny_button).setOnClickListener(this);
- mDoNotAskCheckbox.setOnClickListener(this);
if (mGroupName != null) {
- updateDescription();
- updateGroup();
- updateDoNotAskCheckBox();
+ updateAll();
}
return mRootView;
@@ -318,27 +203,51 @@
mMessageView.setText(mGroupMessage);
}
- private void updateGroup() {
- if (mGroupCount > 1) {
- mCurrentGroupView.setVisibility(View.VISIBLE);
- mCurrentGroupView.setText(mActivity.getString(R.string.current_permission_template,
- mGroupIndex + 1, mGroupCount));
+ private void updateDetailDescription() {
+ if (mDetailMessage == null) {
+ mDetailMessageView.setVisibility(View.GONE);
} else {
- mCurrentGroupView.setVisibility(View.GONE);
+ mDetailMessageView.setText(mDetailMessage);
+ mDetailMessageView.setVisibility(View.VISIBLE);
}
}
- private void updateDoNotAskCheckBox() {
- if (mShowDonNotAsk) {
- mDoNotAskCheckbox.setVisibility(View.VISIBLE);
- mDoNotAskCheckbox.setOnClickListener(this);
- mDoNotAskCheckbox.setChecked(mDoNotAskChecked);
- mAllowButton.setEnabled(!mDoNotAskChecked);
+ private void updateButtons() {
+ if (mButtonLabels[LABEL_ALLOW_BUTTON] == null) {
+ mAllowButton.setVisibility(View.GONE);
} else {
- mDoNotAskCheckbox.setVisibility(View.GONE);
- mDoNotAskCheckbox.setOnClickListener(null);
- mAllowButton.setEnabled(true);
+ mAllowButton.setVisibility(View.VISIBLE);
+ mAllowButton.setText(mButtonLabels[LABEL_ALLOW_BUTTON]);
}
+
+ if (mButtonLabels[LABEL_ALLOW_ALWAYS_BUTTON] == null) {
+ mAllowAlwaysButton.setVisibility(View.GONE);
+ } else {
+ mAllowAlwaysButton.setVisibility(View.VISIBLE);
+ mAllowAlwaysButton.setText(mButtonLabels[LABEL_ALLOW_ALWAYS_BUTTON]);
+ }
+
+ if (mButtonLabels[LABEL_ALLOW_FOREGROUND_BUTTON] == null) {
+ mAllowForegroundButton.setVisibility(View.GONE);
+ } else {
+ mAllowForegroundButton.setVisibility(View.VISIBLE);
+ mAllowForegroundButton.setText(mButtonLabels[LABEL_ALLOW_FOREGROUND_BUTTON]);
+ }
+
+ if (mButtonLabels[LABEL_DENY_BUTTON] == null) {
+ mDenyButton.setVisibility(View.GONE);
+ } else {
+ mDenyButton.setVisibility(View.VISIBLE);
+ mDenyButton.setText(mButtonLabels[LABEL_DENY_BUTTON]);
+ }
+
+ if (mButtonLabels[LABEL_DENY_AND_DONT_ASK_AGAIN_BUTTON] == null) {
+ mDenyAndDontAskAgainButton.setVisibility(View.GONE);
+ } else {
+ mDenyAndDontAskAgainButton.setVisibility(View.VISIBLE);
+ mDenyAndDontAskAgainButton.setText(mButtonLabels[LABEL_DENY_AND_DONT_ASK_AGAIN_BUTTON]);
+ }
+
}
@Override
@@ -348,35 +257,55 @@
if (mResultListener != null) {
view.performAccessibilityAction(
AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, null);
- mResultListener.onPermissionGrantResult(mGroupName, true, false);
+ mResultListener.onPermissionGrantResult(mGroupName, GRANTED_ALWAYS);
}
break;
- case R.id.permission_deny_button:
- mAllowButton.setEnabled(true);
+ case R.id.permission_allow_always_button:
if (mResultListener != null) {
view.performAccessibilityAction(
AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, null);
- mResultListener.onPermissionGrantResult(mGroupName, false,
- mShowDonNotAsk && mDoNotAskCheckbox.isChecked());
+ mResultListener.onPermissionGrantResult(mGroupName, GRANTED_ALWAYS);
+ }
+ break;
+ case R.id.permission_allow_foreground_only_button:
+ if (mResultListener != null) {
+ view.performAccessibilityAction(
+ AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, null);
+ mResultListener.onPermissionGrantResult(mGroupName,
+ GRANTED_FOREGROUND_ONLY);
+ }
+ break;
+ case R.id.permission_deny_button:
+ if (mResultListener != null) {
+ view.performAccessibilityAction(
+ AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, null);
+ mResultListener.onPermissionGrantResult(mGroupName, DENIED);
+ }
+ break;
+ case R.id.permission_deny_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;
case R.id.permission_more_info_button:
Intent intent = new Intent(Intent.ACTION_MANAGE_APP_PERMISSIONS);
intent.putExtra(Intent.EXTRA_PACKAGE_NAME, mAppPackageName);
+ intent.putExtra(Intent.EXTRA_USER, mUserHandle);
intent.putExtra(ManagePermissionsActivity.EXTRA_ALL_PERMISSIONS, true);
mActivity.startActivity(intent);
break;
- case R.id.do_not_ask_checkbox:
- mAllowButton.setEnabled(!mDoNotAskCheckbox.isChecked());
- break;
}
+
}
@Override
public void onBackPressed() {
if (mResultListener != null) {
- final boolean doNotAskAgain = mDoNotAskCheckbox.isChecked();
- mResultListener.onPermissionGrantResult(mGroupName, false, doNotAskAgain);
+ mResultListener.onPermissionGrantResult(mGroupName, DENIED);
}
}
+
}
diff --git a/src/com/android/packageinstaller/permission/ui/handheld/ManageCustomPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/handheld/ManageCustomPermissionsFragment.java
index 4f740e2..8249053 100644
--- a/src/com/android/packageinstaller/permission/ui/handheld/ManageCustomPermissionsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/handheld/ManageCustomPermissionsFragment.java
@@ -16,17 +16,32 @@
package com.android.packageinstaller.permission.ui.handheld;
+import static com.android.packageinstaller.Constants.EXTRA_SESSION_ID;
+
+import android.os.Bundle;
import android.view.MenuItem;
/**
* Fragment that allows the user to manage custom permissions.
*/
public class ManageCustomPermissionsFragment extends ManagePermissionsFragment {
+
+ /**
+ * @return A new fragment
+ */
+ public static ManageCustomPermissionsFragment newInstance(long sessionId) {
+ ManageCustomPermissionsFragment fragment = new ManageCustomPermissionsFragment();
+ Bundle arguments = new Bundle();
+ arguments.putLong(EXTRA_SESSION_ID, sessionId);
+ fragment.setArguments(arguments);
+ return fragment;
+ }
+
@Override
public void onStart() {
super.onStart();
- getActivity().setTitle(com.android.packageinstaller.R.string.additional_permissions);
+ getActivity().setTitle(com.android.permissioncontroller.R.string.additional_permissions);
}
@Override
diff --git a/src/com/android/packageinstaller/permission/ui/handheld/ManagePermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/handheld/ManagePermissionsFragment.java
index e50a1d8..638c3a6 100644
--- a/src/com/android/packageinstaller/permission/ui/handheld/ManagePermissionsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/handheld/ManagePermissionsFragment.java
@@ -15,23 +15,28 @@
*/
package com.android.packageinstaller.permission.ui.handheld;
+import static com.android.packageinstaller.Constants.EXTRA_SESSION_ID;
+import static com.android.packageinstaller.Constants.INVALID_SESSION_ID;
+
import android.app.ActionBar;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
-import android.preference.Preference;
-import android.preference.PreferenceScreen;
-import android.util.ArraySet;
import android.util.Log;
+import android.widget.ImageView;
-import com.android.packageinstaller.R;
-import com.android.packageinstaller.permission.model.PermissionApps.PmCache;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+import androidx.preference.PreferenceViewHolder;
+
import com.android.packageinstaller.permission.model.PermissionGroup;
import com.android.packageinstaller.permission.model.PermissionGroups;
import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
-import java.util.List;
+import java.text.Collator;
+import java.util.ArrayList;
/**
* Superclass for fragments allowing the user to manage permissions.
@@ -43,10 +48,10 @@
static final String OS_PKG = "android";
- private ArraySet<String> mLauncherPkgs;
-
private PermissionGroups mPermissions;
+ private Collator mCollator;
+
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
@@ -56,8 +61,11 @@
if (ab != null) {
ab.setDisplayHomeAsUpEnabled(true);
}
- mLauncherPkgs = Utils.getLauncherPackages(getContext());
- mPermissions = new PermissionGroups(getContext(), getLoaderManager(), this);
+
+ mPermissions = new PermissionGroups(getContext(), getActivity().getLoaderManager(), this,
+ false, true);
+ mCollator = Collator.getInstance(
+ getContext().getResources().getConfiguration().getLocales().get(0));
}
@Override
@@ -70,7 +78,9 @@
}
Intent intent = new Intent(Intent.ACTION_MANAGE_PERMISSION_APPS)
- .putExtra(Intent.EXTRA_PERMISSION_NAME, key);
+ .putExtra(Intent.EXTRA_PERMISSION_NAME, key)
+ .putExtra(EXTRA_SESSION_ID,
+ getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID));
try {
getActivity().startActivity(intent);
} catch (ActivityNotFoundException e) {
@@ -105,31 +115,33 @@
* @return The preference screen the permissions were added to
*/
protected PreferenceScreen updatePermissionsUi(boolean addSystemPermissions) {
- Context context = getActivity();
- if (context == null) {
+ Context context = getPreferenceManager().getContext();
+ if (context == null || getActivity() == null) {
return null;
}
- List<PermissionGroup> groups = mPermissions.getGroups();
+ ArrayList<PermissionGroup> groups = new ArrayList<>(mPermissions.getGroups());
+ groups.sort((x, y) -> mCollator.compare(x.getLabel(), y.getLabel()));
PreferenceScreen screen = getPreferenceScreen();
if (screen == null) {
- screen = getPreferenceManager().createPreferenceScreen(getActivity());
+ screen = getPreferenceManager().createPreferenceScreen(context);
setPreferenceScreen(screen);
} else {
screen.removeAll();
}
+ screen.setOrderingAsAdded(true);
// 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(getContext().getPackageManager());
- for (PermissionGroup group : groups) {
+ for (int i = 0; i < groups.size(); i++) {
+ PermissionGroup group = groups.get(i);
boolean isSystemPermission = group.getDeclaringPackage().equals(OS_PKG);
if (addSystemPermissions == isSystemPermission) {
Preference preference = findPreference(group.getName());
if (preference == null) {
- preference = new Preference(context);
+ preference = new FixedSizeIconPreference(context);
preference.setOnPreferenceClickListener(this);
preference.setKey(group.getName());
preference.setIcon(Utils.applyTint(context, group.getIcon(),
@@ -151,4 +163,27 @@
return screen;
}
+
+ /**
+ * A preference whose icons have the same fixed size.
+ */
+ private static final class FixedSizeIconPreference extends Preference {
+ FixedSizeIconPreference(Context context) {
+ super(context);
+ }
+
+ @Override
+ public void onBindViewHolder(PreferenceViewHolder holder) {
+ super.onBindViewHolder(holder);
+ ImageView icon = ((ImageView) holder.findViewById(android.R.id.icon));
+ icon.setAdjustViewBounds(true);
+ int size = getContext().getResources().getDimensionPixelSize(
+ R.dimen.permission_icon_size);
+ icon.setMaxWidth(size);
+ icon.setMaxHeight(size);
+ icon.getLayoutParams().width = size;
+ icon.getLayoutParams().height = size;
+ icon.setScaleType(ImageView.ScaleType.FIT_CENTER);
+ }
+ }
}
diff --git a/src/com/android/packageinstaller/permission/ui/handheld/ManageStandardPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/handheld/ManageStandardPermissionsFragment.java
index 075ab3c..3d793f0 100644
--- a/src/com/android/packageinstaller/permission/ui/handheld/ManageStandardPermissionsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/handheld/ManageStandardPermissionsFragment.java
@@ -15,14 +15,18 @@
*/
package com.android.packageinstaller.permission.ui.handheld;
-import android.app.FragmentTransaction;
-import android.preference.Preference;
-import android.preference.PreferenceScreen;
+import static com.android.packageinstaller.Constants.EXTRA_SESSION_ID;
+
+import android.os.Bundle;
import android.view.MenuItem;
-import com.android.packageinstaller.R;
+import androidx.fragment.app.FragmentTransaction;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+
import com.android.packageinstaller.permission.model.PermissionGroup;
import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
import java.util.List;
@@ -31,22 +35,31 @@
*/
public final class ManageStandardPermissionsFragment extends ManagePermissionsFragment {
private static final String EXTRA_PREFS_KEY = "extra_prefs_key";
+ private static final int MAXIMUM_APP_COUNT = 3;
/**
* @return A new fragment
*/
- public static ManageStandardPermissionsFragment newInstance() {
- return new ManageStandardPermissionsFragment();
+ public static ManageStandardPermissionsFragment newInstance(long sessionId) {
+ ManageStandardPermissionsFragment fragment = new ManageStandardPermissionsFragment();
+ Bundle arguments = new Bundle();
+ arguments.putLong(EXTRA_SESSION_ID, sessionId);
+ fragment.setArguments(arguments);
+ return fragment;
+ }
+
+ @Override
+ public void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
}
@Override
public void onStart() {
super.onStart();
- getActivity().setTitle(com.android.packageinstaller.R.string.app_permissions);
+ getActivity().setTitle(com.android.permissioncontroller.R.string.app_permission_manager);
}
-
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
@@ -79,15 +92,17 @@
}
} else {
if (additionalPermissionsPreference == null) {
- additionalPermissionsPreference = new Preference(getActivity());
+ additionalPermissionsPreference = new Preference(
+ getPreferenceManager().getContext());
additionalPermissionsPreference.setKey(EXTRA_PREFS_KEY);
additionalPermissionsPreference.setIcon(Utils.applyTint(getActivity(),
R.drawable.ic_more_items,
android.R.attr.colorControlNormal));
additionalPermissionsPreference.setTitle(R.string.additional_permissions);
additionalPermissionsPreference.setOnPreferenceClickListener(preference -> {
+ long sessionId = getArguments().getLong(EXTRA_SESSION_ID);
ManageCustomPermissionsFragment frag =
- new ManageCustomPermissionsFragment();
+ ManageCustomPermissionsFragment.newInstance(sessionId);
frag.setTargetFragment(ManageStandardPermissionsFragment.this, 0);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(android.R.id.content, frag);
diff --git a/src/com/android/packageinstaller/permission/ui/handheld/MultiTargetSwitchPreference.java b/src/com/android/packageinstaller/permission/ui/handheld/MultiTargetSwitchPreference.java
index 61e4fb9..e63cdb2 100644
--- a/src/com/android/packageinstaller/permission/ui/handheld/MultiTargetSwitchPreference.java
+++ b/src/com/android/packageinstaller/permission/ui/handheld/MultiTargetSwitchPreference.java
@@ -17,10 +17,12 @@
package com.android.packageinstaller.permission.ui.handheld;
import android.content.Context;
-import android.preference.SwitchPreference;
import android.view.View;
import android.widget.Switch;
+import androidx.preference.PreferenceViewHolder;
+import androidx.preference.SwitchPreference;
+
class MultiTargetSwitchPreference extends SwitchPreference {
private View.OnClickListener mSwitchOnClickLister;
@@ -45,15 +47,17 @@
}
@Override
- protected void onBindView(View view) {
- super.onBindView(view);
- Switch switchView = (Switch) view.findViewById(
- com.android.internal.R.id.switch_widget);
- if (mSwitchOnClickLister != null) {
+ public void onBindViewHolder(PreferenceViewHolder holder) {
+ super.onBindViewHolder(holder);
+ Switch switchView = holder.itemView.findViewById(android.R.id.switch_widget);
+ if (switchView != null) {
switchView.setOnClickListener(mSwitchOnClickLister);
- final int padding = (int) ((view.getMeasuredHeight()
- - switchView.getMeasuredHeight()) / 2 + 0.5f);
- switchView.setPadding(padding, padding, 0, padding);
+
+ if (mSwitchOnClickLister != null) {
+ final int padding = (int) ((holder.itemView.getMeasuredHeight()
+ - switchView.getMeasuredHeight()) / 2 + 0.5f);
+ switchView.setPaddingRelative(padding, padding, 0, padding);
+ }
}
}
-}
\ No newline at end of file
+}
diff --git a/src/com/android/packageinstaller/permission/ui/handheld/PermissionAppsFragment.java b/src/com/android/packageinstaller/permission/ui/handheld/PermissionAppsFragment.java
index f4dceb7..304aa38 100644
--- a/src/com/android/packageinstaller/permission/ui/handheld/PermissionAppsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/handheld/PermissionAppsFragment.java
@@ -15,60 +15,79 @@
*/
package com.android.packageinstaller.permission.ui.handheld;
-import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+import static com.android.packageinstaller.Constants.EXTRA_SESSION_ID;
+import static com.android.packageinstaller.Constants.INVALID_SESSION_ID;
+import static com.android.packageinstaller.PermissionControllerStatsLog.PERMISSION_APPS_FRAGMENT_VIEWED;
+import static com.android.packageinstaller.PermissionControllerStatsLog.PERMISSION_APPS_FRAGMENT_VIEWED__CATEGORY__ALLOWED;
+import static com.android.packageinstaller.PermissionControllerStatsLog.PERMISSION_APPS_FRAGMENT_VIEWED__CATEGORY__ALLOWED_FOREGROUND;
+import static com.android.packageinstaller.PermissionControllerStatsLog.PERMISSION_APPS_FRAGMENT_VIEWED__CATEGORY__DENIED;
+import static com.android.packageinstaller.PermissionControllerStatsLog.PERMISSION_APPS_FRAGMENT_VIEWED__CATEGORY__UNDEFINED;
import android.app.ActionBar;
-import android.app.AlertDialog;
-import android.app.Fragment;
import android.content.Context;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
-import android.preference.Preference;
-import android.preference.Preference.OnPreferenceClickListener;
-import android.preference.PreferenceScreen;
-import android.preference.SwitchPreference;
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 android.view.View;
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceScreen;
+import androidx.preference.SwitchPreferenceCompat;
+
import com.android.packageinstaller.DeviceUtils;
-import com.android.packageinstaller.R;
+import com.android.packageinstaller.PermissionControllerStatsLog;
import com.android.packageinstaller.permission.model.AppPermissionGroup;
import com.android.packageinstaller.permission.model.PermissionApps;
import com.android.packageinstaller.permission.model.PermissionApps.Callback;
import com.android.packageinstaller.permission.model.PermissionApps.PermissionApp;
-import com.android.packageinstaller.permission.utils.LocationUtils;
-import com.android.packageinstaller.permission.utils.SafetyNetLogger;
import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
import com.android.settingslib.HelpUtils;
-import com.android.settingslib.RestrictedLockUtils;
+import java.text.Collator;
import java.util.ArrayList;
-import java.util.List;
+import java.util.Map;
+import java.util.Random;
-public final class PermissionAppsFragment extends PermissionsFrameFragment implements Callback,
- Preference.OnPreferenceChangeListener {
+/**
+ * Show and manage apps which request a single permission group.
+ *
+ * <p>Shows a list of apps which request at least on permission of this group.
+ */
+public final class PermissionAppsFragment extends SettingsWithLargeHeader implements Callback {
- private static final int MENU_SHOW_SYSTEM = Menu.FIRST;
- private static final int MENU_HIDE_SYSTEM = Menu.FIRST + 1;
private static final String KEY_SHOW_SYSTEM_PREFS = "_showSystem";
+ private static final String CREATION_LOGGED_SYSTEM_PREFS = "_creationLogged";
+ private static final String KEY_FOOTER = "_footer";
+ private static final String LOG_TAG = "PermissionAppsFragment";
private static final String SHOW_SYSTEM_KEY = PermissionAppsFragment.class.getName()
+ KEY_SHOW_SYSTEM_PREFS;
- public static PermissionAppsFragment newInstance(String permissionName) {
- return setPermissionName(new PermissionAppsFragment(), permissionName);
+ private static final String CREATION_LOGGED = PermissionAppsFragment.class.getName()
+ + CREATION_LOGGED_SYSTEM_PREFS;
+
+ /**
+ * @return A new fragment
+ */
+ public static PermissionAppsFragment newInstance(String permissionName, long sessionId) {
+ return setPermissionNameAndSessionId(
+ new PermissionAppsFragment(), permissionName, sessionId);
}
- private static <T extends Fragment> T setPermissionName(T fragment, String permissionName) {
+ private static <T extends Fragment> T setPermissionNameAndSessionId(
+ T fragment, String permissionName, long sessionId) {
Bundle arguments = new Bundle();
arguments.putString(Intent.EXTRA_PERMISSION_NAME, permissionName);
+ arguments.putLong(EXTRA_SESSION_ID, sessionId);
fragment.setArguments(arguments);
return fragment;
}
@@ -77,23 +96,23 @@
private PreferenceScreen mExtraScreen;
- private ArrayMap<String, AppPermissionGroup> mToggledGroups;
- private ArraySet<String> mLauncherPkgs;
- private boolean mHasConfirmedRevoke;
-
private boolean mShowSystem;
+ private boolean mCreationLogged;
private boolean mHasSystemApps;
private MenuItem mShowSystemMenu;
private MenuItem mHideSystemMenu;
private Callback mOnPermissionsLoadedListener;
+ private Collator mCollator;
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
mShowSystem = savedInstanceState.getBoolean(SHOW_SYSTEM_KEY);
+ mCreationLogged = savedInstanceState.getBoolean(CREATION_LOGGED);
}
setLoading(true /* loading */, false /* animate */);
@@ -102,11 +121,15 @@
if (ab != null) {
ab.setDisplayHomeAsUpEnabled(true);
}
- mLauncherPkgs = Utils.getLauncherPackages(getContext());
String groupName = getArguments().getString(Intent.EXTRA_PERMISSION_NAME);
mPermissionApps = new PermissionApps(getActivity(), groupName, this);
mPermissionApps.refresh(true);
+
+ mCollator = Collator.getInstance(
+ getContext().getResources().getConfiguration().getLocales().get(0));
+
+ addPreferencesFromResource(R.xml.allowed_denied);
}
@Override
@@ -114,6 +137,7 @@
super.onSaveInstanceState(outState);
outState.putBoolean(SHOW_SYSTEM_KEY, mShowSystem);
+ outState.putBoolean(CREATION_LOGGED, mCreationLogged);
}
@Override
@@ -124,6 +148,8 @@
@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);
@@ -162,15 +188,22 @@
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
- bindUi(this, mPermissionApps);
+ bindUi(this, mPermissionApps,
+ getArguments().getString(Intent.EXTRA_PERMISSION_NAME));
}
- private static void bindUi(Fragment fragment, PermissionApps permissionApps) {
+ private static void bindUi(SettingsWithLargeHeader fragment, PermissionApps permissionApps,
+ @NonNull String groupName) {
final Drawable icon = permissionApps.getIcon();
- final CharSequence label = permissionApps.getLabel();
+ final CharSequence label = permissionApps.getFullLabel();
+
+ fragment.setHeader(icon, label, null, null, true);
+ fragment.setSummary(Utils.getPermissionGroupDescriptionString(fragment.getActivity(),
+ groupName, permissionApps.getDescription()), null);
+
final ActionBar ab = fragment.getActivity().getActionBar();
if (ab != null) {
- ab.setTitle(fragment.getString(R.string.permission_title, label));
+ ab.setTitle(label);
}
}
@@ -180,36 +213,73 @@
@Override
public void onPermissionsLoaded(PermissionApps permissionApps) {
- Context context = getActivity();
+ Context context = getPreferenceManager().getContext();
- if (context == null) {
+ if (context == null || getActivity() == null) {
return;
}
boolean isTelevision = DeviceUtils.isTelevision(context);
- PreferenceScreen screen = getPreferenceScreen();
- if (screen == null) {
- screen = getPreferenceManager().createPreferenceScreen(getActivity());
- setPreferenceScreen(screen);
- }
- screen.setOrderingAsAdded(false);
+ PreferenceCategory allowed = (PreferenceCategory) findPreference("allowed");
+ PreferenceCategory allowedForeground = findPreference("allowed_foreground");
+ PreferenceCategory denied = (PreferenceCategory) findPreference("denied");
- ArraySet<String> preferencesToRemove = new ArraySet<>();
- for (int i = 0, n = screen.getPreferenceCount(); i < n; i++) {
- preferencesToRemove.add(screen.getPreference(i).getKey());
+ allowed.setOrderingAsAdded(true);
+ allowedForeground.setOrderingAsAdded(true);
+ denied.setOrderingAsAdded(true);
+
+ Map<String, Preference> existingPrefs = new ArrayMap<>();
+ int numPreferences = allowed.getPreferenceCount();
+ for (int i = 0; i < numPreferences; i++) {
+ Preference preference = allowed.getPreference(i);
+ existingPrefs.put(preference.getKey(), preference);
}
+ allowed.removeAll();
+ numPreferences = allowedForeground.getPreferenceCount();
+ for (int i = 0; i < numPreferences; i++) {
+ Preference preference = allowedForeground.getPreference(i);
+ existingPrefs.put(preference.getKey(), preference);
+ }
+ allowedForeground.removeAll();
+ numPreferences = denied.getPreferenceCount();
+ for (int i = 0; i < numPreferences; i++) {
+ Preference preference = denied.getPreference(i);
+ existingPrefs.put(preference.getKey(), preference);
+ }
+ denied.removeAll();
if (mExtraScreen != null) {
for (int i = 0, n = mExtraScreen.getPreferenceCount(); i < n; i++) {
- preferencesToRemove.add(mExtraScreen.getPreference(i).getKey());
+ Preference preference = mExtraScreen.getPreference(i);
+ existingPrefs.put(preference.getKey(), preference);
}
+ mExtraScreen.removeAll();
}
mHasSystemApps = false;
boolean menuOptionsInvalided = false;
+ boolean hasPermissionWithBackgroundMode = false;
- for (PermissionApp app : permissionApps.getApps()) {
- if (!Utils.shouldShowPermission(app)) {
+ ArrayList<PermissionApp> sortedApps = new ArrayList<>(permissionApps.getApps());
+ sortedApps.sort((x, y) -> {
+ int result = mCollator.compare(x.getLabel(), y.getLabel());
+ if (result == 0) {
+ result = x.getUid() - y.getUid();
+ }
+ return result;
+ });
+
+ long viewIdForLogging = new Random().nextLong();
+ long sessionId = getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID);
+
+ for (int i = 0; i < sortedApps.size(); i++) {
+ PermissionApp app = sortedApps.get(i);
+ AppPermissionGroup group = app.getPermissionGroup();
+
+ hasPermissionWithBackgroundMode =
+ hasPermissionWithBackgroundMode || group.hasPermissionWithBackgroundMode();
+
+ if (!Utils.shouldShowPermission(getContext(), group)) {
continue;
}
@@ -218,13 +288,13 @@
}
String key = app.getKey();
- preferencesToRemove.remove(key);
- Preference existingPref = screen.findPreference(key);
- if (existingPref == null && mExtraScreen != null) {
- existingPref = mExtraScreen.findPreference(key);
+ Preference existingPref = existingPrefs.get(key);
+ if (existingPref != null) {
+ // Without this, existing preferences remember their old order.
+ existingPref.setOrder(Preference.DEFAULT_ORDER);
}
- boolean isSystemApp = Utils.isSystem(app, mLauncherPkgs);
+ boolean isSystemApp = !Utils.isGroupOrBgGroupUserSensitive(group);
if (isSystemApp && !menuOptionsInvalided) {
mHasSystemApps = true;
@@ -233,53 +303,34 @@
}
if (isSystemApp && !isTelevision && !mShowSystem) {
- if (existingPref != null) {
- screen.removePreference(existingPref);
- }
continue;
}
+ PreferenceCategory category = null;
+ if (group.areRuntimePermissionsGranted()) {
+ if (!group.hasPermissionWithBackgroundMode()
+ || (group.getBackgroundPermissions() != null
+ && group.getBackgroundPermissions().areRuntimePermissionsGranted())) {
+ category = allowed;
+ } else {
+ category = allowedForeground;
+ }
+ } else {
+ category = denied;
+ }
+
if (existingPref != null) {
- // If existing preference - only update its state.
- final boolean isPolicyFixed = app.isPolicyFixed();
- EnforcedAdmin enforcedAdmin = RestrictedLockUtils.getProfileOrDeviceOwner(
- getActivity(), app.getUserId());
- if (!isTelevision && (existingPref instanceof RestrictedSwitchPreference)) {
- ((RestrictedSwitchPreference) existingPref).setDisabledByAdmin(
- isPolicyFixed ? enforcedAdmin : null);
- existingPref.setSummary(isPolicyFixed ?
- getString(R.string.disabled_by_admin_summary_text) : null);
- } else {
- existingPref.setEnabled(!isPolicyFixed);
- existingPref.setSummary(isPolicyFixed ?
- getString(R.string.permission_summary_enforced_by_policy) : null);
- }
- existingPref.setPersistent(false);
- if (existingPref instanceof SwitchPreference) {
- ((SwitchPreference) existingPref)
- .setChecked(app.areRuntimePermissionsGranted());
- }
+ category.addPreference(existingPref);
continue;
}
- RestrictedSwitchPreference pref = new RestrictedSwitchPreference(context);
- pref.setOnPreferenceChangeListener(this);
- pref.setKey(app.getKey());
+ PermissionControlPreference pref = new PermissionControlPreference(context, group,
+ PermissionAppsFragment.class.getName(), sessionId);
+ pref.setKey(key);
pref.setIcon(app.getIcon());
- pref.setTitle(app.getLabel());
- EnforcedAdmin enforcedAdmin = RestrictedLockUtils.getProfileOrDeviceOwner(
- getActivity(), app.getUserId());
- if (app.isPolicyFixed()) {
- if (!isTelevision && enforcedAdmin != null) {
- pref.setDisabledByAdmin(enforcedAdmin);
- pref.setSummary(R.string.disabled_by_admin_summary_text);
- } else {
- pref.setEnabled(false);
- pref.setSummary(R.string.permission_summary_enforced_by_policy);
- }
- }
- pref.setPersistent(false);
- pref.setChecked(app.areRuntimePermissionsGranted());
+ pref.setTitle(Utils.getFullAppLabel(app.getAppInfo(), context));
+ pref.setEllipsizeEnd();
+ pref.useSmallerIcon();
if (isSystemApp && isTelevision) {
if (mExtraScreen == null) {
@@ -287,13 +338,24 @@
}
mExtraScreen.addPreference(pref);
} else {
- screen.addPreference(pref);
+ category.addPreference(pref);
+ if (!mCreationLogged) {
+ logPermissionAppsFragmentCreated(app, viewIdForLogging, category == allowed,
+ category == allowedForeground, category == denied);
+ }
}
}
+ mCreationLogged = true;
if (mExtraScreen != null) {
- preferencesToRemove.remove(KEY_SHOW_SYSTEM_PREFS);
- Preference pref = screen.findPreference(KEY_SHOW_SYSTEM_PREFS);
+ Preference pref = allowed.findPreference(KEY_SHOW_SYSTEM_PREFS);
+
+ int grantedCount = 0;
+ for (int i = 0, n = mExtraScreen.getPreferenceCount(); i < n; i++) {
+ if (((SwitchPreferenceCompat) mExtraScreen.getPreference(i)).isChecked()) {
+ grantedCount++;
+ }
+ }
if (pref == null) {
pref = new Preference(context);
@@ -301,42 +363,45 @@
pref.setIcon(Utils.applyTint(context, R.drawable.ic_toc,
android.R.attr.colorControlNormal));
pref.setTitle(R.string.preference_show_system_apps);
- pref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
- @Override
- public boolean onPreferenceClick(Preference preference) {
- SystemAppsFragment frag = new SystemAppsFragment();
- setPermissionName(frag, getArguments().getString(Intent.EXTRA_PERMISSION_NAME));
- frag.setTargetFragment(PermissionAppsFragment.this, 0);
- getFragmentManager().beginTransaction()
- .replace(android.R.id.content, frag)
- .addToBackStack("SystemApps")
- .commit();
- return true;
- }
+ pref.setOnPreferenceClickListener(preference -> {
+ SystemAppsFragment frag = new SystemAppsFragment();
+ setPermissionNameAndSessionId(frag,
+ getArguments().getString(Intent.EXTRA_PERMISSION_NAME), sessionId);
+ frag.setTargetFragment(PermissionAppsFragment.this, 0);
+ getFragmentManager().beginTransaction()
+ .replace(android.R.id.content, frag)
+ .addToBackStack("SystemApps")
+ .commit();
+ return true;
});
- screen.addPreference(pref);
+ PreferenceCategory category = grantedCount > 0 ? allowed : denied;
+ category.addPreference(pref);
}
- int grantedCount = 0;
- for (int i = 0, n = mExtraScreen.getPreferenceCount(); i < n; i++) {
- if (((SwitchPreference) mExtraScreen.getPreference(i)).isChecked()) {
- grantedCount++;
- }
- }
pref.setSummary(getString(R.string.app_permissions_group_summary,
grantedCount, mExtraScreen.getPreferenceCount()));
}
- for (String key : preferencesToRemove) {
- Preference pref = screen.findPreference(key);
- if (pref != null) {
- screen.removePreference(pref);
- } else if (mExtraScreen != null) {
- pref = mExtraScreen.findPreference(key);
- if (pref != null) {
- mExtraScreen.removePreference(pref);
- }
- }
+ if (hasPermissionWithBackgroundMode) {
+ allowed.setTitle(R.string.allowed_always_header);
+ }
+
+ if (allowed.getPreferenceCount() == 0) {
+ Preference empty = new Preference(context);
+ empty.setTitle(getString(R.string.no_apps_allowed));
+ empty.setSelectable(false);
+ allowed.addPreference(empty);
+ }
+ if (allowedForeground.getPreferenceCount() == 0) {
+ findPreference("allowed_foreground").setVisible(false);
+ } else {
+ findPreference("allowed_foreground").setVisible(true);
+ }
+ if (denied.getPreferenceCount() == 0) {
+ Preference empty = new Preference(context);
+ empty.setTitle(getString(R.string.no_apps_denied));
+ empty.setSelectable(false);
+ denied.addPreference(empty);
}
setLoading(false /* loading */, true /* animate */);
@@ -346,84 +411,29 @@
}
}
- @Override
- public boolean onPreferenceChange(final Preference preference, Object newValue) {
- String pkg = preference.getKey();
- final PermissionApp app = mPermissionApps.getApp(pkg);
+ private void logPermissionAppsFragmentCreated(PermissionApp permissionApp, long viewId,
+ boolean isAllowed, boolean isAllowedForeground, boolean isDenied) {
+ long sessionId = getArguments().getLong(EXTRA_SESSION_ID, 0);
- if (app == null) {
- return false;
+ int category = PERMISSION_APPS_FRAGMENT_VIEWED__CATEGORY__UNDEFINED;
+ if (isAllowed) {
+ category = PERMISSION_APPS_FRAGMENT_VIEWED__CATEGORY__ALLOWED;
+ } else if (isAllowedForeground) {
+ category = PERMISSION_APPS_FRAGMENT_VIEWED__CATEGORY__ALLOWED_FOREGROUND;
+ } else if (isDenied) {
+ category = PERMISSION_APPS_FRAGMENT_VIEWED__CATEGORY__DENIED;
}
- addToggledGroup(app.getPackageName(), app.getPermissionGroup());
+ PermissionControllerStatsLog.write(PERMISSION_APPS_FRAGMENT_VIEWED, sessionId, viewId,
+ mPermissionApps.getGroupName(), permissionApp.getUid(),
+ permissionApp.getPackageName(), category);
+ Log.v(LOG_TAG, "PermissionAppsFragment created with sessionId=" + sessionId
+ + " permissionGroupName=" + mPermissionApps.getGroupName() + " appUid="
+ + permissionApp.getUid() + " packageName=" + permissionApp.getPackageName()
+ + " category=" + category);
+ };
- if (LocationUtils.isLocationGroupAndProvider(mPermissionApps.getGroupName(),
- app.getPackageName())) {
- LocationUtils.showLocationDialog(getContext(), app.getLabel());
- return false;
- }
- if (newValue == Boolean.TRUE) {
- app.grantRuntimePermissions();
- } else {
- final boolean grantedByDefault = app.hasGrantedByDefaultPermissions();
- if (grantedByDefault || (!app.doesSupportRuntimePermissions()
- && !mHasConfirmedRevoke)) {
- new AlertDialog.Builder(getContext())
- .setMessage(grantedByDefault ? R.string.system_warning
- : R.string.old_sdk_deny_warning)
- .setNegativeButton(R.string.cancel, null)
- .setPositiveButton(R.string.grant_dialog_button_deny_anyway,
- new OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- ((SwitchPreference) preference).setChecked(false);
- app.revokeRuntimePermissions();
- if (!grantedByDefault) {
- mHasConfirmedRevoke = true;
- }
- }
- })
- .show();
- return false;
- } else {
- app.revokeRuntimePermissions();
- }
- }
- return true;
- }
-
- @Override
- public void onPause() {
- super.onPause();
- logToggledGroups();
- }
-
- private void addToggledGroup(String packageName, AppPermissionGroup group) {
- if (mToggledGroups == null) {
- mToggledGroups = new ArrayMap<>();
- }
- // Double toggle is back to initial state.
- if (mToggledGroups.containsKey(packageName)) {
- mToggledGroups.remove(packageName);
- } else {
- mToggledGroups.put(packageName, group);
- }
- }
-
- private void logToggledGroups() {
- if (mToggledGroups != null) {
- final int groupCount = mToggledGroups.size();
- for (int i = 0; i < groupCount; i++) {
- String packageName = mToggledGroups.keyAt(i);
- List<AppPermissionGroup> groups = new ArrayList<>();
- groups.add(mToggledGroups.valueAt(i));
- SafetyNetLogger.logPermissionsToggled(packageName, groups);
- }
- mToggledGroups = null;
- }
- }
-
- public static class SystemAppsFragment extends PermissionsFrameFragment implements Callback {
+ public static class SystemAppsFragment extends SettingsWithLargeHeader implements Callback {
PermissionAppsFragment mOuterFragment;
@Override
@@ -431,6 +441,7 @@
mOuterFragment = (PermissionAppsFragment) getTargetFragment();
setLoading(true /* loading */, false /* animate */);
super.onCreate(savedInstanceState);
+ setHeader(mOuterFragment.mIcon, mOuterFragment.mLabel, null, null, true);
if (mOuterFragment.mExtraScreen != null) {
setPreferenceScreen();
} else {
@@ -442,8 +453,9 @@
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
String groupName = getArguments().getString(Intent.EXTRA_PERMISSION_NAME);
- PermissionApps permissionApps = new PermissionApps(getActivity(), groupName, null);
- bindUi(this, permissionApps);
+ PermissionApps permissionApps = new PermissionApps(getActivity(),
+ groupName, (Callback) null);
+ bindUi(this, permissionApps, groupName);
}
@Override
diff --git a/src/com/android/packageinstaller/permission/ui/handheld/PermissionControlPreference.java b/src/com/android/packageinstaller/permission/ui/handheld/PermissionControlPreference.java
new file mode 100644
index 0000000..932cf52
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/handheld/PermissionControlPreference.java
@@ -0,0 +1,190 @@
+/*
+ * 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.packageinstaller.permission.ui.handheld;
+
+import static com.android.packageinstaller.Constants.EXTRA_SESSION_ID;
+
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.drawable.Drawable;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.packageinstaller.permission.model.AppPermissionGroup;
+import com.android.packageinstaller.permission.ui.AppPermissionActivity;
+import com.android.permissioncontroller.R;
+
+import java.util.List;
+
+/**
+ * A preference that links to the screen where a permission can be toggled.
+ */
+public class PermissionControlPreference extends Preference {
+ private final @NonNull Context mContext;
+ private @Nullable Drawable mWidgetIcon;
+ private boolean mUseSmallerIcon;
+ private boolean mEllipsizeEnd;
+ private @Nullable List<Integer> mTitleIcons;
+ private @Nullable List<Integer> mSummaryIcons;
+
+ public PermissionControlPreference(@NonNull Context context,
+ @NonNull AppPermissionGroup group, @NonNull String caller) {
+ this(context, group, caller, 0);
+ }
+
+ public PermissionControlPreference(@NonNull Context context,
+ @NonNull AppPermissionGroup group, @NonNull String caller, long sessionId) {
+ super(context);
+ mContext = context;
+ mWidgetIcon = null;
+ mUseSmallerIcon = false;
+ mEllipsizeEnd = false;
+ mTitleIcons = null;
+ mSummaryIcons = null;
+ setOnPreferenceClickListener(preference -> {
+ Intent intent = new Intent(Intent.ACTION_MANAGE_APP_PERMISSION);
+ intent.putExtra(Intent.EXTRA_PACKAGE_NAME, group.getApp().packageName);
+ intent.putExtra(Intent.EXTRA_PERMISSION_NAME, group.getPermissions().get(0).getName());
+ intent.putExtra(Intent.EXTRA_USER, group.getUser());
+ intent.putExtra(AppPermissionActivity.EXTRA_CALLER_NAME, caller);
+ intent.putExtra(EXTRA_SESSION_ID, sessionId);
+ context.startActivity(intent);
+ return true;
+ });
+ }
+
+ /**
+ * Sets this preference's right icon.
+ *
+ * Note that this must be called before preference layout to take effect.
+ *
+ * @param widgetIcon the icon to use.
+ */
+ public void setRightIcon(@NonNull Drawable widgetIcon) {
+ mWidgetIcon = widgetIcon;
+ setWidgetLayoutResource(R.layout.image_view);
+ }
+
+ /**
+ * Sets this preference's left icon to be smaller than normal.
+ *
+ * Note that this must be called before preference layout to take effect.
+ */
+ public void useSmallerIcon() {
+ mUseSmallerIcon = true;
+ }
+
+ /**
+ * Sets this preference's title to use an ellipsis at the end.
+ *
+ * Note that this must be called before preference layout to take effect.
+ */
+ public void setEllipsizeEnd() {
+ mEllipsizeEnd = true;
+ }
+
+ /**
+ * Sets this preference's summary based on the group it represents, if applicable.
+ *
+ * @param group the permission group this preference represents.
+ */
+ public void setGroupSummary(@NonNull AppPermissionGroup group) {
+ if (group.hasPermissionWithBackgroundMode() && group.areRuntimePermissionsGranted()) {
+ AppPermissionGroup backgroundGroup = group.getBackgroundPermissions();
+ if (backgroundGroup == null || !backgroundGroup.areRuntimePermissionsGranted()) {
+ setSummary(R.string.permission_subtitle_only_in_foreground);
+ return;
+ }
+ }
+ setSummary("");
+ }
+
+ /**
+ * Sets this preference to show the given icons to the left of its title.
+ *
+ * @param titleIcons the icons to show.
+ */
+ public void setTitleIcons(@NonNull List<Integer> titleIcons) {
+ mTitleIcons = titleIcons;
+ setLayoutResource(R.layout.preference_usage);
+ }
+
+ /**
+ * Sets this preference to show the given icons to the left of its summary.
+ *
+ * @param summaryIcons the icons to show.
+ */
+ public void setSummaryIcons(@NonNull List<Integer> summaryIcons) {
+ mSummaryIcons = summaryIcons;
+ setLayoutResource(R.layout.preference_usage);
+ }
+
+ @Override
+ public void onBindViewHolder(PreferenceViewHolder holder) {
+ if (mUseSmallerIcon) {
+ ImageView icon = ((ImageView) holder.findViewById(android.R.id.icon));
+ icon.setMaxWidth(
+ mContext.getResources().getDimensionPixelSize(R.dimen.secondary_app_icon_size));
+ icon.setMaxHeight(
+ mContext.getResources().getDimensionPixelSize(R.dimen.secondary_app_icon_size));
+ }
+
+ super.onBindViewHolder(holder);
+
+ if (mWidgetIcon != null) {
+ View widgetFrame = holder.findViewById(android.R.id.widget_frame);
+ ((ImageView) widgetFrame.findViewById(R.id.icon)).setImageDrawable(mWidgetIcon);
+ }
+
+ if (mEllipsizeEnd) {
+ TextView title = (TextView) holder.findViewById(android.R.id.title);
+ title.setMaxLines(1);
+ title.setEllipsize(TextUtils.TruncateAt.END);
+ }
+
+ setIcons(holder, mSummaryIcons, R.id.summary_widget_frame);
+ setIcons(holder, mTitleIcons, R.id.title_widget_frame);
+ }
+
+ private void setIcons(PreferenceViewHolder holder, @Nullable List<Integer> icons, int frameId) {
+ ViewGroup frame = (ViewGroup) holder.findViewById(frameId);
+ if (icons != null && !icons.isEmpty()) {
+ frame.setVisibility(View.VISIBLE);
+ frame.removeAllViews();
+ int numIcons = icons.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);
+ imageView.setImageResource(icons.get(i));
+ frame.addView(group);
+ }
+ } else if (frame != null) {
+ frame.setVisibility(View.GONE);
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/ui/handheld/PermissionPreference.java b/src/com/android/packageinstaller/permission/ui/handheld/PermissionPreference.java
new file mode 100644
index 0000000..13a7b99
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/handheld/PermissionPreference.java
@@ -0,0 +1,735 @@
+/*
+ * 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.packageinstaller.permission.ui.handheld;
+
+import static com.android.packageinstaller.permission.utils.Utils.DEFAULT_MAX_LABEL_SIZE_PX;
+import static com.android.packageinstaller.permission.utils.Utils.getRequestMessage;
+
+import static java.lang.annotation.RetentionPolicy.SOURCE;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.text.BidiFormatter;
+import android.text.TextUtils;
+import android.widget.ImageView;
+import android.widget.Switch;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.LayoutRes;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.packageinstaller.permission.model.AppPermissionGroup;
+import com.android.packageinstaller.permission.model.Permission;
+import com.android.packageinstaller.permission.utils.LocationUtils;
+import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
+import com.android.settingslib.RestrictedLockUtils;
+import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
+import java.lang.annotation.Retention;
+import java.util.List;
+
+/**
+ * A preference for representing a permission group requested by an app.
+ */
+class PermissionPreference extends MultiTargetSwitchPreference {
+ @Retention(SOURCE)
+ @IntDef(value = {CHANGE_FOREGROUND, CHANGE_BACKGROUND}, flag = true)
+ @interface ChangeTarget {}
+ static final int CHANGE_FOREGROUND = 1;
+ static final int CHANGE_BACKGROUND = 2;
+ static final int CHANGE_BOTH = CHANGE_FOREGROUND | CHANGE_BACKGROUND;
+
+ private final AppPermissionGroup mGroup;
+ private final PreferenceFragmentCompat mFragment;
+ private final PermissionPreferenceChangeListener mCallBacks;
+ private final @LayoutRes int mOriginalWidgetLayoutRes;
+ private final int mIconSize;
+
+ /** Callbacks for the permission to the fragment showing a list of permissions */
+ interface PermissionPreferenceChangeListener {
+ /**
+ * Checks if the user has to confirm a revocation of a permission granted by default.
+ *
+ * @return {@code true} iff the user has to confirm it
+ */
+ boolean shouldConfirmDefaultPermissionRevoke();
+
+ /**
+ * Notify the listener that the user confirmed that she/he wants to revoke permissions that
+ * were granted by default.
+ */
+ void hasConfirmDefaultPermissionRevoke();
+
+ /**
+ * Notify the listener that this preference has changed.
+ *
+ * @param key The key uniquely identifying this preference
+ */
+ void onPreferenceChanged(String key);
+ }
+
+ /**
+ * Callbacks from dialogs to the fragment. These callbacks are supposed to directly cycle back
+ * to the permission tha created the dialog.
+ */
+ interface PermissionPreferenceOwnerFragment {
+ /**
+ * The {@link DefaultDenyDialog} can only interact with the fragment, not the preference
+ * that created it. Hence this call goes to the fragment, which then finds the preference an
+ * calls {@link #onDenyAnyWay(int)}.
+ *
+ * @param key Key uniquely identifying the preference that created the default deny dialog
+ * @param changeTarget Whether background or foreground permissions should be changed
+ *
+ * @see #showDefaultDenyDialog(int)
+ */
+ void onDenyAnyWay(String key, @ChangeTarget int changeTarget);
+
+ /**
+ * The {@link BackgroundAccessChooser} can only interact with the fragment, not the
+ * preference that created it. Hence this call goes to the fragment, which then finds the
+ * preference an calls {@link #onBackgroundAccessChosen(int)}}.
+ *
+ * @param key Key uniquely identifying the preference that created the background access
+ * chooser
+ * @param chosenItem The index of the item selected by the user.
+ *
+ * @see #showBackgroundChooserDialog()
+ */
+ void onBackgroundAccessChosen(String key, int chosenItem);
+ }
+
+ PermissionPreference(PreferenceFragmentCompat fragment, AppPermissionGroup group,
+ PermissionPreferenceChangeListener callbacks, int iconSize) {
+ super(fragment.getPreferenceManager().getContext());
+
+ mFragment = fragment;
+ mGroup = group;
+ mCallBacks = callbacks;
+ mOriginalWidgetLayoutRes = getWidgetLayoutResource();
+ mIconSize = iconSize;
+
+ setPersistent(false);
+ updateUi();
+ }
+
+ /**
+ * Are any permissions of this group fixed by the system, i.e. not changeable by the user.
+ *
+ * @return {@code true} iff any permission is fixed
+ */
+ private boolean isSystemFixed() {
+ return mGroup.isSystemFixed();
+ }
+
+ /**
+ * Is any foreground permissions of this group fixed by the policy, i.e. not changeable by the
+ * user.
+ *
+ * @return {@code true} iff any foreground permission is fixed
+ */
+ private boolean isForegroundPolicyFixed() {
+ return mGroup.isPolicyFixed();
+ }
+
+ /**
+ * Is any background permissions of this group fixed by the policy, i.e. not changeable by the
+ * user.
+ *
+ * @return {@code true} iff any background permission is fixed
+ */
+ private boolean isBackgroundPolicyFixed() {
+ return mGroup.getBackgroundPermissions() != null
+ && mGroup.getBackgroundPermissions().isPolicyFixed();
+ }
+
+ /**
+ * Are there permissions fixed, so that the user cannot change the preference at all?
+ *
+ * @return {@code true} iff the permissions of this group are fixed
+ */
+ private boolean isPolicyFullyFixed() {
+ return isForegroundPolicyFixed() && (mGroup.getBackgroundPermissions() == null
+ || isBackgroundPolicyFixed());
+ }
+
+ /**
+ * Is the foreground part of this group disabled. If the foreground is disabled, there is no
+ * need to possible grant background access.
+ *
+ * @return {@code true} iff the permissions of this group are fixed
+ */
+ private boolean isForegroundDisabledByPolicy() {
+ return isForegroundPolicyFixed() && !mGroup.areRuntimePermissionsGranted();
+ }
+
+ /**
+ * Get the app that acts as admin for this profile.
+ *
+ * @return The admin or {@code null} if there is no admin.
+ */
+ private EnforcedAdmin getAdmin() {
+ return RestrictedLockUtils.getProfileOrDeviceOwner(getContext(), mGroup.getUser());
+ }
+
+ /**
+ * Update the preference after the state might have changed.
+ */
+ void updateUi() {
+ boolean arePermissionsIndividuallyControlled =
+ Utils.areGroupPermissionsIndividuallyControlled(getContext(), mGroup.getName());
+ EnforcedAdmin admin = getAdmin();
+
+ // Reset ui state
+ setEnabled(true);
+ setWidgetLayoutResource(mOriginalWidgetLayoutRes);
+ setOnPreferenceClickListener(null);
+ setSwitchOnClickListener(null);
+ setSummary(null);
+
+ setChecked(mGroup.areRuntimePermissionsGranted());
+
+ if (isSystemFixed() || isPolicyFullyFixed() || isForegroundDisabledByPolicy()) {
+ if (admin != null) {
+ setWidgetLayoutResource(R.layout.restricted_icon);
+
+ setOnPreferenceClickListener((v) -> {
+ RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getContext(), admin);
+ return true;
+ });
+ } else {
+ setEnabled(false);
+ }
+
+ updateSummaryForFixedByPolicyPermissionGroup();
+ } else if (arePermissionsIndividuallyControlled) {
+ setOnPreferenceClickListener((pref) -> {
+ showAllPermissions(mGroup.getName());
+ return false;
+ });
+
+ setSwitchOnClickListener(v -> {
+ Switch switchView = (Switch) v;
+ requestChange(switchView.isChecked(), CHANGE_BOTH);
+
+ // Update UI as the switch widget might be in wrong state
+ updateUi();
+ });
+
+ updateSummaryForIndividuallyControlledPermissionGroup();
+ } else {
+ if (mGroup.hasPermissionWithBackgroundMode()) {
+ if (mGroup.getBackgroundPermissions() == null) {
+ // The group has background permissions but the app did not request any. I.e.
+ // The app can only switch between 'never" and "only in foreground".
+ setOnPreferenceChangeListener((pref, newValue) ->
+ requestChange((Boolean) newValue, CHANGE_FOREGROUND));
+
+ updateSummaryForPermissionGroupWithBackgroundPermission();
+ } else {
+ if (isBackgroundPolicyFixed()) {
+ setOnPreferenceChangeListener((pref, newValue) ->
+ requestChange((Boolean) newValue, CHANGE_FOREGROUND));
+
+ updateSummaryForFixedByPolicyPermissionGroup();
+ } else if (isForegroundPolicyFixed()) {
+ setOnPreferenceChangeListener((pref, newValue) ->
+ requestChange((Boolean) newValue, CHANGE_BACKGROUND));
+
+ updateSummaryForFixedByPolicyPermissionGroup();
+ } else {
+ updateSummaryForPermissionGroupWithBackgroundPermission();
+
+ setOnPreferenceClickListener((pref) -> {
+ showBackgroundChooserDialog();
+ return true;
+ });
+
+ setSwitchOnClickListener(v -> {
+ Switch switchView = (Switch) v;
+
+ if (switchView.isChecked()) {
+ showBackgroundChooserDialog();
+ } else {
+ requestChange(false, CHANGE_BOTH);
+ }
+
+ // Update UI as the switch widget might be in wrong state
+ updateUi();
+ });
+ }
+ }
+ } else {
+ setOnPreferenceChangeListener((pref, newValue) ->
+ requestChange((Boolean) newValue, CHANGE_BOTH));
+ }
+ }
+ }
+
+ /**
+ * Update the summary in the case the permission group has individually controlled permissions.
+ */
+ private void updateSummaryForIndividuallyControlledPermissionGroup() {
+ int revokedCount = 0;
+ List<Permission> permissions = mGroup.getPermissions();
+ final int permissionCount = permissions.size();
+ for (int i = 0; i < permissionCount; i++) {
+ Permission permission = permissions.get(i);
+ if (!permission.isGrantedIncludingAppOp()) {
+ revokedCount++;
+ }
+ }
+
+ final int resId;
+ if (revokedCount == 0) {
+ resId = R.string.permission_revoked_none;
+ } else if (revokedCount == permissionCount) {
+ resId = R.string.permission_revoked_all;
+ } else {
+ resId = R.string.permission_revoked_count;
+ }
+
+ String summary = getContext().getString(resId, revokedCount);
+ setSummary(summary);
+ }
+
+ /**
+ * Update the summary of a permission group that has background permission.
+ *
+ * <p>This does not apply to permission groups that are fixed by policy</p>
+ */
+ private void updateSummaryForPermissionGroupWithBackgroundPermission() {
+ AppPermissionGroup backgroundGroup = mGroup.getBackgroundPermissions();
+
+ if (mGroup.areRuntimePermissionsGranted()) {
+ if (backgroundGroup == null) {
+ setSummary(R.string.permission_access_only_foreground);
+ } else {
+ if (backgroundGroup.areRuntimePermissionsGranted()) {
+ setSummary(R.string.permission_access_always);
+ } else {
+ setSummary(R.string.permission_access_only_foreground);
+ }
+ }
+ } else {
+ setSummary(R.string.permission_access_never);
+ }
+ }
+
+ /**
+ * Update the summary of a permission group that is at least partially fixed by policy.
+ */
+ private void updateSummaryForFixedByPolicyPermissionGroup() {
+ EnforcedAdmin admin = getAdmin();
+ AppPermissionGroup backgroundGroup = mGroup.getBackgroundPermissions();
+
+ boolean hasAdmin = admin != null;
+
+ if (isSystemFixed()) {
+ // Permission is fully controlled by the system and cannot be switched
+
+ setSummary(R.string.permission_summary_enabled_system_fixed);
+ } else if (isForegroundDisabledByPolicy()) {
+ // Permission is fully controlled by policy and cannot be switched
+
+ if (hasAdmin) {
+ setSummary(R.string.disabled_by_admin);
+ } else {
+ // Disabled state will be displayed by switch, so no need to add text for that
+ setSummary(R.string.permission_summary_enforced_by_policy);
+ }
+ } else if (isPolicyFullyFixed()) {
+ // Permission is fully controlled by policy and cannot be switched
+
+ if (backgroundGroup == null) {
+ if (hasAdmin) {
+ setSummary(R.string.enabled_by_admin);
+ } else {
+ // Enabled state will be displayed by switch, so no need to add text for
+ // that
+ setSummary(R.string.permission_summary_enforced_by_policy);
+ }
+ } else {
+ if (backgroundGroup.areRuntimePermissionsGranted()) {
+ if (hasAdmin) {
+ setSummary(R.string.enabled_by_admin);
+ } else {
+ // Enabled state will be displayed by switch, so no need to add text for
+ // that
+ setSummary(R.string.permission_summary_enforced_by_policy);
+ }
+ } else {
+ if (hasAdmin) {
+ setSummary(
+ R.string.permission_summary_enabled_by_admin_foreground_only);
+ } else {
+ setSummary(
+ R.string.permission_summary_enabled_by_policy_foreground_only);
+ }
+ }
+ }
+ } else {
+ // Part of the permission group can still be switched
+
+ if (isBackgroundPolicyFixed()) {
+ if (backgroundGroup.areRuntimePermissionsGranted()) {
+ if (hasAdmin) {
+ setSummary(R.string.permission_summary_enabled_by_admin_background_only);
+ } else {
+ setSummary(R.string.permission_summary_enabled_by_policy_background_only);
+ }
+ } else {
+ if (hasAdmin) {
+ setSummary(R.string.permission_summary_disabled_by_admin_background_only);
+ } else {
+ setSummary(R.string.permission_summary_disabled_by_policy_background_only);
+ }
+ }
+ } else if (isForegroundPolicyFixed()) {
+ if (hasAdmin) {
+ setSummary(R.string.permission_summary_enabled_by_admin_foreground_only);
+ } else {
+ setSummary(R.string.permission_summary_enabled_by_policy_foreground_only);
+ }
+ }
+ }
+ }
+
+ /**
+ * Show all individual permissions in this group in a new fragment.
+ */
+ private void showAllPermissions(String filterGroup) {
+ Fragment frag = AllAppPermissionsFragment.newInstance(mGroup.getApp().packageName,
+ filterGroup, UserHandle.getUserHandleForUid(mGroup.getApp().applicationInfo.uid));
+ mFragment.getFragmentManager().beginTransaction()
+ .replace(android.R.id.content, frag)
+ .addToBackStack("AllPerms")
+ .commit();
+ }
+
+ /**
+ * Get the label of the app the permission group belongs to. (App permission groups are all
+ * permissions of a group an app has requested.)
+ *
+ * @return The label of the app
+ */
+ private String getAppLabel() {
+ return BidiFormatter.getInstance().unicodeWrap(
+ mGroup.getApp().applicationInfo.loadSafeLabel(getContext().getPackageManager(),
+ DEFAULT_MAX_LABEL_SIZE_PX,
+ TextUtils.SAFE_STRING_FLAG_TRIM
+ | TextUtils.SAFE_STRING_FLAG_FIRST_LINE)
+ .toString());
+ }
+
+ @Override
+ public void onBindViewHolder(PreferenceViewHolder holder) {
+ if (mIconSize > 0) {
+ ImageView icon = ((ImageView) holder.findViewById(android.R.id.icon));
+
+ icon.setMaxWidth(mIconSize);
+ icon.setMaxHeight(mIconSize);
+ }
+
+ super.onBindViewHolder(holder);
+ }
+
+ /**
+ * Request to grant/revoke permissions group.
+ *
+ * <p>Does <u>not</u> handle:
+ * <ul>
+ * <li>Individually granted permissions</li>
+ * <li>Permission groups with background permissions</li>
+ * </ul>
+ * <p><u>Does</u> handle:
+ * <ul>
+ * <li>Default grant permissions</li>
+ * </ul>
+ *
+ * @param requestGrant If this group should be granted
+ * @param changeTarget Which permission group (foreground/background/both) should be changed
+ * @return If the request was processed.
+ */
+ private boolean requestChange(boolean requestGrant, @ChangeTarget int changeTarget) {
+ if (LocationUtils.isLocationGroupAndProvider(getContext(), mGroup.getName(),
+ mGroup.getApp().packageName)) {
+ LocationUtils.showLocationDialog(getContext(), getAppLabel());
+ return false;
+ }
+ if (requestGrant) {
+ mCallBacks.onPreferenceChanged(getKey());
+
+ if ((changeTarget & CHANGE_FOREGROUND) != 0) {
+ mGroup.grantRuntimePermissions(false);
+ }
+ if ((changeTarget & CHANGE_BACKGROUND) != 0) {
+ if (mGroup.getBackgroundPermissions() != null) {
+ mGroup.getBackgroundPermissions().grantRuntimePermissions(false);
+ }
+ }
+ } else {
+ boolean requestToRevokeGrantedByDefault = false;
+ if ((changeTarget & CHANGE_FOREGROUND) != 0) {
+ requestToRevokeGrantedByDefault = mGroup.hasGrantedByDefaultPermission();
+ }
+ if ((changeTarget & CHANGE_BACKGROUND) != 0) {
+ if (mGroup.getBackgroundPermissions() != null) {
+ requestToRevokeGrantedByDefault |=
+ mGroup.getBackgroundPermissions().hasGrantedByDefaultPermission();
+ }
+ }
+
+ if ((requestToRevokeGrantedByDefault || !mGroup.doesSupportRuntimePermissions())
+ && mCallBacks.shouldConfirmDefaultPermissionRevoke()) {
+ showDefaultDenyDialog(changeTarget);
+ return false;
+ } else {
+ mCallBacks.onPreferenceChanged(getKey());
+
+ if ((changeTarget & CHANGE_FOREGROUND) != 0) {
+ mGroup.revokeRuntimePermissions(false);
+ }
+ if ((changeTarget & CHANGE_BACKGROUND) != 0) {
+ if (mGroup.getBackgroundPermissions() != null) {
+ mGroup.getBackgroundPermissions().revokeRuntimePermissions(false);
+ }
+ }
+ }
+ }
+
+ updateUi();
+
+ return true;
+ }
+
+ /**
+ * Show a dialog that warns the user that she/he is about to revoke permissions that were
+ * granted by default.
+ *
+ * <p>The order of operation to revoke a permission granted by default is:
+ * <ol>
+ * <li>{@code showDefaultDenyDialog}</li>
+ * <li>{@link DefaultDenyDialog#onCreateDialog}</li>
+ * <li>{@link PermissionPreferenceOwnerFragment#onDenyAnyWay}</li>
+ * <li>{@link PermissionPreference#onDenyAnyWay}</li>
+ * </ol>
+ *
+ * @param changeTarget Whether background or foreground should be changed
+ */
+ private void showDefaultDenyDialog(@ChangeTarget int changeTarget) {
+ if (!mFragment.isResumed()) {
+ return;
+ }
+
+ Bundle args = new Bundle();
+
+ boolean showGrantedByDefaultWarning = false;
+ if ((changeTarget & CHANGE_FOREGROUND) != 0) {
+ showGrantedByDefaultWarning = mGroup.hasGrantedByDefaultPermission();
+ }
+ if ((changeTarget & CHANGE_BACKGROUND) != 0) {
+ if (mGroup.getBackgroundPermissions() != null) {
+ showGrantedByDefaultWarning |=
+ mGroup.getBackgroundPermissions().hasGrantedByDefaultPermission();
+ }
+ }
+
+ args.putInt(DefaultDenyDialog.MSG, showGrantedByDefaultWarning ? R.string.system_warning
+ : R.string.old_sdk_deny_warning);
+ args.putString(DefaultDenyDialog.KEY, getKey());
+ args.putInt(DefaultDenyDialog.CHANGE_TARGET, changeTarget);
+
+ DefaultDenyDialog deaultDenyDialog = new DefaultDenyDialog();
+ deaultDenyDialog.setArguments(args);
+ deaultDenyDialog.show(mFragment.getChildFragmentManager().beginTransaction(),
+ "denyDefault");
+ }
+
+ /**
+ * Show a dialog that asks the user if foreground/background/none access should be enabled.
+ *
+ * <p>The order of operation to grant foreground/background/none access is:
+ * <ol>
+ * <li>{@code showBackgroundChooserDialog}</li>
+ * <li>{@link BackgroundAccessChooser#onCreateDialog}</li>
+ * <li>{@link PermissionPreferenceOwnerFragment#onBackgroundAccessChosen}</li>
+ * <li>{@link PermissionPreference#onBackgroundAccessChosen}</li>
+ * </ol>
+ */
+ private void showBackgroundChooserDialog() {
+ if (!mFragment.isResumed()) {
+ return;
+ }
+
+ if (LocationUtils.isLocationGroupAndProvider(getContext(), mGroup.getName(),
+ mGroup.getApp().packageName)) {
+ LocationUtils.showLocationDialog(getContext(), getAppLabel());
+ return;
+ }
+
+ Bundle args = new Bundle();
+ args.putCharSequence(BackgroundAccessChooser.TITLE,
+ getRequestMessage(getAppLabel(), mGroup, getContext(), mGroup.getRequest()));
+ args.putString(BackgroundAccessChooser.KEY, getKey());
+
+
+ if (mGroup.areRuntimePermissionsGranted()) {
+ if (mGroup.getBackgroundPermissions().areRuntimePermissionsGranted()) {
+ args.putInt(BackgroundAccessChooser.SELECTION,
+ BackgroundAccessChooser.ALWAYS_OPTION);
+ } else {
+ args.putInt(BackgroundAccessChooser.SELECTION,
+ BackgroundAccessChooser.FOREGROUND_ONLY_OPTION);
+ }
+ } else {
+ args.putInt(BackgroundAccessChooser.SELECTION, BackgroundAccessChooser.NEVER_OPTION);
+ }
+
+ BackgroundAccessChooser chooserDialog = new BackgroundAccessChooser();
+ chooserDialog.setArguments(args);
+ chooserDialog.show(mFragment.getChildFragmentManager().beginTransaction(),
+ "backgroundChooser");
+ }
+
+ /**
+ * Once we user has confirmed that he/she wants to revoke a permission that was granted by
+ * default, actually revoke the permissions.
+ *
+ * @see #showDefaultDenyDialog(int)
+ */
+ void onDenyAnyWay(@ChangeTarget int changeTarget) {
+ mCallBacks.onPreferenceChanged(getKey());
+
+ boolean hasDefaultPermissions = false;
+ if ((changeTarget & CHANGE_FOREGROUND) != 0) {
+ mGroup.revokeRuntimePermissions(false);
+ hasDefaultPermissions = mGroup.hasGrantedByDefaultPermission();
+ }
+ if ((changeTarget & CHANGE_BACKGROUND) != 0) {
+ if (mGroup.getBackgroundPermissions() != null) {
+ mGroup.getBackgroundPermissions().revokeRuntimePermissions(false);
+ hasDefaultPermissions |=
+ mGroup.getBackgroundPermissions().hasGrantedByDefaultPermission();
+ }
+ }
+
+ if (hasDefaultPermissions || !mGroup.doesSupportRuntimePermissions()) {
+ mCallBacks.hasConfirmDefaultPermissionRevoke();
+ }
+ updateUi();
+ }
+
+ /**
+ * Process the return from a {@link BackgroundAccessChooser} dialog.
+ *
+ * <p>These dialog are started when the user want to grant a permission group that has
+ * background permissions.
+ *
+ * @param choosenItem The item that the user chose
+ */
+ void onBackgroundAccessChosen(int choosenItem) {
+ AppPermissionGroup backgroundGroup = mGroup.getBackgroundPermissions();
+
+ switch (choosenItem) {
+ case BackgroundAccessChooser.ALWAYS_OPTION:
+ requestChange(true, CHANGE_BOTH);
+ break;
+ case BackgroundAccessChooser.FOREGROUND_ONLY_OPTION:
+ if (backgroundGroup.areRuntimePermissionsGranted()) {
+ requestChange(false, CHANGE_BACKGROUND);
+ }
+ requestChange(true, CHANGE_FOREGROUND);
+ break;
+ case BackgroundAccessChooser.NEVER_OPTION:
+ if (mGroup.areRuntimePermissionsGranted()
+ || mGroup.getBackgroundPermissions().areRuntimePermissionsGranted()) {
+ requestChange(false, CHANGE_BOTH);
+ }
+ break;
+ }
+ }
+
+ /**
+ * A dialog warning the user that she/he is about to deny a permission that was granted by
+ * default.
+ *
+ * @see #showDefaultDenyDialog(int)
+ */
+ public static class DefaultDenyDialog extends DialogFragment {
+ private static final String MSG = DefaultDenyDialog.class.getName() + ".arg.msg";
+ private static final String CHANGE_TARGET = DefaultDenyDialog.class.getName()
+ + ".arg.changeTarget";
+ private static final String KEY = DefaultDenyDialog.class.getName() + ".arg.key";
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ AlertDialog.Builder b = new AlertDialog.Builder(getContext())
+ .setMessage(getArguments().getInt(MSG))
+ .setNegativeButton(R.string.cancel, null)
+ .setPositiveButton(R.string.grant_dialog_button_deny_anyway,
+ (DialogInterface dialog, int which) -> (
+ (PermissionPreferenceOwnerFragment) getParentFragment())
+ .onDenyAnyWay(getArguments().getString(KEY),
+ getArguments().getInt(CHANGE_TARGET)));
+
+ return b.create();
+ }
+ }
+
+ /**
+ * If a permission group has background permission this chooser is used to let the user
+ * choose how the permission group should be granted.
+ *
+ * @see #showBackgroundChooserDialog()
+ */
+ public static class BackgroundAccessChooser extends DialogFragment {
+ private static final String TITLE = BackgroundAccessChooser.class.getName() + ".arg.title";
+ private static final String KEY = BackgroundAccessChooser.class.getName() + ".arg.key";
+ private static final String SELECTION = BackgroundAccessChooser.class.getName()
+ + ".arg.selection";
+
+ // Needs to match the entries in R.array.background_access_chooser_dialog_choices
+ static final int ALWAYS_OPTION = 0;
+ static final int FOREGROUND_ONLY_OPTION = 1;
+ static final int NEVER_OPTION = 2;
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ AlertDialog.Builder b = new AlertDialog.Builder(getActivity())
+ .setTitle(getArguments().getCharSequence(TITLE))
+ .setSingleChoiceItems(R.array.background_access_chooser_dialog_choices,
+ getArguments().getInt(SELECTION),
+ (dialog, which) -> {
+ dismissAllowingStateLoss();
+ ((PermissionPreferenceOwnerFragment) getParentFragment())
+ .onBackgroundAccessChosen(getArguments().getString(KEY),
+ which);
+ }
+ );
+
+ return b.create();
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/ui/handheld/PermissionsFrameFragment.java b/src/com/android/packageinstaller/permission/ui/handheld/PermissionsFrameFragment.java
index e7f63b2..c2d7ea4 100644
--- a/src/com/android/packageinstaller/permission/ui/handheld/PermissionsFrameFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/handheld/PermissionsFrameFragment.java
@@ -16,23 +16,41 @@
package com.android.packageinstaller.permission.ui.handheld;
+import android.app.ActionBar;
import android.os.Bundle;
-import android.preference.PreferenceFragment;
import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
-import android.widget.ListView;
import android.widget.TextView;
-import com.android.packageinstaller.R;
-public abstract class PermissionsFrameFragment extends PreferenceFragment {
+import androidx.core.widget.NestedScrollView;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
+import com.android.settingslib.widget.ActionBarShadowController;
+
+public abstract class PermissionsFrameFragment extends PreferenceFragmentCompat {
+ private static final String LOG_TAG = PermissionsFrameFragment.class.getSimpleName();
+
+ static final int MENU_ALL_PERMS = Menu.FIRST + 1;
+ static final int MENU_SHOW_SYSTEM = Menu.FIRST + 2;
+ static final int MENU_HIDE_SYSTEM = Menu.FIRST + 3;
+
private ViewGroup mPreferencesContainer;
+ private TextView mEmptyView;
private View mLoadingView;
+ private View mProgressHeader;
+ private View mProgressView;
private ViewGroup mPrefsView;
+ private NestedScrollView mNestedScrollView;
private boolean mIsLoading;
/**
@@ -44,6 +62,13 @@
}
@Override
+ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+ super.onCreateOptionsMenu(menu, inflater);
+
+ Utils.prepareSearchMenuItem(menu, requireContext());
+ }
+
+ @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.permissions_frame, container,
@@ -52,14 +77,40 @@
if (mPrefsView == null) {
mPrefsView = rootView;
}
+ mEmptyView = mPrefsView.findViewById(R.id.no_permissions);
+ mEmptyView.setText(getEmptyViewString());
mLoadingView = rootView.findViewById(R.id.loading_container);
mPreferencesContainer = (ViewGroup) super.onCreateView(
inflater, mPrefsView, savedInstanceState);
setLoading(mIsLoading, false, true /* force */);
- mPrefsView.addView(mPreferencesContainer);
+ mPrefsView.addView(mPreferencesContainer, 0);
+ mNestedScrollView = rootView.requireViewById(R.id.nested_scroll_view);
+ mProgressHeader = rootView.requireViewById(R.id.progress_bar_animation);
+ mProgressView = rootView.requireViewById(R.id.progress_bar_background);
+ setProgressBarVisible(false);
+ getListView().setFocusable(false);
return rootView;
}
+ @Override
+ public void onStart() {
+ super.onStart();
+
+ if (mNestedScrollView != null) {
+ ActionBar ab = getActivity().getActionBar();
+ if (ab != null) {
+ ab.setElevation(0);
+ }
+ ActionBarShadowController.attachToView(getActivity(), getLifecycle(),
+ mNestedScrollView);
+ }
+ }
+
+ @Override
+ public void onCreatePreferences(Bundle bundle, String s) {
+ // empty
+ }
+
protected void setLoading(boolean loading, boolean animate) {
setLoading(loading, animate, false);
}
@@ -80,14 +131,56 @@
}
}
- @Override
- public ListView getListView() {
- ListView listView = super.getListView();
- if (listView.getEmptyView() == null) {
- TextView emptyView = (TextView) getView().findViewById(R.id.no_permissions);
- listView.setEmptyView(emptyView);
+ protected void setProgressBarVisible(boolean visible) {
+ mProgressHeader.setVisibility(visible ? View.VISIBLE : View.GONE);
+ mProgressView.setVisibility(visible ? View.VISIBLE : View.GONE);
+ }
+
+ /**
+ * Either show the empty view or the recycler view. To be called any time the adapter changes.
+ */
+ void updateEmptyState() {
+ RecyclerView prefs = getListView();
+
+ // This might be called before onCreateView, hence emptyView and prefs can be null
+ if (mEmptyView != null && prefs != null) {
+ if (prefs.getAdapter() != null && prefs.getAdapter().getItemCount() != 0) {
+ mEmptyView.setVisibility(View.GONE);
+ prefs.setVisibility(View.VISIBLE);
+ } else {
+ mEmptyView.setVisibility(View.VISIBLE);
+ prefs.setVisibility(View.GONE);
+ }
}
- return listView;
+ }
+
+ @Override
+ protected void onBindPreferences() {
+ super.onBindPreferences();
+
+ RecyclerView.Adapter adapter = getListView().getAdapter();
+
+ if (adapter != null) {
+ adapter.registerAdapterDataObserver(
+ new RecyclerView.AdapterDataObserver() {
+ @Override
+ public void onChanged() {
+ updateEmptyState();
+ }
+
+ @Override
+ public void onItemRangeInserted(int positionStart, int itemCount) {
+ updateEmptyState();
+ }
+
+ @Override
+ public void onItemRangeRemoved(int positionStart, int itemCount) {
+ updateEmptyState();
+ }
+ });
+ }
+
+ updateEmptyState();
}
private void setViewShown(final View view, boolean shown, boolean animate) {
@@ -118,4 +211,11 @@
view.setVisibility(shown ? View.VISIBLE : View.INVISIBLE);
}
}
+
+ /**
+ * @return the id of the string to display when there are no entries to show.
+ */
+ public int getEmptyViewString() {
+ return R.string.no_permissions;
+ }
}
diff --git a/src/com/android/packageinstaller/permission/ui/handheld/RestrictedSwitchPreference.java b/src/com/android/packageinstaller/permission/ui/handheld/RestrictedSwitchPreference.java
deleted file mode 100644
index 30ccf3b..0000000
--- a/src/com/android/packageinstaller/permission/ui/handheld/RestrictedSwitchPreference.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2016 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.packageinstaller.permission.ui.handheld;
-
-import android.content.Context;
-import android.preference.PreferenceScreen;
-import android.view.View;
-import android.widget.TextView;
-
-import com.android.packageinstaller.R;
-import com.android.settingslib.RestrictedLockUtils;
-
-import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
-
-public class RestrictedSwitchPreference extends MultiTargetSwitchPreference {
- private final Context mContext;
- private boolean mDisabledByAdmin;
- private EnforcedAdmin mEnforcedAdmin;
- private final int mSwitchWidgetResId;
-
- public RestrictedSwitchPreference(Context context) {
- super(context);
- mSwitchWidgetResId = getWidgetLayoutResource();
- mContext = context;
- }
-
- @Override
- public void onBindView(View view) {
- super.onBindView(view);
- if (mDisabledByAdmin) {
- view.setEnabled(true);
- }
- if (mDisabledByAdmin) {
- final TextView summaryView = (TextView) view.findViewById(android.R.id.summary);
- if (summaryView != null) {
- summaryView.setText(
- isChecked() ? R.string.enabled_by_admin : R.string.disabled_by_admin);
- summaryView.setVisibility(View.VISIBLE);
- }
- }
- }
-
- @Override
- public void setEnabled(boolean enabled) {
- if (enabled && mDisabledByAdmin) {
- setDisabledByAdmin(null);
- } else {
- super.setEnabled(enabled);
- }
- }
-
- public void setDisabledByAdmin(EnforcedAdmin admin) {
- final boolean disabled = (admin != null ? true : false);
- mEnforcedAdmin = admin;
- if (mDisabledByAdmin != disabled) {
- mDisabledByAdmin = disabled;
- setWidgetLayoutResource(disabled ? R.layout.restricted_icon : mSwitchWidgetResId);
- setEnabled(!disabled);
- }
- }
-
- @Override
- public void performClick(PreferenceScreen preferenceScreen) {
- if (mDisabledByAdmin) {
- RestrictedLockUtils.sendShowAdminSupportDetailsIntent(mContext, mEnforcedAdmin);
- } else {
- super.performClick(preferenceScreen);
- }
- }
-}
\ No newline at end of file
diff --git a/src/com/android/packageinstaller/permission/ui/handheld/ReviewPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/handheld/ReviewPermissionsFragment.java
index f8b6334..85ec2d3 100644
--- a/src/com/android/packageinstaller/permission/ui/handheld/ReviewPermissionsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/handheld/ReviewPermissionsFragment.java
@@ -16,46 +16,59 @@
package com.android.packageinstaller.permission.ui.handheld;
+import static android.content.pm.PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED;
+
+import static com.android.packageinstaller.PermissionControllerStatsLog.REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED;
+
import android.app.Activity;
-import android.app.DialogFragment;
import android.content.Intent;
import android.content.IntentSender;
import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.RemoteCallback;
-import android.preference.Preference;
-import android.preference.PreferenceCategory;
-import android.preference.PreferenceFragment;
-import android.preference.PreferenceGroup;
-import android.preference.PreferenceScreen;
-import android.preference.SwitchPreference;
-import android.preference.TwoStatePreference;
+import android.os.UserHandle;
import android.text.Html;
import android.text.Spanned;
+import android.text.TextUtils;
+import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
-import com.android.packageinstaller.R;
+import androidx.annotation.NonNull;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceScreen;
+
+import com.android.packageinstaller.PermissionControllerStatsLog;
import com.android.packageinstaller.permission.model.AppPermissionGroup;
import com.android.packageinstaller.permission.model.AppPermissions;
import com.android.packageinstaller.permission.model.Permission;
-import com.android.packageinstaller.permission.ui.ConfirmActionDialogFragment;
import com.android.packageinstaller.permission.ui.ManagePermissionsActivity;
import com.android.packageinstaller.permission.utils.ArrayUtils;
import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
import java.util.ArrayList;
import java.util.List;
+import java.util.Random;
-public final class ReviewPermissionsFragment extends PreferenceFragment
- implements View.OnClickListener, Preference.OnPreferenceChangeListener,
- ConfirmActionDialogFragment.OnActionConfirmedListener {
+/**
+ * If an app does not support runtime permissions the user is prompted via this fragment to select
+ * which permissions to grant to the app before first use and if an update changed the permissions.
+ */
+public final class ReviewPermissionsFragment extends PreferenceFragmentCompat
+ implements View.OnClickListener, PermissionPreference.PermissionPreferenceChangeListener,
+ PermissionPreference.PermissionPreferenceOwnerFragment {
- public static final String EXTRA_PACKAGE_INFO =
+ private static final String EXTRA_PACKAGE_INFO =
"com.android.packageinstaller.permission.ui.extra.PACKAGE_INFO";
+ private static final String LOG_TAG = ReviewPermissionsFragment.class.getSimpleName();
private AppPermissions mAppPermissions;
@@ -92,34 +105,33 @@
return;
}
- mAppPermissions = new AppPermissions(activity, packageInfo, null, false,
- new Runnable() {
- @Override
- public void run() {
- getActivity().finish();
- }
- });
-
- if (mAppPermissions.getPermissionGroups().isEmpty()) {
- activity.finish();
- return;
- }
+ mAppPermissions = new AppPermissions(activity, packageInfo, false, true,
+ () -> getActivity().finish());
boolean reviewRequired = false;
for (AppPermissionGroup group : mAppPermissions.getPermissionGroups()) {
- if (group.isReviewRequired()) {
+ if (group.isReviewRequired() || (group.getBackgroundPermissions() != null
+ && group.getBackgroundPermissions().isReviewRequired())) {
reviewRequired = true;
break;
}
}
if (!reviewRequired) {
+ // If the system called for a review but no groups are found, this means that all groups
+ // are restricted. Hence there is nothing to review and instantly continue.
+ confirmPermissionsReview();
activity.finish();
}
}
@Override
- public void onViewCreated(View view, Bundle savedInstanceState) {
+ public void onCreatePreferences(Bundle bundle, String s) {
+ // empty
+ }
+
+ @Override
+ public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
bindUi();
}
@@ -147,44 +159,29 @@
Intent intent = new Intent(Intent.ACTION_MANAGE_APP_PERMISSIONS);
intent.putExtra(Intent.EXTRA_PACKAGE_NAME,
mAppPermissions.getPackageInfo().packageName);
+ intent.putExtra(Intent.EXTRA_USER, UserHandle.getUserHandleForUid(
+ mAppPermissions.getPackageInfo().applicationInfo.uid));
intent.putExtra(ManagePermissionsActivity.EXTRA_ALL_PERMISSIONS, true);
getActivity().startActivity(intent);
}
activity.finish();
}
- @Override
- public boolean onPreferenceChange(Preference preference, Object newValue) {
- if (mHasConfirmedRevoke) {
- return true;
- }
- if (preference instanceof SwitchPreference) {
- SwitchPreference switchPreference = (SwitchPreference) preference;
- if (switchPreference.isChecked()) {
- showWarnRevokeDialog(switchPreference.getKey());
- } else {
- return true;
+ private void grantReviewedPermission(AppPermissionGroup group) {
+ String[] permissionsToGrant = null;
+ final int permissionCount = group.getPermissions().size();
+ for (int j = 0; j < permissionCount; j++) {
+ final Permission permission = group.getPermissions().get(j);
+ if (permission.isReviewRequired()) {
+ permissionsToGrant = ArrayUtils.appendString(
+ permissionsToGrant, permission.getName());
}
}
- return false;
- }
-
- @Override
- public void onActionConfirmed(String action) {
- Preference preference = getPreferenceManager().findPreference(action);
- if (preference instanceof SwitchPreference) {
- SwitchPreference switchPreference = (SwitchPreference) preference;
- switchPreference.setChecked(false);
- mHasConfirmedRevoke = true;
+ if (permissionsToGrant != null) {
+ group.grantRuntimePermissions(false, permissionsToGrant);
}
}
- private void showWarnRevokeDialog(final String groupName) {
- DialogFragment fragment = ConfirmActionDialogFragment.newInstance(
- getString(R.string.old_sdk_deny_warning), groupName);
- fragment.show(getFragmentManager(), fragment.getClass().getName());
- }
-
private void confirmPermissionsReview() {
final List<PreferenceGroup> preferenceGroups = new ArrayList<>();
if (mNewPermissionsCategory != null) {
@@ -195,36 +192,70 @@
}
final int preferenceGroupCount = preferenceGroups.size();
+ long changeIdForLogging = new Random().nextLong();
+
for (int groupNum = 0; groupNum < preferenceGroupCount; groupNum++) {
final PreferenceGroup preferenceGroup = preferenceGroups.get(groupNum);
final int preferenceCount = preferenceGroup.getPreferenceCount();
for (int prefNum = 0; prefNum < preferenceCount; prefNum++) {
Preference preference = preferenceGroup.getPreference(prefNum);
- if (preference instanceof TwoStatePreference) {
- TwoStatePreference twoStatePreference = (TwoStatePreference) preference;
- String groupName = preference.getKey();
- AppPermissionGroup group = mAppPermissions.getPermissionGroup(groupName);
- if (twoStatePreference.isChecked()) {
- String[] permissionsToGrant = null;
- final int permissionCount = group.getPermissions().size();
- for (int j = 0; j < permissionCount; j++) {
- final Permission permission = group.getPermissions().get(j);
- if (permission.isReviewRequired()) {
- permissionsToGrant = ArrayUtils.appendString(
- permissionsToGrant, permission.getName());
- }
- }
- if (permissionsToGrant != null) {
- group.grantRuntimePermissions(false, permissionsToGrant);
- }
- } else {
- group.revokeRuntimePermissions(false);
+ if (preference instanceof PermissionReviewPreference) {
+ PermissionReviewPreference permPreference =
+ (PermissionReviewPreference) preference;
+ AppPermissionGroup group = permPreference.getGroup();
+
+ // If the preference wasn't toggled we show it as "granted"
+ if (group.isReviewRequired() && !permPreference.wasChanged()) {
+ grantReviewedPermission(group);
}
- group.resetReviewRequired();
+ logReviewPermissionsFragmentResult(changeIdForLogging, group);
+
+ AppPermissionGroup backgroundGroup = group.getBackgroundPermissions();
+ if (backgroundGroup != null) {
+ // If the preference wasn't toggled we show it as "fully granted"
+ if (backgroundGroup.isReviewRequired() && !permPreference.wasChanged()) {
+ grantReviewedPermission(backgroundGroup);
+ }
+ logReviewPermissionsFragmentResult(changeIdForLogging, backgroundGroup);
+ }
}
}
}
+ mAppPermissions.persistChanges(true);
+
+ // Some permission might be restricted and hence there is no AppPermissionGroup for it.
+ // Manually unset all review-required flags, regardless of restriction.
+ PackageManager pm = getContext().getPackageManager();
+ PackageInfo pkg = mAppPermissions.getPackageInfo();
+ UserHandle user = UserHandle.getUserHandleForUid(pkg.applicationInfo.uid);
+
+ for (String perm : pkg.requestedPermissions) {
+ try {
+ pm.updatePermissionFlags(perm, pkg.packageName, FLAG_PERMISSION_REVIEW_REQUIRED,
+ 0, user);
+ } catch (IllegalArgumentException e) {
+ Log.e(LOG_TAG, "Cannot unmark " + perm + " requested by " + pkg.packageName
+ + " as review required", e);
+ }
+ }
+ }
+
+ private void logReviewPermissionsFragmentResult(long changeId, AppPermissionGroup group) {
+ ArrayList<Permission> permissions = group.getPermissions();
+
+ int numPermissions = permissions.size();
+ for (int i = 0; i < numPermissions; i++) {
+ Permission permission = permissions.get(i);
+
+ PermissionControllerStatsLog.write(REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED,
+ changeId, group.getApp().applicationInfo.uid, group.getApp().packageName,
+ permission.getName(), permission.isGrantedIncludingAppOp());
+ Log.v(LOG_TAG, "Permission grant via permission review changeId=" + changeId + " uid="
+ + group.getApp().applicationInfo.uid + " packageName="
+ + group.getApp().packageName + " permission="
+ + permission.getName() + " granted=" + permission.isGrantedIncludingAppOp());
+ }
}
private void bindUi() {
@@ -236,7 +267,7 @@
// Set icon
Drawable icon = mAppPermissions.getPackageInfo().applicationInfo.loadIcon(
activity.getPackageManager());
- ImageView iconView = (ImageView) activity.findViewById(R.id.app_icon);
+ ImageView iconView = activity.requireViewById(R.id.app_icon);
iconView.setImageDrawable(icon);
// Set message
@@ -250,19 +281,37 @@
activity.setTitle(message.toString());
// Color the app name.
- TextView permissionsMessageView = (TextView) activity.findViewById(
+ TextView permissionsMessageView = activity.requireViewById(
R.id.permissions_message);
permissionsMessageView.setText(message);
- mContinueButton = (Button) getActivity().findViewById(R.id.continue_button);
+ mContinueButton = getActivity().requireViewById(R.id.continue_button);
mContinueButton.setOnClickListener(this);
- mCancelButton = (Button) getActivity().findViewById(R.id.cancel_button);
+ mCancelButton = getActivity().requireViewById(R.id.cancel_button);
mCancelButton.setOnClickListener(this);
- mMoreInfoButton = (Button) getActivity().findViewById(
- R.id.permission_more_info_button);
- mMoreInfoButton.setOnClickListener(this);
+ if (activity.getPackageManager().arePermissionsIndividuallyControlled()) {
+ mMoreInfoButton = getActivity().requireViewById(
+ R.id.permission_more_info_button);
+ mMoreInfoButton.setOnClickListener(this);
+ mMoreInfoButton.setVisibility(View.VISIBLE);
+ }
+ }
+
+ private PermissionReviewPreference getPreference(String key) {
+ if (mNewPermissionsCategory != null) {
+ PermissionReviewPreference pref =
+ (PermissionReviewPreference) mNewPermissionsCategory.findPreference(key);
+
+ if (pref == null && mCurrentPermissionsCategory != null) {
+ return (PermissionReviewPreference) mCurrentPermissionsCategory.findPreference(key);
+ } else {
+ return pref;
+ }
+ } else {
+ return (PermissionReviewPreference) getPreferenceScreen().findPreference(key);
+ }
}
private void loadPreferences() {
@@ -273,31 +322,26 @@
PreferenceScreen screen = getPreferenceScreen();
if (screen == null) {
- screen = getPreferenceManager().createPreferenceScreen(getActivity());
+ screen = getPreferenceManager().createPreferenceScreen(getContext());
setPreferenceScreen(screen);
} else {
screen.removeAll();
}
mCurrentPermissionsCategory = null;
- PreferenceGroup oldNewPermissionsCategory = mNewPermissionsCategory;
mNewPermissionsCategory = null;
final boolean isPackageUpdated = isPackageUpdated();
for (AppPermissionGroup group : mAppPermissions.getPermissionGroups()) {
- if (!Utils.shouldShowPermission(group, mAppPermissions.getPackageInfo().packageName)
+ if (!Utils.shouldShowPermission(getContext(), group)
|| !Utils.OS_PKG.equals(group.getDeclaringPackage())) {
continue;
}
- final SwitchPreference preference;
- Preference cachedPreference = oldNewPermissionsCategory != null
- ? oldNewPermissionsCategory.findPreference(group.getName()) : null;
- if (cachedPreference instanceof SwitchPreference) {
- preference = (SwitchPreference) cachedPreference;
- } else {
- preference = new SwitchPreference(getActivity());
+ PermissionReviewPreference preference = getPreference(group.getName());
+ if (preference == null) {
+ preference = new PermissionReviewPreference(this, group, this);
preference.setKey(group.getName());
Drawable icon = Utils.loadDrawable(activity.getPackageManager(),
@@ -305,25 +349,12 @@
preference.setIcon(Utils.applyTint(getContext(), icon,
android.R.attr.colorControlNormal));
preference.setTitle(group.getLabel());
- preference.setSummary(group.getDescription());
- preference.setPersistent(false);
-
- preference.setOnPreferenceChangeListener(this);
- }
-
- preference.setChecked(group.areRuntimePermissionsGranted()
- || group.isReviewRequired());
-
- // Mutable state
- if (group.isPolicyFixed()) {
- preference.setEnabled(false);
- preference.setSummary(getString(
- R.string.permission_summary_enforced_by_policy));
} else {
- preference.setEnabled(true);
+ preference.updateUi();
}
- if (group.isReviewRequired()) {
+ if (group.isReviewRequired() || (group.getBackgroundPermissions() != null
+ && group.getBackgroundPermissions().isReviewRequired())) {
if (!isPackageUpdated) {
screen.addPreference(preference);
} else {
@@ -352,7 +383,8 @@
final int groupCount = groups.size();
for (int i = 0; i < groupCount; i++) {
AppPermissionGroup group = groups.get(i);
- if (!group.isReviewRequired()) {
+ if (!(group.isReviewRequired() || (group.getBackgroundPermissions() != null
+ && group.getBackgroundPermissions().isReviewRequired()))) {
return true;
}
}
@@ -391,4 +423,91 @@
callback.sendResult(result);
}
}
+
+ @Override
+ public boolean shouldConfirmDefaultPermissionRevoke() {
+ return !mHasConfirmedRevoke;
+ }
+
+ @Override
+ public void hasConfirmDefaultPermissionRevoke() {
+ mHasConfirmedRevoke = true;
+ }
+
+ @Override
+ public void onPreferenceChanged(String key) {
+ getPreference(key).setChanged();
+ }
+
+ @Override
+ public void onDenyAnyWay(String key, int changeTarget) {
+ getPreference(key).onDenyAnyWay(changeTarget);
+ }
+
+ @Override
+ public void onBackgroundAccessChosen(String key, int chosenItem) {
+ getPreference(key).onBackgroundAccessChosen(chosenItem);
+ }
+
+ /**
+ * Extend the {@link PermissionPreference}:
+ * <ul>
+ * <li>Show the description of the permission group</li>
+ * <li>Show the permission group as granted if the user has not toggled it yet. This means
+ * that if the user does not touch the preference, we will later grant the permission
+ * in {@link #confirmPermissionsReview()}.</li>
+ * </ul>
+ */
+ private static class PermissionReviewPreference extends PermissionPreference {
+ private final AppPermissionGroup mGroup;
+ private boolean mWasChanged;
+
+ PermissionReviewPreference(PreferenceFragmentCompat fragment, AppPermissionGroup group,
+ PermissionPreferenceChangeListener callbacks) {
+ super(fragment, group, callbacks, 0);
+
+ mGroup = group;
+ updateUi();
+ }
+
+ AppPermissionGroup getGroup() {
+ return mGroup;
+ }
+
+ /**
+ * Mark the permission as changed by the user
+ */
+ void setChanged() {
+ mWasChanged = true;
+ updateUi();
+ }
+
+ /**
+ * @return {@code true} iff the permission was changed by the user
+ */
+ boolean wasChanged() {
+ return mWasChanged;
+ }
+
+ @Override
+ void updateUi() {
+ // updateUi might be called in super-constructor before group is initialized
+ if (mGroup == null) {
+ return;
+ }
+
+ super.updateUi();
+
+ if (isEnabled()) {
+ if (mGroup.isReviewRequired() && !mWasChanged) {
+ setSummary(mGroup.getDescription());
+ setCheckedOverride(true);
+ } else if (TextUtils.isEmpty(getSummary())) {
+ // Sometimes the summary is already used, e.g. when this for a
+ // foreground/background group. In this case show leave the original summary.
+ setSummary(mGroup.getDescription());
+ }
+ }
+ }
+ }
}
diff --git a/src/com/android/packageinstaller/permission/ui/handheld/SettingsWithHeader.java b/src/com/android/packageinstaller/permission/ui/handheld/SettingsWithHeader.java
index d577579..fef06d5 100644
--- a/src/com/android/packageinstaller/permission/ui/handheld/SettingsWithHeader.java
+++ b/src/com/android/packageinstaller/permission/ui/handheld/SettingsWithHeader.java
@@ -19,23 +19,25 @@
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
+import android.os.UserHandle;
import android.view.LayoutInflater;
import android.view.View;
-import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
-import com.android.packageinstaller.DeviceUtils;
-import com.android.packageinstaller.R;
+import androidx.annotation.Nullable;
-public abstract class SettingsWithHeader extends PermissionsFrameFragment
- implements OnClickListener {
+import com.android.packageinstaller.DeviceUtils;
+import com.android.permissioncontroller.R;
+
+public abstract class SettingsWithHeader extends PermissionsFrameFragment {
private View mHeader;
protected Intent mInfoIntent;
protected Drawable mIcon;
protected CharSequence mLabel;
+ protected UserHandle mUserHandle;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
@@ -51,10 +53,12 @@
return root;
}
- public void setHeader(Drawable icon, CharSequence label, Intent infoIntent) {
+ public void setHeader(Drawable icon, CharSequence label, Intent infoIntent,
+ @Nullable UserHandle userHandle) {
mIcon = icon;
mLabel = label;
mInfoIntent = infoIntent;
+ mUserHandle = userHandle;
updateHeader();
}
@@ -72,13 +76,9 @@
} else {
info.setVisibility(View.VISIBLE);
info.setClickable(true);
- info.setOnClickListener(this);
+ info.setOnClickListener(v -> getActivity().startActivityAsUser(mInfoIntent,
+ mUserHandle));
}
}
}
-
- @Override
- public void onClick(View v) {
- getActivity().startActivity(mInfoIntent);
- }
}
diff --git a/src/com/android/packageinstaller/permission/ui/handheld/SettingsWithLargeHeader.java b/src/com/android/packageinstaller/permission/ui/handheld/SettingsWithLargeHeader.java
new file mode 100644
index 0000000..a613b2a
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/handheld/SettingsWithLargeHeader.java
@@ -0,0 +1,144 @@
+/*
+ * 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.packageinstaller.permission.ui.handheld;
+
+import android.content.Intent;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.packageinstaller.DeviceUtils;
+import com.android.permissioncontroller.R;
+
+/**
+ * A class that contains a header.
+ */
+public abstract class SettingsWithLargeHeader extends PermissionsFrameFragment {
+
+ private View mHeader;
+ protected Intent mInfoIntent;
+ protected UserHandle mUserHandle;
+ protected Drawable mIcon;
+ protected CharSequence mLabel;
+ protected boolean mSmallIcon;
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ ViewGroup root = (ViewGroup) super.onCreateView(inflater, container, savedInstanceState);
+
+ if (!DeviceUtils.isTelevision(getContext())) {
+ if (mHeader == null) {
+ mHeader = inflater.inflate(R.layout.header_large, root, false);
+ getPreferencesContainer().addView(mHeader, 0);
+ } else if (mHeader.getVisibility() == View.VISIBLE) {
+ ((ViewGroup) mHeader.getParent()).removeView(mHeader);
+ getPreferencesContainer().addView(mHeader, 0);
+ updateHeader(mHeader);
+ mHeader.requireViewById(R.id.header_link).setVisibility(View.VISIBLE);
+ }
+ }
+
+ return root;
+ }
+
+ /**
+ * Set the icon and label to use in the header.
+ *
+ * @param icon the icon
+ * @param label the label
+ * @param infoIntent the intent to show on click
+ * @param smallIcon whether the icon should be small
+ */
+ public void setHeader(@NonNull Drawable icon, @NonNull CharSequence label,
+ Intent infoIntent, @Nullable UserHandle userHandle, boolean smallIcon) {
+ mIcon = icon;
+ mLabel = label;
+ mInfoIntent = infoIntent;
+ mUserHandle = userHandle;
+ mSmallIcon = smallIcon;
+ updateHeader(mHeader);
+ }
+
+ /**
+ * Updates the header to use the correct icon and title.
+ *
+ * @param header the View that contains the components.
+ */
+ protected void updateHeader(@NonNull View header) {
+ if (header != null) {
+ header.setVisibility(View.VISIBLE);
+
+ ImageView appIcon = header.requireViewById(R.id.entity_header_icon);
+ appIcon.setImageDrawable(mIcon);
+ if (mSmallIcon) {
+ int size = getContext().getResources().getDimensionPixelSize(
+ R.dimen.permission_icon_header_size);
+ appIcon.getLayoutParams().width = size;
+ appIcon.getLayoutParams().height = size;
+ }
+ if (mInfoIntent != null) {
+ appIcon.setOnClickListener(v -> getActivity().startActivityAsUser(mInfoIntent,
+ mUserHandle));
+ appIcon.setContentDescription(mLabel);
+ }
+
+ TextView appName = header.requireViewById(R.id.entity_header_title);
+ appName.setText(mLabel);
+
+ header.requireViewById(R.id.entity_header_summary).setVisibility(View.GONE);
+ header.requireViewById(R.id.entity_header_second_summary).setVisibility(View.GONE);
+ header.requireViewById(R.id.header_link).setVisibility(View.GONE);
+ }
+ }
+
+ /**
+ * Hide the entire header.
+ */
+ public void hideHeader() {
+ mHeader.setVisibility(View.GONE);
+ }
+
+ /**
+ * Set the summary text in the header.
+ *
+ * @param summary the text to display
+ * @param listener the click listener if the summary should be clickable
+ */
+ public void setSummary(@NonNull CharSequence summary, @Nullable View.OnClickListener listener) {
+ TextView textView = mHeader.requireViewById(R.id.header_text);
+ TextView linkView = mHeader.requireViewById(R.id.header_link);
+ if (listener != null) {
+ linkView.setOnClickListener(listener);
+ linkView.setVisibility(View.VISIBLE);
+ linkView.setText(summary);
+ textView.setVisibility(View.GONE);
+ } else {
+ textView.setVisibility(View.VISIBLE);
+ textView.setText(summary);
+ linkView.setVisibility(View.GONE);
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/ui/television/AllAppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/television/AllAppPermissionsFragment.java
index b914d4c..dcbef43 100644
--- a/src/com/android/packageinstaller/permission/ui/television/AllAppPermissionsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/television/AllAppPermissionsFragment.java
@@ -33,19 +33,20 @@
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
-import androidx.preference.SwitchPreference;
+import android.util.Log;
+import android.view.MenuItem;
+
import androidx.preference.Preference;
import androidx.preference.Preference.OnPreferenceChangeListener;
import androidx.preference.Preference.OnPreferenceClickListener;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceGroup;
-import android.util.Log;
-import android.view.MenuItem;
+import androidx.preference.SwitchPreference;
-import com.android.packageinstaller.R;
import com.android.packageinstaller.permission.model.AppPermissionGroup;
import com.android.packageinstaller.permission.model.AppPermissions;
import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
import java.util.ArrayList;
import java.util.Collections;
@@ -87,7 +88,7 @@
getActivity().finish();
}
- mAppPermissions = new AppPermissions(getActivity(), mPackageInfo, null, false,
+ mAppPermissions = new AppPermissions(getActivity(), mPackageInfo, false,
new Runnable() {
@Override
public void run() {
@@ -166,8 +167,7 @@
continue;
}
-
- PermissionGroupInfo group = getGroup(perm.group, pm);
+ PermissionGroupInfo group = getGroup(Utils.getGroupOfPermission(perm), pm);
if ((perm.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE)
== PermissionInfo.PROTECTION_DANGEROUS) {
PreferenceGroup pref = findOrCreate(group != null ? group : perm, pm, prefs);
@@ -301,7 +301,7 @@
}
private boolean isMutableGranularPermission(String name) {
- if (!getContext().getPackageManager().isPermissionReviewModeEnabled()) {
+ if (!getContext().getPackageManager().arePermissionsIndividuallyControlled()) {
return false;
}
switch (name) {
diff --git a/src/com/android/packageinstaller/permission/ui/television/AppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/television/AppPermissionsFragment.java
index 27753ea..5b5961a 100644
--- a/src/com/android/packageinstaller/permission/ui/television/AppPermissionsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/television/AppPermissionsFragment.java
@@ -29,11 +29,7 @@
import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
-import androidx.preference.SwitchPreference;
-import androidx.preference.Preference;
-import androidx.preference.Preference.OnPreferenceChangeListener;
-import androidx.preference.PreferenceScreen;
-import androidx.preference.PreferenceViewHolder;
+import android.util.ArraySet;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
@@ -41,16 +37,19 @@
import android.view.View;
import android.widget.Toast;
-import com.android.packageinstaller.R;
+import androidx.preference.Preference;
+import androidx.preference.Preference.OnPreferenceChangeListener;
+import androidx.preference.PreferenceScreen;
+import androidx.preference.PreferenceViewHolder;
+import androidx.preference.SwitchPreference;
+
import com.android.packageinstaller.permission.model.AppPermissionGroup;
import com.android.packageinstaller.permission.model.AppPermissions;
import com.android.packageinstaller.permission.ui.ReviewPermissionsActivity;
import com.android.packageinstaller.permission.utils.LocationUtils;
import com.android.packageinstaller.permission.utils.SafetyNetLogger;
import com.android.packageinstaller.permission.utils.Utils;
-
-import java.util.ArrayList;
-import java.util.List;
+import com.android.permissioncontroller.R;
public final class AppPermissionsFragment extends SettingsWithHeader
implements OnPreferenceChangeListener {
@@ -61,7 +60,7 @@
private static final int MENU_ALL_PERMS = 0;
- private List<AppPermissionGroup> mToggledGroups;
+ private ArraySet<AppPermissionGroup> mToggledGroups;
private AppPermissions mAppPermissions;
private PreferenceScreen mExtraScreen;
@@ -98,7 +97,7 @@
}
- mAppPermissions = new AppPermissions(activity, packageInfo, null, true,
+ mAppPermissions = new AppPermissions(activity, packageInfo, true,
() -> getActivity().finish());
if (mAppPermissions.isReviewRequired()) {
@@ -191,7 +190,7 @@
extraPerms.setTitle(R.string.additional_permissions);
for (AppPermissionGroup group : mAppPermissions.getPermissionGroups()) {
- if (!Utils.shouldShowPermission(group, mAppPermissions.getPackageInfo().packageName)) {
+ if (!Utils.shouldShowPermission(getContext(), group)) {
continue;
}
@@ -205,11 +204,13 @@
preference.setIcon(Utils.applyTint(getContext(), icon,
android.R.attr.colorControlNormal));
preference.setTitle(group.getLabel());
- if (group.isPolicyFixed()) {
+ if (group.isSystemFixed()) {
+ preference.setSummary(getString(R.string.permission_summary_enabled_system_fixed));
+ } else if (group.isPolicyFixed()) {
preference.setSummary(getString(R.string.permission_summary_enforced_by_policy));
}
preference.setPersistent(false);
- preference.setEnabled(!group.isPolicyFixed());
+ preference.setEnabled(!group.isSystemFixed() && !group.isPolicyFixed());
preference.setChecked(group.areRuntimePermissionsGranted());
if (isPlatform) {
@@ -278,7 +279,8 @@
addToggledGroup(group);
- if (LocationUtils.isLocationGroupAndProvider(group.getName(), group.getApp().packageName)) {
+ if (LocationUtils.isLocationGroupAndProvider(getContext(), group.getName(),
+ group.getApp().packageName)) {
LocationUtils.showLocationDialog(getContext(), mAppPermissions.getAppLabel());
return false;
}
@@ -318,20 +320,14 @@
private void addToggledGroup(AppPermissionGroup group) {
if (mToggledGroups == null) {
- mToggledGroups = new ArrayList<>();
+ mToggledGroups = new ArraySet<>();
}
- // Double toggle is back to initial state.
- if (mToggledGroups.contains(group)) {
- mToggledGroups.remove(group);
- } else {
- mToggledGroups.add(group);
- }
+ mToggledGroups.add(group);
}
private void logToggledGroups() {
if (mToggledGroups != null) {
- String packageName = mAppPermissions.getPackageInfo().packageName;
- SafetyNetLogger.logPermissionsToggled(packageName, mToggledGroups);
+ SafetyNetLogger.logPermissionsToggled(mToggledGroups);
mToggledGroups = null;
}
}
diff --git a/src/com/android/packageinstaller/permission/ui/television/GrantPermissionsViewHandlerImpl.java b/src/com/android/packageinstaller/permission/ui/television/GrantPermissionsViewHandlerImpl.java
index e036ca5..f4d022e 100644
--- a/src/com/android/packageinstaller/permission/ui/television/GrantPermissionsViewHandlerImpl.java
+++ b/src/com/android/packageinstaller/permission/ui/television/GrantPermissionsViewHandlerImpl.java
@@ -1,5 +1,7 @@
package com.android.packageinstaller.permission.ui.television;
+import static com.android.packageinstaller.permission.ui.GrantPermissionsActivity.LABEL_DENY_AND_DONT_ASK_AGAIN_BUTTON;
+
import android.content.Context;
import android.graphics.PixelFormat;
import android.graphics.drawable.Icon;
@@ -14,8 +16,8 @@
import android.widget.LinearLayout;
import android.widget.TextView;
-import com.android.packageinstaller.R;
import com.android.packageinstaller.permission.ui.GrantPermissionsViewHandler;
+import com.android.permissioncontroller.R;
/**
* TV-specific view handler for the grant permissions activity.
@@ -80,7 +82,9 @@
@Override
public void updateUi(String groupName, int groupCount, int groupIndex, Icon icon,
- CharSequence message, boolean showDoNotAsk) {
+ CharSequence message, CharSequence detailMessage, CharSequence[] buttonLabels) {
+ // TODO: Handle detailMessage
+
mGroupName = groupName;
mMessageView.setText(message);
@@ -89,7 +93,9 @@
mIconView.setImageIcon(icon);
}
- mHardDenyButton.setVisibility(showDoNotAsk ? View.VISIBLE : View.GONE);
+ mHardDenyButton.setVisibility(
+ buttonLabels[LABEL_DENY_AND_DONT_ASK_AGAIN_BUTTON] != null ? View.VISIBLE
+ : View.GONE);
if (groupCount > 1) {
mCurrentGroupView.setVisibility(View.VISIBLE);
mCurrentGroupView.setText(mContext.getString(R.string.current_permission_template,
@@ -111,25 +117,23 @@
@Override
public void onClick(View view) {
- boolean granted = false;
- boolean doNotAskAgain = false;
switch (view.getId()) {
case R.id.permission_allow_button:
- granted = true;
+ mResultListener.onPermissionGrantResult(mGroupName, GRANTED_ALWAYS);
+ break;
+ case R.id.permission_deny_button:
+ mResultListener.onPermissionGrantResult(mGroupName, DENIED);
break;
case R.id.permission_deny_dont_ask_again_button:
- doNotAskAgain = true;
+ mResultListener.onPermissionGrantResult(mGroupName, DENIED_DO_NOT_ASK_AGAIN);
break;
}
- if (mResultListener != null) {
- mResultListener.onPermissionGrantResult(mGroupName, granted, doNotAskAgain);
- }
}
@Override
public void onBackPressed() {
if (mResultListener != null) {
- mResultListener.onPermissionGrantResult(mGroupName, false, false);
+ mResultListener.onPermissionGrantResult(mGroupName, DENIED);
}
}
}
diff --git a/src/com/android/packageinstaller/permission/ui/television/ManagePermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/television/ManagePermissionsFragment.java
index 19f01d0..43d2d97 100644
--- a/src/com/android/packageinstaller/permission/ui/television/ManagePermissionsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/television/ManagePermissionsFragment.java
@@ -21,20 +21,20 @@
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
-import androidx.annotation.Nullable;
-import androidx.preference.Preference;
-import androidx.preference.Preference.OnPreferenceClickListener;
-import androidx.preference.PreferenceScreen;
-import android.util.ArraySet;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
-import com.android.packageinstaller.R;
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+import androidx.preference.Preference.OnPreferenceClickListener;
+import androidx.preference.PreferenceScreen;
+
import com.android.packageinstaller.permission.model.PermissionApps.PmCache;
import com.android.packageinstaller.permission.model.PermissionGroup;
import com.android.packageinstaller.permission.model.PermissionGroups;
import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
import java.util.List;
@@ -46,8 +46,6 @@
private static final String EXTRA_PREFS_KEY = "extra_prefs_key";
- private ArraySet<String> mLauncherPkgs;
-
private PermissionGroups mPermissions;
private PreferenceScreen mExtraScreen;
@@ -65,8 +63,7 @@
if (ab != null) {
ab.setDisplayHomeAsUpEnabled(true);
}
- mLauncherPkgs = Utils.getLauncherPackages(getContext());
- mPermissions = new PermissionGroups(getContext(), getLoaderManager(), this);
+ mPermissions = new PermissionGroups(getContext(), getLoaderManager(), this, false, true);
}
@Override
diff --git a/src/com/android/packageinstaller/permission/ui/television/PermissionAppsFragment.java b/src/com/android/packageinstaller/permission/ui/television/PermissionAppsFragment.java
index 48e8967..6cbbbb2 100644
--- a/src/com/android/packageinstaller/permission/ui/television/PermissionAppsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/television/PermissionAppsFragment.java
@@ -24,12 +24,6 @@
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
-import androidx.preference.SwitchPreference;
-import androidx.collection.ArrayMap;
-import androidx.preference.Preference;
-import androidx.preference.Preference.OnPreferenceChangeListener;
-import androidx.preference.Preference.OnPreferenceClickListener;
-import androidx.preference.PreferenceScreen;
import android.util.ArraySet;
import android.view.Menu;
import android.view.MenuInflater;
@@ -37,8 +31,13 @@
import android.view.View;
import android.widget.TextView;
+import androidx.preference.Preference;
+import androidx.preference.Preference.OnPreferenceChangeListener;
+import androidx.preference.Preference.OnPreferenceClickListener;
+import androidx.preference.PreferenceScreen;
+import androidx.preference.SwitchPreference;
+
import com.android.packageinstaller.DeviceUtils;
-import com.android.packageinstaller.R;
import com.android.packageinstaller.permission.model.AppPermissionGroup;
import com.android.packageinstaller.permission.model.PermissionApps;
import com.android.packageinstaller.permission.model.PermissionApps.Callback;
@@ -47,9 +46,7 @@
import com.android.packageinstaller.permission.utils.LocationUtils;
import com.android.packageinstaller.permission.utils.SafetyNetLogger;
import com.android.packageinstaller.permission.utils.Utils;
-
-import java.util.ArrayList;
-import java.util.List;
+import com.android.permissioncontroller.R;
public final class PermissionAppsFragment extends SettingsWithHeader implements Callback,
OnPreferenceChangeListener {
@@ -73,8 +70,7 @@
private PreferenceScreen mExtraScreen;
- private ArrayMap<String, AppPermissionGroup> mToggledGroups;
- private ArraySet<String> mLauncherPkgs;
+ private ArraySet<AppPermissionGroup> mToggledGroups;
private boolean mHasConfirmedRevoke;
private boolean mShowSystem;
@@ -88,21 +84,20 @@
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setLoading(true /* loading */, false /* animate */);
+ String groupName = getArguments().getString(Intent.EXTRA_PERMISSION_NAME);
+ mPermissionApps = new PermissionApps(getActivity(), groupName, this);
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+
setHasOptionsMenu(true);
final ActionBar ab = getActivity().getActionBar();
if (ab != null) {
ab.setDisplayHomeAsUpEnabled(true);
}
- mLauncherPkgs = Utils.getLauncherPackages(getContext());
- String groupName = getArguments().getString(Intent.EXTRA_PERMISSION_NAME);
- mPermissionApps = new PermissionApps(getActivity(), groupName, this);
- mPermissionApps.refresh(true);
- }
-
- @Override
- public void onResume() {
- super.onResume();
mPermissionApps.refresh(true);
}
@@ -188,7 +183,7 @@
boolean menuOptionsInvalided = false;
for (PermissionApp app : permissionApps.getApps()) {
- if (!Utils.shouldShowPermission(app)) {
+ if (!Utils.shouldShowPermission(getContext(), app.getPermissionGroup())) {
continue;
}
@@ -199,7 +194,7 @@
existingPref = mExtraScreen.findPreference(key);
}
- boolean isSystemApp = Utils.isSystem(app, mLauncherPkgs);
+ boolean isSystemApp = !Utils.isGroupOrBgGroupUserSensitive(app.getPermissionGroup());
if (isSystemApp && !menuOptionsInvalided) {
mHasSystemApps = true;
@@ -216,12 +211,15 @@
if (existingPref != null) {
// If existing preference - only update its state.
- if (app.isPolicyFixed()) {
+ if (app.isSystemFixed()) {
+ existingPref.setSummary(getString(
+ R.string.permission_summary_enabled_system_fixed));
+ } else if (app.isPolicyFixed()) {
existingPref.setSummary(getString(
R.string.permission_summary_enforced_by_policy));
}
existingPref.setPersistent(false);
- existingPref.setEnabled(!app.isPolicyFixed());
+ existingPref.setEnabled(!app.isSystemFixed() && !app.isPolicyFixed());
if (existingPref instanceof SwitchPreference) {
((SwitchPreference) existingPref)
.setChecked(app.areRuntimePermissionsGranted());
@@ -234,11 +232,13 @@
pref.setKey(app.getKey());
pref.setIcon(app.getIcon());
pref.setTitle(app.getLabel());
- if (app.isPolicyFixed()) {
+ if (app.isSystemFixed()) {
+ pref.setSummary(getString(R.string.permission_summary_enabled_system_fixed));
+ } else if (app.isPolicyFixed()) {
pref.setSummary(getString(R.string.permission_summary_enforced_by_policy));
}
pref.setPersistent(false);
- pref.setEnabled(!app.isPolicyFixed());
+ pref.setEnabled(!app.isSystemFixed() && !app.isPolicyFixed());
pref.setChecked(app.areRuntimePermissionsGranted());
if (isSystemApp && isTelevision) {
@@ -316,7 +316,7 @@
return false;
}
- if (LocationUtils.isLocationGroupAndProvider(mPermissionApps.getGroupName(),
+ if (LocationUtils.isLocationGroupAndProvider(getContext(), mPermissionApps.getGroupName(),
app.getPackageName())) {
LocationUtils.showLocationDialog(getContext(), app.getLabel());
return false;
@@ -362,32 +362,22 @@
}
@Override
- public void onPause() {
- super.onPause();
+ public void onStop() {
+ super.onStop();
logToggledGroups();
}
private void addToggledGroup(String packageName, AppPermissionGroup group) {
if (mToggledGroups == null) {
- mToggledGroups = new ArrayMap<>();
+ mToggledGroups = new ArraySet<>();
}
- // Double toggle is back to initial state.
- if (mToggledGroups.containsKey(packageName)) {
- mToggledGroups.remove(packageName);
- } else {
- mToggledGroups.put(packageName, group);
- }
+
+ mToggledGroups.add(group);
}
private void logToggledGroups() {
if (mToggledGroups != null) {
- final int groupCount = mToggledGroups.size();
- for (int i = 0; i < groupCount; i++) {
- String packageName = mToggledGroups.keyAt(i);
- List<AppPermissionGroup> groups = new ArrayList<>();
- groups.add(mToggledGroups.valueAt(i));
- SafetyNetLogger.logPermissionsToggled(packageName, groups);
- }
+ SafetyNetLogger.logPermissionsToggled(mToggledGroups);
mToggledGroups = null;
}
}
@@ -415,7 +405,8 @@
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
String groupName = getArguments().getString(Intent.EXTRA_PERMISSION_NAME);
- PermissionApps permissionApps = new PermissionApps(getActivity(), groupName, null);
+ PermissionApps permissionApps = new PermissionApps(getActivity(), groupName,
+ (Callback) null);
bindUi(this, permissionApps);
}
diff --git a/src/com/android/packageinstaller/permission/ui/television/PermissionsFrameFragment.java b/src/com/android/packageinstaller/permission/ui/television/PermissionsFrameFragment.java
index af4593a..30eb8d1 100644
--- a/src/com/android/packageinstaller/permission/ui/television/PermissionsFrameFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/television/PermissionsFrameFragment.java
@@ -17,11 +17,6 @@
package com.android.packageinstaller.permission.ui.television;
import android.os.Bundle;
-import androidx.annotation.Nullable;
-import androidx.preference.PreferenceFragment;
-import androidx.leanback.widget.VerticalGridView;
-import androidx.preference.PreferenceScreen;
-import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -30,7 +25,13 @@
import android.view.animation.AnimationUtils;
import android.widget.TextView;
-import com.android.packageinstaller.R;
+import androidx.annotation.Nullable;
+import androidx.leanback.widget.VerticalGridView;
+import androidx.preference.PreferenceFragment;
+import androidx.preference.PreferenceScreen;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.permissioncontroller.R;
public abstract class PermissionsFrameFragment extends PreferenceFragment {
@@ -147,6 +148,7 @@
if (adapter != null) {
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() {
diff --git a/src/com/android/packageinstaller/permission/ui/television/SettingsWithHeader.java b/src/com/android/packageinstaller/permission/ui/television/SettingsWithHeader.java
index 06f7c14..5efcee6 100644
--- a/src/com/android/packageinstaller/permission/ui/television/SettingsWithHeader.java
+++ b/src/com/android/packageinstaller/permission/ui/television/SettingsWithHeader.java
@@ -26,7 +26,7 @@
import android.widget.ImageView;
import android.widget.TextView;
import com.android.packageinstaller.DeviceUtils;
-import com.android.packageinstaller.R;
+import com.android.permissioncontroller.R;
public abstract class SettingsWithHeader extends PermissionsFrameFragment
implements OnClickListener {
diff --git a/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java b/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java
index 7f2de2b..0e65e33 100644
--- a/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java
+++ b/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java
@@ -16,9 +16,7 @@
package com.android.packageinstaller.permission.ui.wear;
-import android.Manifest;
import android.app.Activity;
-import android.app.Fragment;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageInfo;
@@ -27,18 +25,17 @@
import android.os.Build;
import android.os.Bundle;
import android.os.UserHandle;
-import android.preference.Preference;
-import android.preference.PreferenceFragment;
-import android.preference.PreferenceScreen;
-import android.preference.SwitchPreference;
-import androidx.wear.ble.view.WearableDialogHelper;
+import android.util.ArraySet;
import android.util.Log;
-import android.view.LayoutInflater;
import android.view.View;
-import android.view.ViewGroup;
import android.widget.Toast;
-import com.android.packageinstaller.R;
+import androidx.fragment.app.Fragment;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.SwitchPreference;
+import androidx.wear.ble.view.WearableDialogHelper;
+
import com.android.packageinstaller.permission.model.AppPermissionGroup;
import com.android.packageinstaller.permission.model.AppPermissions;
import com.android.packageinstaller.permission.model.Permission;
@@ -46,13 +43,14 @@
import com.android.packageinstaller.permission.utils.LocationUtils;
import com.android.packageinstaller.permission.utils.SafetyNetLogger;
import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import java.util.ArrayList;
import java.util.List;
-public final class AppPermissionsFragmentWear extends PreferenceFragment {
+public final class AppPermissionsFragmentWear extends PreferenceFragmentCompat {
private static final String LOG_TAG = "AppPermFragWear";
private static final String KEY_NO_PERMISSIONS = "no_permissions";
@@ -69,15 +67,13 @@
}
private PackageManager mPackageManager;
- private List<AppPermissionGroup> mToggledGroups;
+ private ArraySet<AppPermissionGroup> mToggledGroups;
private AppPermissions mAppPermissions;
private boolean mHasConfirmedRevoke;
/**
* Provides click behavior for disabled preferences.
- * We can't use {@link PreferenceFragment#onPreferenceTreeClick}, as the base
- * {@link SwitchPreference} doesn't delegate to that method if the preference is disabled.
*/
private static class PermissionSwitchPreference extends SwitchPreference {
@@ -89,21 +85,27 @@
}
@Override
- public void performClick(PreferenceScreen preferenceScreen) {
- super.performClick(preferenceScreen);
+ protected void performClick(View view) {
+ super.performClick(view);
+
if (!isEnabled()) {
// If setting the permission is disabled, it must have been locked
// by the device or profile owner. So get that info and pass it to
// the support details dialog.
EnforcedAdmin deviceOrProfileOwner = RestrictedLockUtils.getProfileOrDeviceOwner(
- mActivity, UserHandle.myUserId());
+ mActivity, UserHandle.of(UserHandle.myUserId()));
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
- mActivity, deviceOrProfileOwner);
+ mActivity, deviceOrProfileOwner);
}
}
}
@Override
+ public void onCreatePreferences(Bundle bundle, String s) {
+ // empty
+ }
+
+ @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -127,7 +129,7 @@
}
mAppPermissions = new AppPermissions(
- activity, packageInfo, null, true, () -> getActivity().finish());
+ activity, packageInfo, true, () -> getActivity().finish());
addPreferencesFromResource(R.xml.watch_permissions);
initializePermissionGroupList();
@@ -158,7 +160,6 @@
}
private void initializePermissionGroupList() {
- final String packageName = mAppPermissions.getPackageInfo().packageName;
List<AppPermissionGroup> groups = mAppPermissions.getPermissionGroups();
List<SwitchPreference> nonSystemPreferences = new ArrayList<>();
@@ -167,7 +168,7 @@
}
for (final AppPermissionGroup group : groups) {
- if (!Utils.shouldShowPermission(group, packageName)) {
+ if (!Utils.shouldShowPermission(getContext(), group)) {
continue;
}
@@ -321,11 +322,11 @@
pref.setTitle(group.getLabel());
pref.setChecked(group.areRuntimePermissionsGranted());
- if (group.isPolicyFixed()) {
+ if (group.isSystemFixed() || group.isPolicyFixed()) {
pref.setEnabled(false);
} else {
pref.setOnPreferenceChangeListener((p, newVal) -> {
- if (LocationUtils.isLocationGroupAndProvider(
+ if (LocationUtils.isLocationGroupAndProvider(getContext(),
group.getName(), group.getApp().packageName)) {
LocationUtils.showLocationDialog(
getContext(), mAppPermissions.getAppLabel());
@@ -372,20 +373,15 @@
private void addToggledGroup(AppPermissionGroup group) {
if (mToggledGroups == null) {
- mToggledGroups = new ArrayList<>();
+ mToggledGroups = new ArraySet<>();
}
- // Double toggle is back to initial state.
- if (mToggledGroups.contains(group)) {
- mToggledGroups.remove(group);
- } else {
- mToggledGroups.add(group);
- }
+
+ mToggledGroups.add(group);
}
private void logAndClearToggledGroups() {
if (mToggledGroups != null) {
- String packageName = mAppPermissions.getPackageInfo().packageName;
- SafetyNetLogger.logPermissionsToggled(packageName, mToggledGroups);
+ SafetyNetLogger.logPermissionsToggled(mToggledGroups);
mToggledGroups = null;
}
}
diff --git a/src/com/android/packageinstaller/permission/ui/wear/ReviewPermissionsWearFragment.java b/src/com/android/packageinstaller/permission/ui/wear/ReviewPermissionsWearFragment.java
index 3308c71..4840fb3 100644
--- a/src/com/android/packageinstaller/permission/ui/wear/ReviewPermissionsWearFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/wear/ReviewPermissionsWearFragment.java
@@ -23,30 +23,31 @@
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.RemoteCallback;
-import android.preference.Preference;
-import android.preference.PreferenceCategory;
-import android.preference.PreferenceFragment;
-import android.preference.PreferenceGroup;
-import android.preference.PreferenceScreen;
-import android.preference.SwitchPreference;
-import android.preference.TwoStatePreference;
-import androidx.wear.ble.view.WearableDialogHelper;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
import android.util.Log;
import android.util.TypedValue;
-import com.android.packageinstaller.R;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceScreen;
+import androidx.preference.SwitchPreference;
+import androidx.preference.TwoStatePreference;
+import androidx.wear.ble.view.WearableDialogHelper;
+
import com.android.packageinstaller.permission.model.AppPermissionGroup;
import com.android.packageinstaller.permission.model.AppPermissions;
import com.android.packageinstaller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
import java.util.List;
-public class ReviewPermissionsWearFragment extends PreferenceFragment
+public class ReviewPermissionsWearFragment extends PreferenceFragmentCompat
implements Preference.OnPreferenceChangeListener {
private static final String TAG = "ReviewPermWear";
- private static final int ORDER_TITLE = 0;
private static final int ORDER_NEW_PERMS = 1;
private static final int ORDER_CURRENT_PERMS = 2;
// Category for showing actions should be displayed last.
@@ -72,9 +73,7 @@
private boolean mHasConfirmedRevoke;
@Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
Activity activity = getActivity();
if (activity == null) {
return;
@@ -86,13 +85,8 @@
return;
}
- mAppPermissions = new AppPermissions(activity, packageInfo, null, false,
- new Runnable() {
- @Override
- public void run() {
- getActivity().finish();
- }
- });
+ mAppPermissions = new AppPermissions(activity, packageInfo, false,
+ () -> getActivity().finish());
if (mAppPermissions.getPermissionGroups().isEmpty()) {
activity.finish();
@@ -141,7 +135,7 @@
int permOrder = ORDER_PERM_OFFSET_START;
for (AppPermissionGroup group : mAppPermissions.getPermissionGroups()) {
- if (!Utils.shouldShowPermission(group, mAppPermissions.getPackageInfo().packageName)
+ if (!Utils.shouldShowPermission(getContext(), group)
|| !Utils.OS_PKG.equals(group.getDeclaringPackage())) {
continue;
}
@@ -165,7 +159,7 @@
preference.setChecked(group.areRuntimePermissionsGranted());
// Mutable state
- if (group.isPolicyFixed()) {
+ if (group.isSystemFixed() || group.isPolicyFixed()) {
preference.setEnabled(false);
} else {
preference.setEnabled(true);
@@ -259,7 +253,7 @@
} else {
group.revokeRuntimePermissions(false);
}
- group.resetReviewRequired();
+ group.unsetReviewRequired();
}
}
}
diff --git a/src/com/android/packageinstaller/permission/utils/ArrayUtils.java b/src/com/android/packageinstaller/permission/utils/ArrayUtils.java
index 2af641b..ec59bcc 100644
--- a/src/com/android/packageinstaller/permission/utils/ArrayUtils.java
+++ b/src/com/android/packageinstaller/permission/utils/ArrayUtils.java
@@ -18,12 +18,25 @@
import android.text.TextUtils;
+import androidx.annotation.Nullable;
+
import java.util.Objects;
public final class ArrayUtils {
private ArrayUtils() { /* cannot be instantiated */ }
/**
+ * Checks if an array is null or has no elements.
+ *
+ * @param array the array to check for
+ *
+ * @return whether the array is null or has no elements.
+ */
+ public static <T> boolean isEmpty(@Nullable T[] array) {
+ return array == null || array.length == 0;
+ }
+
+ /**
* Checks that value is present as at least one of the elements of the array.
* @param array the array to check in
* @param value the value to check for
diff --git a/src/com/android/packageinstaller/permission/utils/CollectionUtils.java b/src/com/android/packageinstaller/permission/utils/CollectionUtils.java
new file mode 100644
index 0000000..62187f8
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/utils/CollectionUtils.java
@@ -0,0 +1,96 @@
+/*
+ * 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.packageinstaller.permission.utils;
+
+import android.util.ArraySet;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Utility methods for dealing with {@link java.util.Collection}s.
+ */
+public final class CollectionUtils {
+
+ private CollectionUtils() {}
+
+ /**
+ * Check whether a collection is {@code null} or empty.
+ *
+ * @param collection the collection to check
+ *
+ * @return whether the collection is {@code null} or empty
+ */
+ public static boolean isEmpty(@Nullable Collection<?> collection) {
+ return collection == null || collection.isEmpty();
+ }
+
+ /**
+ * Return the first element of a list, or {@code null} if the list is {@code null} or empty.
+ *
+ * @param <T> the class of the elements of the list
+ * @param list the list to get the first element
+ *
+ * @return the first element of the list, or {@code null} if the list is {@code null} or empty
+ */
+ @Nullable
+ public static <T> T firstOrNull(@Nullable List<T> list) {
+ return !isEmpty(list) ? list.get(0) : null;
+ }
+
+ /**
+ * Remove all values in the array set that do <b>not</b> exist in the given collection.
+ *
+ * @param <T> the class of the elements to retain and of the {@code ArraySet}
+ * @param arraySet the {@code ArraySet} whose elements are to be removed or retained
+ * @param valuesToRetain the values to be used to determine which elements to retain
+ *
+ * @return {@code true} if any values were removed from the array set, {@code false} otherwise.
+ *
+ * @see ArraySet#retainAll(java.util.Collection)
+ */
+ @SafeVarargs
+ public static <T> boolean retainAll(ArraySet<T> arraySet, T... valuesToRetain) {
+ boolean removed = false;
+ for (int i = arraySet.size() - 1; i >= 0; i--) {
+ if (!ArrayUtils.contains(valuesToRetain, arraySet.valueAt(i))) {
+ arraySet.removeAt(i);
+ removed = true;
+ }
+ }
+ return removed;
+ }
+
+ /**
+ * Return a singleton list containing the element, or an empty list if the element is
+ * {@code null}.
+ *
+ * @param <T> the class of the element
+ * @param element the element to be put into the list
+ *
+ * @return a singleton list containing the element, or an empty list if the element is
+ * {@code null}.
+ */
+ @NonNull
+ public static <T> List<T> singletonOrEmpty(@Nullable T element) {
+ return element != null ? Collections.singletonList(element) : Collections.emptyList();
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/utils/EventLogger.java b/src/com/android/packageinstaller/permission/utils/EventLogger.java
index 7aff7ad..d555f5f 100644
--- a/src/com/android/packageinstaller/permission/utils/EventLogger.java
+++ b/src/com/android/packageinstaller/permission/utils/EventLogger.java
@@ -16,15 +16,13 @@
package com.android.packageinstaller.permission.utils;
-import android.metrics.LogMaker;
import androidx.annotation.NonNull;
-import com.android.internal.logging.MetricsLogger;
-import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
-
public class EventLogger {
+ /*
+ Replace by @SystemApi logging
private static final MetricsLogger sMetricsLogger = new MetricsLogger();
-
+ */
/**
* Log that a permission was requested/denied.
*
@@ -34,10 +32,13 @@
*/
public static void logPermission(int action, @NonNull String name,
@NonNull String packageName) {
+ /*
+ Replace by @SystemApi logging
final LogMaker log = new LogMaker(action);
log.setPackageName(packageName);
log.addTaggedData(MetricsEvent.FIELD_PERMISSION, name);
sMetricsLogger.write(log);
+ */
}
}
diff --git a/src/com/android/packageinstaller/permission/utils/LocationUtils.java b/src/com/android/packageinstaller/permission/utils/LocationUtils.java
index 0296ae8..aa4eafe 100644
--- a/src/com/android/packageinstaller/permission/utils/LocationUtils.java
+++ b/src/com/android/packageinstaller/permission/utils/LocationUtils.java
@@ -17,25 +17,25 @@
import android.Manifest;
import android.app.AlertDialog;
+import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
-import android.content.res.Resources;
-import android.location.ILocationManager;
import android.location.LocationManager;
-import android.os.RemoteException;
-import android.os.ServiceManager;
import android.provider.Settings;
+import android.util.Log;
-import com.android.packageinstaller.R;
+import androidx.annotation.NonNull;
-import java.util.ArrayList;
+import com.android.permissioncontroller.R;
public class LocationUtils {
public static final String LOCATION_PERMISSION = Manifest.permission_group.LOCATION;
+ private static final String TAG = LocationUtils.class.getSimpleName();
+
public static void showLocationDialog(final Context context, CharSequence label) {
new AlertDialog.Builder(context)
.setIcon(R.drawable.ic_dialog_alert_material)
@@ -51,22 +51,46 @@
.show();
}
- public static boolean isLocationEnabled(Context context) {
- return Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.LOCATION_MODE,
- Settings.Secure.LOCATION_MODE_OFF) != Settings.Secure.LOCATION_MODE_OFF;
- }
-
- public static boolean isLocationGroupAndProvider(String groupName, String packageName) {
- return LOCATION_PERMISSION.equals(groupName) && isNetworkLocationProvider(packageName);
- }
-
- private static boolean isNetworkLocationProvider(String packageName) {
- ILocationManager locationService = ILocationManager.Stub.asInterface(
- ServiceManager.getService(Context.LOCATION_SERVICE));
+ /** Start the settings page for the location controller extra package. */
+ public static void startLocationControllerExtraPackageSettings(@NonNull Context context) {
try {
- return packageName.equals(locationService.getNetworkProviderPackage());
- } catch (RemoteException e) {
+ context.startActivity(new Intent(
+ Settings.ACTION_LOCATION_CONTROLLER_EXTRA_PACKAGE_SETTINGS));
+ return;
+ } catch (ActivityNotFoundException e) {
+ // In rare cases where location controller extra package is set, but
+ // no activity exists to handle the location controller extra package settings
+ // intent, log an error instead of crashing permission controller.
+ Log.e(TAG, "No activity to handle "
+ + "android.settings.LOCATION_CONTROLLER_EXTRA_PACKAGE_SETTINGS");
+ }
+ }
+
+ public static boolean isLocationEnabled(Context context) {
+ return context.getSystemService(LocationManager.class).isLocationEnabled();
+ }
+
+ public static boolean isLocationGroupAndProvider(Context context, String groupName,
+ String packageName) {
+ return LOCATION_PERMISSION.equals(groupName)
+ && context.getSystemService(LocationManager.class).isProviderPackage(packageName);
+ }
+
+ public static boolean isLocationGroupAndControllerExtraPackage(@NonNull Context context,
+ @NonNull String groupName, @NonNull String packageName) {
+ return LOCATION_PERMISSION.equals(groupName)
+ && packageName.equals(context.getSystemService(LocationManager.class)
+ .getExtraLocationControllerPackage());
+ }
+
+ /** Returns whether the location controller extra package is enabled. */
+ public static boolean isExtraLocationControllerPackageEnabled(Context context) {
+ try {
+ return context.getSystemService(LocationManager.class)
+ .isExtraLocationControllerPackageEnabled();
+ } catch (Exception e) {
return false;
}
+
}
}
diff --git a/src/com/android/packageinstaller/permission/utils/PackageRemovalMonitor.java b/src/com/android/packageinstaller/permission/utils/PackageRemovalMonitor.java
new file mode 100644
index 0000000..28413d1
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/utils/PackageRemovalMonitor.java
@@ -0,0 +1,65 @@
+/*
+ * 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.packageinstaller.permission.utils;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+
+import androidx.annotation.NonNull;
+
+/**
+ * Monitors the state of a package (esp. if it gets uninstalled)
+ */
+public abstract class PackageRemovalMonitor extends BroadcastReceiver {
+ private final @NonNull Context mContext;
+ private final @NonNull String mPackageName;
+
+ public PackageRemovalMonitor(@NonNull Context context, @NonNull String packageName) {
+ mContext = context;
+ mPackageName = packageName;
+ }
+
+ protected abstract void onPackageRemoved();
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (Intent.ACTION_PACKAGE_REMOVED.equals(intent.getAction())
+ && mPackageName.equals(intent.getData().getSchemeSpecificPart())) {
+ onPackageRemoved();
+ }
+ }
+
+ /**
+ * Enable monitoring
+ */
+ public void register() {
+ IntentFilter packageRemovedFilter = new IntentFilter();
+ packageRemovedFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
+ packageRemovedFilter.addDataScheme("package");
+
+ mContext.registerReceiver(this, packageRemovedFilter);
+ }
+
+ /**
+ * Disable monitoring
+ */
+ public void unregister() {
+ mContext.unregisterReceiver(this);
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/utils/SafetyNetLogger.java b/src/com/android/packageinstaller/permission/utils/SafetyNetLogger.java
index 9b7673a..b77502a 100644
--- a/src/com/android/packageinstaller/permission/utils/SafetyNetLogger.java
+++ b/src/com/android/packageinstaller/permission/utils/SafetyNetLogger.java
@@ -17,11 +17,14 @@
package com.android.packageinstaller.permission.utils;
import android.content.pm.PackageInfo;
+import android.util.ArrayMap;
+import android.util.ArraySet;
import android.util.EventLog;
import com.android.packageinstaller.permission.model.AppPermissionGroup;
import com.android.packageinstaller.permission.model.Permission;
+import java.util.ArrayList;
import java.util.List;
public final class SafetyNetLogger {
@@ -46,10 +49,66 @@
packageInfo.packageName, groups));
}
- public static void logPermissionsToggled(String packageName, List<AppPermissionGroup> groups) {
- EventLog.writeEvent(SNET_NET_EVENT_LOG_TAG, PERMISSIONS_TOGGLED,
- android.os.Process.myUid(), buildChangedPermissionForPackageMessage(
- 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.
+ *
+ * @param groups The groups toggled
+ */
+ public static void logPermissionsToggled(ArraySet<AppPermissionGroup> groups) {
+ ArrayMap<String, ArrayList<AppPermissionGroup>> groupsByPackage = new ArrayMap<>();
+
+ int numGroups = groups.size();
+ for (int i = 0; i < numGroups; i++) {
+ AppPermissionGroup group = groups.valueAt(i);
+
+ ArrayList<AppPermissionGroup> groupsForThisPackage = groupsByPackage.get(
+ group.getApp().packageName);
+ if (groupsForThisPackage == null) {
+ groupsForThisPackage = new ArrayList<>();
+ groupsByPackage.put(group.getApp().packageName, groupsForThisPackage);
+ }
+
+ groupsForThisPackage.add(group);
+ if (group.getBackgroundPermissions() != null) {
+ groupsForThisPackage.add(group.getBackgroundPermissions());
+ }
+ }
+
+ int numPackages = groupsByPackage.size();
+ for (int i = 0; i < numPackages; i++) {
+ EventLog.writeEvent(SNET_NET_EVENT_LOG_TAG, PERMISSIONS_TOGGLED,
+ android.os.Process.myUid(), buildChangedPermissionForPackageMessage(
+ groupsByPackage.keyAt(i), groupsByPackage.valueAt(i)));
+ }
+ }
+
+ /**
+ * Log that a permission group has been toggled for the purpose of safety net.
+ *
+ * @param group The group toggled.
+ */
+ public static void logPermissionToggled(AppPermissionGroup group) {
+ ArraySet groups = new ArraySet<AppPermissionGroup>(1);
+ groups.add(group);
+ logPermissionsToggled(groups);
+ }
+
+ private static void buildChangedPermissionForGroup(AppPermissionGroup group,
+ StringBuilder builder) {
+ int permissionCount = group.getPermissions().size();
+ for (int permissionNum = 0; permissionNum < permissionCount; permissionNum++) {
+ Permission permission = group.getPermissions().get(permissionNum);
+
+ if (builder.length() > 0) {
+ builder.append(';');
+ }
+
+ builder.append(permission.getName()).append('|');
+ builder.append(permission.isGrantedIncludingAppOp()).append('|');
+ builder.append(permission.getFlags());
+ }
}
private static String buildChangedPermissionForPackageMessage(String packageName,
@@ -62,24 +121,9 @@
for (int groupNum = 0; groupNum < groupCount; groupNum++) {
AppPermissionGroup group = groups.get(groupNum);
- int permissionCount = group.getPermissions().size();
- for (int permissionNum = 0; permissionNum < permissionCount; permissionNum++) {
- Permission permission = group.getPermissions().get(permissionNum);
-
- if (groupNum > 0 || permissionNum > 0) {
- builder.append(';');
- }
-
- builder.append(permission.getName()).append('|');
-
- if (group.doesSupportRuntimePermissions()) {
- builder.append(permission.isGranted()).append('|');
- } else {
- builder.append(permission.isGranted() && (permission.getAppOp() == null
- || permission.isAppOpAllowed())).append('|');
- }
-
- builder.append(permission.getFlags());
+ buildChangedPermissionForGroup(group, builder);
+ if (group.getBackgroundPermissions() != null) {
+ buildChangedPermissionForGroup(group.getBackgroundPermissions(), builder);
}
}
diff --git a/src/com/android/packageinstaller/permission/utils/SoftRestrictedPermissionPolicy.java b/src/com/android/packageinstaller/permission/utils/SoftRestrictedPermissionPolicy.java
new file mode 100644
index 0000000..cad3d3b
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/utils/SoftRestrictedPermissionPolicy.java
@@ -0,0 +1,66 @@
+/*
+ * 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.packageinstaller.permission.utils;
+
+import static android.Manifest.permission.READ_EXTERNAL_STORAGE;
+import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
+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 android.content.pm.PackageInfo;
+import android.os.Build;
+
+import androidx.annotation.NonNull;
+
+import com.android.packageinstaller.permission.model.Permission;
+
+/**
+ * The behavior of soft restricted permissions is different for each permission. This class collects
+ * the policies in one place.
+ *
+ * This is the twin of {@link com.android.server.policy.SoftRestrictedPermissionPolicy}
+ */
+public abstract class SoftRestrictedPermissionPolicy {
+ private static final int FLAGS_PERMISSION_RESTRICTION_ANY_EXEMPT =
+ FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT
+ | FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT
+ | FLAG_PERMISSION_RESTRICTION_INSTALLER_EXEMPT;
+
+ /**
+ * Check if the permission should be shown in the UI.
+ *
+ * @param pkg the package the permission belongs to
+ * @param permission the permission
+ *
+ * @return {@code true} iff the permission should be shown in the UI.
+ */
+ public static boolean shouldShow(@NonNull PackageInfo pkg, @NonNull Permission permission) {
+ switch (permission.getName()) {
+ case READ_EXTERNAL_STORAGE:
+ case WRITE_EXTERNAL_STORAGE: {
+ boolean isWhiteListed =
+ (permission.getFlags() & FLAGS_PERMISSION_RESTRICTION_ANY_EXEMPT) != 0;
+ int targetSDK = pkg.applicationInfo.targetSdkVersion;
+
+ return isWhiteListed || targetSDK >= Build.VERSION_CODES.Q;
+ }
+ default:
+ return true;
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/utils/Utils.java b/src/com/android/packageinstaller/permission/utils/Utils.java
index 85a1028..707b9f7 100644
--- a/src/com/android/packageinstaller/permission/utils/Utils.java
+++ b/src/com/android/packageinstaller/permission/utils/Utils.java
@@ -16,24 +16,82 @@
package com.android.packageinstaller.permission.utils;
+import static android.Manifest.permission.RECORD_AUDIO;
+import static android.Manifest.permission_group.ACTIVITY_RECOGNITION;
+import static android.Manifest.permission_group.CALENDAR;
+import static android.Manifest.permission_group.CALL_LOG;
+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.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.role.RoleManager.ROLE_ASSISTANT;
+import static android.content.Context.MODE_PRIVATE;
+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.MATCH_DIRECT_BOOT_AWARE;
+import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE;
+import static android.os.UserHandle.myUserId;
+
+import static com.android.packageinstaller.Constants.ASSISTANT_RECORD_AUDIO_IS_USER_SENSITIVE_KEY;
+import static com.android.packageinstaller.Constants.FORCED_USER_SENSITIVE_UIDS_KEY;
+import static com.android.packageinstaller.Constants.PREFERENCES_FILE;
+
import android.Manifest;
+import android.app.Application;
+import android.app.role.RoleManager;
+import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageItemInfo;
import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.pm.PermissionInfo;
import android.content.pm.ResolveInfo;
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.Parcelable;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.provider.DeviceConfig;
+import android.provider.Settings;
+import android.text.Html;
+import android.text.TextUtils;
+import android.text.format.DateFormat;
+import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Log;
+import android.util.SparseArray;
import android.util.TypedValue;
+import android.view.Menu;
+import android.view.MenuItem;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+import androidx.core.text.BidiFormatter;
+import androidx.core.util.Preconditions;
+
+import com.android.launcher3.icons.IconFactory;
+import com.android.packageinstaller.Constants;
+import com.android.packageinstaller.permission.data.PerUserUidToSensitivityLiveData;
import com.android.packageinstaller.permission.model.AppPermissionGroup;
-import com.android.packageinstaller.permission.model.AppPermissions;
-import com.android.packageinstaller.permission.model.PermissionApps.PermissionApp;
+import com.android.permissioncontroller.R;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collections;
import java.util.List;
+import java.util.Locale;
+import java.util.Set;
public final class Utils {
@@ -41,26 +99,326 @@
public static final String OS_PKG = "android";
- public static final String[] MODERN_PERMISSION_GROUPS = {
- Manifest.permission_group.CALENDAR,
- Manifest.permission_group.CALL_LOG,
- Manifest.permission_group.CAMERA,
- Manifest.permission_group.CONTACTS,
- Manifest.permission_group.LOCATION,
- Manifest.permission_group.SENSORS,
- Manifest.permission_group.SMS,
- Manifest.permission_group.PHONE,
- Manifest.permission_group.MICROPHONE,
- Manifest.permission_group.STORAGE
- };
+ public static final float DEFAULT_MAX_LABEL_SIZE_PX = 500f;
+
+ /** Whether to show location access check notifications. */
+ private static final String PROPERTY_LOCATION_ACCESS_CHECK_ENABLED =
+ "location_access_check_enabled";
+
+ /** All permission whitelists. */
+ public static final int FLAGS_PERMISSION_WHITELIST_ALL =
+ PackageManager.FLAG_PERMISSION_WHITELIST_SYSTEM
+ | PackageManager.FLAG_PERMISSION_WHITELIST_UPGRADE
+ | PackageManager.FLAG_PERMISSION_WHITELIST_INSTALLER;
+
+ /** Mapping permission -> group for all dangerous platform permissions */
+ private static final ArrayMap<String, String> PLATFORM_PERMISSIONS;
+
+ /** Mapping group -> permissions for all dangerous platform permissions */
+ private static final ArrayMap<String, ArrayList<String>> PLATFORM_PERMISSION_GROUPS;
private static final Intent LAUNCHER_INTENT = new Intent(Intent.ACTION_MAIN, null)
- .addCategory(Intent.CATEGORY_LAUNCHER);
+ .addCategory(Intent.CATEGORY_LAUNCHER);
+
+ public static final int FLAGS_ALWAYS_USER_SENSITIVE =
+ FLAG_PERMISSION_USER_SENSITIVE_WHEN_GRANTED
+ | FLAG_PERMISSION_USER_SENSITIVE_WHEN_DENIED;
+
+ static {
+ PLATFORM_PERMISSIONS = new ArrayMap<>();
+
+ PLATFORM_PERMISSIONS.put(Manifest.permission.READ_CONTACTS, CONTACTS);
+ PLATFORM_PERMISSIONS.put(Manifest.permission.WRITE_CONTACTS, CONTACTS);
+ PLATFORM_PERMISSIONS.put(Manifest.permission.GET_ACCOUNTS, CONTACTS);
+
+ PLATFORM_PERMISSIONS.put(Manifest.permission.READ_CALENDAR, CALENDAR);
+ PLATFORM_PERMISSIONS.put(Manifest.permission.WRITE_CALENDAR, CALENDAR);
+
+ PLATFORM_PERMISSIONS.put(Manifest.permission.SEND_SMS, SMS);
+ PLATFORM_PERMISSIONS.put(Manifest.permission.RECEIVE_SMS, SMS);
+ PLATFORM_PERMISSIONS.put(Manifest.permission.READ_SMS, SMS);
+ PLATFORM_PERMISSIONS.put(Manifest.permission.RECEIVE_MMS, SMS);
+ PLATFORM_PERMISSIONS.put(Manifest.permission.RECEIVE_WAP_PUSH, SMS);
+ PLATFORM_PERMISSIONS.put(Manifest.permission.READ_CELL_BROADCASTS, SMS);
+
+ 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);
+
+ PLATFORM_PERMISSIONS.put(Manifest.permission.ACCESS_FINE_LOCATION, LOCATION);
+ PLATFORM_PERMISSIONS.put(Manifest.permission.ACCESS_COARSE_LOCATION, LOCATION);
+ PLATFORM_PERMISSIONS.put(Manifest.permission.ACCESS_BACKGROUND_LOCATION, LOCATION);
+
+ 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);
+
+ PLATFORM_PERMISSIONS.put(Manifest.permission.READ_PHONE_STATE, PHONE);
+ PLATFORM_PERMISSIONS.put(Manifest.permission.READ_PHONE_NUMBERS, PHONE);
+ PLATFORM_PERMISSIONS.put(Manifest.permission.CALL_PHONE, PHONE);
+ PLATFORM_PERMISSIONS.put(Manifest.permission.ADD_VOICEMAIL, PHONE);
+ PLATFORM_PERMISSIONS.put(Manifest.permission.USE_SIP, PHONE);
+ PLATFORM_PERMISSIONS.put(Manifest.permission.ANSWER_PHONE_CALLS, PHONE);
+ PLATFORM_PERMISSIONS.put(Manifest.permission.ACCEPT_HANDOVER, PHONE);
+
+ PLATFORM_PERMISSIONS.put(Manifest.permission.RECORD_AUDIO, MICROPHONE);
+
+ PLATFORM_PERMISSIONS.put(Manifest.permission.ACTIVITY_RECOGNITION, ACTIVITY_RECOGNITION);
+
+ PLATFORM_PERMISSIONS.put(Manifest.permission.CAMERA, CAMERA);
+
+ PLATFORM_PERMISSIONS.put(Manifest.permission.BODY_SENSORS, SENSORS);
+
+ PLATFORM_PERMISSION_GROUPS = new ArrayMap<>();
+ int numPlatformPermissions = PLATFORM_PERMISSIONS.size();
+ for (int i = 0; i < numPlatformPermissions; i++) {
+ String permission = PLATFORM_PERMISSIONS.keyAt(i);
+ String permissionGroup = PLATFORM_PERMISSIONS.valueAt(i);
+
+ ArrayList<String> permissionsOfThisGroup = PLATFORM_PERMISSION_GROUPS.get(
+ permissionGroup);
+ if (permissionsOfThisGroup == null) {
+ permissionsOfThisGroup = new ArrayList<>();
+ PLATFORM_PERMISSION_GROUPS.put(permissionGroup, permissionsOfThisGroup);
+ }
+
+ permissionsOfThisGroup.add(permission);
+ }
+ }
private Utils() {
/* do nothing - hide constructor */
}
+ /**
+ * {@code @NonNull} version of {@link Context#getSystemService(Class)}
+ */
+ public static @NonNull <M> M getSystemServiceSafe(@NonNull Context context, Class<M> clazz) {
+ return Preconditions.checkNotNull(context.getSystemService(clazz),
+ "Could not resolve " + clazz.getSimpleName());
+ }
+
+ /**
+ * {@code @NonNull} version of {@link Context#getSystemService(Class)}
+ */
+ public static @NonNull <M> M getSystemServiceSafe(@NonNull Context context, Class<M> clazz,
+ @NonNull UserHandle user) {
+ try {
+ return Preconditions.checkNotNull(context.createPackageContextAsUser(
+ context.getPackageName(), 0, user).getSystemService(clazz),
+ "Could not resolve " + clazz.getSimpleName());
+ } catch (PackageManager.NameNotFoundException neverHappens) {
+ throw new IllegalStateException();
+ }
+ }
+
+ /**
+ * {@code @NonNull} version of {@link Intent#getParcelableExtra(String)}
+ */
+ public static @NonNull <T extends Parcelable> T getParcelableExtraSafe(@NonNull Intent intent,
+ @NonNull String name) {
+ return Preconditions.checkNotNull(intent.getParcelableExtra(name),
+ "Could not get parcelable extra for " + name);
+ }
+
+ /**
+ * {@code @NonNull} version of {@link Intent#getStringExtra(String)}
+ */
+ public static @NonNull String getStringExtraSafe(@NonNull Intent intent,
+ @NonNull String name) {
+ return Preconditions.checkNotNull(intent.getStringExtra(name),
+ "Could not get string extra for " + name);
+ }
+
+ /**
+ * Get permission group a platform permission belongs to.
+ *
+ * @param permission the permission to resolve
+ *
+ * @return The group the permission belongs to
+ */
+ public static @Nullable String getGroupOfPlatformPermission(@NonNull String permission) {
+ return PLATFORM_PERMISSIONS.get(permission);
+ }
+
+ /**
+ * Get name of the permission group a permission belongs to.
+ *
+ * @param permission the {@link PermissionInfo info} of the permission to resolve
+ *
+ * @return The group the permission belongs to
+ */
+ public static @Nullable String getGroupOfPermission(@NonNull PermissionInfo permission) {
+ String groupName = Utils.getGroupOfPlatformPermission(permission.name);
+ if (groupName == null) {
+ groupName = permission.group;
+ }
+
+ return groupName;
+ }
+
+ /**
+ * Get the names for all platform permissions belonging to a group.
+ *
+ * @param group the group
+ *
+ * @return The permission names or an empty list if the
+ * group is not does not have platform runtime permissions
+ */
+ public static @NonNull List<String> getPlatformPermissionNamesOfGroup(@NonNull String group) {
+ final ArrayList<String> permissions = PLATFORM_PERMISSION_GROUPS.get(group);
+ return (permissions != null) ? permissions : Collections.emptyList();
+ }
+
+ /**
+ * Get the {@link PermissionInfo infos} for all platform permissions belonging to a group.
+ *
+ * @param pm Package manager to use to resolve permission infos
+ * @param group the group
+ *
+ * @return The infos for platform permissions belonging to the group or an empty list if the
+ * group is not does not have platform runtime permissions
+ */
+ public static @NonNull List<PermissionInfo> getPlatformPermissionsOfGroup(
+ @NonNull PackageManager pm, @NonNull String group) {
+ ArrayList<PermissionInfo> permInfos = new ArrayList<>();
+
+ ArrayList<String> permissions = PLATFORM_PERMISSION_GROUPS.get(group);
+ if (permissions == null) {
+ return Collections.emptyList();
+ }
+
+ int numPermissions = permissions.size();
+ for (int i = 0; i < numPermissions; i++) {
+ String permName = permissions.get(i);
+ PermissionInfo permInfo;
+ try {
+ permInfo = pm.getPermissionInfo(permName, 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ throw new IllegalStateException(permName + " not defined by platform", e);
+ }
+
+ permInfos.add(permInfo);
+ }
+
+ return permInfos;
+ }
+
+ /**
+ * Get the {@link PermissionInfo infos} for all permission infos belonging to a group.
+ *
+ * @param pm Package manager to use to resolve permission infos
+ * @param group the group
+ *
+ * @return The infos of permissions belonging to the group or an empty list if the group
+ * does not have runtime permissions
+ */
+ public static @NonNull List<PermissionInfo> getPermissionInfosForGroup(
+ @NonNull PackageManager pm, @NonNull String group)
+ throws PackageManager.NameNotFoundException {
+ List<PermissionInfo> permissions = pm.queryPermissionsByGroup(group, 0);
+ permissions.addAll(getPlatformPermissionsOfGroup(pm, group));
+
+ return permissions;
+ }
+
+ /**
+ * Get the {@link PackageItemInfo infos} for the given permission group.
+ *
+ * @param groupName the group
+ * @param context the {@code Context} to retrieve {@code PackageManager}
+ *
+ * @return The info of permission group or null if the group does not have runtime permissions.
+ */
+ public static @Nullable PackageItemInfo getGroupInfo(@NonNull String groupName,
+ @NonNull Context context) {
+ try {
+ return context.getPackageManager().getPermissionGroupInfo(groupName, 0);
+ } catch (NameNotFoundException e) {
+ /* ignore */
+ }
+ try {
+ return context.getPackageManager().getPermissionInfo(groupName, 0);
+ } catch (NameNotFoundException e) {
+ /* ignore */
+ }
+ return null;
+ }
+
+ /**
+ * Get the {@link PermissionInfo infos} for all permission infos belonging to a group.
+ *
+ * @param groupName the group
+ * @param context the {@code Context} to retrieve {@code PackageManager}
+ *
+ * @return The infos of permissions belonging to the group or null if the group does not have
+ * runtime permissions.
+ */
+ public static @Nullable List<PermissionInfo> getGroupPermissionInfos(@NonNull String groupName,
+ @NonNull Context context) {
+ try {
+ return Utils.getPermissionInfosForGroup(context.getPackageManager(), groupName);
+ } catch (NameNotFoundException e) {
+ /* ignore */
+ }
+ try {
+ PermissionInfo permissionInfo = context.getPackageManager()
+ .getPermissionInfo(groupName, 0);
+ List<PermissionInfo> permissions = new ArrayList<>();
+ permissions.add(permissionInfo);
+ return permissions;
+ } catch (NameNotFoundException e) {
+ /* ignore */
+ }
+ return null;
+ }
+
+ /**
+ * Get the label for an application, truncating if it is too long.
+ *
+ * @param applicationInfo the {@link ApplicationInfo} of the application
+ * @param context the {@code Context} to retrieve {@code PackageManager}
+ *
+ * @return the label for the application
+ */
+ @NonNull
+ public static String getAppLabel(@NonNull ApplicationInfo applicationInfo,
+ @NonNull Context context) {
+ return getAppLabel(applicationInfo, DEFAULT_MAX_LABEL_SIZE_PX, context);
+ }
+
+ /**
+ * Get the full label for an application without truncation.
+ *
+ * @param applicationInfo the {@link ApplicationInfo} of the application
+ * @param context the {@code Context} to retrieve {@code PackageManager}
+ *
+ * @return the label for the application
+ */
+ @NonNull
+ public static String getFullAppLabel(@NonNull ApplicationInfo applicationInfo,
+ @NonNull Context context) {
+ return getAppLabel(applicationInfo, 0, context);
+ }
+
+ /**
+ * Get the label for an application with the ability to control truncating.
+ *
+ * @param applicationInfo the {@link ApplicationInfo} of the application
+ * @param ellipsizeDip see {@link TextUtils#makeSafeForPresentation}.
+ * @param context the {@code Context} to retrieve {@code PackageManager}
+ *
+ * @return the label for the application
+ */
+ @NonNull
+ private static String getAppLabel(@NonNull ApplicationInfo applicationInfo, float ellipsizeDip,
+ @NonNull Context context) {
+ return BidiFormatter.getInstance().unicodeWrap(applicationInfo.loadSafeLabel(
+ context.getPackageManager(), ellipsizeDip,
+ TextUtils.SAFE_STRING_FLAG_TRIM | TextUtils.SAFE_STRING_FLAG_FIRST_LINE)
+ .toString());
+ }
+
public static Drawable loadDrawable(PackageManager pm, String pkg, int resId) {
try {
return pm.getResourcesForApplication(pkg).getDrawable(resId, null);
@@ -71,22 +429,37 @@
}
public static boolean isModernPermissionGroup(String name) {
- for (String modernGroup : MODERN_PERMISSION_GROUPS) {
- if (modernGroup.equals(name)) {
- return true;
- }
- }
- return false;
+ return PLATFORM_PERMISSION_GROUPS.containsKey(name);
}
- public static boolean shouldShowPermission(AppPermissionGroup group, String packageName) {
- // We currently will not show permissions fixed by the system.
- // which is what the system does for system components.
- if (group.isSystemFixed() && !LocationUtils.isLocationGroupAndProvider(
- group.getName(), packageName)) {
- return false;
- }
+ /**
+ * Get the names of the platform permission groups.
+ *
+ * @return the names of the platform permission groups.
+ */
+ public static List<String> getPlatformPermissionGroups() {
+ return new ArrayList<>(PLATFORM_PERMISSION_GROUPS.keySet());
+ }
+ /**
+ * Get the names of the platform permissions.
+ *
+ * @return the names of the platform permissions.
+ */
+ public static Set<String> getPlatformPermissions() {
+ return PLATFORM_PERMISSIONS.keySet();
+ }
+
+ /**
+ * Should UI show this permission.
+ *
+ * <p>If the user cannot change the group, it should not be shown.
+ *
+ * @param group The group that might need to be shown to the user
+ *
+ * @return
+ */
+ public static boolean shouldShowPermission(Context context, AppPermissionGroup group) {
if (!group.isGrantingAllowed()) {
return false;
}
@@ -100,17 +473,6 @@
return true;
}
- public static boolean shouldShowPermission(PermissionApp app) {
- // We currently will not show permissions fixed by the system
- // which is what the system does for system components.
- if (app.isSystemFixed() && !LocationUtils.isLocationGroupAndProvider(
- app.getPermissionGroup().getName(), app.getPackageName())) {
- return false;
- }
-
- return true;
- }
-
public static Drawable applyTint(Context context, Drawable icon, int attr) {
Theme theme = context.getTheme();
TypedValue typedValue = new TypedValue();
@@ -126,8 +488,8 @@
public static ArraySet<String> getLauncherPackages(Context context) {
ArraySet<String> launcherPkgs = new ArraySet<>();
- for (ResolveInfo info :
- context.getPackageManager().queryIntentActivities(LAUNCHER_INTENT, 0)) {
+ for (ResolveInfo info : context.getPackageManager().queryIntentActivities(LAUNCHER_INTENT,
+ MATCH_DIRECT_BOOT_AWARE | MATCH_DIRECT_BOOT_UNAWARE)) {
launcherPkgs.add(info.activityInfo.packageName);
}
@@ -138,21 +500,20 @@
return context.getPackageManager().getInstalledApplications(0);
}
- public static boolean isSystem(PermissionApp app, ArraySet<String> launcherPkgs) {
- return isSystem(app.getAppInfo(), launcherPkgs);
- }
-
- public static boolean isSystem(AppPermissions app, ArraySet<String> launcherPkgs) {
- return isSystem(app.getPackageInfo().applicationInfo, launcherPkgs);
- }
-
- public static boolean isSystem(ApplicationInfo info, ArraySet<String> launcherPkgs) {
- return info.isSystemApp() && (info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 0
- && !launcherPkgs.contains(info.packageName);
+ /**
+ * Is the group or background group user sensitive?
+ *
+ * @param group The group that might be user sensitive
+ *
+ * @return {@code true} if the group (or it's subgroup) is user sensitive.
+ */
+ public static boolean isGroupOrBgGroupUserSensitive(AppPermissionGroup group) {
+ return group.isUserSensitive() || (group.getBackgroundPermissions() != null
+ && group.getBackgroundPermissions().isUserSensitive());
}
public static boolean areGroupPermissionsIndividuallyControlled(Context context, String group) {
- if (!context.getPackageManager().isPermissionReviewModeEnabled()) {
+ if (!context.getPackageManager().arePermissionsIndividuallyControlled()) {
return false;
}
return Manifest.permission_group.SMS.equals(group)
@@ -161,7 +522,7 @@
}
public static boolean isPermissionIndividuallyControlled(Context context, String permission) {
- if (!context.getPackageManager().isPermissionReviewModeEnabled()) {
+ if (!context.getPackageManager().arePermissionsIndividuallyControlled()) {
return false;
}
return Manifest.permission.READ_CONTACTS.equals(permission)
@@ -174,4 +535,311 @@
|| Manifest.permission.READ_CALL_LOG.equals(permission)
|| Manifest.permission.WRITE_CALL_LOG.equals(permission);
}
+
+ /**
+ * Get the message shown to grant a permission group to an app.
+ *
+ * @param appLabel The label of the app
+ * @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, 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),
+ appLabel), 0);
+ } else if (requestRes != 0) {
+ try {
+ return Html.fromHtml(context.getPackageManager().getResourcesForApplication(
+ group.getDeclaringPackage()).getString(requestRes, appLabel), 0);
+ } catch (PackageManager.NameNotFoundException ignored) {
+ }
+ }
+
+ return Html.fromHtml(context.getString(R.string.permission_warning_template, appLabel,
+ group.getDescription()), 0);
+ }
+
+ /**
+ * Build a string representing the given time if it happened on the current day and the date
+ * otherwise.
+ *
+ * @param context the context.
+ * @param lastAccessTime the time in milliseconds.
+ *
+ * @return a string representing the time or date of the given time or null if the time is 0.
+ */
+ public static @Nullable String getAbsoluteTimeString(@NonNull Context context,
+ long lastAccessTime) {
+ if (lastAccessTime == 0) {
+ return null;
+ }
+ if (isToday(lastAccessTime)) {
+ return DateFormat.getTimeFormat(context).format(lastAccessTime);
+ } else {
+ return DateFormat.getMediumDateFormat(context).format(lastAccessTime);
+ }
+ }
+
+ /**
+ * Build a string representing the number of milliseconds passed in. It rounds to the nearest
+ * unit. For example, given a duration of 3500 and an English locale, this can return
+ * "3 seconds".
+ * @param context The context.
+ * @param duration The number of milliseconds.
+ * @return a string representing the given number of milliseconds.
+ */
+ public static @NonNull String getTimeDiffStr(@NonNull Context context, long duration) {
+ long seconds = Math.max(1, duration / 1000);
+ if (seconds < 60) {
+ return context.getResources().getQuantityString(R.plurals.seconds, (int) seconds,
+ seconds);
+ }
+ long minutes = seconds / 60;
+ if (minutes < 60) {
+ return context.getResources().getQuantityString(R.plurals.minutes, (int) minutes,
+ minutes);
+ }
+ long hours = minutes / 60;
+ if (hours < 24) {
+ return context.getResources().getQuantityString(R.plurals.hours, (int) hours, hours);
+ }
+ long days = hours / 24;
+ return context.getResources().getQuantityString(R.plurals.days, (int) days, days);
+ }
+
+ /**
+ * Check whether the given time (in milliseconds) is in the current day.
+ *
+ * @param time the time in milliseconds
+ *
+ * @return whether the given time is in the current day.
+ */
+ private static boolean isToday(long time) {
+ Calendar today = Calendar.getInstance(Locale.getDefault());
+ today.setTimeInMillis(System.currentTimeMillis());
+ today.set(Calendar.HOUR_OF_DAY, 0);
+ today.set(Calendar.MINUTE, 0);
+ today.set(Calendar.SECOND, 0);
+ today.set(Calendar.MILLISECOND, 0);
+
+ Calendar date = Calendar.getInstance(Locale.getDefault());
+ date.setTimeInMillis(time);
+ return !date.before(today);
+ }
+
+ /**
+ * Add a menu item for searching Settings, if there is an activity handling the action.
+ *
+ * @param menu the menu to add the menu item into
+ * @param context the context for checking whether there is an activity handling the action
+ */
+ public static void prepareSearchMenuItem(@NonNull Menu menu, @NonNull Context context) {
+ Intent intent = new Intent(Settings.ACTION_APP_SEARCH_SETTINGS);
+ if (context.getPackageManager().resolveActivity(intent, 0) == null) {
+ return;
+ }
+ MenuItem searchItem = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, R.string.search_menu);
+ searchItem.setIcon(R.drawable.ic_search_24dp);
+ searchItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
+ searchItem.setOnMenuItemClickListener(item -> {
+ try {
+ context.startActivity(intent);
+ } catch (ActivityNotFoundException e) {
+ Log.e(LOG_TAG, "Cannot start activity to search settings", e);
+ }
+ return true;
+ });
+ }
+
+ /**
+ * Get badged app icon if necessary, similar as used in the Settings UI.
+ *
+ * @param context The context to use
+ * @param appInfo The app the icon belong to
+ *
+ * @return The icon to use
+ */
+ public static @NonNull Drawable getBadgedIcon(@NonNull Context context,
+ @NonNull ApplicationInfo appInfo) {
+ UserHandle user = UserHandle.getUserHandleForUid(appInfo.uid);
+ try (IconFactory iconFactory = IconFactory.obtain(context)) {
+ Bitmap iconBmp = iconFactory.createBadgedIconBitmap(
+ appInfo.loadUnbadgedIcon(context.getPackageManager()), user, false).icon;
+ return new BitmapDrawable(context.getResources(), iconBmp);
+ }
+ }
+
+ /**
+ * Get a string saying what apps with the given permission group can do.
+ *
+ * @param context The context to use
+ * @param groupName The name of the permission group
+ * @param description The description of the permission group
+ *
+ * @return a string saying what apps with the given permission group can do.
+ */
+ public static @NonNull String getPermissionGroupDescriptionString(@NonNull Context context,
+ @NonNull String groupName, @NonNull CharSequence description) {
+ switch (groupName) {
+ case ACTIVITY_RECOGNITION:
+ return context.getString(
+ R.string.permission_description_summary_activity_recognition);
+ case CALENDAR:
+ return context.getString(R.string.permission_description_summary_calendar);
+ case CALL_LOG:
+ return context.getString(R.string.permission_description_summary_call_log);
+ case CAMERA:
+ return context.getString(R.string.permission_description_summary_camera);
+ case CONTACTS:
+ return context.getString(R.string.permission_description_summary_contacts);
+ case LOCATION:
+ return context.getString(R.string.permission_description_summary_location);
+ case MICROPHONE:
+ return context.getString(R.string.permission_description_summary_microphone);
+ case PHONE:
+ return context.getString(R.string.permission_description_summary_phone);
+ case SENSORS:
+ return context.getString(R.string.permission_description_summary_sensors);
+ case SMS:
+ return context.getString(R.string.permission_description_summary_sms);
+ case STORAGE:
+ return context.getString(R.string.permission_description_summary_storage);
+ default:
+ return context.getString(R.string.permission_description_summary_generic,
+ description);
+ }
+ }
+
+ /**
+ * Whether the Location Access Check is enabled.
+ *
+ * @return {@code true} iff the Location Access Check is enabled.
+ */
+ public static boolean isLocationAccessCheckEnabled() {
+ return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
+ PROPERTY_LOCATION_ACCESS_CHECK_ENABLED, true);
+ }
+
+ /**
+ * Get a device protected storage based shared preferences. Avoid storing sensitive data in it.
+ *
+ * @param context the context to get the shared preferences
+ * @return a device protected storage based shared preferences
+ */
+ @NonNull
+ public static SharedPreferences getDeviceProtectedSharedPreferences(@NonNull Context context) {
+ if (!context.isDeviceProtectedStorage()) {
+ context = context.createDeviceProtectedStorageContext();
+ }
+ return context.getSharedPreferences(Constants.PREFERENCES_FILE, MODE_PRIVATE);
+ }
+
+ /**
+ * Update the {@link PackageManager#FLAG_PERMISSION_USER_SENSITIVE_WHEN_GRANTED} and
+ * {@link PackageManager#FLAG_PERMISSION_USER_SENSITIVE_WHEN_DENIED} for all apps of this user.
+ *
+ * @see PerUserUidToSensitivityLiveData#loadValueInBackground()
+ */
+ public static void updateUserSensitive(@NonNull Application application,
+ @NonNull UserHandle user) {
+ Context userContext = getParentUserContext(application);
+ PackageManager pm = userContext.getPackageManager();
+ RoleManager rm = userContext.getSystemService(RoleManager.class);
+ SharedPreferences prefs = userContext.getSharedPreferences(PREFERENCES_FILE, MODE_PRIVATE);
+
+ boolean showAssistantRecordAudio = prefs.getBoolean(
+ ASSISTANT_RECORD_AUDIO_IS_USER_SENSITIVE_KEY, false);
+ Set<String> overriddenUids = prefs.getStringSet(FORCED_USER_SENSITIVE_UIDS_KEY,
+ Collections.emptySet());
+
+ List<String> assistants = rm.getRoleHolders(ROLE_ASSISTANT);
+ String assistant = null;
+ if (!assistants.isEmpty()) {
+ if (assistants.size() > 1) {
+ Log.wtf(LOG_TAG, "Assistant role is not exclusive");
+ }
+
+ // Assistant is an exclusive role
+ assistant = assistants.get(0);
+ }
+
+ PerUserUidToSensitivityLiveData appUserSensitivityLiveData =
+ PerUserUidToSensitivityLiveData.get(user, application);
+
+ // uid -> permission -> flags
+ SparseArray<ArrayMap<String, Integer>> uidUserSensitivity =
+ appUserSensitivityLiveData.loadValueInBackground();
+
+ // Apply the update
+ int numUids = uidUserSensitivity.size();
+ for (int uidNum = 0; uidNum < numUids; uidNum++) {
+ int uid = uidUserSensitivity.keyAt(uidNum);
+
+ String[] uidPkgs = pm.getPackagesForUid(uid);
+ if (uidPkgs == null) {
+ continue;
+ }
+
+ boolean isOverridden = overriddenUids.contains(String.valueOf(uid));
+ boolean isAssistantUid = ArrayUtils.contains(uidPkgs, assistant);
+
+ ArrayMap<String, Integer> uidPermissions = uidUserSensitivity.valueAt(uidNum);
+
+ int numPerms = uidPermissions.size();
+ for (int permNum = 0; permNum < numPerms; permNum++) {
+ String perm = uidPermissions.keyAt(permNum);
+
+ for (String uidPkg : uidPkgs) {
+ int flags = isOverridden ? FLAGS_ALWAYS_USER_SENSITIVE : uidPermissions.valueAt(
+ permNum);
+
+ if (isAssistantUid && perm.equals(RECORD_AUDIO)) {
+ flags = showAssistantRecordAudio ? FLAGS_ALWAYS_USER_SENSITIVE : 0;
+ }
+
+ try {
+ pm.updatePermissionFlags(perm, uidPkg, FLAGS_ALWAYS_USER_SENSITIVE, flags,
+ user);
+ break;
+ } catch (IllegalArgumentException e) {
+ Log.e(LOG_TAG, "Unexpected exception while updating flags for "
+ + uidPkg + " permission " + perm, e);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Get context of the parent user of the profile group (i.e. usually the 'personal' profile,
+ * not the 'work' profile).
+ *
+ * @param context The context of a user of the profile user group.
+ *
+ * @return The context of the parent user
+ */
+ public static Context getParentUserContext(@NonNull Context context) {
+ UserHandle parentUser = getSystemServiceSafe(context, UserManager.class)
+ .getProfileParent(UserHandle.of(myUserId()));
+
+ if (parentUser == null) {
+ return context;
+ }
+
+ // In a multi profile environment perform all operations as the parent user of the
+ // current profile
+ try {
+ return context.createPackageContextAsUser(context.getPackageName(), 0,
+ parentUser);
+ } catch (PackageManager.NameNotFoundException e) {
+ // cannot happen
+ throw new IllegalStateException("Could not switch to parent user " + parentUser, e);
+ }
+ }
}
diff --git a/src/com/android/packageinstaller/role/TEST_MAPPING b/src/com/android/packageinstaller/role/TEST_MAPPING
new file mode 100644
index 0000000..43d15a4
--- /dev/null
+++ b/src/com/android/packageinstaller/role/TEST_MAPPING
@@ -0,0 +1,12 @@
+{
+ "presubmit": [
+ {
+ "name": "CtsRoleTestCases",
+ "options": [
+ {
+ "exclude-annotation": "androidx.test.filters.FlakyTest"
+ }
+ ]
+ }
+ ]
+}
diff --git a/src/com/android/packageinstaller/role/model/AppOp.java b/src/com/android/packageinstaller/role/model/AppOp.java
new file mode 100644
index 0000000..c370ad9
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/AppOp.java
@@ -0,0 +1,140 @@
+/*
+ * 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.packageinstaller.role.model;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.packageinstaller.role.utils.PackageUtils;
+
+import java.util.Objects;
+
+/**
+ * An app op to be granted or revoke by a {@link Role}.
+ */
+public class AppOp {
+
+ /**
+ * The name of this app op.
+ */
+ @NonNull
+ private final String mName;
+
+ /**
+ * The maximum target SDK version for this app op to be granted, or {@code null} if none.
+ */
+ @Nullable
+ private final Integer mMaxTargetSdkVersion;
+
+ /**
+ * The mode of this app op when granted.
+ */
+ private final int mMode;
+
+ public AppOp(@NonNull String name, @Nullable Integer maxTargetSdkVersion, int mode) {
+ mName = name;
+ mMaxTargetSdkVersion = maxTargetSdkVersion;
+ mMode = mode;
+ }
+
+ @NonNull
+ public String getName() {
+ return mName;
+ }
+
+ @Nullable
+ public Integer getMaxTargetSdkVersion() {
+ return mMaxTargetSdkVersion;
+ }
+
+ public int getMode() {
+ return mMode;
+ }
+
+ /**
+ * Grant this app op to an application.
+ *
+ * @param packageName the package name of the application
+ * @param context the {@code Context} to retrieve system services
+ *
+ * @return whether any app mode has changed
+ */
+ public boolean grant(@NonNull String packageName, @NonNull Context context) {
+ if (!checkTargetSdkVersion(packageName, context)) {
+ return false;
+ }
+ return Permissions.setAppOpMode(packageName, mName, mMode, context);
+ }
+
+ /**
+ * Revoke this app op from an application.
+ *
+ * @param packageName the package name of the application
+ * @param context the {@code Context} to retrieve system services
+ *
+ * @return whether any app mode has changed
+ */
+ public boolean revoke(@NonNull String packageName, @NonNull Context context) {
+ if (!checkTargetSdkVersion(packageName, context)) {
+ return false;
+ }
+ int defaultMode = Permissions.getDefaultAppOpMode(mName);
+ return Permissions.setAppOpMode(packageName, mName, defaultMode, context);
+ }
+
+ private boolean checkTargetSdkVersion(@NonNull String packageName, @NonNull Context context) {
+ if (mMaxTargetSdkVersion == null) {
+ return true;
+ }
+ ApplicationInfo applicationInfo = PackageUtils.getApplicationInfo(packageName, context);
+ if (applicationInfo == null) {
+ return false;
+ }
+ return applicationInfo.targetSdkVersion <= mMaxTargetSdkVersion;
+ }
+
+ @Override
+ public String toString() {
+ return "AppOp{"
+ + "mName='" + mName + '\''
+ + ", mMaxTargetSdkVersion=" + mMaxTargetSdkVersion
+ + ", mMode=" + mMode
+ + '}';
+ }
+
+ @Override
+ public boolean equals(Object object) {
+ if (this == object) {
+ return true;
+ }
+ if (object == null || getClass() != object.getClass()) {
+ return false;
+ }
+ AppOp appOp = (AppOp) object;
+ return mMode == appOp.mMode
+ && Objects.equals(mName, appOp.mName)
+ && Objects.equals(mMaxTargetSdkVersion, appOp.mMaxTargetSdkVersion);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mName, mMaxTargetSdkVersion, mMode);
+ }
+}
diff --git a/src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java b/src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java
new file mode 100644
index 0000000..f79522e
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java
@@ -0,0 +1,219 @@
+/*
+ * 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.packageinstaller.role.model;
+
+import android.app.ActivityManager;
+import android.app.Application;
+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.content.res.Resources;
+import android.content.res.XmlResourceParser;
+import android.os.UserHandle;
+import android.provider.Settings;
+import android.service.voice.VoiceInteractionService;
+import android.util.ArraySet;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.util.Xml;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.packageinstaller.permission.utils.Utils;
+import com.android.packageinstaller.role.utils.UserUtils;
+import com.android.permissioncontroller.R;
+
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Class for behavior of the assistant role.
+ */
+public class AssistantRoleBehavior implements RoleBehavior {
+
+ private static final String LOG_TAG = AssistantRoleBehavior.class.getSimpleName();
+
+ private static final Intent ASSIST_SERVICE_PROBE =
+ new Intent(VoiceInteractionService.SERVICE_INTERFACE);
+ private static final Intent ASSIST_ACTIVITY_PROBE = new Intent(Intent.ACTION_ASSIST);
+
+ @Override
+ public boolean isAvailableAsUser(@NonNull Role role, @NonNull UserHandle user,
+ @NonNull Context context) {
+ return !UserUtils.isWorkProfile(user, context);
+ }
+
+ @Nullable
+ @Override
+ public String getFallbackHolder(@NonNull Role role, @NonNull Context context) {
+ return ExclusiveDefaultHolderMixin.getDefaultHolder(role, "config_defaultAssistant",
+ context);
+ }
+
+ @Override
+ public boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user,
+ @NonNull Context context) {
+ return VisibilityMixin.isVisible("config_showDefaultAssistant", context);
+ }
+
+ @Nullable
+ @Override
+ public Intent getManageIntentAsUser(@NonNull Role role, @NonNull UserHandle user,
+ @NonNull Context context) {
+ return new Intent(Settings.ACTION_VOICE_INPUT_SETTINGS);
+ }
+
+ @Nullable
+ @Override
+ public CharSequence getConfirmationMessage(@NonNull Role role, @NonNull String packageName,
+ @NonNull Context context) {
+ return context.getString(R.string.assistant_confirmation_message);
+ }
+
+ @Nullable
+ @Override
+ public List<String> getQualifyingPackagesAsUser(@NonNull Role role, @NonNull UserHandle user,
+ @NonNull Context context) {
+ Context userContext = UserUtils.getUserContext(context, user);
+ ActivityManager userActivityManager = userContext.getSystemService(ActivityManager.class);
+ PackageManager userPackageManager = userContext.getPackageManager();
+ Set<String> availableAssistants = new ArraySet<>();
+
+ if (!userActivityManager.isLowRamDevice()) {
+ List<ResolveInfo> services = userPackageManager.queryIntentServices(
+ ASSIST_SERVICE_PROBE, PackageManager.GET_META_DATA
+ | PackageManager.MATCH_DIRECT_BOOT_AWARE
+ | PackageManager.MATCH_DIRECT_BOOT_UNAWARE);
+ int numServices = services.size();
+ for (int i = 0; i < numServices; i++) {
+ ResolveInfo service = services.get(i);
+
+ if (isAssistantVoiceInteractionService(userPackageManager, service.serviceInfo)) {
+ availableAssistants.add(service.serviceInfo.packageName);
+ }
+ }
+ }
+
+ List<ResolveInfo> activities = userPackageManager.queryIntentActivities(
+ ASSIST_ACTIVITY_PROBE, PackageManager.MATCH_DEFAULT_ONLY
+ | PackageManager.MATCH_DIRECT_BOOT_AWARE
+ | PackageManager.MATCH_DIRECT_BOOT_UNAWARE);
+ int numActivities = activities.size();
+ for (int i = 0; i < numActivities; i++) {
+ availableAssistants.add(activities.get(i).activityInfo.packageName);
+ }
+
+ return new ArrayList<>(availableAssistants);
+ }
+
+ @Nullable
+ @Override
+ public Boolean isPackageQualified(@NonNull Role role, @NonNull String packageName,
+ @NonNull Context context) {
+ ActivityManager activityManager = context.getSystemService(ActivityManager.class);
+ PackageManager packageManager = context.getPackageManager();
+
+ boolean hasAssistantService = false;
+ if (!activityManager.isLowRamDevice()) {
+ Intent pkgServiceProbe = new Intent(ASSIST_SERVICE_PROBE).setPackage(packageName);
+ List<ResolveInfo> services = packageManager.queryIntentServices(pkgServiceProbe,
+ PackageManager.GET_META_DATA | PackageManager.MATCH_DIRECT_BOOT_AWARE
+ | PackageManager.MATCH_DIRECT_BOOT_UNAWARE);
+ hasAssistantService = !services.isEmpty();
+ int numServices = services.size();
+ for (int i = 0; i < numServices; i++) {
+ ResolveInfo service = services.get(i);
+
+ if (isAssistantVoiceInteractionService(packageManager, service.serviceInfo)) {
+ return true;
+ }
+ }
+ }
+
+ Intent pkgActivityProbe = new Intent(ASSIST_ACTIVITY_PROBE).setPackage(packageName);
+ boolean hasAssistantActivity = !packageManager.queryIntentActivities(pkgActivityProbe,
+ PackageManager.MATCH_DEFAULT_ONLY | PackageManager.MATCH_DIRECT_BOOT_AWARE
+ | PackageManager.MATCH_DIRECT_BOOT_UNAWARE).isEmpty();
+ if (!hasAssistantActivity) {
+ Log.w(LOG_TAG, "Package " + packageName + " not qualified for " + role.getName()
+ + " due to " + (hasAssistantService ? "unqualified" : "missing")
+ + " service and missing activity");
+ }
+
+ return hasAssistantActivity;
+ }
+
+ private boolean isAssistantVoiceInteractionService(@NonNull PackageManager pm,
+ @NonNull ServiceInfo si) {
+ if (!android.Manifest.permission.BIND_VOICE_INTERACTION.equals(si.permission)) {
+ return false;
+ }
+
+ try (XmlResourceParser parser = si.loadXmlMetaData(pm,
+ VoiceInteractionService.SERVICE_META_DATA)) {
+ if (parser == null) {
+ return false;
+ }
+
+ int type;
+ do {
+ type = parser.next();
+ } while (type != XmlResourceParser.END_DOCUMENT && type != XmlResourceParser.START_TAG);
+
+ String sessionService = null;
+ String recognitionService = null;
+ boolean supportsAssist = false;
+
+ AttributeSet attrs = Xml.asAttributeSet(parser);
+ int numAttrs = attrs.getAttributeCount();
+ for (int i = 0; i < numAttrs; i++) {
+ switch (attrs.getAttributeNameResource(i)) {
+ case android.R.attr.sessionService:
+ sessionService = attrs.getAttributeValue(i);
+ break;
+ case android.R.attr.recognitionService:
+ recognitionService = attrs.getAttributeValue(i);
+ break;
+ case android.R.attr.supportsAssist:
+ supportsAssist = attrs.getAttributeBooleanValue(i, false);
+ break;
+ }
+ }
+
+ if (sessionService == null || recognitionService == null || !supportsAssist) {
+ return false;
+ }
+ } catch (XmlPullParserException | IOException | Resources.NotFoundException ignored) {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public void onHolderChangedAsUser(@NonNull Role role, @NonNull UserHandle user,
+ @NonNull Context context) {
+ Utils.updateUserSensitive((Application) context.getApplicationContext(), user);
+ }
+}
diff --git a/src/com/android/packageinstaller/role/model/BrowserRoleBehavior.java b/src/com/android/packageinstaller/role/model/BrowserRoleBehavior.java
new file mode 100644
index 0000000..56c7b7a
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/BrowserRoleBehavior.java
@@ -0,0 +1,123 @@
+/*
+ * 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.packageinstaller.role.model;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.net.Uri;
+import android.os.Process;
+import android.os.UserHandle;
+import android.util.ArraySet;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.packageinstaller.role.utils.UserUtils;
+import com.android.permissioncontroller.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Class for behavior of the browser role.
+ *
+ * @see com.android.settings.applications.DefaultAppSettings
+ * @see com.android.settings.applications.defaultapps.DefaultBrowserPreferenceController
+ * @see com.android.settings.applications.defaultapps.DefaultBrowserPicker
+ * @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));
+
+ @NonNull
+ @Override
+ public List<String> getDefaultHolders(@NonNull Role role, @NonNull Context context) {
+ return ExclusiveDefaultHolderMixin.getDefaultHolders(role, "config_defaultBrowser",
+ context);
+ }
+
+ @Nullable
+ @Override
+ public String getFallbackHolder(@NonNull Role role, @NonNull Context context) {
+ List<String> packageNames = role.getQualifyingPackagesAsUser(Process.myUserHandle(),
+ context);
+ if (packageNames.size() == 1) {
+ return packageNames.get(0);
+ }
+ return null;
+ }
+
+ // PackageManager.queryIntentActivities() will only return the default browser if one was set.
+ // Code in the Settings app passes PackageManager.MATCH_ALL and perform its own filtering, so we
+ // do the same thing here.
+ @Nullable
+ @Override
+ public List<String> getQualifyingPackagesAsUser(@NonNull Role role, @NonNull UserHandle user,
+ @NonNull Context 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,
+ Process.myUserHandle(), context);
+ return !packageNames.isEmpty();
+ }
+
+ @NonNull
+ private List<String> getQualifyingPackagesAsUserInternal(@Nullable String packageName,
+ @NonNull UserHandle user, @NonNull Context context) {
+ Context userContext = UserUtils.getUserContext(context, user);
+ PackageManager userPackageManager = userContext.getPackageManager();
+ Intent intent = BROWSER_INTENT;
+ if (packageName != null) {
+ intent = new Intent(intent)
+ .setPackage(packageName);
+ }
+ 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);
+ ArraySet<String> packageNames = new ArraySet<>();
+ int resolveInfosSize = resolveInfos.size();
+ for (int i = 0; i < resolveInfosSize; i++) {
+ ResolveInfo resolveInfo = resolveInfos.get(i);
+
+ if (!resolveInfo.handleAllWebDataURI || !resolveInfo.activityInfo.enabled
+ || !resolveInfo.activityInfo.applicationInfo.enabled
+ || resolveInfo.activityInfo.applicationInfo.isInstantApp()) {
+ continue;
+ }
+ packageNames.add(resolveInfo.activityInfo.packageName);
+ }
+ return new ArrayList<>(packageNames);
+ }
+
+ @Override
+ public boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user,
+ @NonNull Context context) {
+ return context.getResources().getBoolean(R.bool.config_showBrowserRole);
+ }
+}
diff --git a/src/com/android/packageinstaller/role/model/DialerRoleBehavior.java b/src/com/android/packageinstaller/role/model/DialerRoleBehavior.java
new file mode 100644
index 0000000..306bc0e
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/DialerRoleBehavior.java
@@ -0,0 +1,81 @@
+/*
+ * 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.packageinstaller.role.model;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.os.UserHandle;
+import android.telecom.TelecomManager;
+import android.telephony.TelephonyManager;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+
+import com.android.permissioncontroller.R;
+
+import java.util.Objects;
+
+/**
+ * Class for behavior of the dialer role.
+ *
+ * @see com.android.settings.applications.DefaultAppSettings
+ * @see com.android.settings.applications.defaultapps.DefaultPhonePreferenceController
+ * @see com.android.settings.applications.defaultapps.DefaultPhonePicker
+ */
+public class DialerRoleBehavior implements RoleBehavior {
+
+ @Override
+ public boolean isAvailableAsUser(@NonNull Role role, @NonNull UserHandle user,
+ @NonNull Context context) {
+ TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
+ return telephonyManager.isVoiceCapable();
+ }
+
+ @Override
+ public void prepareApplicationPreferenceAsUser(@NonNull Role role,
+ @NonNull Preference preference, @NonNull ApplicationInfo applicationInfo,
+ @NonNull UserHandle user, @NonNull Context context) {
+ TelecomManager telecomManager = context.getSystemService(TelecomManager.class);
+ String systemPackageName = telecomManager.getSystemDialerPackage();
+ if (Objects.equals(applicationInfo.packageName, systemPackageName)) {
+ preference.setSummary(R.string.default_app_system_default);
+ } else {
+ preference.setSummary(null);
+ }
+ }
+
+ @Nullable
+ @Override
+ public CharSequence getConfirmationMessage(@NonNull Role role, @NonNull String packageName,
+ @NonNull Context context) {
+ return EncryptionUnawareConfirmationMixin.getConfirmationMessage(role, packageName,
+ context);
+ }
+
+ @Nullable
+ @Override
+ public String getFallbackHolder(@NonNull Role role, @NonNull Context context) {
+ return ExclusiveDefaultHolderMixin.getDefaultHolder(role, "config_defaultDialer", context);
+ }
+
+ @Override
+ public boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user,
+ @NonNull Context context) {
+ return context.getResources().getBoolean(R.bool.config_showDialerRole);
+ }
+}
diff --git a/src/com/android/packageinstaller/role/model/EmergencyRoleBehavior.java b/src/com/android/packageinstaller/role/model/EmergencyRoleBehavior.java
new file mode 100644
index 0000000..90a65d8
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/EmergencyRoleBehavior.java
@@ -0,0 +1,83 @@
+/*
+ * 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.packageinstaller.role.model;
+
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.os.Process;
+import android.os.UserHandle;
+import android.telephony.TelephonyManager;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.packageinstaller.role.utils.PackageUtils;
+
+import java.util.List;
+
+/**
+ * Class for behavior of the emergency role.
+ *
+ * @see com.android.settings.applications.DefaultAppSettings
+ * @see com.android.settings.applications.defaultapps.DefaultEmergencyPreferenceController
+ * @see com.android.settings.applications.defaultapps.DefaultEmergencyPicker
+ */
+public class EmergencyRoleBehavior implements RoleBehavior {
+
+ @Override
+ public boolean isAvailableAsUser(@NonNull Role role, @NonNull UserHandle user,
+ @NonNull Context context) {
+ TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
+ return telephonyManager.isEmergencyAssistanceEnabled() && telephonyManager.isVoiceCapable();
+ }
+
+ @Nullable
+ @Override
+ public String getFallbackHolder(@NonNull Role role, @NonNull Context context) {
+ List<String> packageNames = role.getQualifyingPackagesAsUser(Process.myUserHandle(),
+ context);
+ PackageInfo fallbackPackageInfo = null;
+ int packageNamesSize = packageNames.size();
+ for (int i = 0; i < packageNamesSize; i++) {
+ String packageName = packageNames.get(i);
+
+ PackageInfo packageInfo = PackageUtils.getPackageInfo(packageName, 0, context);
+ if (packageInfo == null) {
+ continue;
+ }
+ if (fallbackPackageInfo == null || packageInfo.firstInstallTime
+ < fallbackPackageInfo.firstInstallTime) {
+ fallbackPackageInfo = packageInfo;
+ }
+ }
+ return fallbackPackageInfo != null ? fallbackPackageInfo.packageName : null;
+ }
+
+ @Override
+ public boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user,
+ @NonNull Context context) {
+ return VisibilityMixin.isVisible("config_showDefaultEmergency", context);
+ }
+
+ @Nullable
+ @Override
+ public CharSequence getConfirmationMessage(@NonNull Role role, @NonNull String packageName,
+ @NonNull Context context) {
+ return EncryptionUnawareConfirmationMixin.getConfirmationMessage(role, packageName,
+ context);
+ }
+}
diff --git a/src/com/android/packageinstaller/role/model/EncryptionUnawareConfirmationMixin.java b/src/com/android/packageinstaller/role/model/EncryptionUnawareConfirmationMixin.java
new file mode 100644
index 0000000..840744b
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/EncryptionUnawareConfirmationMixin.java
@@ -0,0 +1,54 @@
+/*
+ * 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.packageinstaller.role.model;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.packageinstaller.role.utils.PackageUtils;
+import com.android.permissioncontroller.R;
+
+/**
+ * Mixin for {@link RoleBehavior#getConfirmationMessage(Role, String, Context)}
+ * that returns a confirmation message when the application is not direct boot aware.
+ */
+public class EncryptionUnawareConfirmationMixin {
+
+ private static final String LOG_TAG = EncryptionUnawareConfirmationMixin.class.getSimpleName();
+
+ /**
+ * @see RoleBehavior#getConfirmationMessage(Role, String, Context)
+ */
+ @Nullable
+ public static CharSequence getConfirmationMessage(@NonNull Role role,
+ @NonNull String packageName, @NonNull Context context) {
+ ApplicationInfo applicationInfo = PackageUtils.getApplicationInfo(packageName, context);
+ if (applicationInfo == null) {
+ Log.w(LOG_TAG, "Cannot get ApplicationInfo for application, package name: "
+ + packageName);
+ return null;
+ }
+ if (applicationInfo.isEncryptionAware()) {
+ return null;
+ }
+ return context.getString(R.string.encryption_unaware_confirmation_message);
+ }
+}
diff --git a/src/com/android/packageinstaller/role/model/ExclusiveDefaultHolderMixin.java b/src/com/android/packageinstaller/role/model/ExclusiveDefaultHolderMixin.java
new file mode 100644
index 0000000..86073c8
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/ExclusiveDefaultHolderMixin.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.packageinstaller.role.model;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.res.Resources;
+import android.text.TextUtils;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.packageinstaller.permission.utils.CollectionUtils;
+import com.android.packageinstaller.role.utils.PackageUtils;
+
+import java.util.List;
+
+/**
+ * Mixin for {@link RoleBehavior#getDefaultHolders(Role, Context)} that returns a single default
+ * role holder from the corresponding string resource.
+ */
+public class ExclusiveDefaultHolderMixin {
+
+ private static final String LOG_TAG = ExclusiveDefaultHolderMixin.class.getSimpleName();
+
+ private ExclusiveDefaultHolderMixin() {}
+
+ /**
+ * @see Role#getDefaultHolders(Context)
+ */
+ @NonNull
+ public static List<String> getDefaultHolders(@NonNull Role role, @NonNull String resourceName,
+ @NonNull Context context) {
+ return CollectionUtils.singletonOrEmpty(getDefaultHolder(role, resourceName, context));
+ }
+
+ /**
+ * @see Role#getDefaultHolders(Context)
+ */
+ @Nullable
+ public static String getDefaultHolder(@NonNull Role role, @NonNull String resourceName,
+ @NonNull Context context) {
+ Resources resources = context.getResources();
+ int resourceId = resources.getIdentifier(resourceName, "string", "android");
+ if (resourceId == 0) {
+ Log.w(LOG_TAG, "Cannot find resource for default holder: " + resourceName);
+ return null;
+ }
+ String packageName;
+ try {
+ packageName = resources.getString(resourceId);
+ } catch (Resources.NotFoundException e) {
+ Log.w(LOG_TAG, "Cannot get resource for default holder: " + resourceName, e);
+ return null;
+ }
+ if (TextUtils.isEmpty(packageName)) {
+ return null;
+ }
+
+ ApplicationInfo applicationInfo = PackageUtils.getApplicationInfo(packageName, context);
+ if (applicationInfo == null) {
+ Log.w(LOG_TAG, "Cannot get ApplicationInfo for default holder, config: " + resourceName
+ + ", package: " + packageName);
+ return null;
+ }
+ if ((applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
+ Log.w(LOG_TAG, "Default holder is not a system app, config: " + resourceName
+ + ", package: " + packageName);
+ return null;
+ }
+
+ if (!role.isPackageQualified(packageName, context)) {
+ Log.w(LOG_TAG, "Default holder does not qualify for the role, config: " + resourceName
+ + ", package: " + packageName);
+ return null;
+ }
+ return packageName;
+ }
+}
diff --git a/src/com/android/packageinstaller/role/model/HomeRoleBehavior.java b/src/com/android/packageinstaller/role/model/HomeRoleBehavior.java
new file mode 100644
index 0000000..c59575d
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/HomeRoleBehavior.java
@@ -0,0 +1,175 @@
+/*
+ * 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.packageinstaller.role.model;
+
+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;
+import android.os.Build;
+import android.os.UserHandle;
+import android.provider.Settings;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+
+import com.android.packageinstaller.permission.utils.CollectionUtils;
+import com.android.packageinstaller.role.ui.TwoTargetPreference;
+import com.android.packageinstaller.role.utils.UserUtils;
+import com.android.permissioncontroller.R;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * Class for behavior of the home role.
+ *
+ * @see com.android.settings.applications.DefaultAppSettings
+ * @see com.android.settings.applications.defaultapps.DefaultHomePreferenceController
+ * @see com.android.settings.applications.defaultapps.DefaultHomePicker
+ */
+public class HomeRoleBehavior implements RoleBehavior {
+
+ private static final String LOG_TAG = HomeRoleBehavior.class.getSimpleName();
+
+ @Override
+ public boolean isAvailableAsUser(@NonNull Role role, @NonNull UserHandle user,
+ @NonNull Context context) {
+ return !UserUtils.isWorkProfile(user, context);
+ }
+
+ /**
+ * @see com.android.server.pm.PackageManagerService#getDefaultHomeActivity(int)
+ */
+ @Nullable
+ @Override
+ public String getFallbackHolder(@NonNull Role role, @NonNull Context context) {
+ PackageManager packageManager = context.getPackageManager();
+ Intent intent = role.getRequiredComponents().get(0).getIntentFilterData().createIntent();
+ List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(intent,
+ PackageManager.MATCH_DEFAULT_ONLY | PackageManager.MATCH_DIRECT_BOOT_AWARE
+ | PackageManager.MATCH_DIRECT_BOOT_UNAWARE);
+
+ String packageName = null;
+ int priority = Integer.MIN_VALUE;
+ int resolveInfosSize = resolveInfos.size();
+ for (int i = 0; i < resolveInfosSize; i++) {
+ ResolveInfo resolveInfo = resolveInfos.get(i);
+
+ // Leave the fallback to PackageManagerService if there is only the fallback home in
+ // Settings, because if we fallback to it here, we cannot fallback to a normal home
+ // later, and user cannot see the fallback home in the UI anyway.
+ if (isSettingsApplication(resolveInfo.activityInfo.applicationInfo, context)) {
+ continue;
+ }
+ if (resolveInfo.priority > priority) {
+ packageName = resolveInfo.activityInfo.packageName;
+ priority = resolveInfo.priority;
+ } else if (resolveInfo.priority == priority) {
+ packageName = null;
+ }
+ }
+ return packageName;
+ }
+
+ @Override
+ public boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user,
+ @NonNull Context context) {
+ return VisibilityMixin.isVisible("config_showDefaultHome", context);
+ }
+
+ @Override
+ public void preparePreferenceAsUser(@NonNull Role role, @NonNull TwoTargetPreference preference,
+ @NonNull UserHandle user, @NonNull Context context) {
+ TwoTargetPreference.OnSecondTargetClickListener listener = null;
+ RoleManager roleManager = context.getSystemService(RoleManager.class);
+ String packageName = CollectionUtils.firstOrNull(roleManager.getRoleHoldersAsUser(
+ role.getName(), user));
+ if (packageName != null) {
+ Intent intent = new Intent(Intent.ACTION_APPLICATION_PREFERENCES)
+ .setPackage(packageName)
+ .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+ PackageManager userPackageManager = UserUtils.getUserContext(context, user)
+ .getPackageManager();
+ ActivityInfo activityInfo = intent.resolveActivityInfo(userPackageManager, 0);
+ if (activityInfo != null && activityInfo.exported) {
+ listener = preference2 -> {
+ try {
+ context.startActivity(intent);
+ } catch (ActivityNotFoundException e) {
+ Log.e(LOG_TAG, "Cannot start activity for home app preferences", e);
+ }
+ };
+ }
+ }
+ preference.setOnSecondTargetClickListener(listener);
+ }
+
+ @Override
+ public void prepareApplicationPreferenceAsUser(@NonNull Role role,
+ @NonNull Preference preference, @NonNull ApplicationInfo applicationInfo,
+ @NonNull UserHandle user, @NonNull Context context) {
+ // Home is not available for work profile, so we can just use the current user.
+ boolean isSettingsApplication = isSettingsApplication(applicationInfo, context);
+ preference.setVisible(!isSettingsApplication);
+ boolean missingWorkProfileSupport = isMissingWorkProfileSupport(applicationInfo, context);
+ preference.setEnabled(!missingWorkProfileSupport);
+ preference.setSummary(missingWorkProfileSupport ? context.getString(
+ R.string.home_missing_work_profile_support) : null);
+ }
+
+ private boolean isMissingWorkProfileSupport(@NonNull ApplicationInfo applicationInfo,
+ @NonNull Context context) {
+ boolean hasWorkProfile = UserUtils.getWorkProfile(context) != null;
+ if (!hasWorkProfile) {
+ return false;
+ }
+ boolean isWorkProfileSupported = applicationInfo.targetSdkVersion
+ >= Build.VERSION_CODES.LOLLIPOP;
+ return !isWorkProfileSupported;
+ }
+
+ private boolean isSettingsApplication(@NonNull ApplicationInfo applicationInfo,
+ @NonNull Context context) {
+ PackageManager packageManager = context.getPackageManager();
+ ResolveInfo resolveInfo = packageManager.resolveActivity(new Intent(
+ Settings.ACTION_SETTINGS), PackageManager.MATCH_DEFAULT_ONLY
+ | PackageManager.MATCH_DIRECT_BOOT_AWARE
+ | PackageManager.MATCH_DIRECT_BOOT_UNAWARE);
+ if (resolveInfo == null || resolveInfo.activityInfo == null) {
+ return false;
+ }
+ return Objects.equals(applicationInfo.packageName, resolveInfo.activityInfo.packageName);
+ }
+
+ @Override
+ public void onHolderSelectedAsUser(@NonNull Role role, @NonNull String packageName,
+ @NonNull UserHandle user, @NonNull Context context) {
+ // Launch the new home app so the change is immediately visible even if the home button is
+ // not pressed.
+ Intent intent = new Intent(Intent.ACTION_MAIN)
+ .addCategory(Intent.CATEGORY_HOME)
+ .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ context.startActivity(intent);
+ }
+}
diff --git a/src/com/android/packageinstaller/role/model/IntentFilterData.java b/src/com/android/packageinstaller/role/model/IntentFilterData.java
new file mode 100644
index 0000000..b91b680
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/IntentFilterData.java
@@ -0,0 +1,165 @@
+/*
+ * 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.packageinstaller.role.model;
+
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.Uri;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * Specifies an {@code Intent} or an {@code IntentFilter} for matching application components.
+ */
+public class IntentFilterData {
+
+ /**
+ * The action of this {@code Intent} or {@code IntentFilter} specification. Exactly one action
+ * is required so that we can create a single {@code Intent} with it.
+ */
+ @NonNull
+ private final String mAction;
+
+ /**
+ * The categories of the {@code Intent} or {@code IntentFilter} specification. Should not
+ * contain {@link Intent#CATEGORY_DEFAULT} as it should be automatically added when used for
+ * activities.
+ */
+ @NonNull
+ private final List<String> mCategories;
+
+ /**
+ * Optional data scheme of the {@code Intent} or {@code IntentFilter} specification. At most one
+ * data scheme is supported so that we can create a single {@code Intent} with it.
+ */
+ @Nullable
+ private final String mDataScheme;
+
+ /**
+ * Optional data type of the {@code Intent} or {@code IntentFilter} specification. At most one
+ * data type is supported so that we can create a single {@code Intent} with it.
+ */
+ @Nullable
+ private final String mDataType;
+
+ public IntentFilterData(@NonNull String action, @NonNull List<String> categories,
+ @Nullable String dataScheme, @Nullable String dataType) {
+ mAction = action;
+ mCategories = categories;
+ mDataScheme = dataScheme;
+ mDataType = dataType;
+ }
+
+ @NonNull
+ public String getAction() {
+ return mAction;
+ }
+
+ @NonNull
+ public List<String> getCategories() {
+ return mCategories;
+ }
+
+ @Nullable
+ public String getDataScheme() {
+ return mDataScheme;
+ }
+
+ @Nullable
+ public String getDataType() {
+ return mDataType;
+ }
+
+ /**
+ * Create an {@code Intent} with this specification.
+ *
+ * @return the {@code Intent} created
+ */
+ @NonNull
+ public Intent createIntent() {
+ Intent intent = new Intent(mAction);
+ Uri data = mDataScheme != null ? Uri.fromParts(mDataScheme, "", null) : null;
+ int categoriesSize = mCategories.size();
+ for (int i = 0; i < categoriesSize; i++) {
+ String category = mCategories.get(i);
+ intent.addCategory(category);
+ }
+ intent.setDataAndType(data, mDataType);
+ return intent;
+ }
+
+ /**
+ * Create an {@code IntentFilter} with this specification.
+ *
+ * @return the {@code IntentFilter} created
+ */
+ @NonNull
+ public IntentFilter createIntentFilter() {
+ IntentFilter intentFilter = new IntentFilter(mAction);
+ int categoriesSize = mCategories.size();
+ for (int i = 0; i < categoriesSize; i++) {
+ String category = mCategories.get(i);
+ intentFilter.addCategory(category);
+ }
+ if (mDataScheme != null) {
+ intentFilter.addDataScheme(mDataScheme);
+ }
+ if (mDataType != null) {
+ try {
+ intentFilter.addDataType(mDataType);
+ } catch (IntentFilter.MalformedMimeTypeException e) {
+ // Should have been validated when parsing roles.
+ throw new IllegalStateException(e);
+ }
+ }
+ return intentFilter;
+ }
+
+ @Override
+ public String toString() {
+ return "IntentFilterData{"
+ + "mAction='" + mAction + '\''
+ + ", mCategories='" + mCategories + '\''
+ + ", mDataScheme='" + mDataScheme + '\''
+ + ", mDataType='" + mDataType + '\''
+ + '}';
+ }
+
+ @Override
+ public boolean equals(Object object) {
+ if (this == object) {
+ return true;
+ }
+ if (object == null || getClass() != object.getClass()) {
+ return false;
+ }
+ IntentFilterData that = (IntentFilterData) object;
+ return Objects.equals(mAction, that.mAction)
+ && Objects.equals(mCategories, that.mCategories)
+ && Objects.equals(mDataScheme, that.mDataScheme)
+ && Objects.equals(mDataType, that.mDataType);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mAction, mCategories, mDataScheme, mDataType);
+ }
+}
diff --git a/src/com/android/packageinstaller/role/model/PermissionSet.java b/src/com/android/packageinstaller/role/model/PermissionSet.java
new file mode 100644
index 0000000..a28c484
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/PermissionSet.java
@@ -0,0 +1,81 @@
+/*
+ * 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.packageinstaller.role.model;
+
+import androidx.annotation.NonNull;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * A set of permissions with a name to be granted by a {@link Role}.
+ */
+public class PermissionSet {
+
+ /**
+ * The name of this permission set. Must be unique.
+ */
+ @NonNull
+ private final String mName;
+
+ /**
+ * The permissions of this permission set.
+ */
+ @NonNull
+ private final List<String> mPermissions;
+
+ public PermissionSet(@NonNull String name, @NonNull List<String> permissions) {
+ mName = name;
+ mPermissions = permissions;
+ }
+
+ @NonNull
+ public String getName() {
+ return mName;
+ }
+
+ @NonNull
+ public List<String> getPermissions() {
+ return mPermissions;
+ }
+
+ @Override
+ public String toString() {
+ return "PermissionSet{"
+ + "mName='" + mName + '\''
+ + ", mPermissions=" + mPermissions
+ + '}';
+ }
+
+ @Override
+ public boolean equals(Object object) {
+ if (this == object) {
+ return true;
+ }
+ if (object == null || getClass() != object.getClass()) {
+ return false;
+ }
+ PermissionSet that = (PermissionSet) object;
+ return Objects.equals(mName, that.mName)
+ && Objects.equals(mPermissions, that.mPermissions);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mName, mPermissions);
+ }
+}
diff --git a/src/com/android/packageinstaller/role/model/Permissions.java b/src/com/android/packageinstaller/role/model/Permissions.java
new file mode 100644
index 0000000..46b3f6c
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/Permissions.java
@@ -0,0 +1,796 @@
+/*
+ * 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.packageinstaller.role.model;
+
+import android.Manifest;
+import android.app.AppOpsManager;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PermissionGroupInfo;
+import android.content.pm.PermissionInfo;
+import android.os.Build;
+import android.os.Process;
+import android.os.UserHandle;
+import android.permission.PermissionManager;
+import android.util.ArrayMap;
+import android.util.ArraySet;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.packageinstaller.permission.utils.ArrayUtils;
+import com.android.packageinstaller.permission.utils.CollectionUtils;
+import com.android.packageinstaller.permission.utils.Utils;
+import com.android.packageinstaller.role.utils.PackageUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Permissions to be granted or revoke by a {@link Role}.
+ */
+public class Permissions {
+
+ private static final String LOG_TAG = Permissions.class.getSimpleName();
+
+ private static final boolean DEBUG = false;
+
+ private static ArrayMap<String, String> sForegroundToBackgroundPermission;
+ private static ArrayMap<String, List<String>> sBackgroundToForegroundPermissions;
+ private static final Object sForegroundBackgroundPermissionMappingsLock = new Object();
+
+ /**
+ * Grant permissions and associated app ops to an application.
+ *
+ * @param packageName the package name of the application to be granted permissions to
+ * @param permissions the list of permissions to be granted
+ * @param overrideDisabledSystemPackage whether to ignore the permissions of a disabled system
+ * package (if this package is an updated system package)
+ * @param overrideUserSetAndFixed whether to override user set and fixed flags on the permission
+ * @param setGrantedByRole whether the permissions will be granted as granted-by-role
+ * @param setGrantedByDefault whether the permissions will be granted as granted-by-default
+ * @param setSystemFixed whether the permissions will be granted as system-fixed
+ * @param context the {@code Context} to retrieve system services
+ *
+ * @return whether any permission or app op changed
+ *
+ * @see com.android.server.pm.permission.DefaultPermissionGrantPolicy#grantRuntimePermissions(
+ * PackageInfo, java.util.Set, boolean, boolean, int)
+ */
+ public static boolean grant(@NonNull String packageName, @NonNull List<String> permissions,
+ boolean overrideDisabledSystemPackage, boolean overrideUserSetAndFixed,
+ boolean setGrantedByRole, boolean setGrantedByDefault, boolean setSystemFixed,
+ @NonNull Context context) {
+ if (setGrantedByRole == setGrantedByDefault) {
+ throw new IllegalArgumentException("Permission must be either granted by role, or"
+ + " granted by default, but not both");
+ }
+
+ PackageInfo packageInfo = getPackageInfo(packageName, context);
+ if (packageInfo == null) {
+ return false;
+ }
+
+ if (ArrayUtils.isEmpty(packageInfo.requestedPermissions)) {
+ return false;
+ }
+
+ // Automatically attempt to grant split permissions to older APKs
+ PermissionManager permissionManager = context.getSystemService(PermissionManager.class);
+ List<PermissionManager.SplitPermissionInfo> splitPermissions =
+ permissionManager.getSplitPermissions();
+ ArraySet<String> permissionsWithoutSplits = new ArraySet<>(permissions);
+ ArraySet<String> permissionsToGrant = new ArraySet<>(permissionsWithoutSplits);
+ int splitPermissionsSize = splitPermissions.size();
+ for (int i = 0; i < splitPermissionsSize; i++) {
+ PermissionManager.SplitPermissionInfo splitPermission = splitPermissions.get(i);
+
+ if (packageInfo.applicationInfo.targetSdkVersion < splitPermission.getTargetSdk()
+ && permissionsWithoutSplits.contains(splitPermission.getSplitPermission())) {
+ permissionsToGrant.addAll(splitPermission.getNewPermissions());
+ }
+ }
+
+ CollectionUtils.retainAll(permissionsToGrant, packageInfo.requestedPermissions);
+ if (permissionsToGrant.isEmpty()) {
+ return false;
+ }
+
+ // In some cases, like for the Phone or SMS app, we grant permissions regardless
+ // of if the version on the system image declares the permission as used since
+ // selecting the app as the default for that function the user makes a deliberate
+ // choice to grant this app the permissions needed to function. For all other
+ // apps, (default grants on first boot and user creation) we don't grant default
+ // permissions if the version on the system image does not declare them.
+ if (!overrideDisabledSystemPackage && isUpdatedSystemApp(packageInfo)) {
+ PackageInfo disabledSystemPackageInfo = getFactoryPackageInfo(packageName, context);
+ if (disabledSystemPackageInfo != null) {
+ if (ArrayUtils.isEmpty(disabledSystemPackageInfo.requestedPermissions)) {
+ return false;
+ }
+ CollectionUtils.retainAll(permissionsToGrant,
+ disabledSystemPackageInfo.requestedPermissions);
+ if (permissionsToGrant.isEmpty()) {
+ return false;
+ }
+ }
+ }
+
+ // Sort foreground permissions first so that we can grant a background permission based on
+ // whether any of its foreground permissions are granted.
+ int permissionsToGrantSize = permissionsToGrant.size();
+ String[] sortedPermissionsToGrant = new String[permissionsToGrantSize];
+ int foregroundPermissionCount = 0;
+ int nonForegroundPermissionCount = 0;
+ for (int i = 0; i < permissionsToGrantSize; i++) {
+ String permission = permissionsToGrant.valueAt(i);
+
+ if (isForegroundPermission(permission, context)) {
+ sortedPermissionsToGrant[foregroundPermissionCount] = permission;
+ foregroundPermissionCount++;
+ } else {
+ int index = permissionsToGrantSize - 1 - nonForegroundPermissionCount;
+ sortedPermissionsToGrant[index] = permission;
+ nonForegroundPermissionCount++;
+ }
+ }
+
+ boolean permissionOrAppOpChanged = false;
+
+ PackageManager packageManager = context.getPackageManager();
+ Set<String> whitelistedRestrictedPermissions = new ArraySet<>(
+ packageManager.getWhitelistedRestrictedPermissions(packageName,
+ PackageManager.FLAG_PERMISSION_WHITELIST_SYSTEM));
+ List<String> smsPermissions = Utils.getPlatformPermissionNamesOfGroup(
+ Manifest.permission_group.SMS);
+ List<String> callLogPermissions = Utils.getPlatformPermissionNamesOfGroup(
+ Manifest.permission_group.CALL_LOG);
+
+ int sortedPermissionsToGrantLength = sortedPermissionsToGrant.length;
+ for (int i = 0; i < sortedPermissionsToGrantLength; i++) {
+ String permission = sortedPermissionsToGrant[i];
+
+ if ((smsPermissions.contains(permission) || callLogPermissions.contains(permission))
+ && whitelistedRestrictedPermissions.add(permission)) {
+ packageManager.addWhitelistedRestrictedPermission(packageName, permission,
+ PackageManager.FLAG_PERMISSION_WHITELIST_SYSTEM);
+ }
+
+ permissionOrAppOpChanged |= grantSingle(packageName, permission,
+ overrideUserSetAndFixed, setGrantedByRole, setGrantedByDefault, setSystemFixed,
+ context);
+ }
+
+ return permissionOrAppOpChanged;
+ }
+
+ private static boolean grantSingle(@NonNull String packageName, @NonNull String permission,
+ boolean overrideUserSetAndFixed, boolean setGrantedByRole, boolean setGrantedByDefault,
+ boolean setSystemFixed, @NonNull Context context) {
+ boolean wasPermissionOrAppOpGranted = isPermissionAndAppOpGranted(packageName, permission,
+ context);
+ if (isPermissionFixed(packageName, permission, false, overrideUserSetAndFixed, context)
+ && !wasPermissionOrAppOpGranted) {
+ // Stop granting if this permission is fixed to revoked.
+ return false;
+ }
+
+ if (isBackgroundPermission(permission, context)) {
+ List<String> foregroundPermissions = getForegroundPermissions(permission, context);
+ boolean isAnyForegroundPermissionGranted = false;
+ int foregroundPermissionsSize = foregroundPermissions.size();
+ for (int i = 0; i < foregroundPermissionsSize; i++) {
+ String foregroundPermission = foregroundPermissions.get(i);
+
+ if (isPermissionAndAppOpGranted(packageName, foregroundPermission, context)) {
+ isAnyForegroundPermissionGranted = true;
+ break;
+ }
+ }
+
+ if (!isAnyForegroundPermissionGranted) {
+ // Stop granting if this background permission doesn't have a granted foreground
+ // permission.
+ return false;
+ }
+ }
+
+ boolean permissionOrAppOpChanged = grantPermissionAndAppOp(packageName, permission,
+ context);
+
+ // Update permission flags.
+ int newFlags = 0;
+ if (!wasPermissionOrAppOpGranted && setGrantedByRole) {
+ newFlags |= PackageManager.FLAG_PERMISSION_GRANTED_BY_ROLE;
+ }
+ if (setGrantedByDefault) {
+ newFlags |= PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT;
+ }
+ if (setSystemFixed) {
+ newFlags |= PackageManager.FLAG_PERMISSION_SYSTEM_FIXED;
+ }
+ int newMask = newFlags;
+ newMask |= PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED;
+ if (!wasPermissionOrAppOpGranted) {
+ // If we've granted a permission which wasn't granted, it's no longer user set or fixed.
+ newMask |= PackageManager.FLAG_PERMISSION_USER_FIXED
+ | PackageManager.FLAG_PERMISSION_USER_SET;
+ }
+ // If a component gets a permission for being the default handler A and also default handler
+ // B, we grant the weaker grant form. This only applies to default permission grant.
+ if (setGrantedByDefault && !setSystemFixed) {
+ int oldFlags = getPermissionFlags(packageName, permission, context);
+ if ((oldFlags & PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT) != 0
+ && (oldFlags & PackageManager.FLAG_PERMISSION_SYSTEM_FIXED) != 0) {
+ if (DEBUG) {
+ Log.i(LOG_TAG, "Granted not fixed " + permission + " to default handler "
+ + packageName);
+ }
+ newMask |= PackageManager.FLAG_PERMISSION_SYSTEM_FIXED;
+ }
+ }
+
+ setPermissionFlags(packageName, permission, newFlags, newMask, context);
+
+ return permissionOrAppOpChanged;
+ }
+
+ private static boolean isPermissionAndAppOpGranted(@NonNull String packageName,
+ @NonNull String permission, @NonNull Context context) {
+ // Check this permission.
+ if (!isPermissionGrantedWithoutCheckingAppOp(packageName, permission, context)) {
+ return false;
+ }
+
+ // Check if the permission is review required.
+ if (isPermissionReviewRequired(packageName, permission, context)) {
+ return false;
+ }
+
+ if (!isBackgroundPermission(permission, context)) {
+ // This permission is not a background permission, check its app op.
+ String appOp = getPermissionAppOp(permission);
+ if (appOp == null) {
+ return true;
+ }
+ Integer appOpMode = getAppOpMode(packageName, appOp, context);
+ if (appOpMode == null) {
+ return false;
+ }
+ if (!isForegroundPermission(permission, context)) {
+ // This permission is an ordinary permission, return true if its app op mode is
+ // MODE_ALLOWED.
+ return appOpMode == AppOpsManager.MODE_ALLOWED;
+ } else {
+ // This permission is a foreground permission, return true if its app op mode is
+ // MODE_FOREGROUND or MODE_ALLOWED.
+ return appOpMode == AppOpsManager.MODE_FOREGROUND
+ || appOpMode == AppOpsManager.MODE_ALLOWED;
+ }
+ } else {
+ // This permission is a background permission, return true if any of its foreground
+ // permissions' app op modes are MODE_ALLOWED.
+ List<String> foregroundPermissions = getForegroundPermissions(permission, context);
+ int foregroundPermissionsSize = foregroundPermissions.size();
+ for (int i = 0; i < foregroundPermissionsSize; i++) {
+ String foregroundPermission = foregroundPermissions.get(i);
+
+ String foregroundAppOp = getPermissionAppOp(foregroundPermission);
+ if (foregroundAppOp == null) {
+ continue;
+ }
+ Integer foregroundAppOpMode = getAppOpMode(packageName, foregroundAppOp, context);
+ if (foregroundAppOpMode == null) {
+ continue;
+ }
+ if (foregroundAppOpMode == AppOpsManager.MODE_ALLOWED) {
+ return true;
+ }
+ }
+ return false;
+ }
+ }
+
+ private static boolean grantPermissionAndAppOp(@NonNull String packageName,
+ @NonNull String permission, @NonNull Context context) {
+ // Grant the permission.
+ boolean permissionOrAppOpChanged = grantPermissionWithoutAppOp(packageName, permission,
+ context);
+
+ // Grant the app op.
+ if (!isBackgroundPermission(permission, context)) {
+ String appOp = getPermissionAppOp(permission);
+ 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 {
+ appOpMode = AppOpsManager.MODE_ALLOWED;
+ }
+ }
+ permissionOrAppOpChanged = setAppOpMode(packageName, appOp, appOpMode, context);
+ } else {
+ // This permission is a background permission, set all its foreground permissions' app
+ // op modes to MODE_ALLOWED.
+ List<String> foregroundPermissions = getForegroundPermissions(permission, context);
+ int foregroundPermissionsSize = foregroundPermissions.size();
+ for (int i = 0; i < foregroundPermissionsSize; i++) {
+ String foregroundPermission = foregroundPermissions.get(i);
+
+ String foregroundAppOp = getPermissionAppOp(foregroundPermission);
+ if (foregroundAppOp == null) {
+ continue;
+ }
+ permissionOrAppOpChanged |= setAppOpMode(packageName, foregroundAppOp,
+ AppOpsManager.MODE_ALLOWED, context);
+ }
+ }
+
+ return permissionOrAppOpChanged;
+ }
+
+ /**
+ * Revoke permissions and associated app ops from an application.
+ *
+ * @param packageName the package name of the application to be revoke permissions from
+ * @param permissions the list of permissions to be revoked
+ * @param onlyIfGrantedByRole revoke the permission only if it is granted by role
+ * @param onlyIfGrantedByDefault revoke the permission only if it is granted by default
+ * @param overrideSystemFixed whether system-fixed permissions can be revoked
+ * @param context the {@code Context} to retrieve system services
+ *
+ * @return whether any permission or app op changed
+ *
+ * @see com.android.server.pm.permission.DefaultPermissionGrantPolicy#revokeRuntimePermissions(
+ * String, java.util.Set, boolean, int)
+ */
+ public static boolean revoke(@NonNull String packageName, @NonNull List<String> permissions,
+ boolean onlyIfGrantedByRole, boolean onlyIfGrantedByDefault,
+ boolean overrideSystemFixed, @NonNull Context context) {
+ PackageInfo packageInfo = getPackageInfo(packageName, context);
+ if (packageInfo == null) {
+ return false;
+ }
+
+ if (ArrayUtils.isEmpty(packageInfo.requestedPermissions)) {
+ return false;
+ }
+
+ ArraySet<String> permissionsToRevoke = new ArraySet<>(permissions);
+ CollectionUtils.retainAll(permissionsToRevoke, packageInfo.requestedPermissions);
+ if (permissionsToRevoke.isEmpty()) {
+ return false;
+ }
+
+ // Sort background permissions first so that we can revoke a foreground permission based on
+ // whether its background permission is revoked.
+ int permissionsToRevokeSize = permissionsToRevoke.size();
+ String[] sortedPermissionsToRevoke = new String[permissionsToRevokeSize];
+ int backgroundPermissionCount = 0;
+ int nonBackgroundPermissionCount = 0;
+ for (int i = 0; i < permissionsToRevokeSize; i++) {
+ String permission = permissionsToRevoke.valueAt(i);
+
+ if (isBackgroundPermission(permission, context)) {
+ sortedPermissionsToRevoke[backgroundPermissionCount] = permission;
+ backgroundPermissionCount++;
+ } else {
+ int index = permissionsToRevokeSize - 1 - nonBackgroundPermissionCount;
+ sortedPermissionsToRevoke[index] = permission;
+ nonBackgroundPermissionCount++;
+ }
+ }
+
+ PackageManager packageManager = context.getPackageManager();
+ Set<String> whitelistedRestrictedPermissions =
+ packageManager.getWhitelistedRestrictedPermissions(packageName,
+ Utils.FLAGS_PERMISSION_WHITELIST_ALL);
+
+ boolean permissionOrAppOpChanged = false;
+
+ int sortedPermissionsToRevokeLength = sortedPermissionsToRevoke.length;
+ for (int i = 0; i < sortedPermissionsToRevokeLength; i++) {
+ String permission = sortedPermissionsToRevoke[i];
+
+ permissionOrAppOpChanged |= revokeSingle(packageName, permission, onlyIfGrantedByRole,
+ onlyIfGrantedByDefault, overrideSystemFixed, context);
+
+ // Remove from the system whitelist only if not granted by default.
+ if (!isPermissionGrantedByDefault(packageName, permission, context)
+ && whitelistedRestrictedPermissions.remove(permission)) {
+ packageManager.removeWhitelistedRestrictedPermission(packageName, permission,
+ PackageManager.FLAG_PERMISSION_WHITELIST_SYSTEM);
+ }
+ }
+
+ return permissionOrAppOpChanged;
+ }
+
+ private static boolean revokeSingle(@NonNull String packageName, @NonNull String permission,
+ boolean onlyIfGrantedByRole, boolean onlyIfGrantedByDefault,
+ boolean overrideSystemFixed, @NonNull Context context) {
+ if (onlyIfGrantedByRole == onlyIfGrantedByDefault) {
+ throw new IllegalArgumentException("Permission can be revoked only if either granted by"
+ + " role, or granted by default, but not both");
+ }
+
+ if (onlyIfGrantedByRole) {
+ if (!isPermissionGrantedByRole(packageName, permission, context)) {
+ return false;
+ }
+ setPermissionFlags(packageName, permission, 0,
+ PackageManager.FLAG_PERMISSION_GRANTED_BY_ROLE, context);
+ }
+
+ if (onlyIfGrantedByDefault) {
+ if (!isPermissionGrantedByDefault(packageName, permission, context)) {
+ return false;
+ }
+ // Remove the granted-by-default permission flag.
+ setPermissionFlags(packageName, permission, 0,
+ PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT, context);
+ // Note that we do not revoke FLAG_PERMISSION_SYSTEM_FIXED. That bit remains sticky once
+ // set.
+ }
+
+ if (isPermissionFixed(packageName, permission, overrideSystemFixed, false, context)
+ && isPermissionAndAppOpGranted(packageName, permission, context)) {
+ // Stop revoking if this permission is fixed to granted.
+ return false;
+ }
+
+ if (isForegroundPermission(permission, context)) {
+ String backgroundPermission = getBackgroundPermission(permission, context);
+ if (isPermissionAndAppOpGranted(packageName, backgroundPermission, context)) {
+ // Stop revoking if this foreground permission has a granted background permission.
+ return false;
+ }
+ }
+
+ return revokePermissionAndAppOp(packageName, permission, context);
+ }
+
+ private static boolean revokePermissionAndAppOp(@NonNull String packageName,
+ @NonNull String permission, @NonNull Context context) {
+ boolean permissionOrAppOpChanged = false;
+
+ boolean isRuntimePermissionsSupported = isRuntimePermissionsSupported(packageName, context);
+ if (isRuntimePermissionsSupported) {
+ // Revoke the permission.
+ permissionOrAppOpChanged |= revokePermissionWithoutAppOp(packageName, permission,
+ context);
+ }
+
+ // Revoke the app op.
+ if (!isBackgroundPermission(permission, context)) {
+ String appOp = getPermissionAppOp(permission);
+ 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 = setAppOpMode(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 {
+ // This permission is a background permission, set all its granted foreground
+ // permissions' app op modes to MODE_FOREGROUND.
+ List<String> foregroundPermissions = getForegroundPermissions(permission, context);
+ int foregroundPermissionsSize = foregroundPermissions.size();
+ for (int i = 0; i < foregroundPermissionsSize; i++) {
+ String foregroundPermission = foregroundPermissions.get(i);
+
+ if (!isPermissionAndAppOpGranted(packageName, foregroundPermission, context)) {
+ continue;
+ }
+
+ String foregroundAppOp = getPermissionAppOp(foregroundPermission);
+ if (foregroundAppOp == null) {
+ continue;
+ }
+ permissionOrAppOpChanged |= setAppOpMode(packageName, foregroundAppOp,
+ AppOpsManager.MODE_FOREGROUND, context);
+ }
+ }
+
+ return permissionOrAppOpChanged;
+ }
+
+ @Nullable
+ private static PackageInfo getPackageInfo(@NonNull String packageName,
+ @NonNull Context context) {
+ return getPackageInfo(packageName, 0, context);
+ }
+
+ @Nullable
+ private static PackageInfo getFactoryPackageInfo(@NonNull String packageName,
+ @NonNull Context context) {
+ return getPackageInfo(packageName, PackageManager.MATCH_FACTORY_ONLY, context);
+ }
+
+ @Nullable
+ private static PackageInfo getPackageInfo(@NonNull String packageName, int extraFlags,
+ @NonNull Context context) {
+ return PackageUtils.getPackageInfo(packageName, extraFlags
+ // TODO: Why MATCH_UNINSTALLED_PACKAGES?
+ | PackageManager.MATCH_UNINSTALLED_PACKAGES | PackageManager.GET_PERMISSIONS,
+ context);
+ }
+
+ private static boolean isUpdatedSystemApp(@NonNull PackageInfo packageInfo) {
+ return packageInfo.applicationInfo != null && (packageInfo.applicationInfo.flags
+ & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0;
+ }
+
+ static boolean isRuntimePermissionsSupported(@NonNull String packageName,
+ @NonNull Context context) {
+ ApplicationInfo applicationInfo = PackageUtils.getApplicationInfo(packageName, context);
+ if (applicationInfo == null) {
+ return false;
+ }
+ return applicationInfo.targetSdkVersion >= Build.VERSION_CODES.M;
+ }
+
+ private static int getPermissionFlags(@NonNull String packageName, @NonNull String permission,
+ @NonNull Context context) {
+ PackageManager packageManager = context.getPackageManager();
+ UserHandle user = Process.myUserHandle();
+ return packageManager.getPermissionFlags(permission, packageName, user);
+ }
+
+ private static boolean isPermissionFixed(@NonNull String packageName,
+ @NonNull String permission, boolean overrideSystemFixed,
+ boolean overrideUserSetAndFixed, @NonNull Context context) {
+ int flags = getPermissionFlags(packageName, permission, context);
+ int fixedFlags = PackageManager.FLAG_PERMISSION_POLICY_FIXED;
+ if (!overrideSystemFixed) {
+ fixedFlags |= PackageManager.FLAG_PERMISSION_SYSTEM_FIXED;
+ }
+ if (!overrideUserSetAndFixed) {
+ fixedFlags |= PackageManager.FLAG_PERMISSION_USER_FIXED
+ | PackageManager.FLAG_PERMISSION_USER_SET;
+ }
+ return (flags & fixedFlags) != 0;
+ }
+
+ private static boolean isPermissionGrantedByDefault(@NonNull String packageName,
+ @NonNull String permission, @NonNull Context context) {
+ int flags = getPermissionFlags(packageName, permission, context);
+ return (flags & PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT) != 0;
+ }
+
+ private static boolean isPermissionGrantedByRole(@NonNull String packageName,
+ @NonNull String permission, @NonNull Context context) {
+ int flags = getPermissionFlags(packageName, permission, context);
+ return (flags & PackageManager.FLAG_PERMISSION_GRANTED_BY_ROLE) != 0;
+ }
+
+ private static boolean isPermissionReviewRequired(@NonNull String packageName,
+ @NonNull String permission, @NonNull Context context) {
+ int flags = getPermissionFlags(packageName, permission, context);
+ return (flags & PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED) != 0;
+ }
+
+ private static void setPermissionFlags(@NonNull String packageName, @NonNull String permission,
+ int flags, int mask, @NonNull Context context) {
+ PackageManager packageManager = context.getPackageManager();
+ UserHandle user = Process.myUserHandle();
+ packageManager.updatePermissionFlags(permission, packageName, mask, flags, user);
+ }
+
+ /**
+ * Most of the time {@link #isPermissionAndAppOpGranted(String, String, Context)} should be used
+ * instead.
+ */
+ private static boolean isPermissionGrantedWithoutCheckingAppOp(@NonNull String packageName,
+ @NonNull String permission, @NonNull Context context) {
+ PackageManager packageManager = context.getPackageManager();
+ return packageManager.checkPermission(permission, packageName)
+ == PackageManager.PERMISSION_GRANTED;
+ }
+
+ private static boolean grantPermissionWithoutAppOp(@NonNull String packageName,
+ @NonNull String permission, @NonNull Context context) {
+ if (isPermissionGrantedWithoutCheckingAppOp(packageName, permission, context)) {
+ return false;
+ }
+ PackageManager packageManager = context.getPackageManager();
+ UserHandle user = Process.myUserHandle();
+ packageManager.grantRuntimePermission(packageName, permission, user);
+ return true;
+ }
+
+ private static boolean revokePermissionWithoutAppOp(@NonNull String packageName,
+ @NonNull String permission, @NonNull Context context) {
+ if (!isPermissionGrantedWithoutCheckingAppOp(packageName, permission, context)) {
+ return false;
+ }
+ PackageManager packageManager = context.getPackageManager();
+ UserHandle user = Process.myUserHandle();
+ packageManager.revokeRuntimePermission(packageName, permission, user);
+ return true;
+ }
+
+ private static boolean isForegroundPermission(@NonNull String permission,
+ @NonNull Context context) {
+ ensureForegroundBackgroundPermissionMappings(context);
+ return sForegroundToBackgroundPermission.containsKey(permission);
+ }
+
+ @Nullable
+ private static String getBackgroundPermission(@NonNull String foregroundPermission,
+ @NonNull Context context) {
+ ensureForegroundBackgroundPermissionMappings(context);
+ return sForegroundToBackgroundPermission.get(foregroundPermission);
+ }
+
+ private static boolean isBackgroundPermission(@NonNull String permission,
+ @NonNull Context context) {
+ ensureForegroundBackgroundPermissionMappings(context);
+ return sBackgroundToForegroundPermissions.containsKey(permission);
+ }
+
+ @Nullable
+ private static List<String> getForegroundPermissions(@NonNull String backgroundPermission,
+ @NonNull Context context) {
+ ensureForegroundBackgroundPermissionMappings(context);
+ return sBackgroundToForegroundPermissions.get(backgroundPermission);
+ }
+
+ private static void ensureForegroundBackgroundPermissionMappings(@NonNull Context context) {
+ synchronized (sForegroundBackgroundPermissionMappingsLock) {
+ if (sForegroundToBackgroundPermission == null
+ && sBackgroundToForegroundPermissions == null) {
+ createForegroundBackgroundPermissionMappings(context);
+ }
+ }
+ }
+
+ private static void createForegroundBackgroundPermissionMappings(@NonNull Context context) {
+ List<String> permissions = new ArrayList<>();
+ sBackgroundToForegroundPermissions = new ArrayMap<>();
+
+ PackageManager packageManager = context.getPackageManager();
+ List<PermissionGroupInfo> permissionGroupInfos = packageManager.getAllPermissionGroups(0);
+
+ int permissionGroupInfosSize = permissionGroupInfos.size();
+ for (int permissionGroupInfosIndex = 0;
+ permissionGroupInfosIndex < permissionGroupInfosSize; permissionGroupInfosIndex++) {
+ PermissionGroupInfo permissionGroupInfo = permissionGroupInfos.get(
+ permissionGroupInfosIndex);
+
+ List<PermissionInfo> permissionInfos;
+ try {
+ permissionInfos = Utils.getPermissionInfosForGroup(packageManager,
+ permissionGroupInfo.name);
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.e(LOG_TAG, "Cannot get permissions for group: " + permissionGroupInfo.name);
+ continue;
+ }
+
+ int permissionInfosSize = permissionInfos.size();
+ for (int permissionInfosIndex = 0; permissionInfosIndex < permissionInfosSize;
+ permissionInfosIndex++) {
+ PermissionInfo permissionInfo = permissionInfos.get(permissionInfosIndex);
+
+ String permission = permissionInfo.name;
+ permissions.add(permission);
+
+ String backgroundPermission = permissionInfo.backgroundPermission;
+ if (backgroundPermission != null) {
+ List<String> foregroundPermissions = sBackgroundToForegroundPermissions.get(
+ backgroundPermission);
+ if (foregroundPermissions == null) {
+ foregroundPermissions = new ArrayList<>();
+ sBackgroundToForegroundPermissions.put(backgroundPermission,
+ foregroundPermissions);
+ }
+ foregroundPermissions.add(permission);
+ }
+ }
+ }
+
+ // Remove background permissions declared by foreground permissions but don't actually
+ // exist.
+ sBackgroundToForegroundPermissions.retainAll(permissions);
+
+ // Collect foreground permissions that have existent background permissions.
+ sForegroundToBackgroundPermission = new ArrayMap<>();
+
+ int backgroundToForegroundPermissionsSize = sBackgroundToForegroundPermissions.size();
+ for (int backgroundToForegroundPermissionsIndex = 0;
+ backgroundToForegroundPermissionsIndex < backgroundToForegroundPermissionsSize;
+ backgroundToForegroundPermissionsIndex++) {
+ String backgroundPerimssion = sBackgroundToForegroundPermissions.keyAt(
+ backgroundToForegroundPermissionsIndex);
+ List<String> foregroundPermissions = sBackgroundToForegroundPermissions.valueAt(
+ backgroundToForegroundPermissionsIndex);
+
+ int foregroundPermissionsSize = foregroundPermissions.size();
+ for (int foregroundPermissionsIndex = 0;
+ foregroundPermissionsIndex < foregroundPermissionsSize;
+ foregroundPermissionsIndex++) {
+ String foregroundPermission = foregroundPermissions.get(foregroundPermissionsIndex);
+
+ sForegroundToBackgroundPermission.put(foregroundPermission, backgroundPerimssion);
+ }
+ }
+ }
+
+ @Nullable
+ private static String getPermissionAppOp(@NonNull String permission) {
+ return AppOpsManager.permissionToOp(permission);
+ }
+
+ @Nullable
+ private static Integer getAppOpMode(@NonNull String packageName, @NonNull String appOp,
+ @NonNull Context context) {
+ ApplicationInfo applicationInfo = PackageUtils.getApplicationInfo(packageName, context);
+ if (applicationInfo == null) {
+ return null;
+ }
+ AppOpsManager appOpsManager = context.getSystemService(AppOpsManager.class);
+ return appOpsManager.unsafeCheckOpRaw(appOp, applicationInfo.uid, packageName);
+ }
+
+ static int getDefaultAppOpMode(@NonNull String appOp) {
+ return AppOpsManager.opToDefaultMode(appOp);
+ }
+
+ static boolean setAppOpMode(@NonNull String packageName, @NonNull String appOp, int mode,
+ @NonNull Context context) {
+ Integer currentMode = getAppOpMode(packageName, appOp, context);
+ if (currentMode != null && currentMode == mode) {
+ return false;
+ }
+ ApplicationInfo applicationInfo = PackageUtils.getApplicationInfo(packageName, context);
+ if (applicationInfo == null) {
+ Log.e(LOG_TAG, "Cannot get ApplicationInfo for package to set app op mode: "
+ + packageName);
+ return false;
+ }
+ AppOpsManager appOpsManager = context.getSystemService(AppOpsManager.class);
+ appOpsManager.setUidMode(appOp, applicationInfo.uid, mode);
+ return true;
+ }
+}
diff --git a/src/com/android/packageinstaller/role/model/PreferredActivity.java b/src/com/android/packageinstaller/role/model/PreferredActivity.java
new file mode 100644
index 0000000..5062e9e
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/PreferredActivity.java
@@ -0,0 +1,123 @@
+/*
+ * 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.packageinstaller.role.model;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.PackageManager;
+import android.os.Process;
+
+import androidx.annotation.NonNull;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * Specifies a preferred {@code Activity} configuration to be configured by a {@link Role}.
+ */
+public class PreferredActivity {
+
+ /**
+ * The specification of the {@code Activity} to be preferred.
+ */
+ @NonNull
+ private final RequiredActivity mActivity;
+
+ /**
+ * The list of {@code IntentFilter} specifications to be configured to prefer this
+ * {@code Activity}.
+ */
+ @NonNull
+ private final List<IntentFilterData> mIntentFilterDatas;
+
+ public PreferredActivity(@NonNull RequiredActivity activity,
+ @NonNull List<IntentFilterData> intentFilterDatas) {
+ mActivity = activity;
+ mIntentFilterDatas = intentFilterDatas;
+ }
+
+ @NonNull
+ public RequiredActivity getActivity() {
+ return mActivity;
+ }
+
+ @NonNull
+ public List<IntentFilterData> getIntentFilterDatas() {
+ return mIntentFilterDatas;
+ }
+
+ /**
+ * Configure this preferred activity specification for an application.
+ *
+ * @param packageName the package name of the application
+ * @param context the {@code Context} to retrieve system services
+ */
+ public void configure(@NonNull String packageName, @NonNull Context context) {
+ PackageManager packageManager = context.getPackageManager();
+ ComponentName packageActivity = mActivity.getQualifyingComponentForPackage(
+ packageName, context);
+ if (packageActivity == null) {
+ // We might be running into some race condition here, but we can't do anything about it.
+ // This should be handled by a future reconciliation started by the package change.
+ return;
+ }
+
+ int intentFilterDatasSize = mIntentFilterDatas.size();
+ for (int i = 0; i < intentFilterDatasSize; i++) {
+ IntentFilterData intentFilterData = mIntentFilterDatas.get(i);
+
+ IntentFilter intentFilter = intentFilterData.createIntentFilter();
+ intentFilter.addCategory(Intent.CATEGORY_DEFAULT);
+ // PackageManager.replacePreferredActivity() expects filter to have no data authorities,
+ // paths, or types; and at most one scheme.
+ int match = intentFilterData.getDataScheme() != null
+ ? IntentFilter.MATCH_CATEGORY_SCHEME : IntentFilter.MATCH_CATEGORY_EMPTY;
+ List<ComponentName> activities = mActivity.getQualifyingComponentsAsUser(
+ Process.myUserHandle(), context);
+ packageManager.replacePreferredActivity(intentFilter, match, activities,
+ packageActivity);
+ }
+ }
+
+ @Override
+ public String toString() {
+ return "PreferredActivity{"
+ + "mActivity=" + mActivity
+ + ", mIntentFilterDatas=" + mIntentFilterDatas
+ + '}';
+ }
+
+ @Override
+ public boolean equals(Object object) {
+ if (this == object) {
+ return true;
+ }
+ if (object == null || getClass() != object.getClass()) {
+ return false;
+ }
+ PreferredActivity that = (PreferredActivity) object;
+ return Objects.equals(mActivity, that.mActivity)
+ && Objects.equals(mIntentFilterDatas, that.mIntentFilterDatas);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mActivity, mIntentFilterDatas);
+ }
+}
diff --git a/src/com/android/packageinstaller/role/model/RequiredActivity.java b/src/com/android/packageinstaller/role/model/RequiredActivity.java
new file mode 100644
index 0000000..bed4dfe
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/RequiredActivity.java
@@ -0,0 +1,72 @@
+/*
+ * 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.packageinstaller.role.model;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.os.Bundle;
+import android.os.UserHandle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.packageinstaller.role.utils.UserUtils;
+
+import java.util.List;
+
+/**
+ * Specifies a required {@code Activity} for an application to qualify for a {@link Role}.
+ */
+public class RequiredActivity extends RequiredComponent {
+
+ public RequiredActivity(@NonNull IntentFilterData intentFilterData,
+ @Nullable String permission, @NonNull List<RequiredMetaData> metaData) {
+ super(intentFilterData, permission, metaData);
+ }
+
+ @NonNull
+ @Override
+ protected List<ResolveInfo> queryIntentComponentsAsUser(@NonNull Intent intent, int flags,
+ @NonNull UserHandle user, @NonNull Context context) {
+ Context userContext = UserUtils.getUserContext(context, user);
+ PackageManager userPackageManager = userContext.getPackageManager();
+ flags |= PackageManager.MATCH_DEFAULT_ONLY;
+ return userPackageManager.queryIntentActivities(intent, flags);
+ }
+
+ @NonNull
+ @Override
+ protected ComponentName getComponentComponentName(@NonNull ResolveInfo resolveInfo) {
+ return new ComponentName(resolveInfo.activityInfo.packageName,
+ resolveInfo.activityInfo.name);
+ }
+
+ @Nullable
+ @Override
+ protected String getComponentPermission(@NonNull ResolveInfo resolveInfo) {
+ return resolveInfo.activityInfo.permission;
+ }
+
+ @Nullable
+ @Override
+ protected Bundle getComponentMetaData(@NonNull ResolveInfo resolveInfo) {
+ return resolveInfo.activityInfo.metaData;
+ }
+}
diff --git a/src/com/android/packageinstaller/role/model/RequiredBroadcastReceiver.java b/src/com/android/packageinstaller/role/model/RequiredBroadcastReceiver.java
new file mode 100644
index 0000000..3348015
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/RequiredBroadcastReceiver.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.packageinstaller.role.model;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.os.Bundle;
+import android.os.UserHandle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.packageinstaller.role.utils.UserUtils;
+
+import java.util.List;
+
+/**
+ * Specifies a required {@code BroadcastReceiver} for an application to qualify for a {@link Role}.
+ */
+public class RequiredBroadcastReceiver extends RequiredComponent {
+
+ public RequiredBroadcastReceiver(@NonNull IntentFilterData intentFilterData,
+ @Nullable String permission, @NonNull List<RequiredMetaData> metaData) {
+ super(intentFilterData, permission, metaData);
+ }
+
+ @NonNull
+ @Override
+ protected List<ResolveInfo> queryIntentComponentsAsUser(@NonNull Intent intent, int flags,
+ @NonNull UserHandle user, @NonNull Context context) {
+ Context userContext = UserUtils.getUserContext(context, user);
+ PackageManager userPackageManager = userContext.getPackageManager();
+ return userPackageManager.queryBroadcastReceivers(intent, flags);
+ }
+
+ @NonNull
+ @Override
+ protected ComponentName getComponentComponentName(@NonNull ResolveInfo resolveInfo) {
+ return new ComponentName(resolveInfo.activityInfo.packageName,
+ resolveInfo.activityInfo.name);
+ }
+
+ @Nullable
+ @Override
+ protected String getComponentPermission(@NonNull ResolveInfo resolveInfo) {
+ return resolveInfo.activityInfo.permission;
+ }
+
+ @Nullable
+ @Override
+ protected Bundle getComponentMetaData(@NonNull ResolveInfo resolveInfo) {
+ return resolveInfo.activityInfo.metaData;
+ }
+}
diff --git a/src/com/android/packageinstaller/role/model/RequiredComponent.java b/src/com/android/packageinstaller/role/model/RequiredComponent.java
new file mode 100644
index 0000000..951d2a0
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/RequiredComponent.java
@@ -0,0 +1,256 @@
+/*
+ * 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.packageinstaller.role.model;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.os.Bundle;
+import android.os.Process;
+import android.os.UserHandle;
+import android.util.ArraySet;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * Specifies a required component for an application to qualify for a {@link Role}.
+ */
+public abstract class RequiredComponent {
+
+ private static final String LOG_TAG = RequiredComponent.class.getSimpleName();
+
+ /**
+ * The {@code Intent} or {@code IntentFilter} data to match the components.
+ */
+ @NonNull
+ private final IntentFilterData mIntentFilterData;
+
+ /**
+ * Optional permission required on a component for match to succeed.
+ *
+ * @see android.content.pm.ActivityInfo#permission
+ * @see android.content.pm.ServiceInfo#permission
+ */
+ @Nullable
+ private final String mPermission;
+
+ /**
+ * The meta data required on a component for match to succeed.
+ *
+ * @see android.content.pm.PackageItemInfo#metaData
+ */
+ @NonNull
+ private final List<RequiredMetaData> mMetaData;
+
+ public RequiredComponent(@NonNull IntentFilterData intentFilterData,
+ @Nullable String permission,
+ @NonNull List<RequiredMetaData> metaData) {
+ mIntentFilterData = intentFilterData;
+ mPermission = permission;
+ mMetaData = metaData;
+ }
+
+ @NonNull
+ public IntentFilterData getIntentFilterData() {
+ return mIntentFilterData;
+ }
+
+ @Nullable
+ public String getPermission() {
+ return mPermission;
+ }
+
+ @NonNull
+ public List<RequiredMetaData> getMetaData() {
+ return mMetaData;
+ }
+
+ /**
+ * Get the component that matches this required component within a package, if any.
+ *
+ * @param packageName the package name for this query
+ * @param context the {@code Context} to retrieve system services
+ *
+ * @return the matching component, or {@code null} if none.
+ */
+ @Nullable
+ public ComponentName getQualifyingComponentForPackage(@NonNull String packageName,
+ @NonNull Context context) {
+ List<ComponentName> componentNames = getQualifyingComponentsInternal(packageName,
+ Process.myUserHandle(), context);
+ return !componentNames.isEmpty() ? componentNames.get(0) : null;
+ }
+
+ /**
+ * Get the list of components that match this required component, <b>at most one component per
+ * package</b> and ordered from best to worst.
+ *
+ * @param user the user to get the qualifying components.
+ * @param context the {@code Context} to retrieve system services
+ *
+ * @return the list of matching components
+ *
+ * @see Role#getQualifyingPackagesAsUser(UserHandle, Context)
+ */
+ @NonNull
+ public List<ComponentName> getQualifyingComponentsAsUser(@NonNull UserHandle user,
+ @NonNull Context context) {
+ return getQualifyingComponentsInternal(null, user, context);
+ }
+
+ @NonNull
+ private List<ComponentName> getQualifyingComponentsInternal(@Nullable String packageName,
+ @NonNull UserHandle user, @NonNull Context context) {
+ Intent intent = mIntentFilterData.createIntent();
+ if (packageName != null) {
+ intent.setPackage(packageName);
+ }
+ int flags = PackageManager.MATCH_DIRECT_BOOT_AWARE
+ | PackageManager.MATCH_DIRECT_BOOT_UNAWARE;
+ boolean hasMetaData = !mMetaData.isEmpty();
+ if (hasMetaData) {
+ flags |= PackageManager.GET_META_DATA;
+ }
+ List<ResolveInfo> resolveInfos = queryIntentComponentsAsUser(intent, flags, user, context);
+
+ ArraySet<String> componentPackageNames = new ArraySet<>();
+ List<ComponentName> componentNames = new ArrayList<>();
+ int resolveInfosSize = resolveInfos.size();
+ for (int resolveInfosIndex = 0; resolveInfosIndex < resolveInfosSize; resolveInfosIndex++) {
+ ResolveInfo resolveInfo = resolveInfos.get(resolveInfosIndex);
+
+ if (mPermission != null) {
+ String componentPermission = getComponentPermission(resolveInfo);
+ if (!Objects.equals(componentPermission, mPermission)) {
+ continue;
+ }
+ }
+
+ if (hasMetaData) {
+ Bundle componentMetaData = getComponentMetaData(resolveInfo);
+ if (componentMetaData == null) {
+ Log.w(LOG_TAG, "Component meta data is null");
+ continue;
+ }
+ boolean isMetaDataQualified = true;
+ int metaDataSize = mMetaData.size();
+ for (int metaDataIndex = 0; metaDataIndex < metaDataSize; metaDataIndex++) {
+ RequiredMetaData metaData = mMetaData.get(metaDataIndex);
+
+ if (!metaData.isQualified(componentMetaData)) {
+ isMetaDataQualified = false;
+ break;
+ }
+ }
+ if (!isMetaDataQualified) {
+ continue;
+ }
+ }
+
+ ComponentName componentName = getComponentComponentName(resolveInfo);
+ String componentPackageName = componentName.getPackageName();
+ if (componentPackageNames.contains(componentPackageName)) {
+ continue;
+ }
+
+ componentPackageNames.add(componentPackageName);
+ componentNames.add(componentName);
+ }
+ return componentNames;
+ }
+
+ /**
+ * Query the {@code PackageManager} for components matching an {@code Intent}, ordered from best
+ * to worst.
+ *
+ * @param intent the {@code Intent} to match against
+ * @param flags the flags for this query
+ * @param user the user for this query
+ * @param context the {@code Context} to retrieve system services
+ *
+ * @return the list of matching components
+ */
+ @NonNull
+ protected abstract List<ResolveInfo> queryIntentComponentsAsUser(@NonNull Intent intent,
+ int flags, @NonNull UserHandle user, @NonNull Context context);
+
+ /**
+ * Get the {@code ComponentName} of a component.
+ *
+ * @param resolveInfo the {@code ResolveInfo} of the component
+ *
+ * @return the {@code ComponentName} of the component
+ */
+ @NonNull
+ protected abstract ComponentName getComponentComponentName(@NonNull ResolveInfo resolveInfo);
+
+ /**
+ * Get the permission required to access a component.
+ *
+ * @param resolveInfo the {@code ResolveInfo} of the component
+ *
+ * @return the permission required to access a component
+ */
+ @Nullable
+ protected abstract String getComponentPermission(@NonNull ResolveInfo resolveInfo);
+
+ /**
+ * Get the meta data associated with a component.
+ *
+ * @param resolveInfo the {@code ResolveInfo} of the component
+ *
+ * @return the meta data associated with a component
+ */
+ @Nullable
+ protected abstract Bundle getComponentMetaData(@NonNull ResolveInfo resolveInfo);
+
+ @Override
+ public String toString() {
+ return "RequiredComponent{"
+ + "mIntentFilterData=" + mIntentFilterData
+ + ", mPermission='" + mPermission + '\''
+ + ", mMetaData=" + mMetaData
+ + '}';
+ }
+
+ @Override
+ public boolean equals(Object object) {
+ if (this == object) {
+ return true;
+ }
+ if (object == null || getClass() != object.getClass()) {
+ return false;
+ }
+ RequiredComponent that = (RequiredComponent) object;
+ return Objects.equals(mIntentFilterData, that.mIntentFilterData)
+ && Objects.equals(mPermission, that.mPermission)
+ && Objects.equals(mMetaData, that.mMetaData);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mIntentFilterData, mPermission, mMetaData);
+ }
+}
diff --git a/src/com/android/packageinstaller/role/model/RequiredContentProvider.java b/src/com/android/packageinstaller/role/model/RequiredContentProvider.java
new file mode 100644
index 0000000..69b5a64
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/RequiredContentProvider.java
@@ -0,0 +1,73 @@
+/*
+ * 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.packageinstaller.role.model;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.os.Bundle;
+import android.os.UserHandle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.packageinstaller.role.utils.UserUtils;
+
+import java.util.List;
+
+/**
+ * Specifies a required {@code ContentProvider} for an application to qualify for a {@link Role}.
+ */
+public class RequiredContentProvider extends RequiredComponent {
+
+ public RequiredContentProvider(@NonNull IntentFilterData intentFilterData,
+ @Nullable String permission, @NonNull List<RequiredMetaData> metaData) {
+ super(intentFilterData, permission, metaData);
+ }
+
+ @NonNull
+ @Override
+ protected List<ResolveInfo> queryIntentComponentsAsUser(@NonNull Intent intent, int flags,
+ @NonNull UserHandle user, @NonNull Context context) {
+ Context userContext = UserUtils.getUserContext(context, user);
+ PackageManager userPackageManager = userContext.getPackageManager();
+ return userPackageManager.queryIntentContentProviders(intent, flags);
+ }
+
+ @NonNull
+ @Override
+ protected ComponentName getComponentComponentName(@NonNull ResolveInfo resolveInfo) {
+ return new ComponentName(resolveInfo.providerInfo.packageName,
+ resolveInfo.providerInfo.name);
+ }
+
+ @Nullable
+ @Override
+ protected String getComponentPermission(@NonNull ResolveInfo resolveInfo) {
+ // TODO: Which permission? Or both?
+ //return resolveInfo.providerInfo.readPermission;
+ throw new UnsupportedOperationException();
+ }
+
+ @Nullable
+ @Override
+ protected Bundle getComponentMetaData(@NonNull ResolveInfo resolveInfo) {
+ return resolveInfo.providerInfo.metaData;
+ }
+}
diff --git a/src/com/android/packageinstaller/role/model/RequiredMetaData.java b/src/com/android/packageinstaller/role/model/RequiredMetaData.java
new file mode 100644
index 0000000..5b97e0b
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/RequiredMetaData.java
@@ -0,0 +1,113 @@
+/*
+ * 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.packageinstaller.role.model;
+
+import android.os.Bundle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import java.util.Objects;
+
+/**
+ * Specifies the value of a meta data for an application to qualify for a {@link Role}.
+ */
+public class RequiredMetaData {
+
+ /**
+ * The name of this meta data.
+ */
+ @NonNull
+ private final String mName;
+
+ /**
+ * The value of this meta data.
+ */
+ @Nullable
+ private final Object mValue;
+
+ /**
+ * Whether this meta data is optional.
+ *
+ * @see #isQualified(Bundle)
+ */
+ private final boolean mOptional;
+
+ public RequiredMetaData(@NonNull String name, @Nullable Object value, boolean optional) {
+ mName = name;
+ mValue = value;
+ mOptional = optional;
+ }
+
+ @NonNull
+ public String getName() {
+ return mName;
+ }
+
+ @Nullable
+ public Object getValue() {
+ return mValue;
+ }
+
+ public boolean isOptional() {
+ return mOptional;
+ }
+
+ /**
+ * Check whether the meta data of a component is qualified.
+ *
+ * @param metaData the meta data of the component
+ *
+ * @return whether the meta data of the component is qualified
+ */
+ public boolean isQualified(@NonNull Bundle metaData) {
+ if (metaData.containsKey(mName)) {
+ Object metaDataValue = metaData.get(mName);
+ return Objects.equals(metaDataValue, mValue);
+ } else {
+ return mOptional;
+ }
+ }
+
+ @Override
+ public String toString() {
+ return "RequiredMetaData{"
+ + "mName='" + mName + '\''
+ + ", mValue=" + mValue
+ + ", mOptional=" + mOptional
+ + '}';
+ }
+
+ @Override
+ public boolean equals(Object object) {
+ if (this == object) {
+ return true;
+ }
+ if (object == null || getClass() != object.getClass()) {
+ return false;
+ }
+ RequiredMetaData that = (RequiredMetaData) object;
+ return mOptional == that.mOptional
+ && Objects.equals(mName, that.mName)
+ && Objects.equals(mValue, that.mValue);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mName, mValue, mOptional);
+ }
+}
diff --git a/src/com/android/packageinstaller/role/model/RequiredService.java b/src/com/android/packageinstaller/role/model/RequiredService.java
new file mode 100644
index 0000000..bc92e7a
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/RequiredService.java
@@ -0,0 +1,70 @@
+/*
+ * 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.packageinstaller.role.model;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.os.Bundle;
+import android.os.UserHandle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.packageinstaller.role.utils.UserUtils;
+
+import java.util.List;
+
+/**
+ * Specifies a required {@code Service} for an application to qualify for a {@link Role}.
+ */
+public class RequiredService extends RequiredComponent {
+
+ public RequiredService(@NonNull IntentFilterData intentFilterData,
+ @Nullable String permission, @NonNull List<RequiredMetaData> metaData) {
+ super(intentFilterData, permission, metaData);
+ }
+
+ @NonNull
+ @Override
+ protected List<ResolveInfo> queryIntentComponentsAsUser(@NonNull Intent intent, int flags,
+ @NonNull UserHandle user, @NonNull Context context) {
+ Context userContext = UserUtils.getUserContext(context, user);
+ PackageManager userPackageManager = userContext.getPackageManager();
+ return userPackageManager.queryIntentServices(intent, flags);
+ }
+
+ @NonNull
+ @Override
+ protected ComponentName getComponentComponentName(@NonNull ResolveInfo resolveInfo) {
+ return new ComponentName(resolveInfo.serviceInfo.packageName, resolveInfo.serviceInfo.name);
+ }
+
+ @Nullable
+ @Override
+ protected String getComponentPermission(@NonNull ResolveInfo resolveInfo) {
+ return resolveInfo.serviceInfo.permission;
+ }
+
+ @Nullable
+ @Override
+ protected Bundle getComponentMetaData(@NonNull ResolveInfo resolveInfo) {
+ return resolveInfo.serviceInfo.metaData;
+ }
+}
diff --git a/src/com/android/packageinstaller/role/model/Role.java b/src/com/android/packageinstaller/role/model/Role.java
new file mode 100644
index 0000000..58cbf62
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/Role.java
@@ -0,0 +1,755 @@
+/*
+ * 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.packageinstaller.role.model;
+
+import android.app.ActivityManager;
+import android.app.role.RoleManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.os.Process;
+import android.os.UserHandle;
+import android.util.ArrayMap;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+import androidx.preference.Preference;
+
+import com.android.packageinstaller.Constants;
+import com.android.packageinstaller.permission.utils.Utils;
+import com.android.packageinstaller.role.ui.TwoTargetPreference;
+import com.android.packageinstaller.role.utils.PackageUtils;
+import com.android.packageinstaller.role.utils.UserUtils;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * Specifies a role and its properties.
+ * <p>
+ * A role is a unique name within the system associated with certain privileges. 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. Then the application will need user consent to become the role
+ * holder.
+ * <p>
+ * Upon becoming a role holder, the application may be granted certain permissions, have certain
+ * app ops set to certain modes and certain {@code Activity} components configured as preferred for
+ * certain {@code Intent} actions. When an application loses its role, these privileges will also be
+ * revoked.
+ *
+ * @see android.app.role.RoleManager
+ */
+public class Role {
+
+ private static final String LOG_TAG = Role.class.getSimpleName();
+
+ private static final boolean DEBUG = false;
+
+ private static final String PACKAGE_NAME_ANDROID_SYSTEM = "android";
+
+ /**
+ * The name of this role. Must be unique.
+ */
+ @NonNull
+ private final String mName;
+
+ /**
+ * The behavior of this role.
+ */
+ @Nullable
+ private final RoleBehavior mBehavior;
+
+ /**
+ * The string resource for the description of this role.
+ */
+ @StringRes
+ private final int mDescriptionResource;
+
+ /**
+ * Whether this role is exclusive, i.e. allows at most one holder.
+ */
+ private final boolean mExclusive;
+
+ /**
+ * The string resource for the label of this role.
+ */
+ @StringRes
+ private final int mLabelResource;
+
+ /**
+ * The string resource for the request description of this role, shown below the selected app in
+ * the request role dialog.
+ */
+ @StringRes
+ private final int mRequestDescriptionResource;
+
+ /**
+ * The string resource for the request title of this role, shown as the title of the request
+ * role dialog.
+ */
+ @StringRes
+ private final int mRequestTitleResource;
+
+ /**
+ * Whether this role is requestable by applications with
+ * {@link android.app.role.RoleManager#createRequestRoleIntent(String)}.
+ */
+ private final boolean mRequestable;
+
+ /**
+ * The string resource for the short label of this role, currently used when in a list of roles.
+ */
+ @StringRes
+ private final int mShortLabelResource;
+
+ /**
+ * Whether the UI for this role will show the "None" item. Only valid if this role is
+ * {@link #mExclusive exclusive}, and {@link #getFallbackHolder(Context)} should also return
+ * empty to allow actually selecting "None".
+ */
+ private final boolean mShowNone;
+
+ /**
+ * Whether this role only accepts system apps as its holders.
+ */
+ private final boolean mSystemOnly;
+
+ /**
+ * The required components for an application to qualify for this role.
+ */
+ @NonNull
+ private final List<RequiredComponent> mRequiredComponents;
+
+ /**
+ * The permissions to be granted by this role.
+ */
+ @NonNull
+ private final List<String> mPermissions;
+
+ /**
+ * The app ops to be set to allowed by this role.
+ */
+ @NonNull
+ private final List<AppOp> mAppOps;
+
+ /**
+ * The set of preferred {@code Activity} configurations to be configured by this role.
+ */
+ @NonNull
+ private final List<PreferredActivity> mPreferredActivities;
+
+ public Role(@NonNull String name, @Nullable RoleBehavior behavior,
+ @StringRes int descriptionResource, boolean exclusive, @StringRes int labelResource,
+ @StringRes int requestDescriptionResource, @StringRes int requestTitleResource,
+ boolean requestable, @StringRes int shortLabelResource, boolean showNone,
+ boolean systemOnly, @NonNull List<RequiredComponent> requiredComponents,
+ @NonNull List<String> permissions, @NonNull List<AppOp> appOps,
+ @NonNull List<PreferredActivity> preferredActivities) {
+ mName = name;
+ mBehavior = behavior;
+ mDescriptionResource = descriptionResource;
+ mExclusive = exclusive;
+ mLabelResource = labelResource;
+ mRequestDescriptionResource = requestDescriptionResource;
+ mRequestTitleResource = requestTitleResource;
+ mRequestable = requestable;
+ mShortLabelResource = shortLabelResource;
+ mShowNone = showNone;
+ mSystemOnly = systemOnly;
+ mRequiredComponents = requiredComponents;
+ mPermissions = permissions;
+ mAppOps = appOps;
+ mPreferredActivities = preferredActivities;
+ }
+
+ @NonNull
+ public String getName() {
+ return mName;
+ }
+
+ @Nullable
+ public RoleBehavior getBehavior() {
+ return mBehavior;
+ }
+
+ @StringRes
+ public int getDescriptionResource() {
+ return mDescriptionResource;
+ }
+
+ public boolean isExclusive() {
+ return mExclusive;
+ }
+
+ @StringRes
+ public int getLabelResource() {
+ return mLabelResource;
+ }
+
+ @StringRes
+ public int getRequestDescriptionResource() {
+ return mRequestDescriptionResource;
+ }
+
+ @StringRes
+ public int getRequestTitleResource() {
+ return mRequestTitleResource;
+ }
+
+ public boolean isRequestable() {
+ return mRequestable;
+ }
+
+ @StringRes
+ public int getShortLabelResource() {
+ return mShortLabelResource;
+ }
+
+ /**
+ * @see #mShowNone
+ */
+ public boolean shouldShowNone() {
+ return mShowNone;
+ }
+
+ @NonNull
+ public List<RequiredComponent> getRequiredComponents() {
+ return mRequiredComponents;
+ }
+
+ @NonNull
+ public List<String> getPermissions() {
+ return mPermissions;
+ }
+
+ @NonNull
+ public List<AppOp> getAppOps() {
+ return mAppOps;
+ }
+
+ @NonNull
+ public List<PreferredActivity> getPreferredActivities() {
+ return mPreferredActivities;
+ }
+
+ /**
+ * Check whether this role is available.
+ *
+ * @param user the user to check for
+ * @param context the {@code Context} to retrieve system services
+ *
+ * @return whether this role is available.
+ */
+ public boolean isAvailableAsUser(@NonNull UserHandle user, @NonNull Context context) {
+ if (mBehavior != null) {
+ return mBehavior.isAvailableAsUser(this, user, context);
+ }
+ return true;
+ }
+
+ /**
+ * Check whether this role is available, for current user.
+ *
+ * @param context the {@code Context} to retrieve system services
+ *
+ * @return whether this role is available.
+ */
+ public boolean isAvailable(@NonNull Context context) {
+ return isAvailableAsUser(Process.myUserHandle(), context);
+ }
+
+ /**
+ * Get the default holders of this role, which will be added when the role is added for the
+ * first time.
+ *
+ * @param context the {@code Context} to retrieve system services
+ *
+ * @return the list of package names of the default holders
+ */
+ @NonNull
+ public List<String> getDefaultHolders(@NonNull Context context) {
+ if (mBehavior != null) {
+ return mBehavior.getDefaultHolders(this, context);
+ }
+ return Collections.emptyList();
+ }
+
+ /**
+ * Get the fallback holder of this role, which will be added whenever there are no role holders.
+ * <p>
+ * Should return {@code null} if this role {@link #mShowNone shows a "None" item}.
+ *
+ * @param context the {@code Context} to retrieve system services
+ *
+ * @return the package name of the fallback holder, or {@code null} if none
+ */
+ @Nullable
+ public String getFallbackHolder(@NonNull Context context) {
+ if (mBehavior != null && !isNoneHolderSelected(context)) {
+ return mBehavior.getFallbackHolder(this, context);
+ }
+ return null;
+ }
+
+ /**
+ * Check whether this role should be visible to user.
+ *
+ * @param user the user to check for
+ * @param context the {@code Context} to retrieve system services
+ *
+ * @return whether this role should be visible to user
+ */
+ public boolean isVisibleAsUser(@NonNull UserHandle user, @NonNull Context context) {
+ if (mBehavior != null) {
+ return mBehavior.isVisibleAsUser(this, user, context);
+ }
+ return true;
+ }
+
+ /**
+ * Check whether this role should be visible to user, for current user.
+ *
+ * @param context the {@code Context} to retrieve system services
+ *
+ * @return whether this role should be visible to user.
+ */
+ public boolean isVisible(@NonNull Context context) {
+ return isVisibleAsUser(Process.myUserHandle(), context);
+ }
+
+ /**
+ * Get the {@link Intent} to manage this role, or {@code null} to use the default UI.
+ *
+ * @param user the user to manage this role for
+ * @param context the {@code Context} to retrieve system services
+ *
+ * @return the {@link Intent} to manage this role, or {@code null} to use the default UI.
+ */
+ @Nullable
+ public Intent getManageIntentAsUser(@NonNull UserHandle user, @NonNull Context context) {
+ if (mBehavior != null) {
+ return mBehavior.getManageIntentAsUser(this, user, context);
+ }
+ return null;
+ }
+
+ /**
+ * Prepare a {@link Preference} for this role.
+ *
+ * @param preference the {@link Preference} for this role
+ * @param user the user for this role
+ * @param context the {@code Context} to retrieve system services
+ */
+ public void preparePreferenceAsUser(@NonNull TwoTargetPreference preference,
+ @NonNull UserHandle user, @NonNull Context context) {
+ if (mBehavior != null) {
+ mBehavior.preparePreferenceAsUser(this, preference, user, context);
+ }
+ }
+
+ /**
+ * Prepare a {@link Preference} for an application.
+ *
+ * @param preference the {@link Preference} for the application
+ * @param applicationInfo the {@link ApplicationInfo} for the application
+ * @param user the user for the application
+ * @param context the {@code Context} to retrieve system services
+ */
+ public void prepareApplicationPreferenceAsUser(@NonNull Preference preference,
+ @NonNull ApplicationInfo applicationInfo, @NonNull UserHandle user,
+ @NonNull Context context) {
+ if (mBehavior != null) {
+ mBehavior.prepareApplicationPreferenceAsUser(this, preference, applicationInfo, user,
+ context);
+ }
+ }
+
+ /**
+ * Get the confirmation message for adding an application as a holder of this role.
+ *
+ * @param packageName the package name of the application to get confirmation message for
+ * @param context the {@code Context} to retrieve system services
+ *
+ * @return the confirmation message, or {@code null} if no confirmation is needed
+ */
+ @Nullable
+ public CharSequence getConfirmationMessage(@NonNull String packageName,
+ @NonNull Context context) {
+ if (mBehavior != null) {
+ return mBehavior.getConfirmationMessage(this, packageName, context);
+ }
+ return null;
+ }
+
+ /**
+ * Check whether a package is qualified for this role, i.e. whether it contains all the required
+ * components (plus meeting some other general restrictions).
+ *
+ * @param packageName the package name to check for
+ * @param context the {@code Context} to retrieve system services
+ *
+ * @return whether the package is qualified for a role
+ */
+ public boolean isPackageQualified(@NonNull String packageName, @NonNull Context context) {
+ if (!isPackageMinimallyQualifiedAsUser(packageName, Process.myUserHandle(), context)) {
+ return false;
+ }
+
+ if (mBehavior != null) {
+ Boolean isPackageQualified = mBehavior.isPackageQualified(this, packageName, context);
+ if (isPackageQualified != null) {
+ return isPackageQualified;
+ }
+ }
+
+ int requiredComponentsSize = mRequiredComponents.size();
+ for (int i = 0; i < requiredComponentsSize; i++) {
+ RequiredComponent requiredComponent = mRequiredComponents.get(i);
+ if (requiredComponent.getQualifyingComponentForPackage(packageName, context) == null) {
+ Log.w(LOG_TAG, packageName + " not qualified for " + mName
+ + " due to missing " + requiredComponent);
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Get the list of packages that are qualified for this role, i.e. packages containing all the
+ * required components (plus meeting some other general restrictions).
+ *
+ * @param user the user to get the qualifying packages.
+ * @param context the {@code Context} to retrieve system services
+ *
+ * @return the list of packages that are qualified for this role
+ */
+ @NonNull
+ public List<String> getQualifyingPackagesAsUser(@NonNull UserHandle user,
+ @NonNull Context context) {
+ List<String> qualifyingPackages = null;
+
+ if (mBehavior != null) {
+ qualifyingPackages = mBehavior.getQualifyingPackagesAsUser(this, user, context);
+ }
+
+ if (qualifyingPackages == null) {
+ ArrayMap<String, Integer> packageComponentCountMap = new ArrayMap<>();
+ int requiredComponentsSize = mRequiredComponents.size();
+ for (int requiredComponentsIndex = 0; requiredComponentsIndex < requiredComponentsSize;
+ requiredComponentsIndex++) {
+ RequiredComponent requiredComponent = mRequiredComponents.get(
+ requiredComponentsIndex);
+
+ // This returns at most one component per package.
+ List<ComponentName> qualifyingComponents =
+ requiredComponent.getQualifyingComponentsAsUser(user, context);
+ int qualifyingComponentsSize = qualifyingComponents.size();
+ for (int qualifyingComponentsIndex = 0;
+ qualifyingComponentsIndex < qualifyingComponentsSize;
+ ++qualifyingComponentsIndex) {
+ ComponentName componentName = qualifyingComponents.get(
+ qualifyingComponentsIndex);
+
+ String packageName = componentName.getPackageName();
+ Integer componentCount = packageComponentCountMap.get(packageName);
+ packageComponentCountMap.put(packageName, componentCount == null ? 1
+ : componentCount + 1);
+ }
+ }
+
+ qualifyingPackages = new ArrayList<>();
+ int packageComponentCountMapSize = packageComponentCountMap.size();
+ for (int i = 0; i < packageComponentCountMapSize; i++) {
+ int componentCount = packageComponentCountMap.valueAt(i);
+
+ if (componentCount != requiredComponentsSize) {
+ continue;
+ }
+ String packageName = packageComponentCountMap.keyAt(i);
+ qualifyingPackages.add(packageName);
+ }
+ }
+
+ int qualifyingPackagesSize = qualifyingPackages.size();
+ for (int i = 0; i < qualifyingPackagesSize; ) {
+ String packageName = qualifyingPackages.get(i);
+
+ if (!isPackageMinimallyQualifiedAsUser(packageName, user, context)) {
+ qualifyingPackages.remove(i);
+ qualifyingPackagesSize--;
+ } else {
+ i++;
+ }
+ }
+
+ return qualifyingPackages;
+ }
+
+ private boolean isPackageMinimallyQualifiedAsUser(
+ @NonNull String packageName, @NonNull UserHandle user, @NonNull Context context) {
+ if (Objects.equals(packageName, PACKAGE_NAME_ANDROID_SYSTEM)) {
+ return false;
+ }
+
+ ApplicationInfo applicationInfo = PackageUtils.getApplicationInfoAsUser(packageName, user,
+ context);
+ if (applicationInfo == null) {
+ Log.w(LOG_TAG, "Cannot get ApplicationInfo for package: " + packageName + ", user: "
+ + user.getIdentifier());
+ return false;
+ }
+
+ if (mSystemOnly && (applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
+ return false;
+ }
+
+ if (!applicationInfo.enabled) {
+ return false;
+ }
+
+ if (applicationInfo.isInstantApp()) {
+ return false;
+ }
+
+ PackageManager userPackageManager = UserUtils.getUserContext(context, user)
+ .getPackageManager();
+ if (!userPackageManager.getDeclaredSharedLibraries(packageName, 0).isEmpty()) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Grant this role to an application.
+ *
+ * @param packageName the package name of the application to be granted this role to
+ * @param dontKillApp whether this application should not be killed despite changes
+ * @param overrideUserSetAndFixedPermissions whether to override user set and fixed flags on
+ * permissions
+ * @param context the {@code Context} to retrieve system services
+ */
+ public void grant(@NonNull String packageName, boolean dontKillApp,
+ boolean overrideUserSetAndFixedPermissions, @NonNull Context context) {
+ boolean permissionOrAppOpChanged = Permissions.grant(packageName, mPermissions, true,
+ overrideUserSetAndFixedPermissions, true, false, false, context);
+
+ int appOpsSize = mAppOps.size();
+ for (int i = 0; i < appOpsSize; i++) {
+ AppOp appOp = mAppOps.get(i);
+ appOp.grant(packageName, context);
+ }
+
+ int preferredActivitiesSize = mPreferredActivities.size();
+ for (int i = 0; i < preferredActivitiesSize; i++) {
+ PreferredActivity preferredActivity = mPreferredActivities.get(i);
+ preferredActivity.configure(packageName, context);
+ }
+
+ if (mBehavior != null) {
+ mBehavior.grant(this, packageName, context);
+ }
+
+ if (!dontKillApp && permissionOrAppOpChanged && !Permissions.isRuntimePermissionsSupported(
+ packageName, context)) {
+ killApp(packageName, context);
+ }
+ }
+
+ /**
+ * Revoke this role from an application.
+ *
+ * @param packageName the package name of the application to be granted this role to
+ * @param dontKillApp whether this application should not be killed despite changes
+ * @param overrideSystemFixedPermissions whether system-fixed permissions can be revoked
+ * @param context the {@code Context} to retrieve system services
+ */
+ public void revoke(@NonNull String packageName, boolean dontKillApp,
+ boolean overrideSystemFixedPermissions, @NonNull Context context) {
+ RoleManager roleManager = context.getSystemService(RoleManager.class);
+ List<String> otherRoleNames = roleManager.getHeldRolesFromController(packageName);
+ otherRoleNames.remove(mName);
+
+ 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(role.getPermissions());
+ }
+ boolean permissionOrAppOpChanged = Permissions.revoke(packageName, permissionsToRevoke,
+ true, false, overrideSystemFixedPermissions, context);
+
+ List<AppOp> appOpsToRevoke = new ArrayList<>(mAppOps);
+ for (int i = 0; i < otherRoleNamesSize; i++) {
+ String roleName = otherRoleNames.get(i);
+ Role role = roles.get(roleName);
+ appOpsToRevoke.removeAll(role.getAppOps());
+ }
+ int appOpsSize = appOpsToRevoke.size();
+ for (int i = 0; i < appOpsSize; i++) {
+ AppOp appOp = appOpsToRevoke.get(i);
+ appOp.revoke(packageName, context);
+ }
+
+ // TODO: Revoke preferred activities? But this is unnecessary for most roles using it as
+ // they have fallback holders. Moreover, clearing the preferred activity might result in
+ // other system components listening to preferred activity change get notified for the
+ // wrong thing when we are removing a exclusive role holder for adding another.
+
+ if (mBehavior != null) {
+ mBehavior.revoke(this, packageName, context);
+ }
+
+ if (!dontKillApp && permissionOrAppOpChanged) {
+ killApp(packageName, context);
+ }
+ }
+
+ private void killApp(@NonNull String packageName, @NonNull Context context) {
+ if (DEBUG) {
+ Log.i(LOG_TAG, "Killing " + packageName + " due to "
+ + Thread.currentThread().getStackTrace()[3].getMethodName()
+ + "(" + mName + ")");
+ }
+ ApplicationInfo applicationInfo = PackageUtils.getApplicationInfo(packageName, context);
+ if (applicationInfo == null) {
+ Log.w(LOG_TAG, "Cannot get ApplicationInfo for package: " + packageName);
+ return;
+ }
+ ActivityManager activityManager = context.getSystemService(ActivityManager.class);
+ activityManager.killUid(applicationInfo.uid, "Permission or app op changed");
+ }
+
+ /**
+ * Check whether the "none" role holder is selected.
+ *
+ * @param context the {@code Context} to retrieve system services
+ *
+ * @return whether the "none" role holder is selected
+ */
+ private boolean isNoneHolderSelected(@NonNull Context context) {
+ return Utils.getDeviceProtectedSharedPreferences(context).getBoolean(
+ Constants.IS_NONE_ROLE_HOLDER_SELECTED_KEY + mName, false);
+ }
+
+ /**
+ * Callback when a role holder (other than "none") was added.
+ *
+ * @param packageName the package name of the role holder
+ * @param user the user for the role
+ * @param context the {@code Context} to retrieve system services
+ */
+ public void onHolderAddedAsUser(@NonNull String packageName, @NonNull UserHandle user,
+ @NonNull Context context) {
+ Utils.getDeviceProtectedSharedPreferences(UserUtils.getUserContext(context, user)).edit()
+ .remove(Constants.IS_NONE_ROLE_HOLDER_SELECTED_KEY + mName)
+ .apply();
+ }
+
+ /**
+ * Callback when a role holder (other than "none") was selected in the UI and added
+ * successfully.
+ *
+ * @param packageName the package name of the role holder
+ * @param user the user for the role
+ * @param context the {@code Context} to retrieve system services
+ */
+ public void onHolderSelectedAsUser(@NonNull String packageName, @NonNull UserHandle user,
+ @NonNull Context context) {
+ if (mBehavior != null) {
+ mBehavior.onHolderSelectedAsUser(this, packageName, user, context);
+ }
+ }
+
+ /**
+ * Callback when a role holder changed.
+ *
+ * @param user the user for the role
+ * @param context the {@code Context} to retrieve system services
+ */
+ public void onHolderChangedAsUser(@NonNull UserHandle user,
+ @NonNull Context context) {
+ if (mBehavior != null) {
+ mBehavior.onHolderChangedAsUser(this, user, context);
+ }
+ }
+
+ /**
+ * Callback when the "none" role holder was selected in the UI.
+ *
+ * @param user the user for the role
+ * @param context the {@code Context} to retrieve system services
+ */
+ public void onNoneHolderSelectedAsUser(@NonNull UserHandle user, @NonNull Context context) {
+ Utils.getDeviceProtectedSharedPreferences(UserUtils.getUserContext(context, user)).edit()
+ .putBoolean(Constants.IS_NONE_ROLE_HOLDER_SELECTED_KEY + mName, true)
+ .apply();
+ }
+
+ @Override
+ public String toString() {
+ return "Role{"
+ + "mName='" + mName + '\''
+ + ", mBehavior=" + mBehavior
+ + ", mExclusive=" + mExclusive
+ + ", mLabelResource=" + mLabelResource
+ + ", mShowNone=" + mShowNone
+ + ", mSystemOnly=" + mSystemOnly
+ + ", mRequiredComponents=" + mRequiredComponents
+ + ", mPermissions=" + mPermissions
+ + ", mAppOps=" + mAppOps
+ + ", mPreferredActivities=" + mPreferredActivities
+ + '}';
+ }
+
+ @Override
+ public boolean equals(Object object) {
+ if (this == object) {
+ return true;
+ }
+ if (object == null || getClass() != object.getClass()) {
+ return false;
+ }
+ Role that = (Role) object;
+ return mExclusive == that.mExclusive
+ && mLabelResource == that.mLabelResource
+ && mShowNone == that.mShowNone
+ && mSystemOnly == that.mSystemOnly
+ && mName.equals(that.mName)
+ && Objects.equals(mBehavior, that.mBehavior)
+ && mRequiredComponents.equals(that.mRequiredComponents)
+ && mPermissions.equals(that.mPermissions)
+ && mAppOps.equals(that.mAppOps)
+ && mPreferredActivities.equals(that.mPreferredActivities);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mName, mBehavior, mExclusive, mLabelResource, mShowNone, mSystemOnly,
+ mRequiredComponents, mPermissions, mAppOps, mPreferredActivities);
+ }
+}
diff --git a/src/com/android/packageinstaller/role/model/RoleBehavior.java b/src/com/android/packageinstaller/role/model/RoleBehavior.java
new file mode 100644
index 0000000..4a30d00
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/RoleBehavior.java
@@ -0,0 +1,143 @@
+/*
+ * 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.packageinstaller.role.model;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.os.UserHandle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+
+import com.android.packageinstaller.role.ui.TwoTargetPreference;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Interface for behavior of a role.
+ */
+public interface RoleBehavior {
+
+ /**
+ * @see Role#isAvailableAsUser(UserHandle, Context)
+ */
+ default boolean isAvailableAsUser(@NonNull Role role, @NonNull UserHandle user,
+ @NonNull Context context) {
+ return true;
+ }
+
+ /**
+ * @see Role#getDefaultHolders(Context)
+ */
+ @NonNull
+ default List<String> getDefaultHolders(@NonNull Role role, @NonNull Context context) {
+ return Collections.emptyList();
+ }
+
+ /**
+ * @see Role#getFallbackHolder(Context)
+ */
+ @Nullable
+ default String getFallbackHolder(@NonNull Role role, @NonNull Context context) {
+ return null;
+ }
+
+ /**
+ * @see Role#isVisibleAsUser(UserHandle, Context)
+ */
+ default boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user,
+ @NonNull Context context) {
+ return true;
+ }
+
+ /**
+ * @see Role#getManageIntentAsUser(UserHandle, Context)
+ */
+ @Nullable
+ default Intent getManageIntentAsUser(@NonNull Role role, @NonNull UserHandle user,
+ @NonNull Context context) {
+ return null;
+ }
+
+ /**
+ * @see Role#preparePreferenceAsUser(TwoTargetPreference, UserHandle, Context)
+ */
+ default void preparePreferenceAsUser(@NonNull Role role,
+ @NonNull TwoTargetPreference preference, @NonNull UserHandle user,
+ @NonNull Context context) {}
+
+ /**
+ * @see Role#prepareApplicationPreferenceAsUser(Preference, ApplicationInfo, UserHandle,
+ * Context)
+ */
+ default void prepareApplicationPreferenceAsUser(@NonNull Role role,
+ @NonNull Preference preference, @NonNull ApplicationInfo applicationInfo,
+ @NonNull UserHandle user, @NonNull Context context) {}
+
+ /**
+ * @see Role#getConfirmationMessage(String, Context)
+ */
+ @Nullable
+ default CharSequence getConfirmationMessage(@NonNull Role role, @NonNull String packageName,
+ @NonNull Context context) {
+ return null;
+ }
+
+ /**
+ * @see Role#getQualifyingPackagesAsUser(UserHandle, Context)
+ */
+ @Nullable
+ default List<String> getQualifyingPackagesAsUser(@NonNull Role role, @NonNull UserHandle user,
+ @NonNull Context context) {
+ return null;
+ }
+
+ /**
+ * @see Role#isPackageQualified(String, Context)
+ */
+ @Nullable
+ default Boolean isPackageQualified(@NonNull Role role, @NonNull String packageName,
+ @NonNull Context context) {
+ return null;
+ }
+
+ /**
+ * @see Role#grant(String, boolean, boolean, boolean, Context)
+ */
+ default void grant(@NonNull Role role, @NonNull String packageName, @NonNull Context context) {}
+
+ /**
+ * @see Role#revoke(String, boolean, boolean, Context)
+ */
+ default void revoke(@NonNull Role role, @NonNull String packageName,
+ @NonNull Context context) {}
+
+ /**
+ * @see Role#onHolderSelectedAsUser(String, UserHandle, Context)
+ */
+ default void onHolderSelectedAsUser(@NonNull Role role, @NonNull String packageName,
+ @NonNull UserHandle user, @NonNull Context context) {}
+
+ /**
+ * @see Role#onHolderChangedAsUser(String, UserHandle, Context)
+ */
+ default void onHolderChangedAsUser(@NonNull Role role, @NonNull UserHandle user,
+ @NonNull Context context) {}
+}
diff --git a/src/com/android/packageinstaller/role/model/Roles.java b/src/com/android/packageinstaller/role/model/Roles.java
new file mode 100644
index 0000000..73baeba
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/Roles.java
@@ -0,0 +1,996 @@
+/*
+ * 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.packageinstaller.role.model;
+
+import android.app.AppOpsManager;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.res.XmlResourceParser;
+import android.os.Build;
+import android.util.ArrayMap;
+import android.util.Log;
+import android.util.Pair;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.permissioncontroller.R;
+
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * Provides access to all the {@link Role} definitions.
+ */
+public class Roles {
+
+ private static final String LOG_TAG = Roles.class.getSimpleName();
+
+ private static final boolean DEBUG = false;
+
+ private static final String TAG_ROLES = "roles";
+ private static final String TAG_PERMISSION_SET = "permission-set";
+ private static final String TAG_PERMISSION = "permission";
+ private static final String TAG_ROLE = "role";
+ private static final String TAG_REQUIRED_COMPONENTS = "required-components";
+ private static final String TAG_ACTIVITY = "activity";
+ private static final String TAG_PROVIDER = "provider";
+ private static final String TAG_RECEIVER = "receiver";
+ private static final String TAG_SERVICE = "service";
+ private static final String TAG_INTENT_FILTER = "intent-filter";
+ private static final String TAG_ACTION = "action";
+ private static final String TAG_CATEGORY = "category";
+ private static final String TAG_DATA = "data";
+ private static final String TAG_META_DATA = "meta-data";
+ private static final String TAG_PERMISSIONS = "permissions";
+ private static final String TAG_APP_OPS = "app-ops";
+ private static final String TAG_APP_OP = "app-op";
+ 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_BEHAVIOR = "behavior";
+ private static final String ATTRIBUTE_DESCRIPTION = "description";
+ private static final String ATTRIBUTE_EXCLUSIVE = "exclusive";
+ private static final String ATTRIBUTE_LABEL = "label";
+ 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_SHORT_LABEL = "shortLabel";
+ private static final String ATTRIBUTE_SHOW_NONE = "showNone";
+ private static final String ATTRIBUTE_SYSTEM_ONLY = "systemOnly";
+ 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";
+
+ private static final String MODE_NAME_ALLOWED = "allowed";
+ private static final String MODE_NAME_IGNORED = "ignored";
+ private static final String MODE_NAME_ERRORED = "errored";
+ private static final String MODE_NAME_DEFAULT = "default";
+ private static final String MODE_NAME_FOREGROUND = "foreground";
+ private static final ArrayMap<String, Integer> sModeNameToMode = new ArrayMap<>();
+ static {
+ sModeNameToMode.put(MODE_NAME_ALLOWED, AppOpsManager.MODE_ALLOWED);
+ sModeNameToMode.put(MODE_NAME_IGNORED, AppOpsManager.MODE_IGNORED);
+ sModeNameToMode.put(MODE_NAME_ERRORED, AppOpsManager.MODE_ERRORED);
+ sModeNameToMode.put(MODE_NAME_DEFAULT, AppOpsManager.MODE_DEFAULT);
+ sModeNameToMode.put(MODE_NAME_FOREGROUND, AppOpsManager.MODE_FOREGROUND);
+ }
+
+ @NonNull
+ private static final Object sLock = new Object();
+
+ @Nullable
+ private static ArrayMap<String, Role> sRoles;
+
+ private Roles() {}
+
+ /**
+ * Get the roles defined in {@code roles.xml}.
+ *
+ * @param context the {@code Context} used to read the XML resource
+ *
+ * @return a map from role name to {@link Role} instances
+ */
+ @NonNull
+ public static ArrayMap<String, Role> get(@NonNull Context context) {
+ synchronized (sLock) {
+ if (sRoles == null) {
+ sRoles = load(context);
+ }
+ return sRoles;
+ }
+ }
+
+ @NonNull
+ private static ArrayMap<String, Role> load(@NonNull Context context) {
+ try (XmlResourceParser parser = context.getResources().getXml(R.xml.roles)) {
+ Pair<ArrayMap<String, PermissionSet>, ArrayMap<String, Role>> xml = parseXml(parser);
+ if (xml == null) {
+ return new ArrayMap<>();
+ }
+ ArrayMap<String, PermissionSet> permissionSets = xml.first;
+ ArrayMap<String, Role> roles = xml.second;
+ validateParseResult(permissionSets, roles, context);
+ return roles;
+ } catch (XmlPullParserException | IOException e) {
+ throwOrLogMessage("Unable to parse roles.xml", e);
+ return new ArrayMap<>();
+ }
+ }
+
+ @Nullable
+ private static Pair<ArrayMap<String, PermissionSet>, ArrayMap<String, Role>> parseXml(
+ @NonNull XmlResourceParser parser) throws IOException, XmlPullParserException {
+ Pair<ArrayMap<String, PermissionSet>, ArrayMap<String, Role>> xml = null;
+
+ int type;
+ int depth;
+ int innerDepth = parser.getDepth() + 1;
+ while ((type = parser.next()) != XmlResourceParser.END_DOCUMENT
+ && ((depth = parser.getDepth()) >= innerDepth
+ || type != XmlResourceParser.END_TAG)) {
+ if (depth > innerDepth || type != XmlResourceParser.START_TAG) {
+ continue;
+ }
+
+ if (parser.getName().equals(TAG_ROLES)) {
+ if (xml != null) {
+ throwOrLogMessage("Duplicate <roles>");
+ skipCurrentTag(parser);
+ continue;
+ }
+ xml = parseRoles(parser);
+ } else {
+ throwOrLogForUnknownTag(parser);
+ skipCurrentTag(parser);
+ }
+ }
+
+ if (xml == null) {
+ throwOrLogMessage("Missing <roles>");
+ }
+ return xml;
+ }
+
+ @NonNull
+ private static Pair<ArrayMap<String, PermissionSet>, ArrayMap<String, Role>> parseRoles(
+ @NonNull XmlResourceParser parser) throws IOException, XmlPullParserException {
+ ArrayMap<String, PermissionSet> permissionSets = new ArrayMap<>();
+ ArrayMap<String, Role> roles = new ArrayMap<>();
+
+ int type;
+ int depth;
+ int innerDepth = parser.getDepth() + 1;
+ while ((type = parser.next()) != XmlResourceParser.END_DOCUMENT
+ && ((depth = parser.getDepth()) >= innerDepth
+ || type != XmlResourceParser.END_TAG)) {
+ if (depth > innerDepth || type != XmlResourceParser.START_TAG) {
+ continue;
+ }
+
+ switch (parser.getName()) {
+ case TAG_PERMISSION_SET: {
+ PermissionSet permissionSet = parsePermissionSet(parser);
+ if (permissionSet == null) {
+ continue;
+ }
+ checkDuplicateElement(permissionSet.getName(), permissionSets.keySet(),
+ "permission set");
+ permissionSets.put(permissionSet.getName(), permissionSet);
+ break;
+ }
+ case TAG_ROLE: {
+ Role role = parseRole(parser, permissionSets);
+ if (role == null) {
+ continue;
+ }
+ checkDuplicateElement(role.getName(), roles.keySet(), "role");
+ roles.put(role.getName(), role);
+ break;
+ }
+ default:
+ throwOrLogForUnknownTag(parser);
+ skipCurrentTag(parser);
+ }
+ }
+
+ return new Pair<>(permissionSets, roles);
+ }
+
+ @Nullable
+ private static PermissionSet parsePermissionSet(@NonNull XmlResourceParser parser)
+ throws IOException, XmlPullParserException {
+ String name = requireAttributeValue(parser, ATTRIBUTE_NAME, TAG_PERMISSION_SET);
+ if (name == null) {
+ skipCurrentTag(parser);
+ return null;
+ }
+
+ List<String> permissions = new ArrayList<>();
+
+ int type;
+ int depth;
+ int innerDepth = parser.getDepth() + 1;
+ while ((type = parser.next()) != XmlResourceParser.END_DOCUMENT
+ && ((depth = parser.getDepth()) >= innerDepth
+ || type != XmlResourceParser.END_TAG)) {
+ if (depth > innerDepth || type != XmlResourceParser.START_TAG) {
+ continue;
+ }
+
+ if (parser.getName().equals(TAG_PERMISSION)) {
+ String permission = requireAttributeValue(parser, ATTRIBUTE_NAME, TAG_PERMISSION);
+ if (permission == null) {
+ continue;
+ }
+ checkDuplicateElement(permission, permissions, "permission");
+ permissions.add(permission);
+ } else {
+ throwOrLogForUnknownTag(parser);
+ skipCurrentTag(parser);
+ }
+ }
+
+ return new PermissionSet(name, permissions);
+ }
+
+ @Nullable
+ private static Role parseRole(@NonNull XmlResourceParser parser,
+ @NonNull ArrayMap<String, PermissionSet> permissionSets) throws IOException,
+ XmlPullParserException {
+ String name = requireAttributeValue(parser, ATTRIBUTE_NAME, TAG_ROLE);
+ if (name == null) {
+ skipCurrentTag(parser);
+ return null;
+ }
+
+ String behaviorClassSimpleName = getAttributeValue(parser, ATTRIBUTE_BEHAVIOR);
+ RoleBehavior behavior;
+ if (behaviorClassSimpleName != null) {
+ String behaviorClassName = Roles.class.getPackage().getName() + '.'
+ + behaviorClassSimpleName;
+ try {
+ behavior = (RoleBehavior) Class.forName(behaviorClassName).newInstance();
+ } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) {
+ throwOrLogMessage("Unable to instantiate behavior: " + behaviorClassName, e);
+ skipCurrentTag(parser);
+ return null;
+ }
+ } else {
+ behavior = null;
+ }
+
+ Integer descriptionResource = requireAttributeResourceValue(parser, ATTRIBUTE_DESCRIPTION,
+ 0, TAG_ROLE);
+ if (descriptionResource == null) {
+ skipCurrentTag(parser);
+ return null;
+ }
+
+ Boolean exclusive = requireAttributeBooleanValue(parser, ATTRIBUTE_EXCLUSIVE, true,
+ TAG_ROLE);
+ if (exclusive == null) {
+ skipCurrentTag(parser);
+ return null;
+ }
+
+ Integer labelResource = requireAttributeResourceValue(parser, ATTRIBUTE_LABEL, 0, TAG_ROLE);
+ if (labelResource == null) {
+ skipCurrentTag(parser);
+ return null;
+ }
+
+ boolean requestable = getAttributeBooleanValue(parser, ATTRIBUTE_REQUESTABLE, true);
+ Integer requestDescriptionResource;
+ Integer requestTitleResource;
+ if (requestable) {
+ requestDescriptionResource = requireAttributeResourceValue(parser,
+ ATTRIBUTE_REQUEST_DESCRIPTION, 0, TAG_ROLE);
+ if (requestDescriptionResource == null) {
+ skipCurrentTag(parser);
+ return null;
+ }
+
+ requestTitleResource = requireAttributeResourceValue(parser, ATTRIBUTE_REQUEST_TITLE, 0,
+ TAG_ROLE);
+ if (requestTitleResource == null) {
+ skipCurrentTag(parser);
+ return null;
+ }
+ } else {
+ requestDescriptionResource = 0;
+ requestTitleResource = 0;
+ }
+
+ Integer shortLabelResource = requireAttributeResourceValue(parser, ATTRIBUTE_SHORT_LABEL, 0,
+ TAG_ROLE);
+ if (shortLabelResource == null) {
+ skipCurrentTag(parser);
+ return null;
+ }
+
+ boolean showNone = getAttributeBooleanValue(parser, ATTRIBUTE_SHOW_NONE, false);
+ if (showNone && !exclusive) {
+ throwOrLogMessage("showNone=\"true\" is invalid for a non-exclusive role: " + name);
+ skipCurrentTag(parser);
+ return null;
+ }
+
+ boolean systemOnly = getAttributeBooleanValue(parser, ATTRIBUTE_SYSTEM_ONLY, false);
+
+ List<RequiredComponent> requiredComponents = null;
+ List<String> permissions = null;
+ List<AppOp> appOps = null;
+ List<PreferredActivity> preferredActivities = null;
+
+ int type;
+ int depth;
+ int innerDepth = parser.getDepth() + 1;
+ while ((type = parser.next()) != XmlResourceParser.END_DOCUMENT
+ && ((depth = parser.getDepth()) >= innerDepth
+ || type != XmlResourceParser.END_TAG)) {
+ if (depth > innerDepth || type != XmlResourceParser.START_TAG) {
+ continue;
+ }
+
+ switch (parser.getName()) {
+ case TAG_REQUIRED_COMPONENTS:
+ if (requiredComponents != null) {
+ throwOrLogMessage("Duplicate <required-components> in role: " + name);
+ skipCurrentTag(parser);
+ continue;
+ }
+ requiredComponents = parseRequiredComponents(parser);
+ break;
+ case TAG_PERMISSIONS:
+ if (permissions != null) {
+ throwOrLogMessage("Duplicate <permissions> in role: " + name);
+ skipCurrentTag(parser);
+ continue;
+ }
+ permissions = parsePermissions(parser, permissionSets);
+ break;
+ case TAG_APP_OPS:
+ if (appOps != null) {
+ throwOrLogMessage("Duplicate <app-ops> in role: " + name);
+ skipCurrentTag(parser);
+ continue;
+ }
+ appOps = parseAppOps(parser);
+ break;
+ case TAG_PREFERRED_ACTIVITIES:
+ if (preferredActivities != null) {
+ throwOrLogMessage("Duplicate <preferred-activities> in role: " + name);
+ skipCurrentTag(parser);
+ continue;
+ }
+ preferredActivities = parsePreferredActivities(parser);
+ break;
+ default:
+ throwOrLogForUnknownTag(parser);
+ skipCurrentTag(parser);
+ }
+ }
+
+ if (requiredComponents == null) {
+ requiredComponents = Collections.emptyList();
+ }
+ if (permissions == null) {
+ permissions = Collections.emptyList();
+ }
+ if (appOps == null) {
+ appOps = Collections.emptyList();
+ }
+ if (preferredActivities == null) {
+ preferredActivities = Collections.emptyList();
+ }
+ return new Role(name, behavior, descriptionResource, exclusive, labelResource,
+ requestDescriptionResource, requestTitleResource, requestable, shortLabelResource,
+ showNone, systemOnly, requiredComponents, permissions, appOps, preferredActivities);
+ }
+
+ @NonNull
+ private static List<RequiredComponent> parseRequiredComponents(
+ @NonNull XmlResourceParser parser) throws IOException, XmlPullParserException {
+ List<RequiredComponent> requiredComponents = new ArrayList<>();
+
+ int type;
+ int depth;
+ int innerDepth = parser.getDepth() + 1;
+ while ((type = parser.next()) != XmlResourceParser.END_DOCUMENT
+ && ((depth = parser.getDepth()) >= innerDepth
+ || type != XmlResourceParser.END_TAG)) {
+ if (depth > innerDepth || type != XmlResourceParser.START_TAG) {
+ continue;
+ }
+
+ String name = parser.getName();
+ switch (name) {
+ case TAG_ACTIVITY:
+ case TAG_PROVIDER:
+ case TAG_RECEIVER:
+ case TAG_SERVICE: {
+ RequiredComponent requiredComponent = parseRequiredComponent(parser, name);
+ if (requiredComponent == null) {
+ continue;
+ }
+ checkDuplicateElement(requiredComponent, requiredComponents,
+ "require component");
+ requiredComponents.add(requiredComponent);
+ break;
+ }
+ default:
+ throwOrLogForUnknownTag(parser);
+ skipCurrentTag(parser);
+ }
+ }
+
+ return requiredComponents;
+ }
+
+ @Nullable
+ private static RequiredComponent parseRequiredComponent(@NonNull XmlResourceParser parser,
+ @NonNull String name) throws IOException, XmlPullParserException {
+ String permission = getAttributeValue(parser, ATTRIBUTE_PERMISSION);
+ IntentFilterData intentFilterData = null;
+ List<RequiredMetaData> metaData = new ArrayList<>();
+ List<String> debugMetaDataNames;
+ if (DEBUG) {
+ debugMetaDataNames = new ArrayList<>();
+ }
+
+ int type;
+ int depth;
+ int innerDepth = parser.getDepth() + 1;
+ while ((type = parser.next()) != XmlResourceParser.END_DOCUMENT
+ && ((depth = parser.getDepth()) >= innerDepth
+ || type != XmlResourceParser.END_TAG)) {
+ if (depth > innerDepth || type != XmlResourceParser.START_TAG) {
+ continue;
+ }
+
+ switch (parser.getName()) {
+ case TAG_INTENT_FILTER:
+ if (intentFilterData != null) {
+ throwOrLogMessage("Duplicate <intent-filter> in <" + name + ">");
+ skipCurrentTag(parser);
+ continue;
+ }
+ intentFilterData = parseIntentFilterData(parser);
+ break;
+ case TAG_META_DATA:
+ String metaDataName = requireAttributeValue(parser, ATTRIBUTE_NAME,
+ TAG_META_DATA);
+ if (metaDataName == null) {
+ continue;
+ }
+ if (DEBUG) {
+ checkDuplicateElement(metaDataName, debugMetaDataNames, "meta data");
+ }
+ // HACK: Only support boolean for now.
+ // TODO: Support android:resource and other types of android:value, maybe by
+ // switching to TypedArray and styleables.
+ Boolean metaDataValue = requireAttributeBooleanValue(parser, ATTRIBUTE_VALUE,
+ false, TAG_META_DATA);
+ if (metaDataValue == null) {
+ continue;
+ }
+ boolean metaDataOptional = getAttributeBooleanValue(parser, ATTRIBUTE_OPTIONAL,
+ false);
+ RequiredMetaData requiredMetaData = new RequiredMetaData(metaDataName,
+ metaDataValue, metaDataOptional);
+ metaData.add(requiredMetaData);
+ if (DEBUG) {
+ debugMetaDataNames.add(metaDataName);
+ }
+ break;
+ default:
+ throwOrLogForUnknownTag(parser);
+ skipCurrentTag(parser);
+ }
+ }
+
+ if (intentFilterData == null) {
+ throwOrLogMessage("Missing <intent-filter> in <" + name + ">");
+ return null;
+ }
+ switch (name) {
+ case TAG_ACTIVITY:
+ return new RequiredActivity(intentFilterData, permission, metaData);
+ case TAG_PROVIDER:
+ return new RequiredContentProvider(intentFilterData, permission, metaData);
+ case TAG_RECEIVER:
+ return new RequiredBroadcastReceiver(intentFilterData, permission, metaData);
+ case TAG_SERVICE:
+ return new RequiredService(intentFilterData, permission, metaData);
+ default:
+ throwOrLogMessage("Unknown tag <" + name + ">");
+ return null;
+ }
+ }
+
+ @Nullable
+ private static IntentFilterData parseIntentFilterData(@NonNull XmlResourceParser parser)
+ throws IOException, XmlPullParserException {
+ String action = null;
+ List<String> categories = new ArrayList<>();
+ boolean hasData = false;
+ String dataScheme = null;
+ String dataType = null;
+
+ int type;
+ int depth;
+ int innerDepth = parser.getDepth() + 1;
+ while ((type = parser.next()) != XmlResourceParser.END_DOCUMENT
+ && ((depth = parser.getDepth()) >= innerDepth
+ || type != XmlResourceParser.END_TAG)) {
+ if (depth > innerDepth || type != XmlResourceParser.START_TAG) {
+ continue;
+ }
+
+ switch (parser.getName()) {
+ case TAG_ACTION:
+ if (action != null) {
+ throwOrLogMessage("Duplicate <action> in <intent-filter>");
+ skipCurrentTag(parser);
+ continue;
+ }
+ action = requireAttributeValue(parser, ATTRIBUTE_NAME, TAG_ACTION);
+ break;
+ case TAG_CATEGORY: {
+ String category = requireAttributeValue(parser, ATTRIBUTE_NAME, TAG_CATEGORY);
+ if (category == null) {
+ continue;
+ }
+ validateIntentFilterCategory(category);
+ checkDuplicateElement(category, categories, "category");
+ categories.add(category);
+ break;
+ }
+ case TAG_DATA:
+ if (!hasData) {
+ hasData = true;
+ } else {
+ throwOrLogMessage("Duplicate <data> in <intent-filter>");
+ skipCurrentTag(parser);
+ continue;
+ }
+ dataScheme = getAttributeValue(parser, ATTRIBUTE_SCHEME);
+ dataType = getAttributeValue(parser, ATTRIBUTE_MIME_TYPE);
+ if (dataType != null) {
+ validateIntentFilterDataType(dataType);
+ }
+ break;
+ default:
+ throwOrLogForUnknownTag(parser);
+ skipCurrentTag(parser);
+ }
+ }
+
+ if (action == null) {
+ throwOrLogMessage("Missing <action> in <intent-filter>");
+ return null;
+ }
+ return new IntentFilterData(action, categories, dataScheme, dataType);
+ }
+
+ private static void validateIntentFilterCategory(@NonNull String category) {
+ if (Objects.equals(category, Intent.CATEGORY_DEFAULT)) {
+ throwOrLogMessage("<category> should not include " + Intent.CATEGORY_DEFAULT);
+ }
+ }
+
+ /**
+ * Validates the data type with the same logic in {@link
+ * android.content.IntentFilter#addDataType(String)} to prevent the {@code
+ * MalformedMimeTypeException}.
+ */
+ private static void validateIntentFilterDataType(@NonNull String type) {
+ int slashIndex = type.indexOf('/');
+ if (slashIndex <= 0 || type.length() < slashIndex + 2) {
+ throwOrLogMessage("Invalid attribute \"mimeType\" value on <data>: " + type);
+ }
+ }
+
+ @NonNull
+ private static List<String> parsePermissions(@NonNull XmlResourceParser parser,
+ @NonNull ArrayMap<String, PermissionSet> permissionSets) throws IOException,
+ XmlPullParserException {
+ List<String> permissions = new ArrayList<>();
+
+ int type;
+ int depth;
+ int innerDepth = parser.getDepth() + 1;
+ while ((type = parser.next()) != XmlResourceParser.END_DOCUMENT
+ && ((depth = parser.getDepth()) >= innerDepth
+ || type != XmlResourceParser.END_TAG)) {
+ if (depth > innerDepth || type != XmlResourceParser.START_TAG) {
+ continue;
+ }
+
+ switch (parser.getName()) {
+ case TAG_PERMISSION_SET: {
+ String permissionSetName = requireAttributeValue(parser, ATTRIBUTE_NAME,
+ TAG_PERMISSION_SET);
+ if (permissionSetName == null) {
+ continue;
+ }
+ if (!permissionSets.containsKey(permissionSetName)) {
+ throwOrLogMessage("Unknown permission set:" + permissionSetName);
+ continue;
+ }
+ PermissionSet permissionSet = permissionSets.get(permissionSetName);
+ // We do allow intersection between permission sets.
+ permissions.addAll(permissionSet.getPermissions());
+ break;
+ }
+ case TAG_PERMISSION: {
+ String permission = requireAttributeValue(parser, ATTRIBUTE_NAME,
+ TAG_PERMISSION);
+ if (permission == null) {
+ continue;
+ }
+ checkDuplicateElement(permission, permissions, "permission");
+ permissions.add(permission);
+ break;
+ }
+ default:
+ throwOrLogForUnknownTag(parser);
+ skipCurrentTag(parser);
+ }
+ }
+
+ return permissions;
+ }
+
+ @NonNull
+ private static List<AppOp> parseAppOps(@NonNull XmlResourceParser parser) throws IOException,
+ XmlPullParserException {
+ List<String> appOpNames = new ArrayList<>();
+ List<AppOp> appOps = new ArrayList<>();
+
+ int type;
+ int depth;
+ int innerDepth = parser.getDepth() + 1;
+ while ((type = parser.next()) != XmlResourceParser.END_DOCUMENT
+ && ((depth = parser.getDepth()) >= innerDepth
+ || type != XmlResourceParser.END_TAG)) {
+ if (depth > innerDepth || type != XmlResourceParser.START_TAG) {
+ continue;
+ }
+
+ if (parser.getName().equals(TAG_APP_OP)) {
+ String name = requireAttributeValue(parser, ATTRIBUTE_NAME, TAG_APP_OP);
+ if (name == null) {
+ continue;
+ }
+ validateAppOpName(name);
+ checkDuplicateElement(name, appOpNames, "app op");
+ appOpNames.add(name);
+ Integer maxTargetSdkVersion = getAttributeIntValue(parser,
+ ATTRIBUTE_MAX_TARGET_SDK_VERSION, Integer.MIN_VALUE);
+ if (maxTargetSdkVersion == Integer.MIN_VALUE) {
+ maxTargetSdkVersion = null;
+ }
+ if (maxTargetSdkVersion != null && maxTargetSdkVersion < Build.VERSION_CODES.BASE) {
+ throwOrLogMessage("Invalid value for \"maxTargetSdkVersion\": "
+ + maxTargetSdkVersion);
+ }
+ String modeName = requireAttributeValue(parser, ATTRIBUTE_MODE, TAG_APP_OP);
+ if (modeName == null) {
+ continue;
+ }
+ int modeIndex = sModeNameToMode.indexOfKey(modeName);
+ if (modeIndex < 0) {
+ throwOrLogMessage("Unknown value for \"mode\" on <app-op>: " + modeName);
+ continue;
+ }
+ int mode = sModeNameToMode.valueAt(modeIndex);
+ AppOp appOp = new AppOp(name, maxTargetSdkVersion, mode);
+ appOps.add(appOp);
+ } else {
+ throwOrLogForUnknownTag(parser);
+ skipCurrentTag(parser);
+ }
+ }
+
+ return appOps;
+ }
+
+ private static void validateAppOpName(@NonNull String appOpName) {
+ if (DEBUG) {
+ // Throws IllegalArgumentException if unknown.
+ AppOpsManager.opToPermission(appOpName);
+ }
+ }
+
+ @NonNull
+ private static List<PreferredActivity> parsePreferredActivities(
+ @NonNull XmlResourceParser parser) throws IOException, XmlPullParserException {
+ List<PreferredActivity> preferredActivities = new ArrayList<>();
+
+ int type;
+ int depth;
+ int innerDepth = parser.getDepth() + 1;
+ while ((type = parser.next()) != XmlResourceParser.END_DOCUMENT
+ && ((depth = parser.getDepth()) >= innerDepth
+ || type != XmlResourceParser.END_TAG)) {
+ if (depth > innerDepth || type != XmlResourceParser.START_TAG) {
+ continue;
+ }
+
+ if (parser.getName().equals(TAG_PREFERRED_ACTIVITY)) {
+ PreferredActivity preferredActivity = parsePreferredActivity(parser);
+ if (preferredActivity == null) {
+ continue;
+ }
+ checkDuplicateElement(preferredActivity, preferredActivities,
+ "preferred activity");
+ preferredActivities.add(preferredActivity);
+ } else {
+ throwOrLogForUnknownTag(parser);
+ skipCurrentTag(parser);
+ }
+ }
+
+ return preferredActivities;
+ }
+
+ @Nullable
+ private static PreferredActivity parsePreferredActivity(@NonNull XmlResourceParser parser)
+ throws IOException, XmlPullParserException {
+ RequiredActivity activity = null;
+ List<IntentFilterData> intentFilterDatas = new ArrayList<>();
+
+ int type;
+ int depth;
+ int innerDepth = parser.getDepth() + 1;
+ while ((type = parser.next()) != XmlResourceParser.END_DOCUMENT
+ && ((depth = parser.getDepth()) >= innerDepth
+ || type != XmlResourceParser.END_TAG)) {
+ if (depth > innerDepth || type != XmlResourceParser.START_TAG) {
+ continue;
+ }
+
+ switch (parser.getName()) {
+ case TAG_ACTIVITY:
+ if (activity != null) {
+ throwOrLogMessage("Duplicate <activity> in <preferred-activity>");
+ skipCurrentTag(parser);
+ continue;
+ }
+ activity = (RequiredActivity) parseRequiredComponent(parser, TAG_ACTIVITY);
+ break;
+ case TAG_INTENT_FILTER:
+ IntentFilterData intentFilterData = parseIntentFilterData(parser);
+ if (intentFilterData == null) {
+ continue;
+ }
+ checkDuplicateElement(intentFilterData, intentFilterDatas,
+ "intent filter");
+ if (intentFilterData.getDataType() != null) {
+ throwOrLogMessage("mimeType in <data> is not supported when setting a"
+ + " preferred activity");
+ }
+ intentFilterDatas.add(intentFilterData);
+ break;
+ default:
+ throwOrLogForUnknownTag(parser);
+ skipCurrentTag(parser);
+ }
+ }
+
+ if (activity == null) {
+ throwOrLogMessage("Missing <activity> in <preferred-activity>");
+ return null;
+ }
+ if (intentFilterDatas.isEmpty()) {
+ throwOrLogMessage("Missing <intent-filter> in <preferred-activity>");
+ return null;
+ }
+ return new PreferredActivity(activity, intentFilterDatas);
+ }
+
+ private static void skipCurrentTag(@NonNull XmlResourceParser parser)
+ throws XmlPullParserException, IOException {
+ int type;
+ int innerDepth = parser.getDepth() + 1;
+ while ((type = parser.next()) != XmlResourceParser.END_DOCUMENT
+ && (parser.getDepth() >= innerDepth || type != XmlResourceParser.END_TAG)) {
+ // Do nothing
+ }
+ }
+
+ @Nullable
+ private static String getAttributeValue(@NonNull XmlResourceParser parser,
+ @NonNull String name) {
+ return parser.getAttributeValue(null, name);
+ }
+
+ @Nullable
+ private static String requireAttributeValue(@NonNull XmlResourceParser parser,
+ @NonNull String name, @NonNull String tagName) {
+ String value = getAttributeValue(parser, name);
+ if (value == null) {
+ throwOrLogMessage("Missing attribute \"" + name + "\" on <" + tagName + ">");
+ }
+ return value;
+ }
+
+ private static boolean getAttributeBooleanValue(@NonNull XmlResourceParser parser,
+ @NonNull String name, boolean defaultValue) {
+ return parser.getAttributeBooleanValue(null, name, defaultValue);
+ }
+
+ @Nullable
+ private static Boolean requireAttributeBooleanValue(@NonNull XmlResourceParser parser,
+ @NonNull String name, boolean defaultValue, @NonNull String tagName) {
+ String value = requireAttributeValue(parser, name, tagName);
+ if (value == null) {
+ return null;
+ }
+ return getAttributeBooleanValue(parser, name, defaultValue);
+ }
+
+ private static int getAttributeIntValue(@NonNull XmlResourceParser parser,
+ @NonNull String name, int defaultValue) {
+ return parser.getAttributeIntValue(null, name, defaultValue);
+ }
+
+ private static int getAttributeResourceValue(@NonNull XmlResourceParser parser,
+ @NonNull String name, int defaultValue) {
+ return parser.getAttributeResourceValue(null, name, defaultValue);
+ }
+
+ @Nullable
+ private static Integer requireAttributeResourceValue(@NonNull XmlResourceParser parser,
+ @NonNull String name, int defaultValue, @NonNull String tagName) {
+ String value = requireAttributeValue(parser, name, tagName);
+ if (value == null) {
+ return null;
+ }
+ return getAttributeResourceValue(parser, name, defaultValue);
+ }
+
+ private static void throwOrLogMessage(String message) {
+ if (DEBUG) {
+ throw new IllegalArgumentException(message);
+ } else {
+ Log.wtf(LOG_TAG, message);
+ }
+ }
+
+ private static void throwOrLogMessage(String message, Throwable cause) {
+ if (DEBUG) {
+ throw new IllegalArgumentException(message, cause);
+ } else {
+ Log.wtf(LOG_TAG, message, cause);
+ }
+ }
+
+ private static void throwOrLogForUnknownTag(@NonNull XmlResourceParser parser) {
+ throwOrLogMessage("Unknown tag: " + parser.getName());
+ }
+
+ private static <T> void checkDuplicateElement(@NonNull T element,
+ @NonNull Collection<T> collection, @NonNull String name) {
+ if (DEBUG) {
+ if (collection.contains(element)) {
+ throw new IllegalArgumentException("Duplicate " + name + ": " + element);
+ }
+ }
+ }
+
+ /**
+ * Validates the permission names with {@code PackageManager} and ensures that all app ops with
+ * a permission in {@code AppOpsManager} have declared that permission in its role and ensures
+ * that all preferred activities are listed in the required components.
+ */
+ private static void validateParseResult(@NonNull ArrayMap<String, PermissionSet> permissionSets,
+ @NonNull ArrayMap<String, Role> roles, @NonNull Context context) {
+ if (!DEBUG) {
+ return;
+ }
+
+ int permissionSetsSize = permissionSets.size();
+ for (int permissionSetsIndex = 0; permissionSetsIndex < permissionSetsSize;
+ permissionSetsIndex++) {
+ PermissionSet permissionSet = permissionSets.valueAt(permissionSetsIndex);
+
+ List<String> permissions = permissionSet.getPermissions();
+ int permissionsSize = permissions.size();
+ for (int permissionsIndex = 0; permissionsIndex < permissionsSize; permissionsIndex++) {
+ String permission = permissions.get(permissionsIndex);
+
+ validatePermission(permission, context);
+ }
+ }
+
+ int rolesSize = roles.size();
+ for (int rolesIndex = 0; rolesIndex < rolesSize; rolesIndex++) {
+ Role role = roles.valueAt(rolesIndex);
+
+ List<RequiredComponent> requiredComponents = role.getRequiredComponents();
+ int requiredComponentsSize = requiredComponents.size();
+ for (int requiredComponentsIndex = 0; requiredComponentsIndex < requiredComponentsSize;
+ requiredComponentsIndex++) {
+ RequiredComponent requiredComponent = requiredComponents.get(
+ requiredComponentsIndex);
+
+ String permission = requiredComponent.getPermission();
+ if (permission != null) {
+ validatePermission(permission, context);
+ }
+ }
+
+ List<String> permissions = role.getPermissions();
+ int permissionsSize = permissions.size();
+ for (int i = 0; i < permissionsSize; i++) {
+ String permission = permissions.get(i);
+
+ validatePermission(permission, context);
+ }
+
+ List<AppOp> appOps = role.getAppOps();
+ int appOpsSize = appOps.size();
+ for (int i = 0; i < appOpsSize; i++) {
+ AppOp appOp = appOps.get(i);
+
+ String permission = AppOpsManager.opToPermission(appOp.getName());
+ if (permission != null) {
+ throw new IllegalArgumentException("App op has an associated permission: "
+ + appOp.getName());
+ }
+ }
+
+ List<PreferredActivity> preferredActivities = role.getPreferredActivities();
+ int preferredActivitiesSize = preferredActivities.size();
+ for (int preferredActivitiesIndex = 0;
+ preferredActivitiesIndex < preferredActivitiesSize;
+ preferredActivitiesIndex++) {
+ PreferredActivity preferredActivity = preferredActivities.get(
+ preferredActivitiesIndex);
+
+ if (!role.getRequiredComponents().contains(preferredActivity.getActivity())) {
+ throw new IllegalArgumentException("<activity> of <preferred-activity> not"
+ + " required in <required-components>, role: " + role.getName()
+ + ", preferred activity: " + preferredActivity);
+ }
+ }
+ }
+ }
+
+ private static void validatePermission(@NonNull String permission, @NonNull Context context) {
+ PackageManager packageManager = context.getPackageManager();
+ try {
+ packageManager.getPermissionInfo(permission, 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ throw new IllegalArgumentException("Unknown permission: " + permission, e);
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/role/model/SmsRoleBehavior.java b/src/com/android/packageinstaller/role/model/SmsRoleBehavior.java
new file mode 100644
index 0000000..ed971ee
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/SmsRoleBehavior.java
@@ -0,0 +1,96 @@
+/*
+ * 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.packageinstaller.role.model;
+
+import android.content.Context;
+import android.os.Process;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.telephony.TelephonyManager;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.packageinstaller.permission.utils.CollectionUtils;
+import com.android.packageinstaller.role.utils.UserUtils;
+import com.android.permissioncontroller.R;
+
+import java.util.List;
+
+/**
+ * Class for behavior of the SMS role.
+ *
+ * @see com.android.settings.applications.DefaultAppSettings
+ * @see com.android.settings.applications.defaultapps.DefaultSmsPreferenceController
+ * @see com.android.settings.applications.defaultapps.DefaultSmsPicker
+ */
+public class SmsRoleBehavior implements RoleBehavior {
+
+ @Override
+ public boolean isAvailableAsUser(@NonNull Role role, @NonNull UserHandle user,
+ @NonNull Context context) {
+ if (UserUtils.isWorkProfile(user, context)) {
+ return false;
+ }
+ UserManager userManager = context.getSystemService(UserManager.class);
+ if (userManager.isRestrictedProfile(user)) {
+ return false;
+ }
+ TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
+ if (!telephonyManager.isSmsCapable()
+ // Ensure sms role is present on car despite !isSmsCapable config (b/132972702)
+ && getDefaultHolder(role, context) == null) {
+ return false;
+ }
+ return true;
+ }
+
+ @Nullable
+ @Override
+ public String getFallbackHolder(@NonNull Role role, @NonNull Context context) {
+ String defaultPackageName = getDefaultHolder(role, context);
+ if (defaultPackageName != null) {
+ return defaultPackageName;
+ }
+
+ // TODO(b/132916161): This was the previous behavior, however this may allow any third-party
+ // app to suddenly become the default SMS app and get the permissions, if no system default
+ // SMS app is available.
+ List<String> qualifyingPackageNames = role.getQualifyingPackagesAsUser(
+ Process.myUserHandle(), context);
+ return CollectionUtils.firstOrNull(qualifyingPackageNames);
+ }
+
+ @Nullable
+ private static String getDefaultHolder(@NonNull Role role, @NonNull Context context) {
+ return ExclusiveDefaultHolderMixin.getDefaultHolder(role, "config_defaultSms", context);
+ }
+
+ @Nullable
+ @Override
+ public CharSequence getConfirmationMessage(@NonNull Role role, @NonNull String packageName,
+ @NonNull Context context) {
+ return EncryptionUnawareConfirmationMixin.getConfirmationMessage(role, packageName,
+ context);
+ }
+
+ @Override
+ public boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user,
+ @NonNull Context context) {
+ return context.getResources().getBoolean(R.bool.config_showSmsRole);
+ }
+}
diff --git a/src/com/android/packageinstaller/role/model/UserDeniedManager.java b/src/com/android/packageinstaller/role/model/UserDeniedManager.java
new file mode 100644
index 0000000..51de314
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/UserDeniedManager.java
@@ -0,0 +1,160 @@
+/*
+ * 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.packageinstaller.role.model;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.util.ArraySet;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.packageinstaller.Constants;
+
+import java.util.Collections;
+import java.util.Set;
+
+/**
+ * Manages user denied status for requesting roles.
+ */
+public class UserDeniedManager {
+
+ @Nullable
+ private static UserDeniedManager sInstance;
+
+ private final SharedPreferences mPreferences;
+
+ /**
+ * Get a singleton instance of this class
+ *
+ * @param context the context for retrieving shared preferences.
+ *
+ * @return the singleton instance of this class
+ */
+ @NonNull
+ public static UserDeniedManager getInstance(@NonNull Context context) {
+ if (sInstance == null) {
+ sInstance = new UserDeniedManager(context);
+ }
+ return sInstance;
+ }
+
+ private UserDeniedManager(@NonNull Context context) {
+ context = context.getApplicationContext();
+ mPreferences = context.getSharedPreferences(Constants.REQUEST_ROLE_USER_DENIED_FILE,
+ Context.MODE_PRIVATE);
+ }
+
+ /**
+ * Check whether an application has been denied for a role once.
+ *
+ * @param roleName the name of the role
+ * @param packageName the package name of the application
+ *
+ * @return whether the application has been denied for the role once
+ */
+ public boolean isDeniedOnce(@NonNull String roleName, @NonNull String packageName) {
+ return isDenied(roleName, packageName, false);
+ }
+
+ /**
+ * Remember that an application has been denied for a role once.
+ *
+ * @param roleName the name of the role
+ * @param packageName the package name of the application
+ */
+ public void setDeniedOnce(@NonNull String roleName, @NonNull String packageName) {
+ setDenied(roleName, packageName, false, true);
+ }
+
+ /**
+ * Check whether an application is always denied for a role.
+ *
+ * @param roleName the name of the role
+ * @param packageName the package name of the application
+ *
+ * @return whether the application is always denied for the role
+ */
+ public boolean isDeniedAlways(@NonNull String roleName, @NonNull String packageName) {
+ return isDenied(roleName, packageName, true);
+ }
+
+ /**
+ * Remember that an application is always denied for a role.
+ *
+ * @param roleName the name of the role
+ * @param packageName the package name of the application
+ */
+ public void setDeniedAlways(@NonNull String roleName, @NonNull String packageName) {
+ setDenied(roleName, packageName, true, true);
+ }
+
+ /**
+ * Forget about whether an application is denied for a role, once or always.
+ *
+ * @param roleName the name of the role
+ * @param packageName the package name of the application
+ */
+ public void clearDenied(@NonNull String roleName, @NonNull String packageName) {
+ setDenied(roleName, packageName, false, false);
+ setDenied(roleName, packageName, true, false);
+ }
+
+ /**
+ * Forget about whether an application is denied for any of the roles, once or always.
+ *
+ * @param packageName the package name of the application
+ */
+ public void clearPackageDenied(@NonNull String packageName) {
+ mPreferences.edit()
+ .remove(getKey(packageName, false))
+ .remove(getKey(packageName, true))
+ .apply();
+ }
+
+ @NonNull
+ private static String getKey(@NonNull String packageName, boolean always) {
+ return (always ? Constants.REQUEST_ROLE_USER_DENIED_ALWAYS_KEY_PREFIX
+ : Constants.REQUEST_ROLE_USER_DENIED_ONCE_KEY_PREFIX) + packageName;
+ }
+
+ private boolean isDenied(@NonNull String roleName, @NonNull String packageName,
+ boolean always) {
+ String key = getKey(packageName, always);
+ return mPreferences.getStringSet(key, Collections.emptySet()).contains(roleName);
+ }
+
+ private void setDenied(@NonNull String roleName, @NonNull String packageName, boolean always,
+ boolean denied) {
+ String key = getKey(packageName, always);
+ Set<String> roleNames = mPreferences.getStringSet(key, Collections.emptySet());
+ if (roleNames.contains(roleName) == denied) {
+ return;
+ }
+ roleNames = new ArraySet<>(roleNames);
+ if (denied) {
+ roleNames.add(roleName);
+ } else {
+ roleNames.remove(roleName);
+ }
+ if (roleName.isEmpty()) {
+ mPreferences.edit().remove(key).apply();
+ } else {
+ mPreferences.edit().putStringSet(key, roleNames).apply();
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/role/model/VisibilityMixin.java b/src/com/android/packageinstaller/role/model/VisibilityMixin.java
new file mode 100644
index 0000000..4ba9287
--- /dev/null
+++ b/src/com/android/packageinstaller/role/model/VisibilityMixin.java
@@ -0,0 +1,53 @@
+/*
+ * 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.packageinstaller.role.model;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.os.UserHandle;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+
+/**
+ * Mixin for {@link RoleBehavior#getDefaultHolders(Role, Context)} that returns a single default
+ * role holder from the corresponding string resource.
+ */
+public class VisibilityMixin {
+
+ private static final String LOG_TAG = VisibilityMixin.class.getSimpleName();
+
+ private VisibilityMixin() {}
+
+ /**
+ * @see Role#isVisibleAsUser(UserHandle, Context)
+ */
+ public static boolean isVisible(@NonNull String resourceName, @NonNull Context context) {
+ Resources resources = context.getResources();
+ int resourceId = resources.getIdentifier(resourceName, "bool", "android");
+ if (resourceId == 0) {
+ Log.w(LOG_TAG, "Cannot find resource for visibility: " + resourceName);
+ return true;
+ }
+ try {
+ return resources.getBoolean(resourceId);
+ } catch (Resources.NotFoundException e) {
+ Log.w(LOG_TAG, "Cannot get resource for visibility: " + resourceName, e);
+ return true;
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/role/service/ClearUserDeniedReceiver.java b/src/com/android/packageinstaller/role/service/ClearUserDeniedReceiver.java
new file mode 100644
index 0000000..76c2b2d
--- /dev/null
+++ b/src/com/android/packageinstaller/role/service/ClearUserDeniedReceiver.java
@@ -0,0 +1,45 @@
+/*
+ * 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.packageinstaller.role.service;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.annotation.NonNull;
+
+import com.android.packageinstaller.role.model.UserDeniedManager;
+
+import java.util.Objects;
+
+/**
+ * {@link BroadcastReceiver} to clear user denied state when a package is cleared data or fully
+ * removed.
+ */
+public class ClearUserDeniedReceiver extends BroadcastReceiver {
+
+ @Override
+ public void onReceive(@NonNull Context context, @NonNull Intent intent) {
+ String action = intent.getAction();
+ if (!(Objects.equals(action, Intent.ACTION_PACKAGE_DATA_CLEARED)
+ || Objects.equals(action, Intent.ACTION_PACKAGE_FULLY_REMOVED))) {
+ return;
+ }
+ String packageName = intent.getData().getSchemeSpecificPart();
+ UserDeniedManager.getInstance(context).clearPackageDenied(packageName);
+ }
+}
diff --git a/src/com/android/packageinstaller/role/service/RoleControllerServiceImpl.java b/src/com/android/packageinstaller/role/service/RoleControllerServiceImpl.java
new file mode 100644
index 0000000..1ba0e0f
--- /dev/null
+++ b/src/com/android/packageinstaller/role/service/RoleControllerServiceImpl.java
@@ -0,0 +1,436 @@
+/*
+ * 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.packageinstaller.role.service;
+
+import android.app.role.RoleControllerService;
+import android.app.role.RoleManager;
+import android.content.pm.ApplicationInfo;
+import android.os.Process;
+import android.os.UserHandle;
+import android.util.ArrayMap;
+import android.util.ArraySet;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.WorkerThread;
+
+import com.android.packageinstaller.permission.utils.CollectionUtils;
+import com.android.packageinstaller.permission.utils.Utils;
+import com.android.packageinstaller.role.model.Role;
+import com.android.packageinstaller.role.model.Roles;
+import com.android.packageinstaller.role.utils.PackageUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * Implementation of {@link RoleControllerService}.
+ */
+public class RoleControllerServiceImpl extends RoleControllerService {
+
+ private static final String LOG_TAG = RoleControllerServiceImpl.class.getSimpleName();
+
+ private static final boolean DEBUG = false;
+
+ private RoleManager mRoleManager;
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+
+ mRoleManager = getSystemService(RoleManager.class);
+ }
+
+ @Override
+ @WorkerThread
+ public boolean onGrantDefaultRoles() {
+ if (DEBUG) {
+ Log.i(LOG_TAG, "Granting default roles, user: " + UserHandle.myUserId());
+ }
+
+ // Gather the available roles for current user.
+ ArrayMap<String, Role> roleMap = Roles.get(this);
+ List<Role> roles = new ArrayList<>();
+ List<String> roleNames = new ArrayList<>();
+ ArraySet<String> addedRoleNames = new ArraySet<>();
+ int roleMapSize = roleMap.size();
+ for (int i = 0; i < roleMapSize; i++) {
+ Role role = roleMap.valueAt(i);
+
+ if (!role.isAvailable(this)) {
+ continue;
+ }
+ roles.add(role);
+ String roleName = role.getName();
+ roleNames.add(roleName);
+ if (!mRoleManager.isRoleAvailable(roleName)) {
+ addedRoleNames.add(roleName);
+ }
+ }
+
+ // TODO: Clean up holders of roles that will be removed.
+
+ // Set the available role names in RoleManager.
+ mRoleManager.setRoleNamesFromController(roleNames);
+
+ // Go through the holders of all roles.
+ int rolesSize = roles.size();
+ for (int rolesIndex = 0; rolesIndex < rolesSize; rolesIndex++) {
+ Role role = roles.get(rolesIndex);
+
+ String roleName = role.getName();
+
+ // For each of the current holders, check if it is still qualified, redo grant if so, or
+ // remove it otherwise.
+ List<String> currentPackageNames = mRoleManager.getRoleHolders(roleName);
+ int currentPackageNamesSize = currentPackageNames.size();
+ for (int currentPackageNamesIndex = 0;
+ currentPackageNamesIndex < currentPackageNamesSize;
+ currentPackageNamesIndex++) {
+ String packageName = currentPackageNames.get(currentPackageNamesIndex);
+
+ if (role.isPackageQualified(packageName, this)) {
+ // We should not override user set or fixed permissions because we are only
+ // redoing the grant here. Otherwise, user won't be able to revoke permissions
+ // granted by role.
+ addRoleHolderInternal(role, packageName, false, false, true);
+ } else {
+ Log.i(LOG_TAG, "Removing package that no longer qualifies for the role,"
+ + " package: " + packageName + ", role: " + roleName);
+ removeRoleHolderInternal(role, packageName, false);
+ }
+ }
+
+ // 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();
+ if (currentPackageNamesSize == 0) {
+ List<String> packageNamesToAdd = null;
+ if (addedRoleNames.contains(roleName)) {
+ packageNamesToAdd = role.getDefaultHolders(this);
+ }
+ if (packageNamesToAdd == null || packageNamesToAdd.isEmpty()) {
+ packageNamesToAdd = CollectionUtils.singletonOrEmpty(role.getFallbackHolder(
+ this));
+ }
+
+ int packageNamesToAddSize = packageNamesToAdd.size();
+ for (int packageNamesToAddIndex = 0; packageNamesToAddIndex < packageNamesToAddSize;
+ packageNamesToAddIndex++) {
+ String packageName = packageNamesToAdd.get(packageNamesToAddIndex);
+
+ if (!role.isPackageQualified(packageName, this)) {
+ Log.e(LOG_TAG, "Default/fallback role holder package doesn't qualify for"
+ + " the role, package: " + packageName + ", role: " + roleName);
+ continue;
+ }
+ Log.i(LOG_TAG, "Adding package as default/fallback role holder, package: "
+ + packageName + ", role: " + roleName);
+ // TODO: If we don't override user here, user might end up missing incoming
+ // 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, true);
+ }
+ }
+
+ // Ensure that an exclusive role has at most one holder.
+ currentPackageNames = mRoleManager.getRoleHolders(roleName);
+ currentPackageNamesSize = currentPackageNames.size();
+ if (role.isExclusive() && currentPackageNamesSize > 1) {
+ Log.w(LOG_TAG, "Multiple packages holding an exclusive role, role: "
+ + roleName);
+ // No good way to determine who should be the only one, just keep the first one.
+ for (int currentPackageNamesIndex = 1;
+ currentPackageNamesIndex < currentPackageNamesSize;
+ currentPackageNamesIndex++) {
+ String packageName = currentPackageNames.get(currentPackageNamesIndex);
+
+ Log.i(LOG_TAG, "Removing extraneous package for an exclusive role, package: "
+ + packageName + ", role: " + roleName);
+ removeRoleHolderInternal(role, packageName, false);
+ }
+ }
+ }
+
+ // Load data on this thread instead of background.
+ // TODO: Move out of this thread
+ Utils.updateUserSensitive(getApplication(), Process.myUserHandle());
+
+ return true;
+ }
+
+ @Override
+ @WorkerThread
+ public boolean onAddRoleHolder(@NonNull String roleName, @NonNull String packageName,
+ int flags) {
+ if (!checkFlags(flags, RoleManager.MANAGE_HOLDERS_FLAG_DONT_KILL_APP)) {
+ return false;
+ }
+
+ Role role = Roles.get(this).get(roleName);
+ if (role == null) {
+ Log.e(LOG_TAG, "Unknown role: " + roleName);
+ return false;
+ }
+ if (!role.isAvailable(this)) {
+ Log.e(LOG_TAG, "Role is unavailable: " + roleName);
+ return false;
+ }
+
+ if (!role.isPackageQualified(packageName, this)) {
+ Log.e(LOG_TAG, "Package does not qualify for the role, package: " + packageName
+ + ", role: " + roleName);
+ return false;
+ }
+
+ boolean added = false;
+ if (role.isExclusive()) {
+ List<String> currentPackageNames = mRoleManager.getRoleHolders(roleName);
+ int currentPackageNamesSize = currentPackageNames.size();
+ for (int i = 0; i < currentPackageNamesSize; i++) {
+ String currentPackageName = currentPackageNames.get(i);
+
+ if (Objects.equals(currentPackageName, packageName)) {
+ Log.i(LOG_TAG, "Package is already a role holder, package: " + packageName
+ + ", role: " + roleName);
+ added = true;
+ continue;
+ }
+
+ boolean removed = removeRoleHolderInternal(role, currentPackageName, false);
+ if (!removed) {
+ // TODO: Clean up?
+ return false;
+ }
+ }
+ }
+
+ boolean dontKillApp = hasFlag(flags, RoleManager.MANAGE_HOLDERS_FLAG_DONT_KILL_APP);
+ added = addRoleHolderInternal(role, packageName, dontKillApp, true, added);
+ if (!added) {
+ return false;
+ }
+
+ role.onHolderAddedAsUser(packageName, Process.myUserHandle(), this);
+ role.onHolderChangedAsUser(Process.myUserHandle(), this);
+
+ return true;
+ }
+
+ @Override
+ @WorkerThread
+ public boolean onRemoveRoleHolder(@NonNull String roleName, @NonNull String packageName,
+ int flags) {
+ if (!checkFlags(flags, RoleManager.MANAGE_HOLDERS_FLAG_DONT_KILL_APP)) {
+ return false;
+ }
+
+ Role role = Roles.get(this).get(roleName);
+ if (role == null) {
+ Log.e(LOG_TAG, "Unknown role: " + roleName);
+ return false;
+ }
+ if (!role.isAvailable(this)) {
+ Log.e(LOG_TAG, "Role is unavailable: " + roleName);
+ return false;
+ }
+
+ boolean dontKillApp = hasFlag(flags, RoleManager.MANAGE_HOLDERS_FLAG_DONT_KILL_APP);
+ boolean removed = removeRoleHolderInternal(role, packageName, dontKillApp);
+ if (!removed) {
+ return false;
+ }
+
+ // TODO: Should we consider this successful regardless?
+ boolean fallbackSuccessful = addFallbackRoleHolderMaybe(role);
+ if (!fallbackSuccessful) {
+ return false;
+ }
+
+ role.onHolderChangedAsUser(Process.myUserHandle(), this);
+
+ return true;
+ }
+
+ @Override
+ @WorkerThread
+ public boolean onClearRoleHolders(@NonNull String roleName, int flags) {
+ if (!checkFlags(flags, RoleManager.MANAGE_HOLDERS_FLAG_DONT_KILL_APP)) {
+ return false;
+ }
+
+ Role role = Roles.get(this).get(roleName);
+ if (role == null) {
+ Log.e(LOG_TAG, "Unknown role: " + roleName);
+ return false;
+ }
+ if (!role.isAvailable(this)) {
+ Log.e(LOG_TAG, "Role is unavailable: " + roleName);
+ return false;
+ }
+
+ boolean dontKillApp = hasFlag(flags, RoleManager.MANAGE_HOLDERS_FLAG_DONT_KILL_APP);
+ boolean cleared = clearRoleHoldersInternal(role, dontKillApp);
+ if (!cleared) {
+ return false;
+ }
+
+ // TODO: Should we consider this successful regardless?
+ boolean fallbackSuccessful = addFallbackRoleHolderMaybe(role);
+ if (!fallbackSuccessful) {
+ return false;
+ }
+
+ role.onHolderChangedAsUser(Process.myUserHandle(), this);
+
+ return true;
+ }
+
+ @WorkerThread
+ private boolean addRoleHolderInternal(@NonNull Role role, @NonNull String packageName,
+ boolean overrideUserSetAndFixedPermissions) {
+ return addRoleHolderInternal(role, packageName, false, overrideUserSetAndFixedPermissions,
+ false);
+ }
+
+ @WorkerThread
+ private boolean addRoleHolderInternal(@NonNull Role role, @NonNull String packageName,
+ boolean dontKillApp, boolean overrideUserSetAndFixedPermissions, boolean added) {
+ role.grant(packageName, dontKillApp, overrideUserSetAndFixedPermissions, this);
+
+ String roleName = role.getName();
+ if (!added) {
+ added = mRoleManager.addRoleHolderFromController(roleName, packageName);
+ }
+ if (!added) {
+ Log.e(LOG_TAG, "Failed to add role holder in RoleManager, package: " + packageName
+ + ", role: " + roleName);
+ }
+ return added;
+ }
+
+ @WorkerThread
+ private boolean removeRoleHolderInternal(@NonNull Role role, @NonNull String packageName,
+ boolean dontKillApp) {
+ ApplicationInfo applicationInfo = PackageUtils.getApplicationInfo(packageName, this);
+ if (applicationInfo == null) {
+ Log.w(LOG_TAG, "Cannot get ApplicationInfo for package: " + packageName);
+ }
+
+ if (applicationInfo != null) {
+ role.revoke(packageName, dontKillApp, false, this);
+ }
+
+ String roleName = role.getName();
+ boolean removed = mRoleManager.removeRoleHolderFromController(roleName, packageName);
+ if (!removed) {
+ Log.e(LOG_TAG, "Failed to remove role holder in RoleManager," + " package: "
+ + packageName + ", role: " + roleName);
+ }
+ return removed;
+ }
+
+ @WorkerThread
+ private boolean clearRoleHoldersInternal(@NonNull Role role, boolean dontKillApp) {
+ String roleName = role.getName();
+ List<String> packageNames = mRoleManager.getRoleHolders(roleName);
+ boolean cleared = true;
+
+ int packageNamesSize = packageNames.size();
+ for (int i = 0; i < packageNamesSize; i++) {
+ String packageName = packageNames.get(i);
+ boolean removed = removeRoleHolderInternal(role, packageName, dontKillApp);
+ if (!removed) {
+ cleared = false;
+ }
+ }
+
+ if (!cleared) {
+ Log.e(LOG_TAG, "Failed to clear role holders, role: " + roleName);
+ }
+ return cleared;
+ }
+
+ @WorkerThread
+ private boolean addFallbackRoleHolderMaybe(@NonNull Role role) {
+ String roleName = role.getName();
+ List<String> currentPackageNames = mRoleManager.getRoleHolders(roleName);
+ if (!currentPackageNames.isEmpty()) {
+ return true;
+ }
+
+ String fallbackPackageName = role.getFallbackHolder(this);
+ if (fallbackPackageName == null) {
+ return true;
+ }
+
+ if (!role.isPackageQualified(fallbackPackageName, this)) {
+ Log.e(LOG_TAG, "Fallback role holder package doesn't qualify for the role, package: "
+ + fallbackPackageName + ", role: " + roleName);
+ return false;
+ }
+
+ Log.i(LOG_TAG, "Adding package as fallback role holder, package: " + fallbackPackageName
+ + ", role: " + roleName);
+ // TODO: If we don't override user here, user might end up missing incoming
+ // 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, true);
+ }
+
+ @Override
+ public boolean onIsApplicationQualifiedForRole(@NonNull String roleName,
+ @NonNull String packageName) {
+ Role role = Roles.get(this).get(roleName);
+ if (role == null) {
+ return false;
+ }
+ if (!role.isAvailable(this)) {
+ return false;
+ }
+ return role.isPackageQualified(packageName, this);
+ }
+
+ @Override
+ public boolean onIsRoleVisible(@NonNull String roleName) {
+ Role role = Roles.get(this).get(roleName);
+ if (role == null) {
+ return false;
+ }
+ if (!role.isAvailable(this)) {
+ return false;
+ }
+ return role.isVisibleAsUser(Process.myUserHandle(), this);
+ }
+
+ private static boolean checkFlags(int flags, int allowedFlags) {
+ if ((flags & allowedFlags) != flags) {
+ Log.e(LOG_TAG, "flags is invalid, flags: 0x" + Integer.toHexString(flags)
+ + ", allowed flags: 0x" + Integer.toHexString(allowedFlags));
+ return false;
+ }
+ return true;
+ }
+
+ private static boolean hasFlag(int flags, int flag) {
+ return (flags & flag) == flag;
+ }
+}
diff --git a/src/com/android/packageinstaller/role/service/RoleSearchIndexablesProvider.java b/src/com/android/packageinstaller/role/service/RoleSearchIndexablesProvider.java
new file mode 100644
index 0000000..4d5341c
--- /dev/null
+++ b/src/com/android/packageinstaller/role/service/RoleSearchIndexablesProvider.java
@@ -0,0 +1,79 @@
+/*
+ * 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.packageinstaller.role.service;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.os.Binder;
+import android.provider.SearchIndexablesContract;
+import android.util.ArrayMap;
+
+import androidx.annotation.Nullable;
+
+import com.android.packageinstaller.permission.service.BaseSearchIndexablesProvider;
+import com.android.packageinstaller.role.model.Role;
+import com.android.packageinstaller.role.model.Roles;
+import com.android.permissioncontroller.R;
+
+/**
+ * {@link android.provider.SearchIndexablesProvider} for roles.
+ */
+public class RoleSearchIndexablesProvider extends BaseSearchIndexablesProvider {
+
+ public static final String ACTION_MANAGE_DEFAULT_APP =
+ "com.android.permissioncontroller.settingssearch.action.MANAGE_DEFAULT_APP";
+
+ public static final String ACTION_MANAGE_SPECIAL_APP_ACCESS =
+ "com.android.permissioncontroller.settingssearch.action.MANAGE_SPECIAL_APP_ACCESS";
+
+ @Nullable
+ @Override
+ public Cursor queryRawData(@Nullable String[] projection) {
+ MatrixCursor cursor = new MatrixCursor(SearchIndexablesContract.INDEXABLES_RAW_COLUMNS);
+ Context context = getContext();
+ ArrayMap<String, Role> roles = Roles.get(context);
+ int rolesSize = roles.size();
+ for (int i = 0; i < rolesSize; i++) {
+ Role role = roles.valueAt(i);
+
+ long token = Binder.clearCallingIdentity();
+ try {
+ if (!role.isAvailable(context) || !role.isVisible(context)) {
+ continue;
+ }
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+
+ String label = context.getString(role.getLabelResource());
+ boolean isExclusive = role.isExclusive();
+ cursor.newRow()
+ .add(SearchIndexablesContract.RawData.COLUMN_RANK, 0)
+ .add(SearchIndexablesContract.RawData.COLUMN_TITLE, label)
+ .add(SearchIndexablesContract.RawData.COLUMN_KEYWORDS, label + ", "
+ + getContext().getString(isExclusive
+ ? R.string.default_app_search_keyword
+ : R.string.special_app_access_search_keyword))
+ .add(SearchIndexablesContract.RawData.COLUMN_KEY, createRawDataKey(
+ role.getName(), context))
+ .add(SearchIndexablesContract.RawData.COLUMN_INTENT_ACTION, isExclusive
+ ? ACTION_MANAGE_DEFAULT_APP : ACTION_MANAGE_SPECIAL_APP_ACCESS);
+ }
+ return cursor;
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/CheckableLinearLayout.java b/src/com/android/packageinstaller/role/ui/CheckableLinearLayout.java
new file mode 100644
index 0000000..507bef7
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/CheckableLinearLayout.java
@@ -0,0 +1,112 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Checkable;
+import android.widget.LinearLayout;
+
+import androidx.annotation.AttrRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StyleRes;
+
+/**
+ * This is a simple wrapper for {@link android.widget.LinearLayout} that implements the
+ * {@link android.widget.Checkable} interface by keeping an internal 'checked' state flag.
+ * <p>
+ * This can be used as the root view for a custom list item layout for
+ * {@link android.widget.AbsListView} elements with a
+ * {@link android.widget.AbsListView#setChoiceMode(int) choiceMode} set.
+ */
+public class CheckableLinearLayout extends LinearLayout implements Checkable {
+
+ private static final int[] CHECKED_STATE_SET = { android.R.attr.state_checked };
+
+ private boolean mChecked = false;
+
+ public CheckableLinearLayout(@NonNull Context context) {
+ super(context);
+ }
+
+ public CheckableLinearLayout(@NonNull Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public CheckableLinearLayout(@NonNull Context context, @Nullable AttributeSet attrs,
+ @AttrRes int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ }
+
+ public CheckableLinearLayout(@NonNull Context context, @Nullable AttributeSet attrs,
+ @AttrRes int defStyleAttr, @StyleRes int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ }
+
+ @Override
+ public boolean isChecked() {
+ return mChecked;
+ }
+
+ @Override
+ public void setChecked(boolean checked) {
+ if (mChecked == checked) {
+ return;
+ }
+
+ mChecked = checked;
+ refreshDrawableState();
+ updateChildrenChecked();
+ }
+
+ @Override
+ public void toggle() {
+ setChecked(!mChecked);
+ }
+
+ @NonNull
+ @Override
+ public int[] onCreateDrawableState(int extraSpace) {
+ int[] state = super.onCreateDrawableState(extraSpace + 1);
+ if (isChecked()) {
+ mergeDrawableStates(state, CHECKED_STATE_SET);
+ }
+ return state;
+ }
+
+ private void updateChildrenChecked() {
+ updateChildrenChecked(this, mChecked);
+ }
+
+ // We call setChecked() on checkable children so that accessibility can get the correct state.
+ private static void updateChildrenChecked(@NonNull ViewGroup viewGroup, boolean checked) {
+ int count = viewGroup.getChildCount();
+ for (int i = 0; i < count; i++) {
+ View child = viewGroup.getChildAt(i);
+ if (child.isDuplicateParentStateEnabled()) {
+ if (child instanceof Checkable) {
+ ((Checkable) child).setChecked(checked);
+ } else if (child instanceof ViewGroup) {
+ updateChildrenChecked((ViewGroup) child, checked);
+ }
+ }
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/DefaultAppActivity.java b/src/com/android/packageinstaller/role/ui/DefaultAppActivity.java
new file mode 100644
index 0000000..8c905f5
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/DefaultAppActivity.java
@@ -0,0 +1,112 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+import android.content.Context;
+import android.content.Intent;
+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.packageinstaller.DeviceUtils;
+import com.android.packageinstaller.role.model.Role;
+import com.android.packageinstaller.role.model.Roles;
+import com.android.packageinstaller.role.ui.auto.AutoDefaultAppFragment;
+import com.android.packageinstaller.role.ui.handheld.HandheldDefaultAppFragment;
+import com.android.permissioncontroller.R;
+
+/**
+ * Activity for a default app.
+ */
+public class DefaultAppActivity extends FragmentActivity {
+
+ private static final String LOG_TAG = DefaultAppActivity.class.getSimpleName();
+
+ /**
+ * Create an intent for starting this activity.
+ *
+ * @param roleName the name of the role for the default app
+ * @param user the user for the default app
+ * @param context the context to create the intent
+ *
+ * @return an intent to start this activity
+ */
+ @NonNull
+ public static Intent createIntent(@NonNull String roleName, @NonNull UserHandle user,
+ @NonNull Context context) {
+ return new Intent(context, DefaultAppActivity.class)
+ .putExtra(Intent.EXTRA_ROLE_NAME, roleName)
+ .putExtra(Intent.EXTRA_USER, user);
+ }
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ if (DeviceUtils.isAuto(this)) {
+ // Automotive relies on a different theme. Apply before calling super so that
+ // 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);
+
+ Intent intent = getIntent();
+ String roleName = intent.getStringExtra(Intent.EXTRA_ROLE_NAME);
+ UserHandle user = intent.getParcelableExtra(Intent.EXTRA_USER);
+ // External callers might omit the user.
+ if (user == null) {
+ user = Process.myUserHandle();
+ }
+
+ Role role = Roles.get(this).get(roleName);
+ if (role == null) {
+ Log.e(LOG_TAG, "Unknown role: " + roleName);
+ finish();
+ return;
+ }
+ if (!role.isAvailableAsUser(user, this)) {
+ Log.e(LOG_TAG, "Role is unavailable: " + roleName);
+ finish();
+ return;
+ }
+ if (!role.isVisibleAsUser(user, this)) {
+ Log.e(LOG_TAG, "Role is invisible: " + roleName);
+ finish();
+ return;
+ }
+
+ if (savedInstanceState == null) {
+ Fragment fragment;
+ if (DeviceUtils.isAuto(this)) {
+ fragment = AutoDefaultAppFragment.newInstance(roleName, user);
+ } else {
+ fragment = HandheldDefaultAppFragment.newInstance(roleName, user);
+ }
+ getSupportFragmentManager().beginTransaction()
+ .add(android.R.id.content, fragment)
+ .commit();
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/DefaultAppChildFragment.java b/src/com/android/packageinstaller/role/ui/DefaultAppChildFragment.java
new file mode 100644
index 0000000..1ceb8a3
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/DefaultAppChildFragment.java
@@ -0,0 +1,297 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.util.ArrayMap;
+import android.util.Pair;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.content.res.AppCompatResources;
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.ViewModelProviders;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.preference.TwoStatePreference;
+
+import com.android.packageinstaller.permission.utils.Utils;
+import com.android.packageinstaller.role.model.Role;
+import com.android.packageinstaller.role.model.Roles;
+import com.android.permissioncontroller.R;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 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
+ */
+public class DefaultAppChildFragment<PF extends PreferenceFragmentCompat
+ & DefaultAppChildFragment.Parent> extends Fragment
+ implements DefaultAppConfirmationDialogFragment.Listener,
+ Preference.OnPreferenceClickListener {
+
+ private static final String PREFERENCE_KEY_NONE = DefaultAppChildFragment.class.getName()
+ + ".preference.NONE";
+
+ private static final String PREFERENCE_KEY_DESCRIPTION = DefaultAppChildFragment.class.getName()
+ + ".preference.DESCRIPTION";
+
+ private String mRoleName;
+
+ private UserHandle mUser;
+
+ private Role mRole;
+
+ private DefaultAppViewModel mViewModel;
+
+ /**
+ * 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 DefaultAppChildFragment newInstance(@NonNull String roleName,
+ @NonNull UserHandle user) {
+ DefaultAppChildFragment fragment = new DefaultAppChildFragment();
+ 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);
+
+ PF preferenceFragment = requirePreferenceFragment();
+ Activity activity = requireActivity();
+ mRole = Roles.get(activity).get(mRoleName);
+ preferenceFragment.setTitle(getString(mRole.getLabelResource()));
+
+ mViewModel = ViewModelProviders.of(this, new DefaultAppViewModel.Factory(mRole, mUser,
+ activity.getApplication())).get(DefaultAppViewModel.class);
+ mViewModel.getRoleLiveData().observe(this, this::onRoleChanged);
+ mViewModel.getManageRoleHolderStateLiveData().observe(this,
+ this::onManageRoleHolderStateChanged);
+ }
+
+ private void onRoleChanged(
+ @NonNull List<Pair<ApplicationInfo, Boolean>> qualifyingApplications) {
+ PF preferenceFragment = requirePreferenceFragment();
+ PreferenceManager preferenceManager = preferenceFragment.getPreferenceManager();
+ Context context = preferenceManager.getContext();
+
+ PreferenceScreen preferenceScreen = preferenceFragment.getPreferenceScreen();
+ Preference oldDescriptionPreference = null;
+ ArrayMap<String, Preference> oldPreferences = new ArrayMap<>();
+ if (preferenceScreen == null) {
+ preferenceScreen = preferenceManager.createPreferenceScreen(context);
+ preferenceFragment.setPreferenceScreen(preferenceScreen);
+ } else {
+ oldDescriptionPreference = preferenceScreen.findPreference(PREFERENCE_KEY_DESCRIPTION);
+ if (oldDescriptionPreference != null) {
+ preferenceScreen.removePreference(oldDescriptionPreference);
+ oldDescriptionPreference.setOrder(Preference.DEFAULT_ORDER);
+ }
+ for (int i = preferenceScreen.getPreferenceCount() - 1; i >= 0; --i) {
+ Preference preference = preferenceScreen.getPreference(i);
+
+ preferenceScreen.removePreference(preference);
+ preference.setOrder(Preference.DEFAULT_ORDER);
+ oldPreferences.put(preference.getKey(), preference);
+ }
+ }
+
+ if (mRole.shouldShowNone()) {
+ Drawable icon = AppCompatResources.getDrawable(context, R.drawable.ic_remove_circle);
+ String title = getString(R.string.default_app_none);
+ boolean noHolderApplication = !hasHolderApplication(qualifyingApplications);
+ addPreference(PREFERENCE_KEY_NONE, icon, title, noHolderApplication, null,
+ oldPreferences, preferenceScreen, context);
+ }
+
+ int qualifyingApplicationsSize = qualifyingApplications.size();
+ for (int i = 0; i < qualifyingApplicationsSize; i++) {
+ Pair<ApplicationInfo, Boolean> qualifyingApplication = qualifyingApplications.get(i);
+ ApplicationInfo qualifyingApplicationInfo = qualifyingApplication.first;
+ boolean isHolderApplication = qualifyingApplication.second;
+
+ String key = qualifyingApplicationInfo.packageName;
+ Drawable icon = Utils.getBadgedIcon(context, qualifyingApplicationInfo);
+ String title = Utils.getFullAppLabel(qualifyingApplicationInfo, context);
+ addPreference(key, icon, title, isHolderApplication, qualifyingApplicationInfo,
+ oldPreferences, preferenceScreen, context);
+ }
+
+ Preference descriptionPreference = oldDescriptionPreference;
+ if (descriptionPreference == null) {
+ descriptionPreference = preferenceFragment.createFooterPreference(context);
+ descriptionPreference.setKey(PREFERENCE_KEY_DESCRIPTION);
+ descriptionPreference.setSummary(mRole.getDescriptionResource());
+ }
+ preferenceScreen.addPreference(descriptionPreference);
+
+ preferenceFragment.onPreferenceScreenChanged();
+ }
+
+ private static boolean hasHolderApplication(
+ @NonNull List<Pair<ApplicationInfo, Boolean>> qualifyingApplications) {
+ int qualifyingApplicationsSize = qualifyingApplications.size();
+ for (int i = 0; i < qualifyingApplicationsSize; i++) {
+ Pair<ApplicationInfo, Boolean> qualifyingApplication = qualifyingApplications.get(i);
+ boolean isHolderApplication = qualifyingApplication.second;
+
+ if (isHolderApplication) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private void addPreference(@NonNull String key, @NonNull Drawable icon,
+ @NonNull CharSequence title, boolean checked, @Nullable ApplicationInfo applicationInfo,
+ @NonNull ArrayMap<String, Preference> oldPreferences,
+ @NonNull PreferenceScreen preferenceScreen, @NonNull Context context) {
+ TwoStatePreference preference = (TwoStatePreference) oldPreferences.get(key);
+ if (preference == null) {
+ preference = requirePreferenceFragment().createApplicationPreference(context);
+ preference.setKey(key);
+ preference.setIcon(icon);
+ preference.setTitle(title);
+ preference.setPersistent(false);
+ preference.setOnPreferenceChangeListener((preference2, newValue) -> false);
+ preference.setOnPreferenceClickListener(this);
+ }
+
+ preference.setChecked(checked);
+ if (applicationInfo != null) {
+ mRole.prepareApplicationPreferenceAsUser(preference, applicationInfo, mUser, context);
+ }
+
+ preferenceScreen.addPreference(preference);
+ }
+
+ private void onManageRoleHolderStateChanged(int state) {
+ ManageRoleHolderStateLiveData liveData = mViewModel.getManageRoleHolderStateLiveData();
+ switch (state) {
+ case ManageRoleHolderStateLiveData.STATE_SUCCESS:
+ String packageName = liveData.getLastPackageName();
+ if (packageName != null) {
+ mRole.onHolderSelectedAsUser(packageName, liveData.getLastUser(),
+ requireContext());
+ }
+ liveData.resetState();
+ break;
+ case ManageRoleHolderStateLiveData.STATE_FAILURE:
+ liveData.resetState();
+ break;
+ }
+ }
+
+ @Override
+ public boolean onPreferenceClick(@NonNull Preference preference) {
+ String key = preference.getKey();
+ if (Objects.equals(key, PREFERENCE_KEY_NONE)) {
+ mViewModel.setNoneDefaultApp();
+ } else {
+ String packageName = key;
+ CharSequence confirmationMessage = mRole.getConfirmationMessage(packageName,
+ requireContext());
+ if (confirmationMessage != null) {
+ DefaultAppConfirmationDialogFragment.show(packageName, confirmationMessage, this);
+ } else {
+ setDefaultApp(packageName);
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public void setDefaultApp(@NonNull String packageName) {
+ mViewModel.setDefaultApp(packageName);
+ }
+
+ @NonNull
+ private PF requirePreferenceFragment() {
+ //noinspection unchecked
+ return (PF) 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);
+
+ /**
+ * Create a new preference for an application.
+ *
+ * @param context the {@code Context} to use when creating the preference.
+ *
+ * @return a new preference for an application
+ */
+ @NonNull
+ TwoStatePreference createApplicationPreference(@NonNull Context context);
+
+ /**
+ * Create a new preference for the footer.
+ *
+ * @param context the {@code Context} to use when creating the preference.
+ *
+ * @return a new preference for the footer
+ */
+ @NonNull
+ Preference createFooterPreference(@NonNull Context context);
+
+ /**
+ * Callback when changes have been made to the {@link PreferenceScreen} of the parent
+ * {@link PreferenceFragmentCompat}.
+ */
+ void onPreferenceScreenChanged();
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/DefaultAppConfirmationDialogFragment.java b/src/com/android/packageinstaller/role/ui/DefaultAppConfirmationDialogFragment.java
new file mode 100644
index 0000000..69bd71f
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/DefaultAppConfirmationDialogFragment.java
@@ -0,0 +1,108 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.Intent;
+import android.os.Bundle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+
+/**
+ * {@link DialogFragment} for confirmation before setting a default app.
+ */
+public class DefaultAppConfirmationDialogFragment extends DialogFragment {
+
+ private String mPackageName;
+ private CharSequence mMessage;
+
+ /**
+ * Create a new instance of this fragment.
+ *
+ * @param packageName the package name of the application
+ * @param message the confirmation message
+ *
+ * @return a new instance of this fragment
+ *
+ * @see #show(String, CharSequence, Fragment)
+ */
+ @NonNull
+ public static DefaultAppConfirmationDialogFragment newInstance(@NonNull String packageName,
+ @NonNull CharSequence message) {
+ DefaultAppConfirmationDialogFragment fragment = new DefaultAppConfirmationDialogFragment();
+ Bundle arguments = new Bundle();
+ arguments.putString(Intent.EXTRA_PACKAGE_NAME, packageName);
+ arguments.putCharSequence(Intent.EXTRA_TEXT, message);
+ fragment.setArguments(arguments);
+ return fragment;
+ }
+
+ /**
+ * Show a new instance of this fragment.
+ *
+ * @param packageName the package name of the application
+ * @param message the confirmation message
+ * @param fragment the parent fragment
+ *
+ * @see #newInstance(String, CharSequence)
+ */
+ public static void show(@NonNull String packageName, @NonNull CharSequence message,
+ @NonNull Fragment fragment) {
+ newInstance(packageName, message).show(fragment.getChildFragmentManager(), null);
+ }
+
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ Bundle arguments = getArguments();
+ mPackageName = arguments.getString(Intent.EXTRA_PACKAGE_NAME);
+ mMessage = arguments.getCharSequence(Intent.EXTRA_TEXT);
+ }
+
+ @NonNull
+ @Override
+ public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+ return new AlertDialog.Builder(requireContext(), getTheme())
+ .setMessage(mMessage)
+ .setPositiveButton(android.R.string.ok, (dialog, which) -> onOk())
+ .setNegativeButton(android.R.string.cancel, null)
+ .create();
+ }
+
+ private void onOk() {
+ Listener listener = (Listener) getParentFragment();
+ listener.setDefaultApp(mPackageName);
+ }
+
+ /**
+ * Listener for {@link DefaultAppConfirmationDialogFragment}.
+ */
+ public interface Listener {
+
+ /**
+ * Set an application as the default app.
+ *
+ * @param packageName the package name of the application
+ */
+ void setDefaultApp(@NonNull String packageName);
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/DefaultAppListActivity.java b/src/com/android/packageinstaller/role/ui/DefaultAppListActivity.java
new file mode 100644
index 0000000..e312d8d
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/DefaultAppListActivity.java
@@ -0,0 +1,60 @@
+/*
+ * 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.packageinstaller.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.packageinstaller.DeviceUtils;
+import com.android.packageinstaller.role.ui.auto.AutoDefaultAppListFragment;
+import com.android.packageinstaller.role.ui.handheld.HandheldDefaultAppListFragment;
+import com.android.permissioncontroller.R;
+
+/**
+ * Activity for the list of default apps.
+ */
+public class DefaultAppListActivity extends FragmentActivity {
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ if (DeviceUtils.isAuto(this)) {
+ // Automotive relies on a different theme. Apply before calling super so that
+ // 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)) {
+ fragment = AutoDefaultAppListFragment.newInstance();
+ } else {
+ fragment = HandheldDefaultAppListFragment.newInstance();
+ }
+ getSupportFragmentManager().beginTransaction()
+ .add(android.R.id.content, fragment)
+ .commit();
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/DefaultAppListChildFragment.java b/src/com/android/packageinstaller/role/ui/DefaultAppListChildFragment.java
new file mode 100644
index 0000000..53264a1
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/DefaultAppListChildFragment.java
@@ -0,0 +1,292 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.provider.Settings;
+import android.util.ArrayMap;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.ViewModelProviders;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+
+import com.android.packageinstaller.permission.utils.Utils;
+import com.android.packageinstaller.role.model.Role;
+import com.android.packageinstaller.role.model.Roles;
+import com.android.permissioncontroller.R;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 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
+ */
+public class DefaultAppListChildFragment<PF extends PreferenceFragmentCompat
+ & DefaultAppListChildFragment.Parent> extends Fragment
+ implements Preference.OnPreferenceClickListener {
+
+ 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";
+
+ private DefaultAppListViewModel mViewModel;
+
+ /**
+ * Create a new instance of this fragment.
+ *
+ * @return a new instance of this fragment
+ */
+ @NonNull
+ public static DefaultAppListChildFragment newInstance() {
+ return new DefaultAppListChildFragment();
+ }
+
+ @Override
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ mViewModel = ViewModelProviders.of(this).get(DefaultAppListViewModel.class);
+ mViewModel.getLiveData().observe(this, roleItems -> onRoleListChanged());
+ if (mViewModel.hasWorkProfile()) {
+ mViewModel.getWorkLiveData().observe(this, roleItems -> onRoleListChanged());
+ }
+ }
+
+ private void onRoleListChanged() {
+ List<RoleItem> roleItems = mViewModel.getLiveData().getValue();
+ if (roleItems == null) {
+ return;
+ }
+ boolean hasWorkProfile = mViewModel.hasWorkProfile();
+ List<RoleItem> workRoleItems = null;
+ if (hasWorkProfile) {
+ workRoleItems = mViewModel.getWorkLiveData().getValue();
+ if (workRoleItems == null) {
+ return;
+ }
+ }
+
+ PF preferenceFragment = requirePreferenceFragment();
+ PreferenceManager preferenceManager = preferenceFragment.getPreferenceManager();
+ Context context = preferenceManager.getContext();
+ PreferenceScreen preferenceScreen = preferenceFragment.getPreferenceScreen();
+ ArrayMap<String, Preference> oldPreferences = new ArrayMap<>();
+ PreferenceCategory oldWorkPreferenceCategory = null;
+ ArrayMap<String, Preference> oldWorkPreferences = new ArrayMap<>();
+ if (preferenceScreen == null) {
+ preferenceScreen = preferenceManager.createPreferenceScreen(context);
+ preferenceFragment.setPreferenceScreen(preferenceScreen);
+ } else {
+ oldWorkPreferenceCategory = preferenceScreen.findPreference(
+ PREFERENCE_KEY_WORK_CATEGORY);
+ if (oldWorkPreferenceCategory != null) {
+ clearPreferences(oldWorkPreferenceCategory, oldWorkPreferences);
+ preferenceScreen.removePreference(oldWorkPreferenceCategory);
+ oldWorkPreferenceCategory.setOrder(Preference.DEFAULT_ORDER);
+ }
+ clearPreferences(preferenceScreen, oldPreferences);
+ }
+
+ addPreferences(preferenceScreen, roleItems, oldPreferences, this, mViewModel.getUser(),
+ context);
+ addMoreDefaultAppsPreference(preferenceScreen, oldPreferences, context);
+ addManageDomainUrlsPreference(preferenceScreen, oldPreferences, context);
+ if (hasWorkProfile && !workRoleItems.isEmpty()) {
+ PreferenceCategory workPreferenceCategory = oldWorkPreferenceCategory;
+ if (workPreferenceCategory == null) {
+ workPreferenceCategory = new PreferenceCategory(context);
+ workPreferenceCategory.setKey(PREFERENCE_KEY_WORK_CATEGORY);
+ workPreferenceCategory.setTitle(R.string.default_apps_for_work);
+ }
+ preferenceScreen.addPreference(workPreferenceCategory);
+ addPreferences(workPreferenceCategory, workRoleItems, oldWorkPreferences, this,
+ mViewModel.getWorkProfile(), context);
+ }
+
+ preferenceFragment.onPreferenceScreenChanged();
+ }
+
+ private static void clearPreferences(@NonNull PreferenceGroup preferenceGroup,
+ @NonNull ArrayMap<String, Preference> oldPreferences) {
+ for (int i = preferenceGroup.getPreferenceCount() - 1; i >= 0; --i) {
+ Preference preference = preferenceGroup.getPreference(i);
+
+ preferenceGroup.removePreference(preference);
+ preference.setOrder(Preference.DEFAULT_ORDER);
+ oldPreferences.put(preference.getKey(), preference);
+ }
+ }
+
+ private void addPreferences(@NonNull PreferenceGroup preferenceGroup,
+ @NonNull List<RoleItem> roleItems, @NonNull ArrayMap<String, Preference> oldPreferences,
+ @NonNull Preference.OnPreferenceClickListener listener, @NonNull UserHandle user,
+ @NonNull Context context) {
+ PF preferenceFragment = requirePreferenceFragment();
+ int roleItemsSize = roleItems.size();
+ for (int i = 0; i < roleItemsSize; i++) {
+ RoleItem roleItem = roleItems.get(i);
+
+ Role role = roleItem.getRole();
+ TwoTargetPreference preference = (TwoTargetPreference) oldPreferences.get(
+ role.getName());
+ if (preference == null) {
+ preference = preferenceFragment.createPreference(context);
+ preference.setKey(role.getName());
+ preference.setIconSpaceReserved(true);
+ preference.setTitle(role.getShortLabelResource());
+ preference.setPersistent(false);
+ preference.setOnPreferenceClickListener(listener);
+ preference.getExtras().putParcelable(Intent.EXTRA_USER, user);
+ }
+
+ List<ApplicationInfo> holderApplicationInfos = roleItem.getHolderApplicationInfos();
+ if (holderApplicationInfos.isEmpty()) {
+ preference.setIcon(null);
+ preference.setSummary(R.string.default_app_none);
+ } else {
+ ApplicationInfo holderApplicationInfo = holderApplicationInfos.get(0);
+ preference.setIcon(Utils.getBadgedIcon(context, holderApplicationInfo));
+ preference.setSummary(Utils.getAppLabel(holderApplicationInfo, context));
+ }
+ role.preparePreferenceAsUser(preference, user, context);
+
+ preferenceGroup.addPreference(preference);
+ }
+ }
+
+ @Override
+ public boolean onPreferenceClick(@NonNull Preference preference) {
+ String roleName = preference.getKey();
+ Context context = requireContext();
+ Role role = Roles.get(context).get(roleName);
+ UserHandle user = preference.getExtras().getParcelable(Intent.EXTRA_USER);
+ Intent intent = role.getManageIntentAsUser(user, context);
+ if (intent == null) {
+ intent = DefaultAppActivity.createIntent(roleName, user, context);
+ }
+ startActivity(intent);
+ return true;
+ }
+
+ private static void addMoreDefaultAppsPreference(@NonNull PreferenceGroup preferenceGroup,
+ @NonNull ArrayMap<String, Preference> oldPreferences, @NonNull Context context) {
+ Intent intent = new Intent(Settings.ACTION_MANAGE_MORE_DEFAULT_APPS_SETTINGS);
+ if (!isIntentResolvedToSettings(intent, context)) {
+ return;
+ }
+
+ Preference preference = oldPreferences.get(PREFERENCE_KEY_MORE_DEFAULT_APPS);
+ if (preference == null) {
+ preference = new Preference(context);
+ preference.setKey(PREFERENCE_KEY_MORE_DEFAULT_APPS);
+ preference.setIconSpaceReserved(true);
+ preference.setTitle(context.getString(R.string.default_apps_more));
+ preference.setPersistent(false);
+ preference.setOnPreferenceClickListener(preference2 -> {
+ context.startActivity(intent);
+ return true;
+ });
+ }
+
+ preferenceGroup.addPreference(preference);
+ }
+
+ private static void addManageDomainUrlsPreference(@NonNull PreferenceGroup preferenceGroup,
+ @NonNull ArrayMap<String, Preference> oldPreferences, @NonNull Context context) {
+ Intent intent = new Intent(Settings.ACTION_MANAGE_DOMAIN_URLS);
+ if (!isIntentResolvedToSettings(intent, context)) {
+ return;
+ }
+
+ Preference preference = oldPreferences.get(PREFERENCE_KEY_MANAGE_DOMAIN_URLS);
+ if (preference == null) {
+ preference = new Preference(context);
+ preference.setKey(PREFERENCE_KEY_MANAGE_DOMAIN_URLS);
+ preference.setIconSpaceReserved(true);
+ preference.setTitle(context.getString(R.string.default_apps_manage_domain_urls));
+ preference.setPersistent(false);
+ preference.setOnPreferenceClickListener(preference2 -> {
+ context.startActivity(intent);
+ return true;
+ });
+ }
+
+ preferenceGroup.addPreference(preference);
+ }
+
+ private static boolean isIntentResolvedToSettings(@NonNull Intent intent,
+ @NonNull Context context) {
+ PackageManager packageManager = context.getPackageManager();
+ ComponentName componentName = intent.resolveActivity(packageManager);
+ if (componentName == null) {
+ return false;
+ }
+ Intent settingsIntent = new Intent(Settings.ACTION_SETTINGS);
+ String settingsPackageName = settingsIntent.resolveActivity(packageManager)
+ .getPackageName();
+ return Objects.equals(componentName.getPackageName(), settingsPackageName);
+ }
+
+ @NonNull
+ private PF requirePreferenceFragment() {
+ //noinspection unchecked
+ return (PF) requireParentFragment();
+ }
+
+ /**
+ * Interface that the parent fragment must implement.
+ */
+ public interface Parent {
+
+ /**
+ * Create a new preference for a default app.
+ *
+ * @param context the {@code Context} to use when creating the preference.
+ *
+ * @return a new preference for a default app
+ */
+ @NonNull
+ TwoTargetPreference createPreference(@NonNull Context context);
+
+ /**
+ * Callback when changes have been made to the {@link PreferenceScreen} of the parent
+ * {@link PreferenceFragmentCompat}.
+ */
+ void onPreferenceScreenChanged();
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/DefaultAppListViewModel.java b/src/com/android/packageinstaller/role/ui/DefaultAppListViewModel.java
new file mode 100644
index 0000000..ade0f16
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/DefaultAppListViewModel.java
@@ -0,0 +1,88 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+import android.app.Application;
+import android.os.Process;
+import android.os.UserHandle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.lifecycle.AndroidViewModel;
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.Transformations;
+import androidx.lifecycle.ViewModel;
+
+import com.android.packageinstaller.role.utils.UserUtils;
+
+import java.util.List;
+
+/**
+ * {@link ViewModel} for the list of default apps.
+ */
+public class DefaultAppListViewModel extends AndroidViewModel {
+
+ @NonNull
+ private final UserHandle mUser;
+ @NonNull
+ private final LiveData<List<RoleItem>> mLiveData;
+ @Nullable
+ private final UserHandle mWorkProfile;
+ @Nullable
+ private final LiveData<List<RoleItem>> mWorkLiveData;
+
+ public DefaultAppListViewModel(@NonNull Application application) {
+ super(application);
+
+ mUser = Process.myUserHandle();
+ RoleListSortFunction sortFunction = new RoleListSortFunction(application);
+ mLiveData = Transformations.map(new RoleListLiveData(true, mUser, application),
+ sortFunction);
+ mWorkProfile = UserUtils.getWorkProfile(application);
+ mWorkLiveData = mWorkProfile != null ? Transformations.map(new RoleListLiveData(true,
+ mWorkProfile, application), sortFunction) : null;
+ }
+
+ @NonNull
+ public UserHandle getUser() {
+ return mUser;
+ }
+
+ @NonNull
+ public LiveData<List<RoleItem>> getLiveData() {
+ return mLiveData;
+ }
+
+ /**
+ * Check whether the user has a work profile.
+ *
+ * @return whether the user has a work profile.
+ */
+ public boolean hasWorkProfile() {
+ return mWorkProfile != null;
+ }
+
+ @Nullable
+ public UserHandle getWorkProfile() {
+ return mWorkProfile;
+ }
+
+ @Nullable
+ public LiveData<List<RoleItem>> getWorkLiveData() {
+ return mWorkLiveData;
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/DefaultAppViewModel.java b/src/com/android/packageinstaller/role/ui/DefaultAppViewModel.java
new file mode 100644
index 0000000..481d2fb
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/DefaultAppViewModel.java
@@ -0,0 +1,132 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+import android.app.Application;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.os.UserHandle;
+import android.util.Log;
+import android.util.Pair;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.AndroidViewModel;
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.Transformations;
+import androidx.lifecycle.ViewModel;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.android.packageinstaller.role.model.Role;
+
+import java.util.List;
+
+/**
+ * {@link ViewModel} for a default app.
+ */
+public class DefaultAppViewModel extends AndroidViewModel {
+
+ private static final String LOG_TAG = DefaultAppViewModel.class.getSimpleName();
+
+ @NonNull
+ private final Role mRole;
+ @NonNull
+ private final UserHandle mUser;
+
+ @NonNull
+ private final LiveData<List<Pair<ApplicationInfo, Boolean>>> mRoleLiveData;
+
+ @NonNull
+ private final ManageRoleHolderStateLiveData mManageRoleHolderStateLiveData =
+ new ManageRoleHolderStateLiveData();
+
+ public DefaultAppViewModel(@NonNull Role role, @NonNull UserHandle user,
+ @NonNull Application application) {
+ super(application);
+
+ mRole = role;
+ mUser = user;
+
+ mRoleLiveData = Transformations.map(new RoleLiveData(mRole, mUser, application),
+ new RoleSortFunction(application));
+ }
+
+ @NonNull
+ public LiveData<List<Pair<ApplicationInfo, Boolean>>> getRoleLiveData() {
+ return mRoleLiveData;
+ }
+
+ @NonNull
+ public ManageRoleHolderStateLiveData getManageRoleHolderStateLiveData() {
+ return mManageRoleHolderStateLiveData;
+ }
+
+ /**
+ * Set an application as the default app.
+ *
+ * @param packageName the package name of the application
+ */
+ public void setDefaultApp(@NonNull String packageName) {
+ if (mManageRoleHolderStateLiveData.getValue() != ManageRoleHolderStateLiveData.STATE_IDLE) {
+ Log.i(LOG_TAG, "Trying to set default app while another request is on-going");
+ return;
+ }
+ mManageRoleHolderStateLiveData.setRoleHolderAsUser(mRole.getName(), packageName, true, 0,
+ mUser, getApplication());
+ }
+
+ /**
+ * Set "None" as the default app.
+ */
+ public void setNoneDefaultApp() {
+ Context context = getApplication();
+ mRole.onNoneHolderSelectedAsUser(mUser, context);
+ if (mManageRoleHolderStateLiveData.getValue() != ManageRoleHolderStateLiveData.STATE_IDLE) {
+ Log.i(LOG_TAG, "Trying to set default app while another request is on-going");
+ return;
+ }
+ mManageRoleHolderStateLiveData.clearRoleHoldersAsUser(mRole.getName(), 0, mUser, context);
+ }
+
+ /**
+ * {@link ViewModelProvider.Factory} for {@link DefaultAppViewModel}.
+ */
+ public static class Factory implements ViewModelProvider.Factory {
+
+ @NonNull
+ private Role mRole;
+
+ @NonNull
+ private UserHandle mUser;
+
+ @NonNull
+ private Application mApplication;
+
+ public Factory(@NonNull Role role, @NonNull UserHandle user,
+ @NonNull Application application) {
+ mRole = role;
+ mUser = user;
+ mApplication = application;
+ }
+
+ @NonNull
+ @Override
+ public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
+ //noinspection unchecked
+ return (T) new DefaultAppViewModel(mRole, mUser, mApplication);
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/HomeSettingsActivity.java b/src/com/android/packageinstaller/role/ui/HomeSettingsActivity.java
new file mode 100644
index 0000000..709737a
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/HomeSettingsActivity.java
@@ -0,0 +1,40 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+import android.app.Activity;
+import android.app.role.RoleManager;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Process;
+
+/**
+ * Activity to handle @{link android.provider.Settings#ACTION_HOME_SETTINGS}.
+ */
+public class HomeSettingsActivity extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ Intent intent = DefaultAppActivity.createIntent(RoleManager.ROLE_HOME,
+ Process.myUserHandle(), this)
+ .addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
+ startActivity(intent);
+ finish();
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/ManageRoleHolderStateLiveData.java b/src/com/android/packageinstaller/role/ui/ManageRoleHolderStateLiveData.java
new file mode 100644
index 0000000..6756424
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/ManageRoleHolderStateLiveData.java
@@ -0,0 +1,185 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+import android.app.role.RoleManager;
+import android.content.Context;
+import android.os.UserHandle;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.lifecycle.LiveData;
+
+import java.util.concurrent.Executor;
+import java.util.function.Consumer;
+
+/**
+ * {@link LiveData} for the state of managing a role holder.
+ */
+public class ManageRoleHolderStateLiveData extends LiveData<Integer> {
+
+ private static final String LOG_TAG = ManageRoleHolderStateLiveData.class.getSimpleName();
+
+ private static final boolean DEBUG = false;
+
+ public static final int STATE_IDLE = 0;
+ public static final int STATE_WORKING = 1;
+ public static final int STATE_SUCCESS = 2;
+ public static final int STATE_FAILURE = 3;
+
+ @Nullable
+ private String mLastPackageName;
+ private boolean mLastAdd;
+ private int mLastFlags;
+ private UserHandle mLastUser;
+
+ public ManageRoleHolderStateLiveData() {
+ setValue(STATE_IDLE);
+ }
+
+ /**
+ * Set whether an application is a holder of a role, and update the state accordingly. Will
+ * be no-op if the current state is not {@link #STATE_IDLE}.
+ *
+ * @param roleName the name of the role
+ * @param packageName the package name of the application
+ * @param add whether to add or remove the application as a role holder
+ * @param flags optional behavior flags
+ * @param user the user to manage the role holder for
+ * @param context the {@code Context} to retrieve system services
+ */
+ public void setRoleHolderAsUser(@NonNull String roleName, @NonNull String packageName,
+ boolean add, int flags, @NonNull UserHandle user, @NonNull Context context) {
+ if (getValue() != STATE_IDLE) {
+ Log.e(LOG_TAG, "Already (tried) managing role holders, requested role: " + roleName
+ + ", requested package: " + packageName);
+ return;
+ }
+ if (DEBUG) {
+ Log.i(LOG_TAG, (add ? "Adding" : "Removing") + " package as role holder, role: "
+ + roleName + ", package: " + packageName);
+ }
+ mLastPackageName = packageName;
+ mLastAdd = add;
+ mLastFlags = flags;
+ mLastUser = user;
+ setValue(STATE_WORKING);
+
+ RoleManager roleManager = context.getSystemService(RoleManager.class);
+ Executor executor = context.getMainExecutor();
+ Consumer<Boolean> callback = successful -> {
+ if (successful) {
+ if (DEBUG) {
+ Log.i(LOG_TAG, "Package " + (add ? "added" : "removed")
+ + " as role holder, role: " + roleName + ", package: " + packageName);
+ }
+ setValue(STATE_SUCCESS);
+ } else {
+ if (DEBUG) {
+ Log.i(LOG_TAG, "Failed to " + (add ? "add" : "remove")
+ + " package as role holder, role: " + roleName + ", package: "
+ + packageName);
+ }
+ setValue(STATE_FAILURE);
+ }
+ };
+ if (add) {
+ roleManager.addRoleHolderAsUser(roleName, packageName, flags, user, executor, callback);
+ } else {
+ roleManager.removeRoleHolderAsUser(roleName, packageName, flags, user, executor,
+ callback);
+ }
+ }
+
+ /**
+ * Clear the holders of a role, and update the state accordingly. Will be no-op if the current
+ * state is not {@link #STATE_IDLE}.
+ *
+ * @param roleName the name of the role
+ * @param flags optional behavior flags
+ * @param user the user to manage the role holder for
+ * @param context the {@code Context} to retrieve system services
+ */
+ public void clearRoleHoldersAsUser(@NonNull String roleName, int flags,
+ @NonNull UserHandle user, @NonNull Context context) {
+ if (getValue() != STATE_IDLE) {
+ Log.e(LOG_TAG, "Already (tried) managing role holders, requested role: " + roleName);
+ return;
+ }
+ if (DEBUG) {
+ Log.i(LOG_TAG, "Clearing role holders, role: " + roleName);
+ }
+ mLastPackageName = null;
+ mLastAdd = false;
+ mLastFlags = flags;
+ mLastUser = user;
+ setValue(STATE_WORKING);
+
+ RoleManager roleManager = context.getSystemService(RoleManager.class);
+ Executor executor = context.getMainExecutor();
+ Consumer<Boolean> callback = successful -> {
+ if (successful) {
+ if (DEBUG) {
+ Log.i(LOG_TAG, "Cleared role holders, role: " + roleName);
+ }
+ setValue(STATE_SUCCESS);
+ } else {
+ if (DEBUG) {
+ Log.i(LOG_TAG, "Failed to clear role holders, role: " + roleName);
+ }
+ setValue(STATE_FAILURE);
+ }
+ };
+ roleManager.clearRoleHoldersAsUser(roleName, flags, user, executor, callback);
+ }
+
+ @Nullable
+ public String getLastPackageName() {
+ return mLastPackageName;
+ }
+
+ public boolean isLastAdd() {
+ return mLastAdd;
+ }
+
+ public int getLastFlags() {
+ return mLastFlags;
+ }
+
+ public UserHandle getLastUser() {
+ return mLastUser;
+ }
+
+ /**
+ * Reset the state of this live data to {@link #STATE_IDLE}. Will be no-op if the current state
+ * is not {@link #STATE_SUCCESS} or {@link #STATE_FAILURE}.
+ */
+ public void resetState() {
+ int state = getValue();
+ if (!(state == STATE_SUCCESS || state == STATE_FAILURE)) {
+ Log.e(LOG_TAG, "Trying to reset state when the current state is not STATE_SUCCESS or"
+ + " STATE_FAILURE");
+ return;
+ }
+ mLastPackageName = null;
+ mLastAdd = false;
+ mLastFlags = 0;
+ mLastUser = null;
+ setValue(STATE_IDLE);
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/MergeRoleListLiveData.java b/src/com/android/packageinstaller/role/ui/MergeRoleListLiveData.java
new file mode 100644
index 0000000..3c239e5
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/MergeRoleListLiveData.java
@@ -0,0 +1,76 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+import android.util.ArrayMap;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.MediatorLiveData;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * {@link MediatorLiveData} that merges multiple {@link RoleListLiveData} instances.
+ */
+public class MergeRoleListLiveData extends MediatorLiveData<List<RoleItem>> {
+
+ @NonNull
+ private final RoleListLiveData[] mLiveDatas;
+
+ public MergeRoleListLiveData(@NonNull RoleListLiveData... liveDatas) {
+ mLiveDatas = liveDatas;
+
+ int liveDatasLength = mLiveDatas.length;
+ for (int i = 0; i < liveDatasLength; i++) {
+ RoleListLiveData liveData = mLiveDatas[i];
+
+ addSource(liveData, roleItems -> onRoleListChanged());
+ }
+ }
+
+ private void onRoleListChanged() {
+ ArrayMap<String, RoleItem> mergedRoleItemMap = new ArrayMap<>();
+ int liveDatasLength = mLiveDatas.length;
+ for (int liveDatasIndex = 0; liveDatasIndex < liveDatasLength; liveDatasIndex++) {
+ RoleListLiveData liveData = mLiveDatas[liveDatasIndex];
+
+ List<RoleItem> roleItems = liveData.getValue();
+ if (roleItems == null) {
+ return;
+ }
+ int roleItemsSize = roleItems.size();
+ for (int roleItemsIndex = 0; roleItemsIndex < roleItemsSize; roleItemsIndex++) {
+ RoleItem roleItem = roleItems.get(roleItemsIndex);
+
+ String roleName = roleItem.getRole().getName();
+ RoleItem mergedRoleItem = mergedRoleItemMap.get(roleName);
+ if (mergedRoleItem == null) {
+ mergedRoleItem = new RoleItem(roleItem.getRole(), new ArrayList<>(
+ roleItem.getHolderApplicationInfos()));
+ mergedRoleItemMap.put(roleName, mergedRoleItem);
+ } else {
+ mergedRoleItem.getHolderApplicationInfos().addAll(
+ roleItem.getHolderApplicationInfos());
+ }
+ }
+ }
+
+ List<RoleItem> mergedRoleItems = new ArrayList<>(mergedRoleItemMap.values());
+ setValue(mergedRoleItems);
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/MergeRoleLiveData.java b/src/com/android/packageinstaller/role/ui/MergeRoleLiveData.java
new file mode 100644
index 0000000..c71e7b3
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/MergeRoleLiveData.java
@@ -0,0 +1,62 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+import android.content.pm.ApplicationInfo;
+import android.util.Pair;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.MediatorLiveData;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * {@link MediatorLiveData} that merges multiple {@link RoleLiveData} instances.
+ */
+public class MergeRoleLiveData extends MediatorLiveData<List<Pair<ApplicationInfo, Boolean>>> {
+
+ @NonNull
+ private final RoleLiveData[] mLiveDatas;
+
+ public MergeRoleLiveData(@NonNull RoleLiveData... liveDatas) {
+ mLiveDatas = liveDatas;
+
+ int liveDatasLength = mLiveDatas.length;
+ for (int i = 0; i < liveDatasLength; i++) {
+ RoleLiveData liveData = mLiveDatas[i];
+
+ addSource(liveData, roleItems -> onRoleChanged());
+ }
+ }
+
+ private void onRoleChanged() {
+ List<Pair<ApplicationInfo, Boolean>> mergedQualifyingApplications = new ArrayList<>();
+ int liveDatasLength = mLiveDatas.length;
+ for (int i = 0; i < liveDatasLength; i++) {
+ RoleLiveData liveData = mLiveDatas[i];
+
+ List<Pair<ApplicationInfo, Boolean>> qualifyingApplications = liveData.getValue();
+ if (qualifyingApplications == null) {
+ return;
+ }
+ mergedQualifyingApplications.addAll(qualifyingApplications);
+ }
+
+ setValue(mergedQualifyingApplications);
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/RequestRoleActivity.java b/src/com/android/packageinstaller/role/ui/RequestRoleActivity.java
new file mode 100644
index 0000000..c57dfef
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/RequestRoleActivity.java
@@ -0,0 +1,293 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+import android.app.role.RoleManager;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.os.Bundle;
+import android.os.Process;
+import android.provider.Telephony;
+import android.telecom.TelecomManager;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.WindowManager;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.FragmentActivity;
+
+import com.android.packageinstaller.PermissionControllerStatsLog;
+import com.android.packageinstaller.permission.utils.CollectionUtils;
+import com.android.packageinstaller.role.model.Role;
+import com.android.packageinstaller.role.model.Roles;
+import com.android.packageinstaller.role.model.UserDeniedManager;
+import com.android.packageinstaller.role.utils.PackageUtils;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * {@code Activity} for a role request.
+ */
+public class RequestRoleActivity extends FragmentActivity {
+
+ private static final String LOG_TAG = RequestRoleActivity.class.getSimpleName();
+
+ private String mRoleName;
+ private String mPackageName;
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ getWindow().addSystemFlags(
+ WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
+
+ mRoleName = getIntent().getStringExtra(Intent.EXTRA_ROLE_NAME);
+ mPackageName = getCallingPackage();
+
+ if (!handleChangeDefaultDialerDialogCompatibility()) {
+ reportRequestResult(
+ PermissionControllerStatsLog.ROLE_REQUEST_RESULT_REPORTED__RESULT__IGNORED);
+ finish();
+ return;
+ }
+
+ if (!handleSmsDefaultDialogCompatibility()) {
+ reportRequestResult(
+ PermissionControllerStatsLog.ROLE_REQUEST_RESULT_REPORTED__RESULT__IGNORED);
+ finish();
+ return;
+ }
+
+ if (TextUtils.isEmpty(mRoleName)) {
+ Log.w(LOG_TAG, "Role name cannot be null or empty: " + mRoleName);
+ reportRequestResult(
+ PermissionControllerStatsLog.ROLE_REQUEST_RESULT_REPORTED__RESULT__IGNORED);
+ finish();
+ return;
+ }
+ if (TextUtils.isEmpty(mPackageName)) {
+ Log.w(LOG_TAG, "Package name cannot be null or empty: " + mPackageName);
+ reportRequestResult(
+ PermissionControllerStatsLog.ROLE_REQUEST_RESULT_REPORTED__RESULT__IGNORED);
+ finish();
+ return;
+ }
+
+ // Perform checks here so that we have a chance to finish without being visible to user.
+ Role role = Roles.get(this).get(mRoleName);
+ if (role == null) {
+ Log.w(LOG_TAG, "Unknown role: " + mRoleName);
+ reportRequestResult(
+ PermissionControllerStatsLog.ROLE_REQUEST_RESULT_REPORTED__RESULT__IGNORED);
+ finish();
+ return;
+ }
+
+ if (!role.isAvailable(this)) {
+ Log.e(LOG_TAG, "Role is unavailable: " + mRoleName);
+ reportRequestResult(
+ PermissionControllerStatsLog.ROLE_REQUEST_RESULT_REPORTED__RESULT__IGNORED);
+ finish();
+ return;
+ }
+
+ if (!role.isVisible(this)) {
+ Log.e(LOG_TAG, "Role is invisible: " + mRoleName);
+ reportRequestResult(
+ PermissionControllerStatsLog.ROLE_REQUEST_RESULT_REPORTED__RESULT__IGNORED);
+ finish();
+ return;
+ }
+
+ if (!role.isRequestable()) {
+ Log.e(LOG_TAG, "Role is not requestable: " + mRoleName);
+ reportRequestResult(
+ PermissionControllerStatsLog.ROLE_REQUEST_RESULT_REPORTED__RESULT__IGNORED);
+ finish();
+ return;
+ }
+
+ if (!role.isExclusive()) {
+ Log.e(LOG_TAG, "Role is not exclusive: " + mRoleName);
+ reportRequestResult(
+ PermissionControllerStatsLog.ROLE_REQUEST_RESULT_REPORTED__RESULT__IGNORED);
+ finish();
+ return;
+ }
+
+ if (PackageUtils.getApplicationInfo(mPackageName, this) == null) {
+ Log.w(LOG_TAG, "Unknown application: " + mPackageName);
+ reportRequestResult(
+ PermissionControllerStatsLog.ROLE_REQUEST_RESULT_REPORTED__RESULT__IGNORED);
+ finish();
+ return;
+ }
+
+ RoleManager roleManager = getSystemService(RoleManager.class);
+ List<String> currentPackageNames = roleManager.getRoleHolders(mRoleName);
+ if (currentPackageNames.contains(mPackageName)) {
+ Log.i(LOG_TAG, "Application is already a role holder, role: " + mRoleName
+ + ", package: " + mPackageName);
+ reportRequestResult(PermissionControllerStatsLog
+ .ROLE_REQUEST_RESULT_REPORTED__RESULT__IGNORED_ALREADY_GRANTED);
+ setResult(RESULT_OK);
+ finish();
+ return;
+ }
+
+ if (!role.isPackageQualified(mPackageName, this)) {
+ Log.w(LOG_TAG, "Application doesn't qualify for role, role: " + mRoleName
+ + ", package: " + mPackageName);
+ reportRequestResult(PermissionControllerStatsLog
+ .ROLE_REQUEST_RESULT_REPORTED__RESULT__IGNORED_NOT_QUALIFIED);
+ finish();
+ return;
+ }
+
+ if (UserDeniedManager.getInstance(this).isDeniedAlways(mRoleName, mPackageName)) {
+ Log.w(LOG_TAG, "Application is denied always for role, role: " + mRoleName
+ + ", package: " + mPackageName);
+ reportRequestResult(PermissionControllerStatsLog
+ .ROLE_REQUEST_RESULT_REPORTED__RESULT__IGNORED_USER_ALWAYS_DENIED);
+ finish();
+ return;
+ }
+
+ if (savedInstanceState == null) {
+ RequestRoleFragment fragment = RequestRoleFragment.newInstance(mRoleName, mPackageName);
+ getSupportFragmentManager().beginTransaction()
+ .add(fragment, null)
+ .commit();
+ }
+ }
+
+ /**
+ * Handle compatibility with the old
+ * {@link com.android.server.telecom.components.ChangeDefaultDialerDialog}.
+ *
+ * @return whether we should continue requesting the role. The activity should be finished if
+ * {@code false} is returned.
+ */
+ private boolean handleChangeDefaultDialerDialogCompatibility() {
+ Intent intent = getIntent();
+ if (!Objects.equals(intent.getAction(), TelecomManager.ACTION_CHANGE_DEFAULT_DIALER)) {
+ return true;
+ }
+
+ Log.w(LOG_TAG, "TelecomManager.ACTION_CHANGE_DEFAULT_DIALER is deprecated; please use"
+ + " RoleManager.createRequestRoleIntent() and Activity.startActivityForResult()"
+ + " instead");
+
+ mRoleName = RoleManager.ROLE_DIALER;
+ mPackageName = null;
+
+ // Intent.EXTRA_CALLING_PACKAGE is set in PermissionPolicyService.Internal
+ // .isActionRemovedForCallingPackage() and can be trusted.
+ String callingPackageName = intent.getStringExtra(Intent.EXTRA_CALLING_PACKAGE);
+ String extraPackageName = intent.getStringExtra(
+ TelecomManager.EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME);
+ if (Objects.equals(extraPackageName, callingPackageName)) {
+ // Requesting for itself is okay.
+ mPackageName = extraPackageName;
+ return true;
+ }
+
+ RoleManager roleManager = getSystemService(RoleManager.class);
+ String holderPackageName = CollectionUtils.firstOrNull(roleManager.getRoleHolders(
+ RoleManager.ROLE_DIALER));
+ if (Objects.equals(callingPackageName, holderPackageName)) {
+ // Giving away its own role is okay.
+ mPackageName = extraPackageName;
+ return true;
+ }
+
+ // If we reach here it's not okay.
+ return false;
+ }
+
+ /**
+ * Handle compatibility with the old {@link com.android.settings.SmsDefaultDialog}.
+ *
+ * @return whether we should continue requesting the role. The activity should be finished if
+ * {@code false} is returned.
+ */
+ private boolean handleSmsDefaultDialogCompatibility() {
+ Intent intent = getIntent();
+ if (!Objects.equals(intent.getAction(), Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT)) {
+ return true;
+ }
+
+ Log.w(LOG_TAG, "Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT is deprecated; please use"
+ + " RoleManager.createRequestRoleIntent() and Activity.startActivityForResult()"
+ + " instead");
+
+ mRoleName = RoleManager.ROLE_SMS;
+ mPackageName = null;
+
+ // Intent.EXTRA_CALLING_PACKAGE is set in PermissionPolicyService.Internal
+ // .isActionRemovedForCallingPackage() and can be trusted.
+ String callingPackageName = intent.getStringExtra(Intent.EXTRA_CALLING_PACKAGE);
+ String extraPackageName = intent.getStringExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME);
+ if (extraPackageName == null) {
+ // Launch the settings activity to show the list.
+ // TODO: Return RESULT_OK if any changes were made?
+ Intent defaultAppActivityIntent = DefaultAppActivity.createIntent(
+ RoleManager.ROLE_SMS, Process.myUserHandle(), this)
+ .addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
+ startActivity(defaultAppActivityIntent);
+ return false;
+ }
+
+ if (Objects.equals(extraPackageName, callingPackageName)) {
+ // Requesting for itself is okay.
+ mPackageName = extraPackageName;
+ return true;
+ }
+
+ RoleManager roleManager = getSystemService(RoleManager.class);
+ String holderPackageName = CollectionUtils.firstOrNull(roleManager.getRoleHolders(
+ RoleManager.ROLE_SMS));
+ if (Objects.equals(callingPackageName, holderPackageName)) {
+ // Giving away its own role is okay.
+ mPackageName = extraPackageName;
+ return true;
+ }
+
+ // If we reach here it's not okay.
+ return false;
+ }
+
+ private void reportRequestResult(int result) {
+ RequestRoleFragment.reportRequestResult(getApplicationUid(mPackageName, this), mPackageName,
+ mRoleName, -1, -1, null, -1, null, result);
+ }
+
+ private static int getApplicationUid(@Nullable String packageName, @NonNull Context context) {
+ if (packageName == null) {
+ return -1;
+ }
+ ApplicationInfo applicationInfo = PackageUtils.getApplicationInfo(packageName, context);
+ if (applicationInfo == null) {
+ return -1;
+ }
+ return applicationInfo.uid;
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/RequestRoleFragment.java b/src/com/android/packageinstaller/role/ui/RequestRoleFragment.java
new file mode 100644
index 0000000..55ea3dd
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/RequestRoleFragment.java
@@ -0,0 +1,743 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+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.ApplicationInfo;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.os.Process;
+import android.os.UserHandle;
+import android.text.TextUtils;
+import android.util.Log;
+import android.util.Pair;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+import android.widget.CheckBox;
+import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.content.res.AppCompatResources;
+import androidx.fragment.app.DialogFragment;
+import androidx.lifecycle.ViewModelProviders;
+
+import com.android.packageinstaller.PermissionControllerStatsLog;
+import com.android.packageinstaller.permission.utils.PackageRemovalMonitor;
+import com.android.packageinstaller.permission.utils.Utils;
+import com.android.packageinstaller.role.model.Role;
+import com.android.packageinstaller.role.model.Roles;
+import com.android.packageinstaller.role.model.UserDeniedManager;
+import com.android.packageinstaller.role.utils.PackageUtils;
+import com.android.permissioncontroller.R;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * {@code Fragment} for a role request.
+ */
+public class RequestRoleFragment extends DialogFragment {
+
+ private static final String LOG_TAG = RequestRoleFragment.class.getSimpleName();
+
+ private static final String STATE_DONT_ASK_AGAIN = RequestRoleFragment.class.getName()
+ + ".state.DONT_ASK_AGAIN";
+
+ private String mRoleName;
+ private String mPackageName;
+
+ private Role mRole;
+
+ private Adapter mAdapter;
+ private CheckBox mDontAskAgainCheck;
+
+ private RequestRoleViewModel mViewModel;
+
+ @Nullable
+ private PackageRemovalMonitor mPackageRemovalMonitor;
+
+ /**
+ * Create a new instance of this fragment.
+ *
+ * @param roleName the name of the requested role
+ * @param packageName the package name of the application requesting the role
+ *
+ * @return a new instance of this fragment
+ */
+ public static RequestRoleFragment newInstance(@NonNull String roleName,
+ @NonNull String packageName) {
+ RequestRoleFragment fragment = new RequestRoleFragment();
+ Bundle arguments = new Bundle();
+ arguments.putString(Intent.EXTRA_ROLE_NAME, roleName);
+ arguments.putString(Intent.EXTRA_PACKAGE_NAME, packageName);
+ fragment.setArguments(arguments);
+ return fragment;
+ }
+
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ Bundle arguments = getArguments();
+ mPackageName = arguments.getString(Intent.EXTRA_PACKAGE_NAME);
+ mRoleName = arguments.getString(Intent.EXTRA_ROLE_NAME);
+
+ mRole = Roles.get(requireContext()).get(mRoleName);
+ }
+
+ @NonNull
+ @Override
+ public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(requireContext(), getTheme());
+ Context context = builder.getContext();
+
+ RoleManager roleManager = context.getSystemService(RoleManager.class);
+ List<String> currentPackageNames = roleManager.getRoleHolders(mRoleName);
+ if (currentPackageNames.contains(mPackageName)) {
+ Log.i(LOG_TAG, "Application is already a role holder, role: " + mRoleName
+ + ", package: " + mPackageName);
+ reportRequestResult(PermissionControllerStatsLog
+ .ROLE_REQUEST_RESULT_REPORTED__RESULT__IGNORED_ALREADY_GRANTED, null);
+ clearDeniedSetResultOkAndFinish();
+ return super.onCreateDialog(savedInstanceState);
+ }
+
+ ApplicationInfo applicationInfo = PackageUtils.getApplicationInfo(mPackageName, context);
+ if (applicationInfo == null) {
+ Log.w(LOG_TAG, "Unknown application: " + mPackageName);
+ reportRequestResult(
+ PermissionControllerStatsLog.ROLE_REQUEST_RESULT_REPORTED__RESULT__IGNORED,
+ null);
+ finish();
+ return super.onCreateDialog(savedInstanceState);
+ }
+ Drawable icon = Utils.getBadgedIcon(context, applicationInfo);
+ String applicationLabel = Utils.getAppLabel(applicationInfo, context);
+ String title = getString(mRole.getRequestTitleResource(), applicationLabel);
+
+ LayoutInflater inflater = LayoutInflater.from(context);
+ View titleLayout = inflater.inflate(R.layout.request_role_title, null);
+ ImageView iconImage = titleLayout.findViewById(R.id.icon);
+ iconImage.setImageDrawable(icon);
+ TextView titleText = titleLayout.findViewById(R.id.title);
+ titleText.setText(title);
+
+ mAdapter = new Adapter(mRole);
+ if (savedInstanceState != null) {
+ mAdapter.onRestoreInstanceState(savedInstanceState);
+ }
+
+ View viewLayout = null;
+ if (UserDeniedManager.getInstance(context).isDeniedOnce(mRoleName, mPackageName)) {
+ viewLayout = inflater.inflate(R.layout.request_role_view, null);
+ mDontAskAgainCheck = viewLayout.findViewById(R.id.dont_ask_again);
+ mDontAskAgainCheck.setOnClickListener(view -> updateUi());
+ if (savedInstanceState != null) {
+ boolean dontAskAgain = savedInstanceState.getBoolean(STATE_DONT_ASK_AGAIN);
+ mDontAskAgainCheck.setChecked(dontAskAgain);
+ mAdapter.setDontAskAgain(dontAskAgain);
+ }
+ }
+
+ AlertDialog dialog = builder
+ .setCustomTitle(titleLayout)
+ .setSingleChoiceItems(mAdapter, AdapterView.INVALID_POSITION, (dialog2, which) ->
+ onItemClicked(which))
+ .setView(viewLayout)
+ // Set the positive button listener later to avoid the automatic dismiss behavior.
+ .setPositiveButton(R.string.request_role_set_as_default, null)
+ // The default behavior for a null listener is to dismiss the dialog, not cancel.
+ .setNegativeButton(android.R.string.cancel, (dialog2, which) -> dialog2.cancel())
+ .create();
+ dialog.getWindow().addSystemFlags(
+ WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
+ dialog.setOnShowListener(dialog2 -> dialog.getButton(Dialog.BUTTON_POSITIVE)
+ .setOnClickListener(view -> onSetAsDefault()));
+ return dialog;
+ }
+
+ @Override
+ public AlertDialog getDialog() {
+ return (AlertDialog) super.getDialog();
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+
+ Context context = requireContext();
+ if (PackageUtils.getApplicationInfo(mPackageName, context) == null) {
+ Log.w(LOG_TAG, "Unknown application: " + mPackageName);
+ reportRequestResult(
+ PermissionControllerStatsLog.ROLE_REQUEST_RESULT_REPORTED__RESULT__IGNORED,
+ null);
+ finish();
+ return;
+ }
+
+ mPackageRemovalMonitor = new PackageRemovalMonitor(context, mPackageName) {
+ @Override
+ protected void onPackageRemoved() {
+ Log.w(LOG_TAG, "Application is uninstalled, role: " + mRoleName + ", package: "
+ + mPackageName);
+ reportRequestResult(
+ PermissionControllerStatsLog.ROLE_REQUEST_RESULT_REPORTED__RESULT__IGNORED,
+ null);
+ finish();
+ }
+ };
+ mPackageRemovalMonitor.register();
+
+ mAdapter.setListView(getDialog().getListView());
+
+ // Postponed to onStart() so that the list view in dialog is created.
+ mViewModel = ViewModelProviders.of(this, new RequestRoleViewModel.Factory(mRole,
+ requireActivity().getApplication())).get(RequestRoleViewModel.class);
+ mViewModel.getRoleLiveData().observe(this, mAdapter::replace);
+ mViewModel.getManageRoleHolderStateLiveData().observe(this,
+ this::onManageRoleHolderStateChanged);
+ }
+
+ @Override
+ public void onSaveInstanceState(@NonNull Bundle outState) {
+ super.onSaveInstanceState(outState);
+
+ mAdapter.onSaveInstanceState(outState);
+ if (mDontAskAgainCheck != null) {
+ outState.putBoolean(STATE_DONT_ASK_AGAIN, mDontAskAgainCheck.isChecked());
+ }
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+
+ if (mPackageRemovalMonitor != null) {
+ mPackageRemovalMonitor.unregister();
+ mPackageRemovalMonitor = null;
+ }
+ }
+
+ @Override
+ public void onCancel(@NonNull DialogInterface dialog) {
+ super.onCancel(dialog);
+
+ Log.i(LOG_TAG, "Dialog cancelled, role: " + mRoleName + ", package: " + mPackageName);
+ reportRequestResult(
+ PermissionControllerStatsLog.ROLE_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED,
+ null);
+ setDeniedOnceAndFinish();
+ }
+
+ private void onItemClicked(int position) {
+ mAdapter.onItemClicked(position);
+ updateUi();
+ }
+
+ private void onSetAsDefault() {
+ if (mDontAskAgainCheck != null && mDontAskAgainCheck.isChecked()) {
+ Log.i(LOG_TAG, "Request denied with don't ask again, role: " + mRoleName + ", package: "
+ + mPackageName);
+ reportRequestResult(PermissionControllerStatsLog
+ .ROLE_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED_WITH_ALWAYS, null);
+ setDeniedAlwaysAndFinish();
+ } else {
+ setRoleHolder();
+ }
+ }
+
+ private void setRoleHolder() {
+ String packageName = mAdapter.getCheckedPackageName();
+ Context context = requireContext();
+ UserHandle user = Process.myUserHandle();
+ if (packageName == null) {
+ reportRequestResult(PermissionControllerStatsLog
+ .ROLE_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED_GRANTED_ANOTHER,
+ null);
+ mRole.onNoneHolderSelectedAsUser(user, context);
+ mViewModel.getManageRoleHolderStateLiveData().clearRoleHoldersAsUser(mRoleName, 0, user,
+ context);
+ } else {
+ boolean isRequestingApplication = Objects.equals(packageName, mPackageName);
+ if (isRequestingApplication) {
+ reportRequestResult(PermissionControllerStatsLog
+ .ROLE_REQUEST_RESULT_REPORTED__RESULT__USER_GRANTED, null);
+ } else {
+ reportRequestResult(PermissionControllerStatsLog
+ .ROLE_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED_GRANTED_ANOTHER,
+ packageName);
+ }
+ int flags = isRequestingApplication ? RoleManager.MANAGE_HOLDERS_FLAG_DONT_KILL_APP : 0;
+ mViewModel.getManageRoleHolderStateLiveData().setRoleHolderAsUser(mRoleName,
+ packageName, true, flags, user, context);
+ }
+ }
+
+ private void onManageRoleHolderStateChanged(int state) {
+ switch (state) {
+ case ManageRoleHolderStateLiveData.STATE_IDLE:
+ case ManageRoleHolderStateLiveData.STATE_WORKING:
+ updateUi();
+ break;
+ case ManageRoleHolderStateLiveData.STATE_SUCCESS: {
+ ManageRoleHolderStateLiveData liveData =
+ mViewModel.getManageRoleHolderStateLiveData();
+ String packageName = liveData.getLastPackageName();
+ if (packageName != null) {
+ mRole.onHolderSelectedAsUser(packageName, liveData.getLastUser(),
+ requireContext());
+ }
+ if (Objects.equals(packageName, mPackageName)) {
+ Log.i(LOG_TAG, "Application added as a role holder, role: " + mRoleName
+ + ", package: " + mPackageName);
+ clearDeniedSetResultOkAndFinish();
+ } else {
+ Log.i(LOG_TAG, "Request denied with another application added as a role holder,"
+ + " role: " + mRoleName + ", package: " + mPackageName);
+ setDeniedOnceAndFinish();
+ }
+ break;
+ }
+ case ManageRoleHolderStateLiveData.STATE_FAILURE:
+ finish();
+ break;
+ }
+ }
+
+ private void updateUi() {
+ AlertDialog dialog = getDialog();
+ boolean enabled = mViewModel.getManageRoleHolderStateLiveData().getValue()
+ == ManageRoleHolderStateLiveData.STATE_IDLE;
+ dialog.getListView().setEnabled(enabled);
+ boolean dontAskAgain = mDontAskAgainCheck != null && mDontAskAgainCheck.isChecked();
+ mAdapter.setDontAskAgain(dontAskAgain);
+ dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(enabled && (dontAskAgain
+ || !mAdapter.isHolderApplicationChecked()));
+ dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(enabled);
+ }
+
+ private void clearDeniedSetResultOkAndFinish() {
+ UserDeniedManager.getInstance(requireContext()).clearDenied(mRoleName, mPackageName);
+ requireActivity().setResult(Activity.RESULT_OK);
+ finish();
+ }
+
+ private void setDeniedOnceAndFinish() {
+ UserDeniedManager.getInstance(requireContext()).setDeniedOnce(mRoleName, mPackageName);
+ finish();
+ }
+
+ private void setDeniedAlwaysAndFinish() {
+ UserDeniedManager.getInstance(requireContext()).setDeniedAlways(mRoleName, mPackageName);
+ finish();
+ }
+
+ private void finish() {
+ requireActivity().finish();
+ }
+
+ private void reportRequestResult(int result, @Nullable String grantedAnotherPackageName) {
+ String holderPackageName = getHolderPackageName();
+ reportRequestResult(getApplicationUid(mPackageName), mPackageName, mRoleName,
+ getQualifyingApplicationCount(), getQualifyingApplicationUid(holderPackageName),
+ holderPackageName, getQualifyingApplicationUid(grantedAnotherPackageName),
+ grantedAnotherPackageName, result);
+ }
+
+ private int getApplicationUid(@NonNull String packageName) {
+ int uid = getQualifyingApplicationUid(packageName);
+ if (uid != -1) {
+ return uid;
+ }
+ ApplicationInfo applicationInfo = PackageUtils.getApplicationInfo(packageName,
+ requireActivity());
+ if (applicationInfo == null) {
+ return -1;
+ }
+ return applicationInfo.uid;
+ }
+
+ private int getQualifyingApplicationUid(@Nullable String packageName) {
+ if (packageName == null || mAdapter == null) {
+ return -1;
+ }
+ int count = mAdapter.getCount();
+ for (int i = 0; i < count; i++) {
+ Pair<ApplicationInfo, Boolean> qualifyingApplication = mAdapter.getItem(i);
+ if (qualifyingApplication == null) {
+ // Skip the "None" item.
+ continue;
+ }
+ ApplicationInfo qualifyingApplicationInfo = qualifyingApplication.first;
+ if (Objects.equals(qualifyingApplicationInfo.packageName, packageName)) {
+ return qualifyingApplicationInfo.uid;
+ }
+ }
+ return -1;
+ }
+
+ private int getQualifyingApplicationCount() {
+ if (mAdapter == null) {
+ return -1;
+ }
+ int count = mAdapter.getCount();
+ if (count > 0 && mAdapter.getItem(0) == null) {
+ // Exclude the "None" item.
+ --count;
+ }
+ return count;
+ }
+
+ @Nullable
+ private String getHolderPackageName() {
+ if (mAdapter == null) {
+ return null;
+ }
+ int count = mAdapter.getCount();
+ for (int i = 0; i < count; i++) {
+ Pair<ApplicationInfo, Boolean> qualifyingApplication = mAdapter.getItem(i);
+ if (qualifyingApplication == null) {
+ // Skip the "None" item.
+ continue;
+ }
+ boolean isHolderApplication = qualifyingApplication.second;
+ if (isHolderApplication) {
+ return qualifyingApplication.first.packageName;
+ }
+ }
+ return null;
+ }
+
+ static void reportRequestResult(int requestingUid, String requestingPackageName,
+ String roleName, int qualifyingCount, int currentUid, String currentPackageName,
+ int grantedAnotherUid, String grantedAnotherPackageName, int result) {
+ Log.v(LOG_TAG, "Role request result"
+ + " requestingUid=" + requestingUid
+ + " requestingPackageName=" + requestingPackageName
+ + " roleName=" + roleName
+ + " qualifyingCount=" + qualifyingCount
+ + " currentUid=" + currentUid
+ + " currentPackageName=" + currentPackageName
+ + " grantedAnotherUid=" + grantedAnotherUid
+ + " grantedAnotherPackageName=" + grantedAnotherPackageName
+ + " result=" + result);
+ PermissionControllerStatsLog.write(
+ PermissionControllerStatsLog.ROLE_REQUEST_RESULT_REPORTED, requestingUid,
+ requestingPackageName, roleName, qualifyingCount, currentUid, currentPackageName,
+ grantedAnotherUid, grantedAnotherPackageName, result);
+ }
+
+ private static class Adapter extends BaseAdapter {
+
+ private static final String STATE_USER_CHECKED = Adapter.class.getName()
+ + ".state.USER_CHECKED";
+ private static final String STATE_USER_CHECKED_PACKAGE_NAME = Adapter.class.getName()
+ + ".state.USER_CHECKED_PACKAGE_NAME";
+
+ private static final int LAYOUT_TRANSITION_DURATION_MILLIS = 150;
+
+ @NonNull
+ private final Role mRole;
+
+ // We'll use a null to represent the "None" item.
+ @NonNull
+ private final List<Pair<ApplicationInfo, Boolean>> mQualifyingApplications =
+ new ArrayList<>();
+
+ private boolean mHasHolderApplication;
+
+ private ListView mListView;
+
+ private boolean mDontAskAgain;
+
+ // If user has ever clicked an item to mark it as checked, we no longer automatically mark
+ // the current holder as checked.
+ private boolean mUserChecked;
+
+ private boolean mPendingUserChecked;
+ // We may use a null to represent the "None" item.
+ @Nullable
+ private String mPendingUserCheckedPackageName;
+
+ Adapter(@NonNull Role role) {
+ mRole = role;
+ }
+
+ public void onSaveInstanceState(@NonNull Bundle outState) {
+ outState.putBoolean(STATE_USER_CHECKED, mUserChecked);
+ if (mUserChecked) {
+ outState.putString(STATE_USER_CHECKED_PACKAGE_NAME, getCheckedPackageName());
+ }
+ }
+
+ public void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
+ mPendingUserChecked = savedInstanceState.getBoolean(STATE_USER_CHECKED);
+ if (mPendingUserChecked) {
+ mPendingUserCheckedPackageName = savedInstanceState.getString(
+ STATE_USER_CHECKED_PACKAGE_NAME);
+ }
+ }
+
+ public void setListView(@NonNull ListView listView) {
+ mListView = listView;
+ }
+
+ public void setDontAskAgain(boolean dontAskAgain) {
+ if (mDontAskAgain == dontAskAgain) {
+ return;
+ }
+ mDontAskAgain = dontAskAgain;
+ if (mDontAskAgain) {
+ mUserChecked = false;
+ updateItemChecked();
+ }
+ notifyDataSetChanged();
+ }
+
+ public void onItemClicked(int position) {
+ mUserChecked = true;
+ // We may need to change description based on checked state.
+ notifyDataSetChanged();
+ }
+
+ public void replace(@NonNull List<Pair<ApplicationInfo, Boolean>> qualifyingApplications) {
+ mQualifyingApplications.clear();
+ if (mRole.shouldShowNone()) {
+ mQualifyingApplications.add(0, null);
+ }
+ mQualifyingApplications.addAll(qualifyingApplications);
+ mHasHolderApplication = hasHolderApplication(qualifyingApplications);
+ notifyDataSetChanged();
+
+ if (mPendingUserChecked) {
+ restoreItemChecked();
+ mPendingUserChecked = false;
+ mPendingUserCheckedPackageName = null;
+ }
+
+ if (!mUserChecked) {
+ updateItemChecked();
+ }
+ }
+
+ private static boolean hasHolderApplication(
+ @NonNull List<Pair<ApplicationInfo, Boolean>> qualifyingApplications) {
+ int qualifyingApplicationsSize = qualifyingApplications.size();
+ for (int i = 0; i < qualifyingApplicationsSize; i++) {
+ Pair<ApplicationInfo, Boolean> qualifyingApplication = qualifyingApplications.get(
+ i);
+ boolean isHolderApplication = qualifyingApplication.second;
+
+ if (isHolderApplication) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private void restoreItemChecked() {
+ if (mPendingUserCheckedPackageName == null) {
+ if (mRole.shouldShowNone()) {
+ mUserChecked = true;
+ mListView.setItemChecked(0, true);
+ }
+ } else {
+ int count = getCount();
+ for (int i = 0; i < count; i++) {
+ Pair<ApplicationInfo, Boolean> qualifyingApplication = getItem(i);
+ if (qualifyingApplication == null) {
+ continue;
+ }
+ String packageName = qualifyingApplication.first.packageName;
+
+ if (Objects.equals(packageName, mPendingUserCheckedPackageName)) {
+ mUserChecked = true;
+ mListView.setItemChecked(i, true);
+ break;
+ }
+ }
+ }
+ }
+
+ private void updateItemChecked() {
+ if (!mHasHolderApplication) {
+ if (mRole.shouldShowNone()) {
+ mListView.setItemChecked(0, true);
+ } else {
+ mListView.clearChoices();
+ }
+ } else {
+ int count = getCount();
+ for (int i = 0; i < count; i++) {
+ Pair<ApplicationInfo, Boolean> qualifyingApplication = getItem(i);
+ if (qualifyingApplication == null) {
+ continue;
+ }
+ boolean isHolderApplication = qualifyingApplication.second;
+
+ if (isHolderApplication) {
+ mListView.setItemChecked(i, true);
+ break;
+ }
+ }
+ }
+ }
+
+ @Nullable
+ public Pair<ApplicationInfo, Boolean> getCheckedItem() {
+ int position = mListView.getCheckedItemPosition();
+ return position != AdapterView.INVALID_POSITION ? getItem(position) : null;
+ }
+
+ @Nullable
+ public String getCheckedPackageName() {
+ Pair<ApplicationInfo, Boolean> qualifyingApplication = getCheckedItem();
+ return qualifyingApplication == null ? null : qualifyingApplication.first.packageName;
+ }
+
+ public boolean isHolderApplicationChecked() {
+ Pair<ApplicationInfo, Boolean> qualifyingApplication = getCheckedItem();
+ return qualifyingApplication == null ? !mHasHolderApplication
+ : qualifyingApplication.second;
+ }
+
+ @Override
+ public boolean hasStableIds() {
+ return true;
+ }
+
+ @Override
+ public boolean areAllItemsEnabled() {
+ return false;
+ }
+
+ @Override
+ public int getCount() {
+ return mQualifyingApplications.size();
+ }
+
+ @Nullable
+ @Override
+ public Pair<ApplicationInfo, Boolean> getItem(int position) {
+ return mQualifyingApplications.get(position);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ Pair<ApplicationInfo, Boolean> qualifyingApplication = getItem(position);
+ return qualifyingApplication == null ? 0
+ : qualifyingApplication.first.packageName.hashCode();
+ }
+
+ @Override
+ public boolean isEnabled(int position) {
+ if (!mDontAskAgain) {
+ return true;
+ }
+ Pair<ApplicationInfo, Boolean> qualifyingApplication = getItem(position);
+ if (qualifyingApplication == null) {
+ return !mHasHolderApplication;
+ } else {
+ boolean isHolderApplication = qualifyingApplication.second;
+ return isHolderApplication;
+ }
+ }
+
+ @NonNull
+ @Override
+ public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
+ Context context = parent.getContext();
+ View view = convertView;
+ ViewHolder holder;
+ if (view != null) {
+ holder = (ViewHolder) view.getTag();
+ } else {
+ view = LayoutInflater.from(context).inflate(R.layout.request_role_item, parent,
+ false);
+ holder = new ViewHolder(view);
+ view.setTag(holder);
+
+ holder.titleAndSubtitleLayout.getLayoutTransition().setDuration(
+ LAYOUT_TRANSITION_DURATION_MILLIS);
+ }
+
+ view.setEnabled(isEnabled(position));
+
+ Pair<ApplicationInfo, Boolean> qualifyingApplication = getItem(position);
+ Drawable icon;
+ String title;
+ String subtitle;
+ if (qualifyingApplication == null) {
+ icon = AppCompatResources.getDrawable(context, R.drawable.ic_remove_circle);
+ title = context.getString(R.string.default_app_none);
+ subtitle = !mHasHolderApplication ? context.getString(
+ R.string.request_role_current_default) : null;
+ } else {
+ ApplicationInfo qualifyingApplicationInfo = qualifyingApplication.first;
+ icon = Utils.getBadgedIcon(context, qualifyingApplicationInfo);
+ title = Utils.getAppLabel(qualifyingApplicationInfo, context);
+ boolean isHolderApplication = qualifyingApplication.second;
+ subtitle = isHolderApplication
+ ? context.getString(R.string.request_role_current_default)
+ : mListView.isItemChecked(position)
+ ? context.getString(mRole.getRequestDescriptionResource()) : null;
+ }
+
+ holder.iconImage.setImageDrawable(icon);
+ holder.titleText.setText(title);
+ holder.subtitleText.setVisibility(!TextUtils.isEmpty(subtitle) ? View.VISIBLE
+ : View.GONE);
+ holder.subtitleText.setText(subtitle);
+
+ return view;
+ }
+
+ private static class ViewHolder {
+
+ @NonNull
+ public final ImageView iconImage;
+ @NonNull
+ public final ViewGroup titleAndSubtitleLayout;
+ @NonNull
+ public final TextView titleText;
+ @NonNull
+ public final TextView subtitleText;
+
+ ViewHolder(@NonNull View view) {
+ iconImage = Objects.requireNonNull(view.findViewById(R.id.icon));
+ titleAndSubtitleLayout = Objects.requireNonNull(view.findViewById(
+ R.id.title_and_subtitle));
+ titleText = Objects.requireNonNull(view.findViewById(R.id.title));
+ subtitleText = Objects.requireNonNull(view.findViewById(R.id.subtitle));
+ }
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/RequestRoleViewModel.java b/src/com/android/packageinstaller/role/ui/RequestRoleViewModel.java
new file mode 100644
index 0000000..9e45808
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/RequestRoleViewModel.java
@@ -0,0 +1,60 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+import android.app.Application;
+import android.os.Process;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.ViewModel;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.android.packageinstaller.role.model.Role;
+
+/**
+ * {@link ViewModel} for a role request.
+ */
+public class RequestRoleViewModel extends DefaultAppViewModel {
+
+ public RequestRoleViewModel(@NonNull Role role, @NonNull Application application) {
+ super(role, Process.myUserHandle(), application);
+ }
+
+ /**
+ * {@link ViewModelProvider.Factory} for {@link RequestRoleViewModel}.
+ */
+ public static class Factory implements ViewModelProvider.Factory {
+
+ @NonNull
+ private Role mRole;
+
+ @NonNull
+ private Application mApplication;
+
+ public Factory(@NonNull Role role, @NonNull Application application) {
+ mRole = role;
+ mApplication = application;
+ }
+
+ @NonNull
+ @Override
+ public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
+ //noinspection unchecked
+ return (T) new RequestRoleViewModel(mRole, mApplication);
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/RoleItem.java b/src/com/android/packageinstaller/role/ui/RoleItem.java
new file mode 100644
index 0000000..01118e8
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/RoleItem.java
@@ -0,0 +1,58 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+import android.content.pm.ApplicationInfo;
+
+import androidx.annotation.NonNull;
+
+import com.android.packageinstaller.role.model.Role;
+
+import java.util.List;
+
+/**
+ * Information about a role to be displayed in a list of roles.
+ */
+public class RoleItem {
+
+ /**
+ * The {@link Role} for this role.
+ */
+ @NonNull
+ private final Role mRole;
+
+ /**
+ * The list of {@link ApplicationInfo} of applications holding this role.
+ */
+ @NonNull
+ private final List<ApplicationInfo> mHolderApplicationInfos;
+
+ public RoleItem(@NonNull Role role, @NonNull List<ApplicationInfo> holderApplicationInfos) {
+ mRole = role;
+ mHolderApplicationInfos = holderApplicationInfos;
+ }
+
+ @NonNull
+ public Role getRole() {
+ return mRole;
+ }
+
+ @NonNull
+ public List<ApplicationInfo> getHolderApplicationInfos() {
+ return mHolderApplicationInfos;
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/RoleListLiveData.java b/src/com/android/packageinstaller/role/ui/RoleListLiveData.java
new file mode 100644
index 0000000..1da398a
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/RoleListLiveData.java
@@ -0,0 +1,130 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+import android.app.role.OnRoleHoldersChangedListener;
+import android.app.role.RoleManager;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.os.UserHandle;
+import android.util.ArrayMap;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.WorkerThread;
+import androidx.lifecycle.LiveData;
+
+import com.android.packageinstaller.AsyncTaskLiveData;
+import com.android.packageinstaller.role.model.Role;
+import com.android.packageinstaller.role.model.Roles;
+import com.android.packageinstaller.role.utils.PackageUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * {@link LiveData} for a list of roles.
+ */
+public class RoleListLiveData extends AsyncTaskLiveData<List<RoleItem>>
+ implements OnRoleHoldersChangedListener {
+
+ private static final String LOG_TAG = RoleListLiveData.class.getSimpleName();
+
+ private final boolean mExclusive;
+ @NonNull
+ private final UserHandle mUser;
+ @NonNull
+ private final Context mContext;
+
+ public RoleListLiveData(boolean exclusive, @NonNull UserHandle user, @NonNull Context context) {
+ mExclusive = exclusive;
+ mUser = user;
+ mContext = context;
+ }
+
+ @Override
+ protected void onActive() {
+ loadValue();
+
+ RoleManager roleManager = mContext.getSystemService(RoleManager.class);
+ roleManager.addOnRoleHoldersChangedListenerAsUser(mContext.getMainExecutor(), this,
+ mUser);
+ }
+
+ @Override
+ protected void onInactive() {
+ RoleManager roleManager = mContext.getSystemService(RoleManager.class);
+ roleManager.removeOnRoleHoldersChangedListenerAsUser(this, mUser);
+ }
+
+ @Override
+ public void onRoleHoldersChanged(@NonNull String roleName, @NonNull UserHandle user) {
+ loadValue();
+ }
+
+ @NonNull
+ @Override
+ @WorkerThread
+ protected List<RoleItem> loadValueInBackground() {
+ ArrayMap<String, Role> roles = Roles.get(mContext);
+
+ List<RoleItem> roleItems = new ArrayList<>();
+ RoleManager roleManager = mContext.getSystemService(RoleManager.class);
+ int rolesSize = roles.size();
+ for (int rolesIndex = 0; rolesIndex < rolesSize; rolesIndex++) {
+ Role role = roles.valueAt(rolesIndex);
+
+ if (role.isExclusive() != mExclusive) {
+ continue;
+ }
+
+ if (!role.isAvailableAsUser(mUser, mContext)) {
+ continue;
+ }
+
+ if (!role.isVisibleAsUser(mUser, mContext)) {
+ continue;
+ }
+
+ if (mExclusive && role.getQualifyingPackagesAsUser(mUser, mContext).isEmpty()) {
+ continue;
+ }
+
+ List<ApplicationInfo> holderApplicationInfos = new ArrayList<>();
+ List<String> holderPackageNames = roleManager.getRoleHoldersAsUser(role.getName(),
+ mUser);
+ int holderPackageNamesSize = holderPackageNames.size();
+ for (int holderPackageNamesIndex = 0; holderPackageNamesIndex < holderPackageNamesSize;
+ holderPackageNamesIndex++) {
+ String holderPackageName = holderPackageNames.get(holderPackageNamesIndex);
+
+ ApplicationInfo holderApplicationInfo = PackageUtils.getApplicationInfoAsUser(
+ holderPackageName, mUser, mContext);
+ if (holderApplicationInfo == null) {
+ Log.w(LOG_TAG, "Cannot get ApplicationInfo for application, package name: "
+ + holderPackageName + ", user id: " + mUser.getIdentifier());
+ continue;
+ }
+ holderApplicationInfos.add(holderApplicationInfo);
+ }
+
+ roleItems.add(new RoleItem(role, holderApplicationInfos));
+ }
+
+ return roleItems;
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/RoleListSortFunction.java b/src/com/android/packageinstaller/role/ui/RoleListSortFunction.java
new file mode 100644
index 0000000..aa81b9c
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/RoleListSortFunction.java
@@ -0,0 +1,52 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+import android.content.Context;
+import android.icu.text.Collator;
+
+import androidx.annotation.NonNull;
+import androidx.arch.core.util.Function;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+
+/**
+ * A function for {@link androidx.lifecycle.Transformations#map(androidx.lifecycle.LiveData,
+ * Function)} that sorts a live data for role list.
+ */
+public class RoleListSortFunction implements Function<List<RoleItem>, List<RoleItem>> {
+
+ @NonNull
+ private final Comparator<RoleItem> mComparator;
+
+ public RoleListSortFunction(@NonNull Context context) {
+ Collator collator = Collator.getInstance(context.getResources().getConfiguration()
+ .getLocales().get(0));
+ mComparator = Comparator.comparing(roleItem -> context.getString(
+ roleItem.getRole().getShortLabelResource()), collator);
+ }
+
+ @NonNull
+ @Override
+ public List<RoleItem> apply(@NonNull List<RoleItem> input) {
+ List<RoleItem> sorted = new ArrayList<>(input);
+ sorted.sort(mComparator);
+ return sorted;
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/RoleLiveData.java b/src/com/android/packageinstaller/role/ui/RoleLiveData.java
new file mode 100644
index 0000000..4b932b6
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/RoleLiveData.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.packageinstaller.role.ui;
+
+import android.app.role.OnRoleHoldersChangedListener;
+import android.app.role.RoleManager;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.os.UserHandle;
+import android.util.Log;
+import android.util.Pair;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.WorkerThread;
+import androidx.lifecycle.LiveData;
+
+import com.android.packageinstaller.AsyncTaskLiveData;
+import com.android.packageinstaller.role.model.Role;
+import com.android.packageinstaller.role.utils.PackageUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * {@link LiveData} for a role.
+ */
+public class RoleLiveData extends AsyncTaskLiveData<List<Pair<ApplicationInfo, Boolean>>>
+ implements OnRoleHoldersChangedListener {
+
+ private static final String LOG_TAG = RoleLiveData.class.getSimpleName();
+
+ @NonNull
+ private final Role mRole;
+ @NonNull
+ private final UserHandle mUser;
+ @NonNull
+ private final Context mContext;
+
+ public RoleLiveData(@NonNull Role role, @NonNull UserHandle user, @NonNull Context context) {
+ mRole = role;
+ mUser = user;
+ mContext = context;
+ }
+
+ @Override
+ protected void onActive() {
+ loadValue();
+
+ RoleManager roleManager = mContext.getSystemService(RoleManager.class);
+ roleManager.addOnRoleHoldersChangedListenerAsUser(mContext.getMainExecutor(), this, mUser);
+ }
+
+ @Override
+ protected void onInactive() {
+ RoleManager roleManager = mContext.getSystemService(RoleManager.class);
+ roleManager.removeOnRoleHoldersChangedListenerAsUser(this, mUser);
+ }
+
+ @Override
+ public void onRoleHoldersChanged(@NonNull String roleName, @NonNull UserHandle user) {
+ loadValue();
+ }
+
+ @Override
+ @WorkerThread
+ protected List<Pair<ApplicationInfo, Boolean>> loadValueInBackground() {
+ RoleManager roleManager = mContext.getSystemService(RoleManager.class);
+ List<String> holderPackageNames = roleManager.getRoleHoldersAsUser(mRole.getName(), mUser);
+
+ List<String> qualifyingPackageNames = mRole.getQualifyingPackagesAsUser(mUser, mContext);
+ List<Pair<ApplicationInfo, Boolean>> qualifyingApplications = new ArrayList<>();
+ int qualifyingPackageNamesSize = qualifyingPackageNames.size();
+ for (int i = 0; i < qualifyingPackageNamesSize; i++) {
+ String qualifyingPackageName = qualifyingPackageNames.get(i);
+
+ ApplicationInfo qualifyingApplicationInfo = PackageUtils.getApplicationInfoAsUser(
+ qualifyingPackageName, mUser, mContext);
+ if (qualifyingApplicationInfo == null) {
+ Log.w(LOG_TAG, "Cannot get ApplicationInfo for application, skipping: "
+ + qualifyingPackageName);
+ continue;
+ }
+ boolean isHolderApplication = holderPackageNames.contains(qualifyingPackageName);
+ qualifyingApplications.add(new Pair<>(qualifyingApplicationInfo, isHolderApplication));
+ }
+
+ return qualifyingApplications;
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/RoleSearchTrampolineActivity.java b/src/com/android/packageinstaller/role/ui/RoleSearchTrampolineActivity.java
new file mode 100644
index 0000000..4f84985
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/RoleSearchTrampolineActivity.java
@@ -0,0 +1,69 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Process;
+
+import com.android.packageinstaller.role.service.RoleSearchIndexablesProvider;
+
+/**
+ * Trampoline activity for activities exposed from
+ * {@link com.android.packageinstaller.role.service.RoleSearchIndexablesProvider}.
+ */
+public class RoleSearchTrampolineActivity extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ Intent intent = getIntent();
+ if (!RoleSearchIndexablesProvider.isIntentValid(intent, this)) {
+ finish();
+ return;
+ }
+
+ String action = intent.getAction();
+ if (action == null) {
+ finish();
+ return;
+ }
+
+ Intent newIntent;
+ switch (action) {
+ case RoleSearchIndexablesProvider.ACTION_MANAGE_DEFAULT_APP:
+ newIntent = DefaultAppActivity.createIntent(
+ // We don't support work profile in search.
+ RoleSearchIndexablesProvider.getOriginalKey(intent), Process.myUserHandle(),
+ this);
+ break;
+ case RoleSearchIndexablesProvider.ACTION_MANAGE_SPECIAL_APP_ACCESS:
+ newIntent = SpecialAppAccessActivity.createIntent(
+ RoleSearchIndexablesProvider.getOriginalKey(intent), this);
+ break;
+ default:
+ finish();
+ return;
+ }
+
+ newIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
+ startActivity(newIntent);
+ finish();
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/RoleSortFunction.java b/src/com/android/packageinstaller/role/ui/RoleSortFunction.java
new file mode 100644
index 0000000..d3ebaa3
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/RoleSortFunction.java
@@ -0,0 +1,62 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.icu.text.Collator;
+import android.os.UserHandle;
+import android.util.Pair;
+
+import androidx.annotation.NonNull;
+import androidx.arch.core.util.Function;
+
+import com.android.packageinstaller.permission.utils.Utils;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+
+/**
+ * A function for {@link androidx.lifecycle.Transformations#map(androidx.lifecycle.LiveData,
+ * Function)} that sorts a live data for role.
+ */
+public class RoleSortFunction implements Function<List<Pair<ApplicationInfo, Boolean>>,
+ List<Pair<ApplicationInfo, Boolean>>> {
+
+ @NonNull
+ private final Comparator<Pair<ApplicationInfo, Boolean>> mComparator;
+
+ public RoleSortFunction(@NonNull Context context) {
+ Collator collator = Collator.getInstance(context.getResources().getConfiguration()
+ .getLocales().get(0));
+ Comparator<Pair<ApplicationInfo, Boolean>> labelComparator = Comparator.comparing(role ->
+ Utils.getAppLabel(role.first, context), collator);
+ Comparator<Pair<ApplicationInfo, Boolean>> userIdComparator = Comparator.comparingInt(role
+ -> UserHandle.getUserHandleForUid(role.first.uid).getIdentifier());
+ mComparator = labelComparator.thenComparing(userIdComparator);
+ }
+
+ @NonNull
+ @Override
+ public List<Pair<ApplicationInfo, Boolean>> apply(
+ @NonNull List<Pair<ApplicationInfo, Boolean>> input) {
+ List<Pair<ApplicationInfo, Boolean>> sorted = new ArrayList<>(input);
+ sorted.sort(mComparator);
+ return sorted;
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/SpecialAppAccessActivity.java b/src/com/android/packageinstaller/role/ui/SpecialAppAccessActivity.java
new file mode 100644
index 0000000..4ddf6f1
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/SpecialAppAccessActivity.java
@@ -0,0 +1,100 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+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.packageinstaller.DeviceUtils;
+import com.android.packageinstaller.role.model.Role;
+import com.android.packageinstaller.role.model.Roles;
+import com.android.packageinstaller.role.ui.auto.AutoSpecialAppAccessFragment;
+import com.android.packageinstaller.role.ui.handheld.HandheldSpecialAppAccessFragment;
+import com.android.permissioncontroller.R;
+
+/**
+ * Activity for a special app access.
+ */
+public class SpecialAppAccessActivity extends FragmentActivity {
+
+ private static final String LOG_TAG = SpecialAppAccessActivity.class.getSimpleName();
+
+ /**
+ * Create an intent for starting this activity.
+ *
+ * @param roleName the name of the role for the special app access
+ * @param context the context to create the intent
+ * @return an intent to start this activity
+ */
+ @NonNull
+ public static Intent createIntent(@NonNull String roleName, @NonNull Context context) {
+ return new Intent(context, SpecialAppAccessActivity.class)
+ .putExtra(Intent.EXTRA_ROLE_NAME, roleName);
+ }
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ if (DeviceUtils.isAuto(this)) {
+ // Automotive relies on a different theme. Apply before calling super so that
+ // 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);
+
+ String roleName = getIntent().getStringExtra(Intent.EXTRA_ROLE_NAME);
+
+ Role role = Roles.get(this).get(roleName);
+ if (role == null) {
+ Log.e(LOG_TAG, "Unknown role: " + roleName);
+ finish();
+ return;
+ }
+ if (!role.isAvailable(this)) {
+ Log.e(LOG_TAG, "Role is unavailable: " + roleName);
+ finish();
+ return;
+ }
+ if (!role.isVisible(this)) {
+ Log.e(LOG_TAG, "Role is invisible: " + roleName);
+ finish();
+ return;
+ }
+
+ if (savedInstanceState == null) {
+ Fragment fragment;
+ if (DeviceUtils.isAuto(this)) {
+ fragment = AutoSpecialAppAccessFragment.newInstance(roleName);
+ } else {
+ fragment = HandheldSpecialAppAccessFragment.newInstance(roleName);
+ }
+ getSupportFragmentManager().beginTransaction()
+ .add(android.R.id.content, fragment)
+ .commit();
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/SpecialAppAccessChildFragment.java b/src/com/android/packageinstaller/role/ui/SpecialAppAccessChildFragment.java
new file mode 100644
index 0000000..24227a4
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/SpecialAppAccessChildFragment.java
@@ -0,0 +1,246 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.util.ArrayMap;
+import android.util.Pair;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.ViewModelProviders;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.preference.TwoStatePreference;
+
+import com.android.packageinstaller.permission.utils.Utils;
+import com.android.packageinstaller.role.model.Role;
+import com.android.packageinstaller.role.model.Roles;
+
+import java.util.List;
+
+/**
+ * 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
+ */
+public class SpecialAppAccessChildFragment<PF extends PreferenceFragmentCompat
+ & SpecialAppAccessChildFragment.Parent> extends Fragment
+ implements Preference.OnPreferenceClickListener {
+
+ 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";
+
+ private String mRoleName;
+
+ private Role mRole;
+
+ private SpecialAppAccessViewModel mViewModel;
+
+ /**
+ * 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 SpecialAppAccessChildFragment newInstance(@NonNull String roleName) {
+ SpecialAppAccessChildFragment fragment = new SpecialAppAccessChildFragment();
+ 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);
+
+ PF preferenceFragment = requirePreferenceFragment();
+ Activity activity = requireActivity();
+ mRole = Roles.get(activity).get(mRoleName);
+ preferenceFragment.setTitle(getString(mRole.getLabelResource()));
+
+ mViewModel = ViewModelProviders.of(this, new SpecialAppAccessViewModel.Factory(mRole,
+ activity.getApplication())).get(SpecialAppAccessViewModel.class);
+ mViewModel.getRoleLiveData().observe(this, this::onRoleChanged);
+ mViewModel.observeManageRoleHolderState(this, this::onManageRoleHolderStateChanged);
+ }
+
+ private void onRoleChanged(
+ @NonNull List<Pair<ApplicationInfo, Boolean>> qualifyingApplications) {
+ PF preferenceFragment = requirePreferenceFragment();
+ PreferenceManager preferenceManager = preferenceFragment.getPreferenceManager();
+ Context context = preferenceManager.getContext();
+
+ PreferenceScreen preferenceScreen = preferenceFragment.getPreferenceScreen();
+ Preference oldDescriptionPreference = null;
+ ArrayMap<String, Preference> oldPreferences = new ArrayMap<>();
+ if (preferenceScreen == null) {
+ preferenceScreen = preferenceManager.createPreferenceScreen(context);
+ preferenceFragment.setPreferenceScreen(preferenceScreen);
+ } else {
+ oldDescriptionPreference = preferenceScreen.findPreference(PREFERENCE_KEY_DESCRIPTION);
+ if (oldDescriptionPreference != null) {
+ preferenceScreen.removePreference(oldDescriptionPreference);
+ oldDescriptionPreference.setOrder(Preference.DEFAULT_ORDER);
+ }
+ for (int i = preferenceScreen.getPreferenceCount() - 1; i >= 0; --i) {
+ Preference preference = preferenceScreen.getPreference(i);
+
+ preferenceScreen.removePreference(preference);
+ preference.setOrder(Preference.DEFAULT_ORDER);
+ oldPreferences.put(preference.getKey(), preference);
+ }
+ }
+
+ int qualifyingApplicationsSize = qualifyingApplications.size();
+ for (int i = 0; i < qualifyingApplicationsSize; i++) {
+ Pair<ApplicationInfo, Boolean> qualifyingApplication = qualifyingApplications.get(i);
+ ApplicationInfo qualifyingApplicationInfo = qualifyingApplication.first;
+ boolean isHolderPackage = qualifyingApplication.second;
+
+ String key = qualifyingApplicationInfo.packageName + '_'
+ + qualifyingApplicationInfo.uid;
+ TwoStatePreference preference = (TwoStatePreference) oldPreferences.get(key);
+ if (preference == null) {
+ preference = preferenceFragment.createApplicationPreference(context);
+ preference.setKey(key);
+ preference.setIcon(Utils.getBadgedIcon(context, qualifyingApplicationInfo));
+ preference.setTitle(Utils.getFullAppLabel(qualifyingApplicationInfo, context));
+ preference.setPersistent(false);
+ preference.setOnPreferenceChangeListener((preference2, newValue) -> false);
+ preference.setOnPreferenceClickListener(this);
+ preference.getExtras().putParcelable(PREFERENCE_EXTRA_APPLICATION_INFO,
+ qualifyingApplicationInfo);
+ }
+
+ preference.setChecked(isHolderPackage);
+ UserHandle user = UserHandle.getUserHandleForUid(qualifyingApplicationInfo.uid);
+ mRole.prepareApplicationPreferenceAsUser(preference, qualifyingApplicationInfo, user,
+ context);
+
+ preferenceScreen.addPreference(preference);
+ }
+
+ Preference descriptionPreference = oldDescriptionPreference;
+ if (descriptionPreference == null) {
+ descriptionPreference = preferenceFragment.createFooterPreference(context);
+ descriptionPreference.setKey(PREFERENCE_KEY_DESCRIPTION);
+ descriptionPreference.setSummary(mRole.getDescriptionResource());
+ }
+ preferenceScreen.addPreference(descriptionPreference);
+
+ preferenceFragment.onPreferenceScreenChanged();
+ }
+
+ private void onManageRoleHolderStateChanged(@NonNull ManageRoleHolderStateLiveData liveData,
+ int state) {
+ switch (state) {
+ case ManageRoleHolderStateLiveData.STATE_SUCCESS:
+ String packageName = liveData.getLastPackageName();
+ if (packageName != null && liveData.isLastAdd()) {
+ mRole.onHolderSelectedAsUser(packageName, liveData.getLastUser(),
+ requireContext());
+ }
+ liveData.resetState();
+ break;
+ case ManageRoleHolderStateLiveData.STATE_FAILURE:
+ liveData.resetState();
+ break;
+ }
+ }
+
+ @Override
+ public boolean onPreferenceClick(@NonNull Preference preference) {
+ ApplicationInfo applicationInfo = preference.getExtras().getParcelable(
+ PREFERENCE_EXTRA_APPLICATION_INFO);
+ String packageName = applicationInfo.packageName;
+ UserHandle user = UserHandle.getUserHandleForUid(applicationInfo.uid);
+ boolean allow = !((TwoStatePreference) preference).isChecked();
+ String key = preference.getKey();
+ mViewModel.setSpecialAppAccessAsUser(packageName, allow, user, key, this,
+ this::onManageRoleHolderStateChanged);
+ return true;
+ }
+
+ @NonNull
+ private PF requirePreferenceFragment() {
+ //noinspection unchecked
+ return (PF) 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);
+
+ /**
+ * Create a new preference for an application.
+ *
+ * @param context the {@code Context} to use when creating the preference.
+ *
+ * @return a new preference for an application
+ */
+ @NonNull
+ TwoStatePreference createApplicationPreference(@NonNull Context context);
+
+ /**
+ * Create a new preference for the footer.
+ *
+ * @param context the {@code Context} to use when creating the preference.
+ *
+ * @return a new preference for the footer
+ */
+ @NonNull
+ Preference createFooterPreference(@NonNull Context context);
+
+ /**
+ * Callback when changes have been made to the {@link PreferenceScreen} of the parent
+ * {@link PreferenceFragmentCompat}.
+ */
+ void onPreferenceScreenChanged();
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/SpecialAppAccessListActivity.java b/src/com/android/packageinstaller/role/ui/SpecialAppAccessListActivity.java
new file mode 100644
index 0000000..66cf6ed
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/SpecialAppAccessListActivity.java
@@ -0,0 +1,60 @@
+/*
+ * 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.packageinstaller.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.packageinstaller.DeviceUtils;
+import com.android.packageinstaller.role.ui.auto.AutoSpecialAppAccessListFragment;
+import com.android.packageinstaller.role.ui.handheld.HandheldSpecialAppAccessListFragment;
+import com.android.permissioncontroller.R;
+
+/**
+ * Activity for the list of special app accesses.
+ */
+public class SpecialAppAccessListActivity extends FragmentActivity {
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ if (DeviceUtils.isAuto(this)) {
+ // Automotive relies on a different theme. Apply before calling super so that
+ // 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)) {
+ fragment = AutoSpecialAppAccessListFragment.newInstance();
+ } else {
+ fragment = HandheldSpecialAppAccessListFragment.newInstance();
+ }
+ getSupportFragmentManager().beginTransaction()
+ .add(android.R.id.content, fragment)
+ .commit();
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/SpecialAppAccessListChildFragment.java b/src/com/android/packageinstaller/role/ui/SpecialAppAccessListChildFragment.java
new file mode 100644
index 0000000..32620d3
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/SpecialAppAccessListChildFragment.java
@@ -0,0 +1,159 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Process;
+import android.os.UserHandle;
+import android.util.ArrayMap;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.ViewModelProviders;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+
+import com.android.packageinstaller.role.model.Role;
+import com.android.packageinstaller.role.model.Roles;
+
+import java.util.List;
+
+/**
+ * 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
+ */
+public class SpecialAppAccessListChildFragment<PF extends PreferenceFragmentCompat
+ & SpecialAppAccessListChildFragment.Parent> extends Fragment
+ implements Preference.OnPreferenceClickListener {
+
+ private SpecialAppAccessListViewModel mViewModel;
+
+ /**
+ * Create a new instance of this fragment.
+ *
+ * @return a new instance of this fragment
+ */
+ @NonNull
+ public static SpecialAppAccessListChildFragment newInstance() {
+ return new SpecialAppAccessListChildFragment();
+ }
+
+ @Override
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ mViewModel = ViewModelProviders.of(this).get(SpecialAppAccessListViewModel.class);
+ mViewModel.getLiveData().observe(this, roleItems -> onRoleListChanged());
+ }
+
+ private void onRoleListChanged() {
+ List<RoleItem> roleItems = mViewModel.getLiveData().getValue();
+ if (roleItems == null) {
+ return;
+ }
+
+ PF preferenceFragment = requirePreferenceFragment();
+ PreferenceManager preferenceManager = preferenceFragment.getPreferenceManager();
+ Context context = preferenceManager.getContext();
+ PreferenceScreen preferenceScreen = preferenceFragment.getPreferenceScreen();
+ ArrayMap<String, Preference> oldPreferences = new ArrayMap<>();
+ if (preferenceScreen == null) {
+ preferenceScreen = preferenceManager.createPreferenceScreen(context);
+ preferenceFragment.setPreferenceScreen(preferenceScreen);
+ } else {
+ for (int i = preferenceScreen.getPreferenceCount() - 1; i >= 0; --i) {
+ Preference preference = preferenceScreen.getPreference(i);
+
+ preferenceScreen.removePreference(preference);
+ preference.setOrder(Preference.DEFAULT_ORDER);
+ oldPreferences.put(preference.getKey(), preference);
+ }
+ }
+
+ int roleItemsSize = roleItems.size();
+ for (int i = 0; i < roleItemsSize; i++) {
+ RoleItem roleItem = roleItems.get(i);
+
+ Role role = roleItem.getRole();
+ TwoTargetPreference preference = (TwoTargetPreference) oldPreferences.get(
+ role.getName());
+ if (preference == null) {
+ preference = preferenceFragment.createPreference(context);
+ preference.setKey(role.getName());
+ preference.setIconSpaceReserved(true);
+ preference.setTitle(role.getShortLabelResource());
+ preference.setPersistent(false);
+ preference.setOnPreferenceClickListener(this);
+ }
+
+ role.preparePreferenceAsUser(preference, Process.myUserHandle(), context);
+
+ preferenceScreen.addPreference(preference);
+ }
+
+ preferenceFragment.onPreferenceScreenChanged();
+ }
+
+ @Override
+ public boolean onPreferenceClick(@NonNull Preference preference) {
+ String roleName = preference.getKey();
+ Context context = requireContext();
+ Role role = Roles.get(context).get(roleName);
+ UserHandle user = Process.myUserHandle();
+ Intent intent = role.getManageIntentAsUser(user, context);
+ if (intent == null) {
+ intent = SpecialAppAccessActivity.createIntent(roleName, context);
+ }
+ startActivity(intent);
+ return true;
+ }
+
+ @NonNull
+ private PF requirePreferenceFragment() {
+ //noinspection unchecked
+ return (PF) requireParentFragment();
+ }
+
+ /**
+ * Interface that the parent fragment must implement.
+ */
+ public interface Parent {
+
+ /**
+ * Create a new preference for a special app access.
+ *
+ * @param context the {@code Context} to use when creating the preference.
+ *
+ * @return a new preference for a special app access
+ */
+ @NonNull
+ TwoTargetPreference createPreference(@NonNull Context context);
+
+ /**
+ * Callback when changes have been made to the {@link PreferenceScreen} of the parent
+ * {@link PreferenceFragmentCompat}.
+ */
+ void onPreferenceScreenChanged();
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/SpecialAppAccessListViewModel.java b/src/com/android/packageinstaller/role/ui/SpecialAppAccessListViewModel.java
new file mode 100644
index 0000000..4933500
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/SpecialAppAccessListViewModel.java
@@ -0,0 +1,61 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+import android.app.Application;
+import android.os.Process;
+import android.os.UserHandle;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.AndroidViewModel;
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.Transformations;
+import androidx.lifecycle.ViewModel;
+
+import com.android.packageinstaller.role.utils.UserUtils;
+
+import java.util.List;
+
+/**
+ * {@link ViewModel} for the list of special app accesses.
+ */
+public class SpecialAppAccessListViewModel extends AndroidViewModel {
+
+ @NonNull
+ private final LiveData<List<RoleItem>> mLiveData;
+
+ public SpecialAppAccessListViewModel(@NonNull Application application) {
+ super(application);
+
+ UserHandle user = Process.myUserHandle();
+ RoleListLiveData liveData = new RoleListLiveData(false, user, application);
+ UserHandle workProfile = UserUtils.getWorkProfile(application);
+ RoleListSortFunction sortFunction = new RoleListSortFunction(application);
+ if (workProfile == null) {
+ mLiveData = Transformations.map(liveData, sortFunction);
+ } else {
+ RoleListLiveData workLiveData = new RoleListLiveData(false, workProfile, application);
+ mLiveData = Transformations.map(new MergeRoleListLiveData(liveData, workLiveData),
+ sortFunction);
+ }
+ }
+
+ @NonNull
+ public LiveData<List<RoleItem>> getLiveData() {
+ return mLiveData;
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/SpecialAppAccessViewModel.java b/src/com/android/packageinstaller/role/ui/SpecialAppAccessViewModel.java
new file mode 100644
index 0000000..eb6624a
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/SpecialAppAccessViewModel.java
@@ -0,0 +1,181 @@
+/*
+ * 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.packageinstaller.role.ui;
+
+import android.app.Application;
+import android.content.pm.ApplicationInfo;
+import android.os.Process;
+import android.os.UserHandle;
+import android.util.ArrayMap;
+import android.util.Log;
+import android.util.Pair;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.AndroidViewModel;
+import androidx.lifecycle.LifecycleOwner;
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.Transformations;
+import androidx.lifecycle.ViewModel;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.android.packageinstaller.role.model.Role;
+import com.android.packageinstaller.role.utils.UserUtils;
+
+import java.util.List;
+
+/**
+ * {@link ViewModel} for a special app access.
+ */
+public class SpecialAppAccessViewModel extends AndroidViewModel {
+
+ private static final String LOG_TAG = SpecialAppAccessViewModel.class.getSimpleName();
+
+ @NonNull
+ private final Role mRole;
+
+ @NonNull
+ private final LiveData<List<Pair<ApplicationInfo, Boolean>>> mRoleLiveData;
+
+ @NonNull
+ private final ArrayMap<String, ManageRoleHolderStateLiveData> mManageRoleHolderStateLiveDatas =
+ new ArrayMap<>();
+
+ public SpecialAppAccessViewModel(@NonNull Role role, @NonNull Application application) {
+ super(application);
+
+ mRole = role;
+
+ UserHandle user = Process.myUserHandle();
+ RoleLiveData roleLiveData = new RoleLiveData(role, user, application);
+ UserHandle workProfile = UserUtils.getWorkProfile(application);
+ RoleSortFunction sortFunction = new RoleSortFunction(application);
+ if (workProfile == null) {
+ mRoleLiveData = Transformations.map(roleLiveData, sortFunction);
+ } else {
+ RoleLiveData workRoleLiveData = new RoleLiveData(role, workProfile, application);
+ mRoleLiveData = Transformations.map(new MergeRoleLiveData(roleLiveData,
+ workRoleLiveData), sortFunction);
+ }
+ }
+
+ @NonNull
+ public LiveData<List<Pair<ApplicationInfo, Boolean>>> getRoleLiveData() {
+ return mRoleLiveData;
+ }
+
+ /**
+ * Observe all the {@link ManageRoleHolderStateLiveData} instances.
+ *
+ * @param owner the {@link LifecycleOwner} which controls the observer
+ * @param observer the observer that will receive the events
+ */
+ public void observeManageRoleHolderState(@NonNull LifecycleOwner owner,
+ @NonNull ManageRoleHolderStateObserver observer) {
+ int manageRoleHolderStateLiveDatasSize = mManageRoleHolderStateLiveDatas.size();
+ for (int i = 0; i < manageRoleHolderStateLiveDatasSize; i++) {
+ ManageRoleHolderStateLiveData liveData = mManageRoleHolderStateLiveDatas.valueAt(i);
+
+ liveData.observe(owner, state -> observer.onManageRoleHolderStateChanged(liveData,
+ state));
+ }
+ }
+
+ /**
+ * Get or create a {@link ManageRoleHolderStateLiveData} instance for the specified key.
+ *
+ * @param key the key for the {@link ManageRoleHolderStateLiveData}
+ * @param owner the {@link LifecycleOwner} which controls the observer
+ * @param observer the observer that will receive the events
+ *
+ * @return the {@link ManageRoleHolderStateLiveData}
+ */
+ @NonNull
+ private ManageRoleHolderStateLiveData getManageRoleHolderStateLiveData(@NonNull String key,
+ @NonNull LifecycleOwner owner, @NonNull ManageRoleHolderStateObserver observer) {
+ ManageRoleHolderStateLiveData liveData = mManageRoleHolderStateLiveDatas.get(key);
+ if (liveData == null) {
+ liveData = new ManageRoleHolderStateLiveData();
+ ManageRoleHolderStateLiveData finalLiveData = liveData;
+ liveData.observe(owner, state -> observer.onManageRoleHolderStateChanged(finalLiveData,
+ state));
+ mManageRoleHolderStateLiveDatas.put(key, liveData);
+ }
+ return liveData;
+ }
+
+ /**
+ * Set whether an application has an special app access.
+ *
+ * @param packageName the package name of the application
+ * @param allow whether the application should have the access
+ * @param user the user of the application
+ * @param key the key for the {@link ManageRoleHolderStateLiveData}
+ * @param owner the {@link LifecycleOwner} which controls the observer
+ * @param observer the observer that will receive the events
+ */
+ public void setSpecialAppAccessAsUser(@NonNull String packageName, boolean allow,
+ @NonNull UserHandle user, @NonNull String key, @NonNull LifecycleOwner owner,
+ @NonNull ManageRoleHolderStateObserver observer) {
+ ManageRoleHolderStateLiveData liveData = getManageRoleHolderStateLiveData(key, owner,
+ observer);
+ if (liveData.getValue() != ManageRoleHolderStateLiveData.STATE_IDLE) {
+ Log.i(LOG_TAG, "Trying to set special app access while another request is on-going");
+ return;
+ }
+ liveData.setRoleHolderAsUser(mRole.getName(), packageName, allow, 0, user,
+ getApplication());
+ }
+
+ /**
+ * Observer for multiple {@link ManageRoleHolderStateLiveData} instances.
+ */
+ public interface ManageRoleHolderStateObserver {
+
+ /**
+ * Callback when any {@link ManageRoleHolderStateLiveData} changed.
+ *
+ * @param liveData the {@link ManageRoleHolderStateLiveData} that changed
+ * @param state the state after the change
+ */
+ void onManageRoleHolderStateChanged(@NonNull ManageRoleHolderStateLiveData liveData,
+ int state);
+ }
+
+ /**
+ * {@link ViewModelProvider.Factory} for {@link SpecialAppAccessViewModel}.
+ */
+ public static class Factory implements ViewModelProvider.Factory {
+
+ @NonNull
+ private Role mRole;
+
+ @NonNull
+ private Application mApplication;
+
+ public Factory(@NonNull Role role, @NonNull Application application) {
+ mRole = role;
+ mApplication = application;
+ }
+
+ @NonNull
+ @Override
+ public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
+ //noinspection unchecked
+ return (T) new SpecialAppAccessViewModel(mRole, mApplication);
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/TwoTargetPreference.java b/src/com/android/packageinstaller/role/ui/TwoTargetPreference.java
new file mode 100644
index 0000000..b1d7dc1
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/TwoTargetPreference.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.packageinstaller.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 Preference} with the widget layout as a separate target.
+ *
+ * @see com.android.settingslib.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
+ */
+ public abstract void setOnSecondTargetClickListener(
+ @Nullable OnSecondTargetClickListener listener);
+
+ /**
+ * Listener for second target click.
+ */
+ public interface OnSecondTargetClickListener {
+
+ /**
+ * Callback when the second target is clicked.
+ *
+ * @param preference the {@link TwoTargetPreference} that was clicked
+ */
+ void onSecondTargetClick(@NonNull TwoTargetPreference preference);
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/auto/AutoDefaultAppFragment.java b/src/com/android/packageinstaller/role/ui/auto/AutoDefaultAppFragment.java
new file mode 100644
index 0000000..755e329
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/auto/AutoDefaultAppFragment.java
@@ -0,0 +1,110 @@
+/*
+ * 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.packageinstaller.role.ui.auto;
+
+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.TwoStatePreference;
+
+import com.android.packageinstaller.auto.AutoSettingsFrameFragment;
+import com.android.packageinstaller.role.model.Role;
+import com.android.packageinstaller.role.ui.DefaultAppChildFragment;
+import com.android.permissioncontroller.R;
+
+/** Screen to pick a default app for a particular {@link Role}. */
+public class AutoDefaultAppFragment extends AutoSettingsFrameFragment implements
+ DefaultAppChildFragment.Parent {
+
+ private String mRoleName;
+
+ 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 AutoDefaultAppFragment newInstance(@NonNull String roleName,
+ @NonNull UserHandle user) {
+ AutoDefaultAppFragment fragment = new AutoDefaultAppFragment();
+ 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 onCreatePreferences(Bundle bundle, String s) {
+ // Preferences will be added via shared logic in {@link DefaultAppChildFragment}.
+ }
+
+ @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 setTitle(@NonNull CharSequence title) {
+ setHeaderLabel(title);
+ }
+
+ @NonNull
+ @Override
+ public TwoStatePreference createApplicationPreference(@NonNull Context context) {
+ return new AutoDefaultAppPreference(context);
+ }
+
+ @NonNull
+ @Override
+ public Preference createFooterPreference(@NonNull Context context) {
+ Preference preference = new Preference(context);
+ preference.setIcon(R.drawable.ic_info_outline);
+ preference.setSelectable(false);
+ return preference;
+ }
+
+ @Override
+ public void onPreferenceScreenChanged() {
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/auto/AutoDefaultAppListFragment.java b/src/com/android/packageinstaller/role/ui/auto/AutoDefaultAppListFragment.java
new file mode 100644
index 0000000..a743a05
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/auto/AutoDefaultAppListFragment.java
@@ -0,0 +1,68 @@
+/*
+ * 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.packageinstaller.role.ui.auto;
+
+import android.content.Context;
+import android.os.Bundle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.packageinstaller.auto.AutoSettingsFrameFragment;
+import com.android.packageinstaller.role.ui.DefaultAppListChildFragment;
+import com.android.packageinstaller.role.ui.TwoTargetPreference;
+import com.android.permissioncontroller.R;
+
+/** Shows various roles for which a default app can be picked. */
+public class AutoDefaultAppListFragment extends AutoSettingsFrameFragment implements
+ DefaultAppListChildFragment.Parent {
+
+ /** Create a new instance of this fragment. */
+ @NonNull
+ public static AutoDefaultAppListFragment newInstance() {
+ return new AutoDefaultAppListFragment();
+ }
+
+ @Override
+ public void onCreatePreferences(Bundle bundle, String s) {
+ // Preferences will be added via shared logic in {@link DefaultAppListChildFragment}.
+ }
+
+ @Override
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ if (savedInstanceState == null) {
+ DefaultAppListChildFragment fragment = DefaultAppListChildFragment.newInstance();
+ getChildFragmentManager().beginTransaction()
+ .add(fragment, null)
+ .commit();
+ }
+
+ setHeaderLabel(getString(R.string.default_apps));
+ }
+
+ @NonNull
+ @Override
+ public TwoTargetPreference createPreference(@NonNull Context context) {
+ return new AutoSettingsPreference(context);
+ }
+
+ @Override
+ public void onPreferenceScreenChanged() {
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/auto/AutoDefaultAppPreference.java b/src/com/android/packageinstaller/role/ui/auto/AutoDefaultAppPreference.java
new file mode 100644
index 0000000..5211f00
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/auto/AutoDefaultAppPreference.java
@@ -0,0 +1,60 @@
+/*
+ * 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.packageinstaller.role.ui.auto;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.core.content.res.TypedArrayUtils;
+import androidx.preference.PreferenceViewHolder;
+import androidx.preference.TwoStatePreference;
+
+import com.android.permissioncontroller.R;
+
+/** Preference used to represent apps that can be picked as a default app. */
+public class AutoDefaultAppPreference extends TwoStatePreference {
+
+ public AutoDefaultAppPreference(Context context) {
+ super(context, null, TypedArrayUtils.getAttr(context, R.attr.preferenceStyle,
+ android.R.attr.preferenceStyle));
+ }
+
+ @Override
+ public void onBindViewHolder(PreferenceViewHolder holder) {
+ super.onBindViewHolder(holder);
+
+ TextView summaryView = (TextView) holder.findViewById(android.R.id.summary);
+ if (summaryView == null) {
+ return;
+ }
+
+ if (isChecked()) {
+ CharSequence current = getSummary();
+ CharSequence selected = getContext().getString(R.string.car_default_app_selected);
+ if (!TextUtils.isEmpty(current)) {
+ selected = getContext().getString(R.string.car_default_app_selected_with_info,
+ current);
+ }
+ summaryView.setText(selected);
+ summaryView.setVisibility(View.VISIBLE);
+ } else {
+ summaryView.setVisibility(View.GONE);
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/auto/AutoSettingsPreference.java b/src/com/android/packageinstaller/role/ui/auto/AutoSettingsPreference.java
new file mode 100644
index 0000000..099c1ad
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/auto/AutoSettingsPreference.java
@@ -0,0 +1,54 @@
+/*
+ * 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.packageinstaller.role.ui.auto;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.packageinstaller.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 TwoTargetPreference {
+
+ public AutoSettingsPreference(@NonNull Context context,
+ @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ }
+
+ public AutoSettingsPreference(@NonNull Context context, @Nullable AttributeSet attrs,
+ int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ }
+
+ public AutoSettingsPreference(@NonNull Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public AutoSettingsPreference(@NonNull Context context) {
+ super(context);
+ }
+
+ @Override
+ public void setOnSecondTargetClickListener(@Nullable OnSecondTargetClickListener listener) {
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/auto/AutoSpecialAppAccessFragment.java b/src/com/android/packageinstaller/role/ui/auto/AutoSpecialAppAccessFragment.java
new file mode 100644
index 0000000..02c999f
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/auto/AutoSpecialAppAccessFragment.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright 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.packageinstaller.role.ui.auto;
+
+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.SwitchPreference;
+import androidx.preference.TwoStatePreference;
+
+import com.android.packageinstaller.auto.AutoSettingsFrameFragment;
+import com.android.packageinstaller.role.ui.SpecialAppAccessChildFragment;
+import com.android.permissioncontroller.R;
+
+/** Automotive fragment for displaying special app access for a role. */
+public class AutoSpecialAppAccessFragment extends AutoSettingsFrameFragment implements
+ SpecialAppAccessChildFragment.Parent {
+
+ private String mRoleName;
+
+ /**
+ * Returns a new instance of {@link AutoSpecialAppAccessFragment} for the given {@code
+ * roleName}.
+ */
+ @NonNull
+ public static AutoSpecialAppAccessFragment newInstance(@NonNull String roleName) {
+ AutoSpecialAppAccessFragment fragment = new AutoSpecialAppAccessFragment();
+ 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 onCreatePreferences(Bundle bundle, String s) {
+ // Preferences will be added by the child fragment.
+ }
+
+ @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 setTitle(@NonNull CharSequence title) {
+ setHeaderLabel(title);
+ }
+
+ @NonNull
+ @Override
+ public TwoStatePreference createApplicationPreference(@NonNull Context context) {
+ return new SwitchPreference(context);
+ }
+
+ @NonNull
+ @Override
+ public Preference createFooterPreference(@NonNull Context context) {
+ Preference preference = new Preference(context);
+ preference.setIcon(R.drawable.ic_info_outline);
+ preference.setSelectable(false);
+ return preference;
+ }
+
+ @Override
+ public void onPreferenceScreenChanged() {
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/auto/AutoSpecialAppAccessListFragment.java b/src/com/android/packageinstaller/role/ui/auto/AutoSpecialAppAccessListFragment.java
new file mode 100644
index 0000000..2f824dc
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/auto/AutoSpecialAppAccessListFragment.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 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.packageinstaller.role.ui.auto;
+
+import android.content.Context;
+import android.os.Bundle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.packageinstaller.auto.AutoSettingsFrameFragment;
+import com.android.packageinstaller.role.ui.SpecialAppAccessListChildFragment;
+import com.android.packageinstaller.role.ui.TwoTargetPreference;
+import com.android.permissioncontroller.R;
+
+/** Automotive fragment for the list of role related special app accesses. */
+public class AutoSpecialAppAccessListFragment extends AutoSettingsFrameFragment implements
+ SpecialAppAccessListChildFragment.Parent {
+
+ /** Returns a new instance of {@link AutoSpecialAppAccessListFragment}. */
+ @NonNull
+ public static AutoSpecialAppAccessListFragment newInstance() {
+ return new AutoSpecialAppAccessListFragment();
+ }
+
+ @Override
+ public void onCreatePreferences(Bundle bundle, String s) {
+ // Preferences will be added by the child fragment.
+ }
+
+ @Override
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ if (savedInstanceState == null) {
+ SpecialAppAccessListChildFragment fragment =
+ SpecialAppAccessListChildFragment.newInstance();
+ getChildFragmentManager().beginTransaction()
+ .add(fragment, /* tag= */ null)
+ .commit();
+ }
+
+ setHeaderLabel(getString(R.string.special_app_access));
+ }
+
+ @NonNull
+ @Override
+ public TwoTargetPreference createPreference(@NonNull Context context) {
+ return new AutoSettingsPreference(context);
+ }
+
+ @Override
+ public void onPreferenceScreenChanged() {
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/handheld/AppIconPreference.java b/src/com/android/packageinstaller/role/ui/handheld/AppIconPreference.java
new file mode 100644
index 0000000..7625b66
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/handheld/AppIconPreference.java
@@ -0,0 +1,116 @@
+/*
+ * 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.packageinstaller.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.
+ */
+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;
+
+ 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/src/com/android/packageinstaller/role/ui/handheld/AppIconRadioButtonPreference.java b/src/com/android/packageinstaller/role/ui/handheld/AppIconRadioButtonPreference.java
new file mode 100644
index 0000000..793b68c
--- /dev/null
+++ b/src/com/android/packageinstaller/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.packageinstaller.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/src/com/android/packageinstaller/role/ui/handheld/AppIconSettingsButtonPreference.java b/src/com/android/packageinstaller/role/ui/handheld/AppIconSettingsButtonPreference.java
new file mode 100644
index 0000000..cd2dcd3
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/handheld/AppIconSettingsButtonPreference.java
@@ -0,0 +1,71 @@
+/*
+ * 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.packageinstaller.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}.
+ */
+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();
+ }
+
+ 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/src/com/android/packageinstaller/role/ui/handheld/AppIconSwitchPreference.java b/src/com/android/packageinstaller/role/ui/handheld/AppIconSwitchPreference.java
new file mode 100644
index 0000000..de3f484
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/handheld/AppIconSwitchPreference.java
@@ -0,0 +1,72 @@
+/*
+ * 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.packageinstaller.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;
+import androidx.preference.SwitchPreference;
+
+/**
+ * {@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/src/com/android/packageinstaller/role/ui/handheld/FooterPreference.java b/src/com/android/packageinstaller/role/ui/handheld/FooterPreference.java
new file mode 100644
index 0000000..bcdab36
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/handheld/FooterPreference.java
@@ -0,0 +1,89 @@
+/*
+ * 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.packageinstaller.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.packageinstaller.role.utils.UiUtils;
+import com.android.permissioncontroller.R;
+
+/**
+ * {@link Preference} acting as the footer of a page.
+ */
+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();
+ }
+
+ 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);
+ LinearLayout.LayoutParams iconFrameLayoutParams = (LinearLayout.LayoutParams)
+ iconFrame.getLayoutParams();
+ iconFrameLayoutParams.gravity = Gravity.TOP;
+ iconFrame.setLayoutParams(iconFrameLayoutParams);
+ int iconFramePaddingVertical = UiUtils.dpToPxOffset(ICON_LAYOUT_PADDING_VERTICAL_DP,
+ iconFrame.getContext());
+ iconFrame.setPaddingRelative(iconFrame.getPaddingStart(), iconFramePaddingVertical,
+ iconFrame.getPaddingEnd(), iconFramePaddingVertical);
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/handheld/HandHeldTwoTargetPreference.java b/src/com/android/packageinstaller/role/ui/handheld/HandHeldTwoTargetPreference.java
new file mode 100644
index 0000000..01d7557
--- /dev/null
+++ b/src/com/android/packageinstaller/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.packageinstaller.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.packageinstaller.role.ui.TwoTargetPreference;
+import com.android.permissioncontroller.R;
+
+/**
+ * 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/src/com/android/packageinstaller/role/ui/handheld/HandheldDefaultAppFragment.java b/src/com/android/packageinstaller/role/ui/handheld/HandheldDefaultAppFragment.java
new file mode 100644
index 0000000..d76bd8f
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/handheld/HandheldDefaultAppFragment.java
@@ -0,0 +1,111 @@
+/*
+ * 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.packageinstaller.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.annotation.StringRes;
+import androidx.preference.Preference;
+import androidx.preference.TwoStatePreference;
+
+import com.android.packageinstaller.role.ui.DefaultAppChildFragment;
+import com.android.permissioncontroller.R;
+
+/**
+ * Handheld fragment for a default app.
+ */
+public class HandheldDefaultAppFragment extends SettingsFragment
+ implements DefaultAppChildFragment.Parent {
+
+ private String mRoleName;
+
+ 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 HandheldDefaultAppFragment newInstance(@NonNull String roleName,
+ @NonNull UserHandle user) {
+ HandheldDefaultAppFragment fragment = new HandheldDefaultAppFragment();
+ 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
+ @StringRes
+ 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/src/com/android/packageinstaller/role/ui/handheld/HandheldDefaultAppListFragment.java b/src/com/android/packageinstaller/role/ui/handheld/HandheldDefaultAppListFragment.java
new file mode 100644
index 0000000..b8a614e
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/handheld/HandheldDefaultAppListFragment.java
@@ -0,0 +1,79 @@
+/*
+ * 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.packageinstaller.role.ui.handheld;
+
+import android.content.Context;
+import android.os.Bundle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+
+import com.android.packageinstaller.role.ui.DefaultAppListChildFragment;
+import com.android.packageinstaller.role.ui.TwoTargetPreference;
+import com.android.permissioncontroller.R;
+
+/**
+ * Handheld fragment for the list of default apps.
+ */
+public class HandheldDefaultAppListFragment extends SettingsFragment
+ implements DefaultAppListChildFragment.Parent {
+
+ /**
+ * Create a new instance of this fragment.
+ *
+ * @return a new instance of this fragment
+ */
+ @NonNull
+ public static HandheldDefaultAppListFragment newInstance() {
+ return new HandheldDefaultAppListFragment();
+ }
+
+ @Override
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ if (savedInstanceState == null) {
+ DefaultAppListChildFragment fragment = DefaultAppListChildFragment.newInstance();
+ getChildFragmentManager().beginTransaction()
+ .add(fragment, null)
+ .commit();
+ }
+ }
+
+ @Override
+ @StringRes
+ protected int getEmptyTextResource() {
+ return R.string.no_default_apps;
+ }
+
+ @Override
+ 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/src/com/android/packageinstaller/role/ui/handheld/HandheldSpecialAppAccessFragment.java b/src/com/android/packageinstaller/role/ui/handheld/HandheldSpecialAppAccessFragment.java
new file mode 100644
index 0000000..52fdc03
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/handheld/HandheldSpecialAppAccessFragment.java
@@ -0,0 +1,105 @@
+/*
+ * 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.packageinstaller.role.ui.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.Preference;
+import androidx.preference.TwoStatePreference;
+
+import com.android.packageinstaller.role.ui.SpecialAppAccessChildFragment;
+import com.android.permissioncontroller.R;
+
+/**
+ * Handheld fragment for a special app access.
+ */
+public class HandheldSpecialAppAccessFragment extends SettingsFragment
+ implements SpecialAppAccessChildFragment.Parent {
+
+ 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 HandheldSpecialAppAccessFragment newInstance(@NonNull String roleName) {
+ HandheldSpecialAppAccessFragment fragment = new HandheldSpecialAppAccessFragment();
+ 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
+ @StringRes
+ 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/src/com/android/packageinstaller/role/ui/handheld/HandheldSpecialAppAccessListFragment.java b/src/com/android/packageinstaller/role/ui/handheld/HandheldSpecialAppAccessListFragment.java
new file mode 100644
index 0000000..3c69755
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/handheld/HandheldSpecialAppAccessListFragment.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.packageinstaller.role.ui.handheld;
+
+import android.content.Context;
+import android.os.Bundle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+
+import com.android.packageinstaller.role.ui.SpecialAppAccessListChildFragment;
+import com.android.packageinstaller.role.ui.TwoTargetPreference;
+import com.android.permissioncontroller.R;
+
+/**
+ * Handheld fragment for the list of special app accesses.
+ */
+public class HandheldSpecialAppAccessListFragment extends SettingsFragment
+ implements SpecialAppAccessListChildFragment.Parent {
+
+ /**
+ * Create a new instance of this fragment.
+ *
+ * @return a new instance of this fragment
+ */
+ @NonNull
+ public static HandheldSpecialAppAccessListFragment newInstance() {
+ return new HandheldSpecialAppAccessListFragment();
+ }
+
+ @Override
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ if (savedInstanceState == null) {
+ SpecialAppAccessListChildFragment fragment =
+ SpecialAppAccessListChildFragment.newInstance();
+ getChildFragmentManager().beginTransaction()
+ .add(fragment, null)
+ .commit();
+ }
+ }
+
+ @Override
+ @StringRes
+ protected int getEmptyTextResource() {
+ return R.string.no_special_app_access;
+ }
+
+ @Override
+ 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/src/com/android/packageinstaller/role/ui/handheld/RadioButtonPreference.java b/src/com/android/packageinstaller/role/ui/handheld/RadioButtonPreference.java
new file mode 100644
index 0000000..63a9787
--- /dev/null
+++ b/src/com/android/packageinstaller/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.packageinstaller.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/src/com/android/packageinstaller/role/ui/handheld/SettingsButtonPreference.java b/src/com/android/packageinstaller/role/ui/handheld/SettingsButtonPreference.java
new file mode 100644
index 0000000..99dc2b8
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/handheld/SettingsButtonPreference.java
@@ -0,0 +1,96 @@
+/*
+ * 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.packageinstaller.role.ui.handheld;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+
+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;
+
+/**
+ * {@link Preference} with a settings button.
+ *
+ * @see com.android.settings.widget.GearPreference
+ */
+class SettingsButtonPreference extends HandHeldTwoTargetPreference {
+
+ @Nullable
+ private OnSecondTargetClickListener mOnSecondTargetClickListener;
+
+ SettingsButtonPreference(@NonNull Context context, @Nullable AttributeSet attrs,
+ @AttrRes int defStyleAttr, @StyleRes int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+
+ init();
+ }
+
+ SettingsButtonPreference(@NonNull Context context, @Nullable AttributeSet attrs,
+ @AttrRes int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+
+ init();
+ }
+
+ SettingsButtonPreference(@NonNull Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+
+ init();
+ }
+
+ SettingsButtonPreference(@NonNull Context context) {
+ super(context);
+
+ init();
+ }
+
+ private void init() {
+ setWidgetLayoutResource(R.layout.settings_button_preference_widget);
+ }
+
+ @Override
+ public void setOnSecondTargetClickListener(@Nullable OnSecondTargetClickListener listener) {
+ mOnSecondTargetClickListener = listener;
+ notifyChanged();
+ }
+
+ @Override
+ 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) {
+ widgetFrame.setVisibility(View.VISIBLE);
+ settingsButton.setOnClickListener(view ->
+ mOnSecondTargetClickListener.onSecondTargetClick(this));
+ } else {
+ widgetFrame.setVisibility(View.GONE);
+ settingsButton.setOnClickListener(null);
+ }
+ // Make the settings button enabled even if the preference itself is disabled.
+ settingsButton.setEnabled(true);
+ }
+}
diff --git a/src/com/android/packageinstaller/role/ui/handheld/SettingsFragment.java b/src/com/android/packageinstaller/role/ui/handheld/SettingsFragment.java
new file mode 100644
index 0000000..26180da
--- /dev/null
+++ b/src/com/android/packageinstaller/role/ui/handheld/SettingsFragment.java
@@ -0,0 +1,130 @@
+/*
+ * 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.packageinstaller.role.ui.handheld;
+
+import android.os.Bundle;
+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.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.packageinstaller.permission.utils.Utils;
+import com.android.packageinstaller.role.utils.UiUtils;
+import com.android.permissioncontroller.R;
+import com.android.settingslib.HelpUtils;
+
+/**
+ * Base class for settings fragments.
+ */
+abstract class SettingsFragment extends PreferenceFragmentCompat {
+
+ private FrameLayout mContentLayout;
+ private LinearLayout mPreferenceLayout;
+ private View mLoadingView;
+ private TextView mEmptyText;
+
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ setHasOptionsMenu(true);
+ }
+
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
+ @Nullable Bundle savedInstanceState) {
+ 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 = 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
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ requireActivity().getActionBar().setDisplayHomeAsUpEnabled(true);
+
+ mEmptyText.setText(getEmptyTextResource());
+
+ updateState();
+ }
+
+ @StringRes
+ protected abstract int getEmptyTextResource();
+
+ @Override
+ public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
+ super.onCreateOptionsMenu(menu, inflater);
+
+ Utils.prepareSearchMenuItem(menu, requireContext());
+ int helpUriResource = getHelpUriResource();
+ if (helpUriResource != 0) {
+ HelpUtils.prepareHelpMenuItem(requireActivity(), menu, helpUriResource,
+ getClass().getName());
+ }
+ }
+
+ @StringRes
+ protected int getHelpUriResource() {
+ return 0;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ requireActivity().finish();
+ return true;
+ default:
+ return super.onOptionsItemSelected(item);
+ }
+ }
+
+ protected void updateState() {
+ PreferenceScreen preferenceScreen = getPreferenceScreen();
+ boolean isLoading = preferenceScreen == null;
+ UiUtils.setViewShown(mLoadingView, isLoading);
+ boolean isEmpty = preferenceScreen != null && preferenceScreen.getPreferenceCount() == 0;
+ UiUtils.setViewShown(mEmptyText, isEmpty);
+ }
+}
diff --git a/src/com/android/packageinstaller/role/utils/PackageUtils.java b/src/com/android/packageinstaller/role/utils/PackageUtils.java
new file mode 100644
index 0000000..c2929f3
--- /dev/null
+++ b/src/com/android/packageinstaller/role/utils/PackageUtils.java
@@ -0,0 +1,92 @@
+/*
+ * 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.packageinstaller.role.utils;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.UserHandle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+/**
+ * Utility methods about application packages.
+ */
+public final class PackageUtils {
+
+ private PackageUtils() {}
+
+ /**
+ * Retrieve the {@link PackageInfo} of an application.
+ *
+ * @param packageName the package name of the application
+ * @param extraFlags the extra flags to pass to {@link PackageManager#getPackageInfo(String,
+ * int)}
+ * @param context the {@code Context} to retrieve system services
+ *
+ * @return the {@link PackageInfo} of the application, or {@code null} if not found
+ */
+ @Nullable
+ public static PackageInfo getPackageInfo(@NonNull String packageName, int extraFlags,
+ @NonNull Context context) {
+ PackageManager packageManager = context.getPackageManager();
+ try {
+ return packageManager.getPackageInfo(packageName, PackageManager.MATCH_DIRECT_BOOT_AWARE
+ | PackageManager.MATCH_DIRECT_BOOT_UNAWARE | extraFlags);
+ } catch (PackageManager.NameNotFoundException e) {
+ return null;
+ }
+ }
+
+ /**
+ * Retrieve the {@link ApplicationInfo} of an application.
+ *
+ * @param packageName the package name of the application
+ * @param context the {@code Context} to retrieve system services
+ *
+ * @return the {@link ApplicationInfo} of the application, or {@code null} if not found
+ */
+ @Nullable
+ public static ApplicationInfo getApplicationInfo(@NonNull String packageName,
+ @NonNull Context context) {
+ PackageManager packageManager = context.getPackageManager();
+ try {
+ return packageManager.getApplicationInfo(packageName,
+ PackageManager.MATCH_DIRECT_BOOT_AWARE
+ | PackageManager.MATCH_DIRECT_BOOT_UNAWARE);
+ } catch (PackageManager.NameNotFoundException e) {
+ return null;
+ }
+ }
+
+ /**
+ * Retrieve the {@link ApplicationInfo} of an application.
+ *
+ * @param packageName the package name of the application
+ * @param user the user of the application
+ * @param context the {@code Context} to retrieve system services
+ *
+ * @return the {@link ApplicationInfo} of the application, or {@code null} if not found
+ */
+ @Nullable
+ public static ApplicationInfo getApplicationInfoAsUser(@NonNull String packageName,
+ @NonNull UserHandle user, @NonNull Context context) {
+ return getApplicationInfo(packageName, UserUtils.getUserContext(context, user));
+ }
+}
diff --git a/src/com/android/packageinstaller/role/utils/UiUtils.java b/src/com/android/packageinstaller/role/utils/UiUtils.java
new file mode 100644
index 0000000..b130109
--- /dev/null
+++ b/src/com/android/packageinstaller/role/utils/UiUtils.java
@@ -0,0 +1,142 @@
+/*
+ * 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.packageinstaller.role.utils;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.content.Context;
+import android.util.DisplayMetrics;
+import android.util.TypedValue;
+import android.view.View;
+import android.view.animation.AnimationUtils;
+import android.view.animation.Interpolator;
+
+import androidx.annotation.Dimension;
+import androidx.annotation.NonNull;
+import androidx.annotation.Px;
+
+/**
+ * Utility methods about UI.
+ */
+public class UiUtils {
+
+ private UiUtils() {}
+
+ /**
+ * Convert a dimension value in density independent pixels to pixels.
+ *
+ * @param dp the dimension value in density independent pixels
+ * @param context the context to get the {@link DisplayMetrics}
+ * @return the pixels
+ *
+ * @see TypedValue#complexToDimension(int, DisplayMetrics)
+ */
+ @Dimension
+ public static float dpToPx(@Dimension(unit = Dimension.DP) float dp, @NonNull Context context) {
+ DisplayMetrics metrics = context.getResources().getDisplayMetrics();
+ return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, metrics);
+ }
+
+ /**
+ * Convert a dimension value in density independent pixels to an integer pixel offset.
+ *
+ * @param dp the dimension value in density independent pixels
+ * @param context the context to get the {@link DisplayMetrics}
+ * @return the integer pixel offset
+ *
+ * @see TypedValue#complexToDimensionPixelOffset(int, DisplayMetrics)
+ */
+ @Px
+ public static int dpToPxOffset(@Dimension(unit = Dimension.DP) float dp,
+ @NonNull Context context) {
+ return (int) dpToPx(dp, context);
+ }
+
+ /**
+ * Convert a dimension value in density independent pixels to an integer pixel size.
+ *
+ * @param dp the dimension value in density independent pixels
+ * @param context the context to get the {@link DisplayMetrics}
+ * @return the integer pixel size
+ *
+ * @see TypedValue#complexToDimensionPixelSize(int, DisplayMetrics)
+ */
+ @Px
+ public static int dpToPxSize(@Dimension(unit = Dimension.DP) float dp,
+ @NonNull Context context) {
+ float value = dpToPx(dp, context);
+ int size = (int) (value >= 0 ? value + 0.5f : value - 0.5f);
+ if (size != 0) {
+ return size;
+ } else if (value == 0) {
+ return 0;
+ } else if (value > 0) {
+ return 1;
+ } else {
+ return -1;
+ }
+ }
+
+ /**
+ * Set whether a view is shown.
+ *
+ * @param view the view to be set to shown or not
+ * @param shown whether the view should be shown
+ */
+ public static void setViewShown(@NonNull View view, boolean shown) {
+ if (shown && view.getVisibility() == View.VISIBLE && view.getAlpha() == 1) {
+ // This cancels any on-going animation.
+ view.animate()
+ .alpha(1)
+ .setDuration(0);
+ return;
+ } else if (!shown && (view.getVisibility() != View.VISIBLE || view.getAlpha() == 0)) {
+ // This cancels any on-going animation.
+ view.animate()
+ .alpha(0)
+ .setDuration(0);
+ view.setVisibility(View.INVISIBLE);
+ return;
+ }
+ if (shown && view.getVisibility() != View.VISIBLE) {
+ view.setAlpha(0);
+ view.setVisibility(View.VISIBLE);
+ }
+ int duration = view.getResources().getInteger(android.R.integer.config_mediumAnimTime);
+ Interpolator interpolator = AnimationUtils.loadInterpolator(view.getContext(), shown
+ ? android.R.interpolator.fast_out_slow_in
+ : android.R.interpolator.fast_out_linear_in);
+ view.animate()
+ .alpha(shown ? 1 : 0)
+ .setDuration(duration)
+ .setInterpolator(interpolator)
+ // Always update the listener or the view will try to reuse the previous one.
+ .setListener(shown ? null : new AnimatorListenerAdapter() {
+ private boolean mCanceled = false;
+ @Override
+ public void onAnimationCancel(@NonNull Animator animator) {
+ mCanceled = true;
+ }
+ @Override
+ public void onAnimationEnd(@NonNull Animator animator) {
+ if (!mCanceled) {
+ view.setVisibility(View.INVISIBLE);
+ }
+ }
+ });
+ }
+}
diff --git a/src/com/android/packageinstaller/role/utils/UserUtils.java b/src/com/android/packageinstaller/role/utils/UserUtils.java
new file mode 100644
index 0000000..0525ed7
--- /dev/null
+++ b/src/com/android/packageinstaller/role/utils/UserUtils.java
@@ -0,0 +1,99 @@
+/*
+ * 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.packageinstaller.role.utils;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.Process;
+import android.os.UserHandle;
+import android.os.UserManager;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * Utility methods about user.
+ */
+public class UserUtils {
+
+ private UserUtils() {}
+
+ /**
+ * Check whether a user is a work profile.
+ *
+ * @param user the user to check
+ * @param context the {@code Context} to retrieve system services
+ *
+ * @return whether the user is a work profile
+ */
+ public static boolean isWorkProfile(@NonNull UserHandle user, @NonNull Context context) {
+ UserManager userManager = context.getSystemService(UserManager.class);
+ return userManager.isManagedProfile(user.getIdentifier());
+ }
+
+ /**
+ * Get the work profile of current user, if any.
+ *
+ * @param context the {@code Context} to retrieve system services
+ *
+ * @return the work profile of current user, or {@code null} if none
+ */
+ @Nullable
+ public static UserHandle getWorkProfile(@NonNull Context context) {
+ UserManager userManager = context.getSystemService(UserManager.class);
+ List<UserHandle> profiles = userManager.getUserProfiles();
+ UserHandle user = Process.myUserHandle();
+
+ int profilesSize = profiles.size();
+ for (int i = 0; i < profilesSize; i++) {
+ UserHandle profile = profiles.get(i);
+
+ if (Objects.equals(profile, user)) {
+ continue;
+ }
+ if (!userManager.isManagedProfile(profile.getIdentifier())) {
+ continue;
+ }
+ return profile;
+ }
+ return null;
+ }
+
+ /**
+ * Create a context for a user.
+ *
+ * @param context The context to clone
+ * @param user The user the new context should be for
+ *
+ * @return The context for the new user
+ */
+ @NonNull
+ public static Context getUserContext(@NonNull Context context, @NonNull UserHandle user) {
+ if (Process.myUserHandle().equals(user)) {
+ return context;
+ } else {
+ try {
+ return context.createPackageContextAsUser(context.getPackageName(), 0, user);
+ } catch (PackageManager.NameNotFoundException doesNotHappen) {
+ throw new IllegalStateException(doesNotHappen);
+ }
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/television/ErrorFragment.java b/src/com/android/packageinstaller/television/ErrorFragment.java
deleted file mode 100644
index f00f684..0000000
--- a/src/com/android/packageinstaller/television/ErrorFragment.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2016 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.packageinstaller.television;
-
-import android.app.Activity;
-import android.os.Bundle;
-import androidx.leanback.app.GuidedStepFragment;
-import androidx.leanback.widget.GuidanceStylist;
-import androidx.leanback.widget.GuidedAction;
-
-import com.android.packageinstaller.R;
-import com.android.packageinstaller.UninstallerActivity;
-
-import java.util.List;
-
-public class ErrorFragment extends GuidedStepFragment {
- public static final String TITLE = "com.android.packageinstaller.arg.title";
- public static final String TEXT = "com.android.packageinstaller.arg.text";
-
- @Override
- public int onProvideTheme() {
- return R.style.Theme_Leanback_GuidedStep;
- }
-
- @Override
- public GuidanceStylist.Guidance onCreateGuidance(Bundle savedInstanceState) {
- return new GuidanceStylist.Guidance(
- getString(getArguments().getInt(TITLE)),
- getString(getArguments().getInt(TEXT)),
- null,
- null);
- }
-
- @Override
- public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) {
- actions.add(new GuidedAction.Builder(getContext())
- .clickAction(GuidedAction.ACTION_ID_OK)
- .build());
- }
-
- @Override
- public void onGuidedActionClicked(GuidedAction action) {
- if (isAdded()) {
- if (getActivity() instanceof UninstallerActivity) {
- ((UninstallerActivity) getActivity()).dispatchAborted();
- }
-
- getActivity().setResult(Activity.RESULT_FIRST_USER);
- getActivity().finish();
- }
- }
-}
diff --git a/src/com/android/packageinstaller/television/UninstallAlertFragment.java b/src/com/android/packageinstaller/television/UninstallAlertFragment.java
deleted file mode 100644
index 828e5db..0000000
--- a/src/com/android/packageinstaller/television/UninstallAlertFragment.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (C) 2016 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.packageinstaller.television;
-
-import android.app.Activity;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.UserInfo;
-import android.os.Bundle;
-import android.os.UserManager;
-import androidx.leanback.app.GuidedStepFragment;
-import androidx.leanback.widget.GuidanceStylist;
-import androidx.leanback.widget.GuidedAction;
-
-import com.android.packageinstaller.R;
-import com.android.packageinstaller.UninstallerActivity;
-
-import java.util.List;
-
-public class UninstallAlertFragment extends GuidedStepFragment {
- @Override
- public int onProvideTheme() {
- return R.style.Theme_Leanback_GuidedStep;
- }
-
- @Override
- public GuidanceStylist.Guidance onCreateGuidance(Bundle savedInstanceState) {
- final PackageManager pm = getActivity().getPackageManager();
- final UninstallerActivity.DialogInfo dialogInfo =
- ((UninstallerActivity) getActivity()).getDialogInfo();
- final CharSequence appLabel = dialogInfo.appInfo.loadSafeLabel(pm);
-
- StringBuilder messageBuilder = new StringBuilder();
-
- // If the Activity label differs from the App label, then make sure the user
- // knows the Activity belongs to the App being uninstalled.
- if (dialogInfo.activityInfo != null) {
- final CharSequence activityLabel = dialogInfo.activityInfo.loadSafeLabel(pm);
- if (!activityLabel.equals(appLabel)) {
- messageBuilder.append(
- getString(R.string.uninstall_activity_text, activityLabel));
- messageBuilder.append(" ").append(appLabel).append(".\n\n");
- }
- }
-
- final boolean isUpdate =
- ((dialogInfo.appInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0);
- UserManager userManager = UserManager.get(getActivity());
- if (isUpdate) {
- if (isSingleUser(userManager)) {
- messageBuilder.append(getString(R.string.uninstall_update_text));
- } else {
- messageBuilder.append(getString(R.string.uninstall_update_text_multiuser));
- }
- } else {
- if (dialogInfo.allUsers && !isSingleUser(userManager)) {
- messageBuilder.append(getString(R.string.uninstall_application_text_all_users));
- } else if (!dialogInfo.user.equals(android.os.Process.myUserHandle())) {
- UserInfo userInfo = userManager.getUserInfo(dialogInfo.user.getIdentifier());
- messageBuilder.append(
- getString(R.string.uninstall_application_text_user, userInfo.name));
- } else {
- messageBuilder.append(getString(R.string.uninstall_application_text));
- }
- }
-
- return new GuidanceStylist.Guidance(
- appLabel.toString(),
- messageBuilder.toString(),
- null,
- dialogInfo.appInfo.loadIcon(pm));
- }
-
- @Override
- public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) {
- actions.add(new GuidedAction.Builder(getContext())
- .clickAction(GuidedAction.ACTION_ID_OK)
- .build());
- actions.add(new GuidedAction.Builder(getContext())
- .clickAction(GuidedAction.ACTION_ID_CANCEL)
- .build());
- }
-
- @Override
- public void onGuidedActionClicked(GuidedAction action) {
- if (isAdded()) {
- if (action.getId() == GuidedAction.ACTION_ID_OK) {
- ((UninstallerActivity) getActivity()).startUninstallProgress();
- getActivity().finish();
- } else {
- ((UninstallerActivity) getActivity()).dispatchAborted();
- getActivity().setResult(Activity.RESULT_FIRST_USER);
- getActivity().finish();
- }
- }
- }
-
- /**
- * Returns whether there is only one user on this device, not including
- * the system-only user.
- */
- private boolean isSingleUser(UserManager userManager) {
- final int userCount = userManager.getUserCount();
- return userCount == 1
- || (UserManager.isSplitSystemUser() && userCount == 2);
- }
-}
diff --git a/src/com/android/packageinstaller/television/UninstallAppProgress.java b/src/com/android/packageinstaller/television/UninstallAppProgress.java
deleted file mode 100755
index a4f217c..0000000
--- a/src/com/android/packageinstaller/television/UninstallAppProgress.java
+++ /dev/null
@@ -1,377 +0,0 @@
-/*
-**
-** Copyright 2007, 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.packageinstaller.television;
-
-import android.app.Activity;
-import android.app.admin.IDevicePolicyManager;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.IPackageDeleteObserver;
-import android.content.pm.IPackageDeleteObserver2;
-import android.content.pm.IPackageManager;
-import android.content.pm.PackageInstaller;
-import android.content.pm.PackageManager;
-import android.content.pm.UserInfo;
-import android.graphics.Color;
-import android.graphics.drawable.ColorDrawable;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.Message;
-import android.os.RemoteException;
-import android.os.ServiceManager;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.util.Log;
-import android.util.TypedValue;
-import android.view.KeyEvent;
-import android.widget.Toast;
-
-import com.android.packageinstaller.PackageUtil;
-import com.android.packageinstaller.R;
-
-import java.lang.ref.WeakReference;
-import java.util.List;
-
-/**
- * This activity corresponds to a download progress screen that is displayed
- * when an application is uninstalled. The result of the application uninstall
- * is indicated in the result code that gets set to 0 or 1. The application gets launched
- * by an intent with the intent's class name explicitly set to UninstallAppProgress and expects
- * the application object of the application to uninstall.
- */
-public class UninstallAppProgress extends Activity {
- private static final String TAG = "UninstallAppProgress";
-
- private static final String FRAGMENT_TAG = "progress_fragment";
-
- private ApplicationInfo mAppInfo;
- private boolean mAllUsers;
- private IBinder mCallback;
-
- private volatile int mResultCode = -1;
-
- /**
- * If initView was called. We delay this call to not have to call it at all if the uninstall is
- * quick
- */
- private boolean mIsViewInitialized;
-
- /** Amount of time to wait until we show the UI */
- private static final int QUICK_INSTALL_DELAY_MILLIS = 500;
-
- private static final int UNINSTALL_COMPLETE = 1;
- private static final int UNINSTALL_IS_SLOW = 2;
-
- private Handler mHandler = new MessageHandler(this);
-
- private static class MessageHandler extends Handler {
- private final WeakReference<UninstallAppProgress> mActivity;
-
- public MessageHandler(UninstallAppProgress activity) {
- mActivity = new WeakReference<>(activity);
- }
-
- @Override
- public void handleMessage(Message msg) {
- UninstallAppProgress activity = mActivity.get();
- if (activity != null) {
- activity.handleMessage(msg);
- }
- }
- }
-
- private void handleMessage(Message msg) {
- if (isFinishing() || isDestroyed()) {
- return;
- }
-
- switch (msg.what) {
- case UNINSTALL_IS_SLOW:
- initView();
- break;
- case UNINSTALL_COMPLETE:
- mHandler.removeMessages(UNINSTALL_IS_SLOW);
-
- if (msg.arg1 != PackageManager.DELETE_SUCCEEDED) {
- initView();
- }
-
- mResultCode = msg.arg1;
- final String packageName = (String) msg.obj;
-
- if (mCallback != null) {
- final IPackageDeleteObserver2 observer = IPackageDeleteObserver2.Stub
- .asInterface(mCallback);
- try {
- observer.onPackageDeleted(mAppInfo.packageName, mResultCode,
- packageName);
- } catch (RemoteException ignored) {
- }
- finish();
- return;
- }
-
- if (getIntent().getBooleanExtra(Intent.EXTRA_RETURN_RESULT, false)) {
- Intent result = new Intent();
- result.putExtra(Intent.EXTRA_INSTALL_RESULT, mResultCode);
- setResult(mResultCode == PackageManager.DELETE_SUCCEEDED
- ? Activity.RESULT_OK : Activity.RESULT_FIRST_USER,
- result);
- finish();
- return;
- }
-
- // Update the status text
- final String statusText;
- switch (msg.arg1) {
- case PackageManager.DELETE_SUCCEEDED:
- statusText = getString(R.string.uninstall_done);
- // Show a Toast and finish the activity
- Context ctx = getBaseContext();
- Toast.makeText(ctx, statusText, Toast.LENGTH_LONG).show();
- setResultAndFinish();
- return;
- case PackageManager.DELETE_FAILED_DEVICE_POLICY_MANAGER: {
- UserManager userManager =
- (UserManager) getSystemService(Context.USER_SERVICE);
- IDevicePolicyManager dpm = IDevicePolicyManager.Stub.asInterface(
- ServiceManager.getService(Context.DEVICE_POLICY_SERVICE));
- // Find out if the package is an active admin for some non-current user.
- int myUserId = UserHandle.myUserId();
- UserInfo otherBlockingUser = null;
- for (UserInfo user : userManager.getUsers()) {
- // We only catch the case when the user in question is neither the
- // current user nor its profile.
- if (isProfileOfOrSame(userManager, myUserId, user.id)) continue;
-
- try {
- if (dpm.packageHasActiveAdmins(packageName, user.id)) {
- otherBlockingUser = user;
- break;
- }
- } catch (RemoteException e) {
- Log.e(TAG, "Failed to talk to package manager", e);
- }
- }
- if (otherBlockingUser == null) {
- Log.d(TAG, "Uninstall failed because " + packageName
- + " is a device admin");
- getProgressFragment().setDeviceManagerButtonVisible(true);
- statusText = getString(
- R.string.uninstall_failed_device_policy_manager);
- } else {
- Log.d(TAG, "Uninstall failed because " + packageName
- + " is a device admin of user " + otherBlockingUser);
- getProgressFragment().setDeviceManagerButtonVisible(false);
- statusText = String.format(
- getString(R.string.uninstall_failed_device_policy_manager_of_user),
- otherBlockingUser.name);
- }
- break;
- }
- case PackageManager.DELETE_FAILED_OWNER_BLOCKED: {
- UserManager userManager =
- (UserManager) getSystemService(Context.USER_SERVICE);
- IPackageManager packageManager = IPackageManager.Stub.asInterface(
- ServiceManager.getService("package"));
- List<UserInfo> users = userManager.getUsers();
- int blockingUserId = UserHandle.USER_NULL;
- for (int i = 0; i < users.size(); ++i) {
- final UserInfo user = users.get(i);
- try {
- if (packageManager.getBlockUninstallForUser(packageName,
- user.id)) {
- blockingUserId = user.id;
- break;
- }
- } catch (RemoteException e) {
- // Shouldn't happen.
- Log.e(TAG, "Failed to talk to package manager", e);
- }
- }
- int myUserId = UserHandle.myUserId();
- if (isProfileOfOrSame(userManager, myUserId, blockingUserId)) {
- getProgressFragment().setDeviceManagerButtonVisible(true);
- } else {
- getProgressFragment().setDeviceManagerButtonVisible(false);
- getProgressFragment().setUsersButtonVisible(true);
- }
- // TODO: b/25442806
- if (blockingUserId == UserHandle.USER_SYSTEM) {
- statusText = getString(R.string.uninstall_blocked_device_owner);
- } else if (blockingUserId == UserHandle.USER_NULL) {
- Log.d(TAG, "Uninstall failed for " + packageName + " with code "
- + msg.arg1 + " no blocking user");
- statusText = getString(R.string.uninstall_failed);
- } else {
- statusText = mAllUsers
- ? getString(R.string.uninstall_all_blocked_profile_owner) :
- getString(R.string.uninstall_blocked_profile_owner);
- }
- break;
- }
- default:
- Log.d(TAG, "Uninstall failed for " + packageName + " with code "
- + msg.arg1);
- statusText = getString(R.string.uninstall_failed);
- break;
- }
- getProgressFragment().showCompletion(statusText);
- break;
- default:
- break;
- }
- }
-
- private boolean isProfileOfOrSame(UserManager userManager, int userId, int profileId) {
- if (userId == profileId) {
- return true;
- }
- UserInfo parentUser = userManager.getProfileParent(profileId);
- return parentUser != null && parentUser.id == userId;
- }
-
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- Intent intent = getIntent();
- mAppInfo = intent.getParcelableExtra(PackageUtil.INTENT_ATTR_APPLICATION_INFO);
- mCallback = intent.getIBinderExtra(PackageInstaller.EXTRA_CALLBACK);
-
- // This currently does not support going through a onDestroy->onCreate cycle. Hence if that
- // happened, just fail the operation for mysterious reasons.
- if (icicle != null) {
- mResultCode = PackageManager.DELETE_FAILED_INTERNAL_ERROR;
-
- if (mCallback != null) {
- final IPackageDeleteObserver2 observer = IPackageDeleteObserver2.Stub
- .asInterface(mCallback);
- try {
- observer.onPackageDeleted(mAppInfo.packageName, mResultCode, null);
- } catch (RemoteException ignored) {
- }
- finish();
- } else {
- setResultAndFinish();
- }
-
- return;
- }
-
- mAllUsers = intent.getBooleanExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, false);
- UserHandle user = intent.getParcelableExtra(Intent.EXTRA_USER);
- if (user == null) {
- user = android.os.Process.myUserHandle();
- }
-
- PackageDeleteObserver observer = new PackageDeleteObserver();
-
- // Make window transparent until initView is called. In many cases we can avoid showing the
- // UI at all as the app is uninstalled very quickly. If we show the UI and instantly remove
- // it, it just looks like a flicker.
- getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
- getWindow().setStatusBarColor(Color.TRANSPARENT);
- getWindow().setNavigationBarColor(Color.TRANSPARENT);
-
- try {
- getPackageManager().deletePackageAsUser(mAppInfo.packageName, observer,
- mAllUsers ? PackageManager.DELETE_ALL_USERS : 0, user.getIdentifier());
- } catch (IllegalArgumentException e) {
- // Couldn't find the package, no need to call uninstall.
- Log.w(TAG, "Could not find package, not deleting " + mAppInfo.packageName, e);
- }
-
- mHandler.sendMessageDelayed(mHandler.obtainMessage(UNINSTALL_IS_SLOW),
- QUICK_INSTALL_DELAY_MILLIS);
- }
-
- public ApplicationInfo getAppInfo() {
- return mAppInfo;
- }
-
- private class PackageDeleteObserver extends IPackageDeleteObserver.Stub {
- public void packageDeleted(String packageName, int returnCode) {
- Message msg = mHandler.obtainMessage(UNINSTALL_COMPLETE);
- msg.arg1 = returnCode;
- msg.obj = packageName;
- mHandler.sendMessage(msg);
- }
- }
-
- public void setResultAndFinish() {
- setResult(mResultCode);
- finish();
- }
-
- private void initView() {
- if (mIsViewInitialized) {
- return;
- }
- mIsViewInitialized = true;
-
- // We set the window background to translucent in constructor, revert this
- TypedValue attribute = new TypedValue();
- getTheme().resolveAttribute(android.R.attr.windowBackground, attribute, true);
- if (attribute.type >= TypedValue.TYPE_FIRST_COLOR_INT &&
- attribute.type <= TypedValue.TYPE_LAST_COLOR_INT) {
- getWindow().setBackgroundDrawable(new ColorDrawable(attribute.data));
- } else {
- getWindow().setBackgroundDrawable(getResources().getDrawable(attribute.resourceId,
- getTheme()));
- }
-
- getTheme().resolveAttribute(android.R.attr.navigationBarColor, attribute, true);
- getWindow().setNavigationBarColor(attribute.data);
-
- getTheme().resolveAttribute(android.R.attr.statusBarColor, attribute, true);
- getWindow().setStatusBarColor(attribute.data);
-
- boolean isUpdate = ((mAppInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0);
- setTitle(isUpdate ? R.string.uninstall_update_title : R.string.uninstall_application_title);
-
- getFragmentManager().beginTransaction()
- .add(android.R.id.content, new UninstallAppProgressFragment(), FRAGMENT_TAG)
- .commitNowAllowingStateLoss();
- }
-
- @Override
- public boolean dispatchKeyEvent(KeyEvent ev) {
- if (ev.getKeyCode() == KeyEvent.KEYCODE_BACK) {
- if (mResultCode == -1) {
- // Ignore back key when installation is in progress
- return true;
- } else {
- // If installation is done, just set the result code
- setResult(mResultCode);
- }
- }
- return super.dispatchKeyEvent(ev);
- }
-
- private ProgressFragment getProgressFragment() {
- return (ProgressFragment) getFragmentManager().findFragmentByTag(FRAGMENT_TAG);
- }
-
- public interface ProgressFragment {
- void setUsersButtonVisible(boolean visible);
- void setDeviceManagerButtonVisible(boolean visible);
- void showCompletion(CharSequence statusText);
- }
-}
diff --git a/src/com/android/packageinstaller/television/UninstallAppProgressFragment.java b/src/com/android/packageinstaller/television/UninstallAppProgressFragment.java
deleted file mode 100644
index 7402a7d..0000000
--- a/src/com/android/packageinstaller/television/UninstallAppProgressFragment.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2016 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.packageinstaller.television;
-
-import android.app.Fragment;
-import android.content.Intent;
-import android.os.Bundle;
-import android.provider.Settings;
-import androidx.annotation.Nullable;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.android.packageinstaller.PackageUtil;
-import com.android.packageinstaller.R;
-
-public class UninstallAppProgressFragment extends Fragment implements View.OnClickListener,
- UninstallAppProgress.ProgressFragment {
- private static final String TAG = "UninstallAppProgressF"; // full class name is too long
-
- private Button mOkButton;
- private Button mDeviceManagerButton;
- private Button mUsersButton;
-
- @Override
- public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
- Bundle savedInstanceState) {
- final View root = inflater.inflate(R.layout.uninstall_progress, container, false);
- // Initialize views
- View snippetView = root.findViewById(R.id.app_snippet);
- PackageUtil.initSnippetForInstalledApp(getContext(),
- ((UninstallAppProgress)getActivity()).getAppInfo(), snippetView);
- mDeviceManagerButton = (Button) root.findViewById(R.id.device_manager_button);
- mUsersButton = (Button) root.findViewById(R.id.users_button);
- mDeviceManagerButton.setVisibility(View.GONE);
- mDeviceManagerButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent intent = new Intent();
- intent.setClassName("com.android.settings",
- "com.android.settings.Settings$DeviceAdminSettingsActivity");
- intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(intent);
- getActivity().finish();
- }
- });
- mUsersButton.setVisibility(View.GONE);
- mUsersButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent intent = new Intent(Settings.ACTION_USER_SETTINGS);
- intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(intent);
- getActivity().finish();
- }
- });
- // Hide button till progress is being displayed
- mOkButton = (Button) root.findViewById(R.id.ok_button);
- mOkButton.setOnClickListener(this);
-
- return root;
- }
-
- public void onClick(View v) {
- final UninstallAppProgress activity = (UninstallAppProgress) getActivity();
- if(v == mOkButton && activity != null) {
- Log.i(TAG, "Finished uninstalling pkg: " +
- activity.getAppInfo().packageName);
- activity.setResultAndFinish();
- }
- }
-
- @Override
- public void setUsersButtonVisible(boolean visible) {
- mUsersButton.setVisibility(visible ? View.VISIBLE : View.GONE);
- }
-
- @Override
- public void setDeviceManagerButtonVisible(boolean visible) {
- mDeviceManagerButton.setVisibility(visible ? View.VISIBLE : View.GONE);
- }
-
- @Override
- public void showCompletion(CharSequence statusText) {
- final View root = getView();
- root.findViewById(R.id.progress_view).setVisibility(View.GONE);
- root.findViewById(R.id.status_view).setVisibility(View.VISIBLE);
- ((TextView) root.findViewById(R.id.status_text)).setText(statusText);
- root.findViewById(R.id.ok_panel).setVisibility(View.VISIBLE);
- }
-}
diff --git a/src/com/android/packageinstaller/wear/InstallTask.java b/src/com/android/packageinstaller/wear/InstallTask.java
deleted file mode 100644
index 53a460d..0000000
--- a/src/com/android/packageinstaller/wear/InstallTask.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Copyright (C) 2016 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.packageinstaller.wear;
-
-import android.content.Context;
-import android.content.IntentSender;
-import android.content.pm.PackageInstaller;
-import android.os.Looper;
-import android.os.ParcelFileDescriptor;
-import android.text.TextUtils;
-import android.util.Log;
-
-import java.io.Closeable;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-/**
- * Task that installs an APK. This must not be called on the main thread.
- * This code is based off the Finsky/Wearsky implementation
- */
-public class InstallTask {
- private static final String TAG = "InstallTask";
-
- private static final int DEFAULT_BUFFER_SIZE = 8192;
-
- private final Context mContext;
- private String mPackageName;
- private ParcelFileDescriptor mParcelFileDescriptor;
- private PackageInstallerImpl.InstallListener mCallback;
- private PackageInstaller.Session mSession;
- private IntentSender mCommitCallback;
-
- private Exception mException = null;
- private int mErrorCode = 0;
- private String mErrorDesc = null;
-
- public InstallTask(Context context, String packageName,
- ParcelFileDescriptor parcelFileDescriptor,
- PackageInstallerImpl.InstallListener callback, PackageInstaller.Session session,
- IntentSender commitCallback) {
- mContext = context;
- mPackageName = packageName;
- mParcelFileDescriptor = parcelFileDescriptor;
- mCallback = callback;
- mSession = session;
- mCommitCallback = commitCallback;
- }
-
- public boolean isError() {
- return mErrorCode != InstallerConstants.STATUS_SUCCESS || !TextUtils.isEmpty(mErrorDesc);
- }
-
- public void execute() {
- if (Looper.myLooper() == Looper.getMainLooper()) {
- throw new IllegalStateException("This method cannot be called from the UI thread.");
- }
-
- OutputStream sessionStream = null;
- try {
- sessionStream = mSession.openWrite(mPackageName, 0, -1);
-
- // 2b: Stream the asset to the installer. Note:
- // Note: writeToOutputStreamFromAsset() always safely closes the input stream
- writeToOutputStreamFromAsset(sessionStream);
- mSession.fsync(sessionStream);
- } catch (Exception e) {
- mException = e;
- mErrorCode = InstallerConstants.ERROR_INSTALL_COPY_STREAM;
- mErrorDesc = "Could not write to stream";
- } finally {
- if (sessionStream != null) {
- // 2c: close output stream
- try {
- sessionStream.close();
- } catch (Exception e) {
- // Ignore otherwise
- if (mException == null) {
- mException = e;
- mErrorCode = InstallerConstants.ERROR_INSTALL_CLOSE_STREAM;
- mErrorDesc = "Could not close session stream";
- }
- }
- }
- }
-
- if (mErrorCode != InstallerConstants.STATUS_SUCCESS) {
- // An error occurred, we're done
- Log.e(TAG, "Exception while installing " + mPackageName + ": " + mErrorCode + ", "
- + mErrorDesc + ", " + mException);
- mSession.close();
- mCallback.installFailed(mErrorCode, "[" + mPackageName + "]" + mErrorDesc);
- } else {
- // 3. Commit the session (this actually installs it.) Session map
- // will be cleaned up in the callback.
- mCallback.installBeginning();
- mSession.commit(mCommitCallback);
- mSession.close();
- }
- }
-
- /**
- * {@code PackageInstaller} works with streams. Get the {@code FileDescriptor}
- * corresponding to the {@code Asset} and then write the contents into an
- * {@code OutputStream} that is passed in.
- * <br>
- * The {@code FileDescriptor} is closed but the {@code OutputStream} is not closed.
- */
- private boolean writeToOutputStreamFromAsset(OutputStream outputStream) {
- if (outputStream == null) {
- mErrorCode = InstallerConstants.ERROR_INSTALL_COPY_STREAM_EXCEPTION;
- mErrorDesc = "Got a null OutputStream.";
- return false;
- }
-
- if (mParcelFileDescriptor == null || mParcelFileDescriptor.getFileDescriptor() == null) {
- mErrorCode = InstallerConstants.ERROR_COULD_NOT_GET_FD;
- mErrorDesc = "Could not get FD";
- return false;
- }
-
- InputStream inputStream = null;
- try {
- byte[] inputBuf = new byte[DEFAULT_BUFFER_SIZE];
- int bytesRead;
- inputStream = new ParcelFileDescriptor.AutoCloseInputStream(mParcelFileDescriptor);
-
- while ((bytesRead = inputStream.read(inputBuf)) > -1) {
- if (bytesRead > 0) {
- outputStream.write(inputBuf, 0, bytesRead);
- }
- }
-
- outputStream.flush();
- } catch (IOException e) {
- mErrorCode = InstallerConstants.ERROR_INSTALL_APK_COPY_FAILURE;
- mErrorDesc = "Reading from Asset FD or writing to temp file failed: " + e;
- return false;
- } finally {
- safeClose(inputStream);
- }
-
- return true;
- }
-
- /**
- * Quietly close a closeable resource (e.g. a stream or file). The input may already
- * be closed and it may even be null.
- */
- public static void safeClose(Closeable resource) {
- if (resource != null) {
- try {
- resource.close();
- } catch (IOException ioe) {
- // Catch and discard the error
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/com/android/packageinstaller/wear/InstallerConstants.java b/src/com/android/packageinstaller/wear/InstallerConstants.java
deleted file mode 100644
index 3daf3d8..0000000
--- a/src/com/android/packageinstaller/wear/InstallerConstants.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2016 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.packageinstaller.wear;
-
-/**
- * Constants for Installation / Uninstallation requests.
- * Using the same values as Finsky/Wearsky code for consistency in user analytics of failures
- */
-public class InstallerConstants {
- /** Request succeeded */
- public static final int STATUS_SUCCESS = 0;
-
- /**
- * The new PackageInstaller also returns a small set of less granular error codes, which
- * we'll remap to the range -500 and below to keep away from existing installer codes
- * (which run from -1 to -110).
- */
- public final static int ERROR_PACKAGEINSTALLER_BASE = -500;
-
- public static final int ERROR_COULD_NOT_GET_FD = -603;
- /** This node is not targeted by this request. */
-
- /** The install did not complete because could not create PackageInstaller session */
- public final static int ERROR_INSTALL_CREATE_SESSION = -612;
- /** The install did not complete because could not open PackageInstaller session */
- public final static int ERROR_INSTALL_OPEN_SESSION = -613;
- /** The install did not complete because could not open PackageInstaller output stream */
- public final static int ERROR_INSTALL_OPEN_STREAM = -614;
- /** The install did not complete because of an exception while streaming bytes */
- public final static int ERROR_INSTALL_COPY_STREAM_EXCEPTION = -615;
- /** The install did not complete because of an unexpected exception from PackageInstaller */
- public final static int ERROR_INSTALL_SESSION_EXCEPTION = -616;
- /** The install did not complete because of an unexpected userActionRequired callback */
- public final static int ERROR_INSTALL_USER_ACTION_REQUIRED = -617;
- /** The install did not complete because of an unexpected broadcast (missing fields) */
- public final static int ERROR_INSTALL_MALFORMED_BROADCAST = -618;
- /** The install did not complete because of an error while copying from downloaded file */
- public final static int ERROR_INSTALL_APK_COPY_FAILURE = -619;
- /** The install did not complete because of an error while copying to the PackageInstaller
- * output stream */
- public final static int ERROR_INSTALL_COPY_STREAM = -620;
- /** The install did not complete because of an error while closing the PackageInstaller
- * output stream */
- public final static int ERROR_INSTALL_CLOSE_STREAM = -621;
-}
\ No newline at end of file
diff --git a/src/com/android/packageinstaller/wear/PackageInstallerFactory.java b/src/com/android/packageinstaller/wear/PackageInstallerFactory.java
deleted file mode 100644
index bdc22cf..0000000
--- a/src/com/android/packageinstaller/wear/PackageInstallerFactory.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2016 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.packageinstaller.wear;
-
-import android.content.Context;
-
-/**
- * Factory that creates a Package Installer.
- */
-public class PackageInstallerFactory {
- private static PackageInstallerImpl sPackageInstaller;
-
- /**
- * Return the PackageInstaller shared object. {@code init} should have already been called.
- */
- public synchronized static PackageInstallerImpl getPackageInstaller(Context context) {
- if (sPackageInstaller == null) {
- sPackageInstaller = new PackageInstallerImpl(context);
- }
- return sPackageInstaller;
- }
-}
\ No newline at end of file
diff --git a/src/com/android/packageinstaller/wear/PackageInstallerImpl.java b/src/com/android/packageinstaller/wear/PackageInstallerImpl.java
deleted file mode 100644
index bf4b03c..0000000
--- a/src/com/android/packageinstaller/wear/PackageInstallerImpl.java
+++ /dev/null
@@ -1,325 +0,0 @@
-/*
- * Copyright (C) 2016 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.packageinstaller.wear;
-
-import android.annotation.TargetApi;
-import android.app.PendingIntent;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.IntentSender;
-import android.content.pm.PackageInstaller;
-import android.os.Build;
-import android.os.ParcelFileDescriptor;
-import android.util.Log;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Implementation of package manager installation using modern PackageInstaller api.
- *
- * Heavily copied from Wearsky/Finsky implementation
- */
-@TargetApi(Build.VERSION_CODES.LOLLIPOP)
-public class PackageInstallerImpl {
- private static final String TAG = "PackageInstallerImpl";
-
- /** Intent actions used for broadcasts from PackageInstaller back to the local receiver */
- private static final String ACTION_INSTALL_COMMIT =
- "com.android.vending.INTENT_PACKAGE_INSTALL_COMMIT";
-
- private final Context mContext;
- private final PackageInstaller mPackageInstaller;
- private final Map<String, PackageInstaller.SessionInfo> mSessionInfoMap;
- private final Map<String, PackageInstaller.Session> mOpenSessionMap;
-
- public PackageInstallerImpl(Context context) {
- mContext = context.getApplicationContext();
- mPackageInstaller = mContext.getPackageManager().getPackageInstaller();
-
- // Capture a map of known sessions
- // This list will be pruned a bit later (stale sessions will be canceled)
- mSessionInfoMap = new HashMap<String, PackageInstaller.SessionInfo>();
- List<PackageInstaller.SessionInfo> mySessions = mPackageInstaller.getMySessions();
- for (int i = 0; i < mySessions.size(); i++) {
- PackageInstaller.SessionInfo sessionInfo = mySessions.get(i);
- String packageName = sessionInfo.getAppPackageName();
- PackageInstaller.SessionInfo oldInfo = mSessionInfoMap.put(packageName, sessionInfo);
-
- // Checking for old info is strictly for logging purposes
- if (oldInfo != null) {
- Log.w(TAG, "Multiple sessions for " + packageName + " found. Removing " + oldInfo
- .getSessionId() + " & keeping " + mySessions.get(i).getSessionId());
- }
- }
- mOpenSessionMap = new HashMap<String, PackageInstaller.Session>();
- }
-
- /**
- * This callback will be made after an installation attempt succeeds or fails.
- */
- public interface InstallListener {
- /**
- * This callback signals that preflight checks have succeeded and installation
- * is beginning.
- */
- void installBeginning();
-
- /**
- * This callback signals that installation has completed.
- */
- void installSucceeded();
-
- /**
- * This callback signals that installation has failed.
- */
- void installFailed(int errorCode, String errorDesc);
- }
-
- /**
- * This is a placeholder implementation that bundles an entire "session" into a single
- * call. This will be replaced by more granular versions that allow longer session lifetimes,
- * download progress tracking, etc.
- *
- * This must not be called on main thread.
- */
- public void install(final String packageName, ParcelFileDescriptor parcelFileDescriptor,
- final InstallListener callback) {
- // 0. Generic try/catch block because I am not really sure what exceptions (other than
- // IOException) might be thrown by PackageInstaller and I want to handle them
- // at least slightly gracefully.
- try {
- // 1. Create or recover a session, and open it
- // Try recovery first
- PackageInstaller.Session session = null;
- PackageInstaller.SessionInfo sessionInfo = mSessionInfoMap.get(packageName);
- if (sessionInfo != null) {
- // See if it's openable, or already held open
- session = getSession(packageName);
- }
- // If open failed, or there was no session, create a new one and open it.
- // If we cannot create or open here, the failure is terminal.
- if (session == null) {
- try {
- innerCreateSession(packageName);
- } catch (IOException ioe) {
- Log.e(TAG, "Can't create session for " + packageName + ": " + ioe.getMessage());
- callback.installFailed(InstallerConstants.ERROR_INSTALL_CREATE_SESSION,
- "Could not create session");
- mSessionInfoMap.remove(packageName);
- return;
- }
- sessionInfo = mSessionInfoMap.get(packageName);
- try {
- session = mPackageInstaller.openSession(sessionInfo.getSessionId());
- mOpenSessionMap.put(packageName, session);
- } catch (SecurityException se) {
- Log.e(TAG, "Can't open session for " + packageName + ": " + se.getMessage());
- callback.installFailed(InstallerConstants.ERROR_INSTALL_OPEN_SESSION,
- "Can't open session");
- mSessionInfoMap.remove(packageName);
- return;
- }
- }
-
- // 2. Launch task to handle file operations.
- InstallTask task = new InstallTask( mContext, packageName, parcelFileDescriptor,
- callback, session,
- getCommitCallback(packageName, sessionInfo.getSessionId(), callback));
- task.execute();
- if (task.isError()) {
- cancelSession(sessionInfo.getSessionId(), packageName);
- }
- } catch (Exception e) {
- Log.e(TAG, "Unexpected exception while installing: " + packageName + ": "
- + e.getMessage());
- callback.installFailed(InstallerConstants.ERROR_INSTALL_SESSION_EXCEPTION,
- "Unexpected exception while installing " + packageName);
- }
- }
-
- /**
- * Retrieve an existing session. Will open if needed, but does not attempt to create.
- */
- private PackageInstaller.Session getSession(String packageName) {
- // Check for already-open session
- PackageInstaller.Session session = mOpenSessionMap.get(packageName);
- if (session != null) {
- try {
- // Probe the session to ensure that it's still open. This may or may not
- // throw (if non-open), but it may serve as a canary for stale sessions.
- session.getNames();
- return session;
- } catch (IOException ioe) {
- Log.e(TAG, "Stale open session for " + packageName + ": " + ioe.getMessage());
- mOpenSessionMap.remove(packageName);
- } catch (SecurityException se) {
- Log.e(TAG, "Stale open session for " + packageName + ": " + se.getMessage());
- mOpenSessionMap.remove(packageName);
- }
- }
- // Check to see if this is a known session
- PackageInstaller.SessionInfo sessionInfo = mSessionInfoMap.get(packageName);
- if (sessionInfo == null) {
- return null;
- }
- // Try to open it. If we fail here, assume that the SessionInfo was stale.
- try {
- session = mPackageInstaller.openSession(sessionInfo.getSessionId());
- } catch (SecurityException se) {
- Log.w(TAG, "SessionInfo was stale for " + packageName + " - deleting info");
- mSessionInfoMap.remove(packageName);
- return null;
- } catch (IOException ioe) {
- Log.w(TAG, "IOException opening old session for " + ioe.getMessage()
- + " - deleting info");
- mSessionInfoMap.remove(packageName);
- return null;
- }
- mOpenSessionMap.put(packageName, session);
- return session;
- }
-
- /** This version throws an IOException when the session cannot be created */
- private void innerCreateSession(String packageName) throws IOException {
- if (mSessionInfoMap.containsKey(packageName)) {
- Log.w(TAG, "Creating session for " + packageName + " when one already exists");
- return;
- }
- PackageInstaller.SessionParams params = new PackageInstaller.SessionParams(
- PackageInstaller.SessionParams.MODE_FULL_INSTALL);
- params.setAppPackageName(packageName);
-
- // IOException may be thrown at this point
- int sessionId = mPackageInstaller.createSession(params);
- PackageInstaller.SessionInfo sessionInfo = mPackageInstaller.getSessionInfo(sessionId);
- mSessionInfoMap.put(packageName, sessionInfo);
- }
-
- /**
- * Cancel a session based on its sessionId. Package name is for logging only.
- */
- private void cancelSession(int sessionId, String packageName) {
- // Close if currently held open
- closeSession(packageName);
- // Remove local record
- mSessionInfoMap.remove(packageName);
- try {
- mPackageInstaller.abandonSession(sessionId);
- } catch (SecurityException se) {
- // The session no longer exists, so we can exit quietly.
- return;
- }
- }
-
- /**
- * Close a session if it happens to be held open.
- */
- private void closeSession(String packageName) {
- PackageInstaller.Session session = mOpenSessionMap.remove(packageName);
- if (session != null) {
- // Unfortunately close() is not idempotent. Try our best to make this safe.
- try {
- session.close();
- } catch (Exception e) {
- Log.w(TAG, "Unexpected error closing session for " + packageName + ": "
- + e.getMessage());
- }
- }
- }
-
- /**
- * Creates a commit callback for the package install that's underway. This will be called
- * some time after calling session.commit() (above).
- */
- private IntentSender getCommitCallback(final String packageName, final int sessionId,
- final InstallListener callback) {
- // Create a single-use broadcast receiver
- BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- mContext.unregisterReceiver(this);
- handleCommitCallback(intent, packageName, sessionId, callback);
- }
- };
- // Create a matching intent-filter and register the receiver
- String action = ACTION_INSTALL_COMMIT + "." + packageName;
- IntentFilter intentFilter = new IntentFilter();
- intentFilter.addAction(action);
- mContext.registerReceiver(broadcastReceiver, intentFilter);
-
- // Create a matching PendingIntent and use it to generate the IntentSender
- Intent broadcastIntent = new Intent(action);
- PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, packageName.hashCode(),
- broadcastIntent, PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_UPDATE_CURRENT);
- return pendingIntent.getIntentSender();
- }
-
- /**
- * Examine the extras to determine information about the package update/install, decode
- * the result, and call the appropriate callback.
- *
- * @param intent The intent, which the PackageInstaller will have added Extras to
- * @param packageName The package name we created the receiver for
- * @param sessionId The session Id we created the receiver for
- * @param callback The callback to report success/failure to
- */
- private void handleCommitCallback(Intent intent, String packageName, int sessionId,
- InstallListener callback) {
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, "Installation of " + packageName + " finished with extras "
- + intent.getExtras());
- }
- String statusMessage = intent.getStringExtra(PackageInstaller.EXTRA_STATUS_MESSAGE);
- int status = intent.getIntExtra(PackageInstaller.EXTRA_STATUS, Integer.MIN_VALUE);
- if (status == PackageInstaller.STATUS_SUCCESS) {
- cancelSession(sessionId, packageName);
- callback.installSucceeded();
- } else if (status == -1 /*PackageInstaller.STATUS_USER_ACTION_REQUIRED*/) {
- // TODO - use the constant when the correct/final name is in the SDK
- // TODO This is unexpected, so we are treating as failure for now
- cancelSession(sessionId, packageName);
- callback.installFailed(InstallerConstants.ERROR_INSTALL_USER_ACTION_REQUIRED,
- "Unexpected: user action required");
- } else {
- cancelSession(sessionId, packageName);
- int errorCode = getPackageManagerErrorCode(status);
- Log.e(TAG, "Error " + errorCode + " while installing " + packageName + ": "
- + statusMessage);
- callback.installFailed(errorCode, null);
- }
- }
-
- private int getPackageManagerErrorCode(int status) {
- // This is a hack: because PackageInstaller now reports error codes
- // with small positive values, we need to remap them into a space
- // that is more compatible with the existing package manager error codes.
- // See https://sites.google.com/a/google.com/universal-store/documentation
- // /android-client/download-error-codes
- int errorCode;
- if (status == Integer.MIN_VALUE) {
- errorCode = InstallerConstants.ERROR_INSTALL_MALFORMED_BROADCAST;
- } else {
- errorCode = InstallerConstants.ERROR_PACKAGEINSTALLER_BASE - status;
- }
- return errorCode;
- }
-}
diff --git a/src/com/android/packageinstaller/wear/WearPackageArgs.java b/src/com/android/packageinstaller/wear/WearPackageArgs.java
deleted file mode 100644
index 2c289b2..0000000
--- a/src/com/android/packageinstaller/wear/WearPackageArgs.java
+++ /dev/null
@@ -1,100 +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.packageinstaller.wear;
-
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-
-/**
- * Installation Util that contains a list of parameters that are needed for
- * installing/uninstalling.
- */
-public class WearPackageArgs {
- private static final String KEY_PACKAGE_NAME =
- "com.google.android.clockwork.EXTRA_PACKAGE_NAME";
- private static final String KEY_ASSET_URI =
- "com.google.android.clockwork.EXTRA_ASSET_URI";
- private static final String KEY_START_ID =
- "com.google.android.clockwork.EXTRA_START_ID";
- private static final String KEY_PERM_URI =
- "com.google.android.clockwork.EXTRA_PERM_URI";
- private static final String KEY_CHECK_PERMS =
- "com.google.android.clockwork.EXTRA_CHECK_PERMS";
- private static final String KEY_SKIP_IF_SAME_VERSION =
- "com.google.android.clockwork.EXTRA_SKIP_IF_SAME_VERSION";
- private static final String KEY_COMPRESSION_ALG =
- "com.google.android.clockwork.EXTRA_KEY_COMPRESSION_ALG";
- private static final String KEY_COMPANION_SDK_VERSION =
- "com.google.android.clockwork.EXTRA_KEY_COMPANION_SDK_VERSION";
- private static final String KEY_COMPANION_DEVICE_VERSION =
- "com.google.android.clockwork.EXTRA_KEY_COMPANION_DEVICE_VERSION";
- private static final String KEY_SHOULD_CHECK_GMS_DEPENDENCY =
- "com.google.android.clockwork.EXTRA_KEY_SHOULD_CHECK_GMS_DEPENDENCY";
- private static final String KEY_SKIP_IF_LOWER_VERSION =
- "com.google.android.clockwork.EXTRA_SKIP_IF_LOWER_VERSION";
-
- public static String getPackageName(Bundle b) {
- return b.getString(KEY_PACKAGE_NAME);
- }
-
- public static Bundle setPackageName(Bundle b, String packageName) {
- b.putString(KEY_PACKAGE_NAME, packageName);
- return b;
- }
-
- public static Uri getAssetUri(Bundle b) {
- return b.getParcelable(KEY_ASSET_URI);
- }
-
- public static Uri getPermUri(Bundle b) {
- return b.getParcelable(KEY_PERM_URI);
- }
-
- public static boolean checkPerms(Bundle b) {
- return b.getBoolean(KEY_CHECK_PERMS);
- }
-
- public static boolean skipIfSameVersion(Bundle b) {
- return b.getBoolean(KEY_SKIP_IF_SAME_VERSION);
- }
-
- public static int getCompanionSdkVersion(Bundle b) {
- return b.getInt(KEY_COMPANION_SDK_VERSION);
- }
-
- public static int getCompanionDeviceVersion(Bundle b) {
- return b.getInt(KEY_COMPANION_DEVICE_VERSION);
- }
-
- public static String getCompressionAlg(Bundle b) {
- return b.getString(KEY_COMPRESSION_ALG);
- }
-
- public static int getStartId(Bundle b) {
- return b.getInt(KEY_START_ID);
- }
-
- public static boolean skipIfLowerVersion(Bundle b) {
- return b.getBoolean(KEY_SKIP_IF_LOWER_VERSION, false);
- }
-
- public static Bundle setStartId(Bundle b, int startId) {
- b.putInt(KEY_START_ID, startId);
- return b;
- }
-}
diff --git a/src/com/android/packageinstaller/wear/WearPackageIconProvider.java b/src/com/android/packageinstaller/wear/WearPackageIconProvider.java
deleted file mode 100644
index 02b9d29..0000000
--- a/src/com/android/packageinstaller/wear/WearPackageIconProvider.java
+++ /dev/null
@@ -1,202 +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.packageinstaller.wear;
-
-import android.annotation.TargetApi;
-import android.app.ActivityManager;
-import android.content.ContentProvider;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Binder;
-import android.os.Build;
-import android.os.ParcelFileDescriptor;
-import android.util.Log;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.util.List;
-
-import static android.content.pm.PackageManager.PERMISSION_GRANTED;
-
-public class WearPackageIconProvider extends ContentProvider {
- private static final String TAG = "WearPackageIconProvider";
- public static final String AUTHORITY = "com.google.android.packageinstaller.wear.provider";
-
- private static final String REQUIRED_PERMISSION =
- "com.google.android.permission.INSTALL_WEARABLE_PACKAGES";
-
- /** MIME types. */
- public static final String ICON_TYPE = "vnd.android.cursor.item/cw_package_icon";
-
- @Override
- public boolean onCreate() {
- return true;
- }
-
- @Override
- public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
- String sortOrder) {
- throw new UnsupportedOperationException("Query is not supported.");
- }
-
- @Override
- public String getType(Uri uri) {
- if (uri == null) {
- throw new IllegalArgumentException("URI passed in is null.");
- }
-
- if (AUTHORITY.equals(uri.getEncodedAuthority())) {
- return ICON_TYPE;
- }
- return null;
- }
-
- @Override
- public Uri insert(Uri uri, ContentValues values) {
- throw new UnsupportedOperationException("Insert is not supported.");
- }
-
- @Override
- public int delete(Uri uri, String selection, String[] selectionArgs) {
- if (uri == null) {
- throw new IllegalArgumentException("URI passed in is null.");
- }
-
- enforcePermissions(uri);
-
- if (ICON_TYPE.equals(getType(uri))) {
- final File file = WearPackageUtil.getIconFile(
- this.getContext().getApplicationContext(), getPackageNameFromUri(uri));
- if (file != null) {
- file.delete();
- }
- }
-
- return 0;
- }
-
- @Override
- public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
- throw new UnsupportedOperationException("Update is not supported.");
- }
-
- @Override
- public ParcelFileDescriptor openFile(
- Uri uri, @SuppressWarnings("unused") String mode) throws FileNotFoundException {
- if (uri == null) {
- throw new IllegalArgumentException("URI passed in is null.");
- }
-
- enforcePermissions(uri);
-
- if (ICON_TYPE.equals(getType(uri))) {
- final File file = WearPackageUtil.getIconFile(
- this.getContext().getApplicationContext(), getPackageNameFromUri(uri));
- if (file != null) {
- return ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
- }
- }
- return null;
- }
-
- public static Uri getUriForPackage(final String packageName) {
- return Uri.parse("content://" + AUTHORITY + "/icons/" + packageName + ".icon");
- }
-
- private String getPackageNameFromUri(Uri uri) {
- if (uri == null) {
- return null;
- }
- List<String> pathSegments = uri.getPathSegments();
- String packageName = pathSegments.get(pathSegments.size() - 1);
-
- if (packageName.endsWith(".icon")) {
- packageName = packageName.substring(0, packageName.lastIndexOf("."));
- }
- return packageName;
- }
-
- /**
- * Make sure the calling app is either a system app or the same app or has the right permission.
- * @throws SecurityException if the caller has insufficient permissions.
- */
- @TargetApi(Build.VERSION_CODES.BASE_1_1)
- private void enforcePermissions(Uri uri) {
- // Redo some of the permission check in {@link ContentProvider}. Just add an extra check to
- // allow System process to access this provider.
- Context context = getContext();
- final int pid = Binder.getCallingPid();
- final int uid = Binder.getCallingUid();
- final int myUid = android.os.Process.myUid();
-
- if (uid == myUid || isSystemApp(context, pid)) {
- return;
- }
-
- if (context.checkPermission(REQUIRED_PERMISSION, pid, uid) == PERMISSION_GRANTED) {
- return;
- }
-
- // last chance, check against any uri grants
- if (context.checkUriPermission(uri, pid, uid, Intent.FLAG_GRANT_READ_URI_PERMISSION)
- == PERMISSION_GRANTED) {
- return;
- }
-
- throw new SecurityException("Permission Denial: reading "
- + getClass().getName() + " uri " + uri + " from pid=" + pid
- + ", uid=" + uid);
- }
-
- /**
- * From the pid of the calling process, figure out whether this is a system app or not. We do
- * this by checking the application information corresponding to the pid and then checking if
- * FLAG_SYSTEM is set.
- */
- @TargetApi(Build.VERSION_CODES.CUPCAKE)
- private boolean isSystemApp(Context context, int pid) {
- // Get the Activity Manager Object
- ActivityManager aManager =
- (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
- // Get the list of running Applications
- List<ActivityManager.RunningAppProcessInfo> rapInfoList =
- aManager.getRunningAppProcesses();
- for (ActivityManager.RunningAppProcessInfo rapInfo : rapInfoList) {
- if (rapInfo.pid == pid) {
- try {
- PackageInfo pkgInfo = context.getPackageManager().getPackageInfo(
- rapInfo.pkgList[0], 0);
- if (pkgInfo != null && pkgInfo.applicationInfo != null &&
- (pkgInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
- Log.d(TAG, pid + " is a system app.");
- return true;
- }
- } catch (PackageManager.NameNotFoundException e) {
- Log.e(TAG, "Could not find package information.", e);
- return false;
- }
- }
- }
- return false;
- }
-}
diff --git a/src/com/android/packageinstaller/wear/WearPackageInstallerService.java b/src/com/android/packageinstaller/wear/WearPackageInstallerService.java
deleted file mode 100644
index e5f7613..0000000
--- a/src/com/android/packageinstaller/wear/WearPackageInstallerService.java
+++ /dev/null
@@ -1,589 +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.packageinstaller.wear;
-
-import android.app.Notification;
-import android.app.NotificationChannel;
-import android.app.NotificationManager;
-import android.app.Service;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.FeatureInfo;
-import android.content.pm.IPackageDeleteObserver;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageParser;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.IBinder;
-import android.os.Looper;
-import android.os.Message;
-import android.os.ParcelFileDescriptor;
-import android.os.PowerManager;
-import android.os.Process;
-import android.util.ArrayMap;
-import android.util.Log;
-import android.util.Pair;
-
-import com.android.packageinstaller.DeviceUtils;
-import com.android.packageinstaller.PackageUtil;
-import com.android.packageinstaller.R;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Service that will install/uninstall packages. It will check for permissions and features as well.
- *
- * -----------
- *
- * Debugging information:
- *
- * Install Action example:
- * adb shell am startservice -a com.android.packageinstaller.wear.INSTALL_PACKAGE \
- * -d package://com.google.android.gms \
- * --eu com.google.android.clockwork.EXTRA_ASSET_URI content://com.google.android.clockwork.home.provider/host/com.google.android.wearable.app/wearable/com.google.android.gms/apk \
- * --es android.intent.extra.INSTALLER_PACKAGE_NAME com.google.android.gms \
- * --ez com.google.android.clockwork.EXTRA_CHECK_PERMS false \
- * --eu com.google.android.clockwork.EXTRA_PERM_URI content://com.google.android.clockwork.home.provider/host/com.google.android.wearable.app/permissions \
- * com.android.packageinstaller/com.android.packageinstaller.wear.WearPackageInstallerService
- *
- * Uninstall Action example:
- * adb shell am startservice -a com.android.packageinstaller.wear.UNINSTALL_PACKAGE \
- * -d package://com.google.android.gms \
- * com.android.packageinstaller/com.android.packageinstaller.wear.WearPackageInstallerService
- *
- * Retry GMS:
- * adb shell am startservice -a com.android.packageinstaller.wear.RETRY_GMS \
- * com.android.packageinstaller/com.android.packageinstaller.wear.WearPackageInstallerService
- */
-public class WearPackageInstallerService extends Service {
- private static final String TAG = "WearPkgInstallerService";
-
- private static final String WEAR_APPS_CHANNEL = "wear_app_install_uninstall";
-
- private final int START_INSTALL = 1;
- private final int START_UNINSTALL = 2;
-
- private int mInstallNotificationId = 1;
- private final Map<String, Integer> mNotifIdMap = new ArrayMap<>();
-
- private final class ServiceHandler extends Handler {
- public ServiceHandler(Looper looper) {
- super(looper);
- }
-
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case START_INSTALL:
- installPackage(msg.getData());
- break;
- case START_UNINSTALL:
- uninstallPackage(msg.getData());
- break;
- }
- }
- }
- private ServiceHandler mServiceHandler;
- private NotificationChannel mNotificationChannel;
- private static volatile PowerManager.WakeLock lockStatic = null;
-
- @Override
- public IBinder onBind(Intent intent) {
- return null;
- }
-
- @Override
- public void onCreate() {
- super.onCreate();
- HandlerThread thread = new HandlerThread("PackageInstallerThread",
- Process.THREAD_PRIORITY_BACKGROUND);
- thread.start();
-
- mServiceHandler = new ServiceHandler(thread.getLooper());
- }
-
- @Override
- public int onStartCommand(Intent intent, int flags, int startId) {
- if (!DeviceUtils.isWear(this)) {
- Log.w(TAG, "Not running on wearable.");
- finishServiceEarly(startId);
- return START_NOT_STICKY;
- }
-
- if (intent == null) {
- Log.w(TAG, "Got null intent.");
- finishServiceEarly(startId);
- return START_NOT_STICKY;
- }
-
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, "Got install/uninstall request " + intent);
- }
-
- Uri packageUri = intent.getData();
- if (packageUri == null) {
- Log.e(TAG, "No package URI in intent");
- finishServiceEarly(startId);
- return START_NOT_STICKY;
- }
-
- final String packageName = WearPackageUtil.getSanitizedPackageName(packageUri);
- if (packageName == null) {
- Log.e(TAG, "Invalid package name in URI (expected package:<pkgName>): " + packageUri);
- finishServiceEarly(startId);
- return START_NOT_STICKY;
- }
-
- PowerManager.WakeLock lock = getLock(this.getApplicationContext());
- if (!lock.isHeld()) {
- lock.acquire();
- }
-
- Bundle intentBundle = intent.getExtras();
- if (intentBundle == null) {
- intentBundle = new Bundle();
- }
- WearPackageArgs.setStartId(intentBundle, startId);
- WearPackageArgs.setPackageName(intentBundle, packageName);
- Message msg;
- String notifTitle;
- if (Intent.ACTION_INSTALL_PACKAGE.equals(intent.getAction())) {
- msg = mServiceHandler.obtainMessage(START_INSTALL);
- notifTitle = getString(R.string.installing);
- } else if (Intent.ACTION_UNINSTALL_PACKAGE.equals(intent.getAction())) {
- msg = mServiceHandler.obtainMessage(START_UNINSTALL);
- notifTitle = getString(R.string.uninstalling);
- } else {
- Log.e(TAG, "Unknown action : " + intent.getAction());
- finishServiceEarly(startId);
- return START_NOT_STICKY;
- }
- Pair<Integer, Notification> notifPair = buildNotification(packageName, notifTitle);
- startForeground(notifPair.first, notifPair.second);
- msg.setData(intentBundle);
- mServiceHandler.sendMessage(msg);
- return START_NOT_STICKY;
- }
-
- private void installPackage(Bundle argsBundle) {
- int startId = WearPackageArgs.getStartId(argsBundle);
- final String packageName = WearPackageArgs.getPackageName(argsBundle);
- final Uri assetUri = WearPackageArgs.getAssetUri(argsBundle);
- final Uri permUri = WearPackageArgs.getPermUri(argsBundle);
- boolean checkPerms = WearPackageArgs.checkPerms(argsBundle);
- boolean skipIfSameVersion = WearPackageArgs.skipIfSameVersion(argsBundle);
- int companionSdkVersion = WearPackageArgs.getCompanionSdkVersion(argsBundle);
- int companionDeviceVersion = WearPackageArgs.getCompanionDeviceVersion(argsBundle);
- String compressionAlg = WearPackageArgs.getCompressionAlg(argsBundle);
- boolean skipIfLowerVersion = WearPackageArgs.skipIfLowerVersion(argsBundle);
-
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, "Installing package: " + packageName + ", assetUri: " + assetUri +
- ",permUri: " + permUri + ", startId: " + startId + ", checkPerms: " +
- checkPerms + ", skipIfSameVersion: " + skipIfSameVersion +
- ", compressionAlg: " + compressionAlg + ", companionSdkVersion: " +
- companionSdkVersion + ", companionDeviceVersion: " + companionDeviceVersion +
- ", skipIfLowerVersion: " + skipIfLowerVersion);
- }
- final PackageManager pm = getPackageManager();
- File tempFile = null;
- int installFlags = 0;
- PowerManager.WakeLock lock = getLock(this.getApplicationContext());
- boolean messageSent = false;
- try {
- PackageInfo existingPkgInfo = null;
- try {
- existingPkgInfo = pm.getPackageInfo(packageName,
- PackageManager.MATCH_ANY_USER | PackageManager.GET_PERMISSIONS);
- if (existingPkgInfo != null) {
- installFlags |= PackageManager.INSTALL_REPLACE_EXISTING;
- }
- } catch (PackageManager.NameNotFoundException e) {
- // Ignore this exception. We could not find the package, will treat as a new
- // installation.
- }
- if ((installFlags & PackageManager.INSTALL_REPLACE_EXISTING) != 0) {
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, "Replacing package:" + packageName);
- }
- }
- // TODO(28021618): This was left as a temp file due to the fact that this code is being
- // deprecated and that we need the bare minimum to continue working moving forward
- // If this code is used as reference, this permission logic might want to be
- // reworked to use a stream instead of a file so that we don't need to write a
- // file at all. Note that there might be some trickiness with opening a stream
- // for multiple users.
- ParcelFileDescriptor parcelFd = getContentResolver()
- .openFileDescriptor(assetUri, "r");
- tempFile = WearPackageUtil.getFileFromFd(WearPackageInstallerService.this,
- parcelFd, packageName, compressionAlg);
- if (tempFile == null) {
- Log.e(TAG, "Could not create a temp file from FD for " + packageName);
- return;
- }
- PackageParser.Package pkg = PackageUtil.getPackageInfo(this, tempFile);
- if (pkg == null) {
- Log.e(TAG, "Could not parse apk information for " + packageName);
- return;
- }
-
- if (!pkg.packageName.equals(packageName)) {
- Log.e(TAG, "Wearable Package Name has to match what is provided for " +
- packageName);
- return;
- }
-
- pkg.applicationInfo.sourceDir = tempFile.getPath();
- pkg.applicationInfo.publicSourceDir = tempFile.getPath();
- getLabelAndUpdateNotification(packageName,
- getString(R.string.installing_app, pkg.applicationInfo.loadLabel(pm)));
-
- List<String> wearablePerms = pkg.requestedPermissions;
-
- // Log if the installed pkg has a higher version number.
- if (existingPkgInfo != null) {
- if (existingPkgInfo.getLongVersionCode() == pkg.getLongVersionCode()) {
- if (skipIfSameVersion) {
- Log.w(TAG, "Version number (" + pkg.getLongVersionCode() +
- ") of new app is equal to existing app for " + packageName +
- "; not installing due to versionCheck");
- return;
- } else {
- Log.w(TAG, "Version number of new app (" + pkg.getLongVersionCode() +
- ") is equal to existing app for " + packageName);
- }
- } else if (existingPkgInfo.getLongVersionCode() > pkg.getLongVersionCode()) {
- if (skipIfLowerVersion) {
- // Starting in Feldspar, we are not going to allow downgrades of any app.
- Log.w(TAG, "Version number of new app (" + pkg.getLongVersionCode() +
- ") is lower than existing app ( "
- + existingPkgInfo.getLongVersionCode() +
- ") for " + packageName + "; not installing due to versionCheck");
- return;
- } else {
- Log.w(TAG, "Version number of new app (" + pkg.getLongVersionCode() +
- ") is lower than existing app ( "
- + existingPkgInfo.getLongVersionCode() + ") for " + packageName);
- }
- }
-
- // Following the Android Phone model, we should only check for permissions for any
- // newly defined perms.
- if (existingPkgInfo.requestedPermissions != null) {
- for (int i = 0; i < existingPkgInfo.requestedPermissions.length; ++i) {
- // If the permission is granted, then we will not ask to request it again.
- if ((existingPkgInfo.requestedPermissionsFlags[i] &
- PackageInfo.REQUESTED_PERMISSION_GRANTED) != 0) {
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, existingPkgInfo.requestedPermissions[i] +
- " is already granted for " + packageName);
- }
- wearablePerms.remove(existingPkgInfo.requestedPermissions[i]);
- }
- }
- }
- }
-
- // Check that the wearable has all the features.
- boolean hasAllFeatures = true;
- if (pkg.reqFeatures != null) {
- for (FeatureInfo feature : pkg.reqFeatures) {
- if (feature.name != null && !pm.hasSystemFeature(feature.name) &&
- (feature.flags & FeatureInfo.FLAG_REQUIRED) != 0) {
- Log.e(TAG, "Wearable does not have required feature: " + feature +
- " for " + packageName);
- hasAllFeatures = false;
- }
- }
- }
-
- if (!hasAllFeatures) {
- return;
- }
-
- // Check permissions on both the new wearable package and also on the already installed
- // wearable package.
- // If the app is targeting API level 23, we will also start a service in ClockworkHome
- // which will ultimately prompt the user to accept/reject permissions.
- if (checkPerms && !checkPermissions(pkg, companionSdkVersion, companionDeviceVersion,
- permUri, wearablePerms, tempFile)) {
- Log.w(TAG, "Wearable does not have enough permissions.");
- return;
- }
-
- // Finally install the package.
- ParcelFileDescriptor fd = getContentResolver().openFileDescriptor(assetUri, "r");
- PackageInstallerFactory.getPackageInstaller(this).install(packageName, fd,
- new PackageInstallListener(this, lock, startId, packageName));
-
- messageSent = true;
- Log.i(TAG, "Sent installation request for " + packageName);
- } catch (FileNotFoundException e) {
- Log.e(TAG, "Could not find the file with URI " + assetUri, e);
- } finally {
- if (!messageSent) {
- // Some error happened. If the message has been sent, we can wait for the observer
- // which will finish the service.
- if (tempFile != null) {
- tempFile.delete();
- }
- finishService(lock, startId);
- }
- }
- }
-
- // TODO: This was left using the old PackageManager API due to the fact that this code is being
- // deprecated and that we need the bare minimum to continue working moving forward
- // If this code is used as reference, this logic should be reworked to use the new
- // PackageInstaller APIs similar to how installPackage was reworked
- private void uninstallPackage(Bundle argsBundle) {
- int startId = WearPackageArgs.getStartId(argsBundle);
- final String packageName = WearPackageArgs.getPackageName(argsBundle);
-
- PowerManager.WakeLock lock = getLock(this.getApplicationContext());
- final PackageManager pm = getPackageManager();
- try {
- PackageInfo pkgInfo = pm.getPackageInfo(packageName, 0);
- getLabelAndUpdateNotification(packageName,
- getString(R.string.uninstalling_app, pkgInfo.applicationInfo.loadLabel(pm)));
-
- // Found package, send uninstall request.
- pm.deletePackage(packageName, new PackageDeleteObserver(lock, startId),
- PackageManager.DELETE_ALL_USERS);
-
- Log.i(TAG, "Sent delete request for " + packageName);
- } catch (IllegalArgumentException | PackageManager.NameNotFoundException e) {
- // Couldn't find the package, no need to call uninstall.
- Log.w(TAG, "Could not find package, not deleting " + packageName, e);
- finishService(lock, startId);
- }
- }
-
- private boolean checkPermissions(PackageParser.Package pkg, int companionSdkVersion,
- int companionDeviceVersion, Uri permUri, List<String> wearablePermissions,
- File apkFile) {
- // Assumption: We are running on Android O.
- // If the Phone App is targeting M, all permissions may not have been granted to the phone
- // app. If the Wear App is then not targeting M, there may be permissions that are not
- // granted on the Phone app (by the user) right now and we cannot just grant it for the Wear
- // app.
- if (pkg.applicationInfo.targetSdkVersion >= Build.VERSION_CODES.M) {
- // Install the app if Wear App is ready for the new perms model.
- return true;
- }
-
- if (!doesWearHaveUngrantedPerms(pkg.packageName, permUri, wearablePermissions)) {
- // All permissions requested by the watch are already granted on the phone, no need
- // to do anything.
- return true;
- }
-
- // Log an error if Wear is targeting < 23 and phone is targeting >= 23.
- if (companionSdkVersion == 0 || companionSdkVersion >= Build.VERSION_CODES.M) {
- Log.e(TAG, "MNC: Wear app's targetSdkVersion should be at least 23, if "
- + "phone app is targeting at least 23, will continue.");
- }
-
- return false;
- }
-
- /**
- * Given a {@string packageName} corresponding to a phone app, query the provider for all the
- * perms that are granted.
- *
- * @return true if the Wear App has any perms that have not been granted yet on the phone side.
- * @return true if there is any error cases.
- */
- private boolean doesWearHaveUngrantedPerms(String packageName, Uri permUri,
- List<String> wearablePermissions) {
- if (permUri == null) {
- Log.e(TAG, "Permission URI is null");
- // Pretend there is an ungranted permission to avoid installing for error cases.
- return true;
- }
- Cursor permCursor = getContentResolver().query(permUri, null, null, null, null);
- if (permCursor == null) {
- Log.e(TAG, "Could not get the cursor for the permissions");
- // Pretend there is an ungranted permission to avoid installing for error cases.
- return true;
- }
-
- Set<String> grantedPerms = new HashSet<>();
- Set<String> ungrantedPerms = new HashSet<>();
- while(permCursor.moveToNext()) {
- // Make sure that the MatrixCursor returned by the ContentProvider has 2 columns and
- // verify their types.
- if (permCursor.getColumnCount() == 2
- && Cursor.FIELD_TYPE_STRING == permCursor.getType(0)
- && Cursor.FIELD_TYPE_INTEGER == permCursor.getType(1)) {
- String perm = permCursor.getString(0);
- Integer granted = permCursor.getInt(1);
- if (granted == 1) {
- grantedPerms.add(perm);
- } else {
- ungrantedPerms.add(perm);
- }
- }
- }
- permCursor.close();
-
- boolean hasUngrantedPerm = false;
- for (String wearablePerm : wearablePermissions) {
- if (!grantedPerms.contains(wearablePerm)) {
- hasUngrantedPerm = true;
- if (!ungrantedPerms.contains(wearablePerm)) {
- // This is an error condition. This means that the wearable has permissions that
- // are not even declared in its host app. This is a developer error.
- Log.e(TAG, "Wearable " + packageName + " has a permission \"" + wearablePerm
- + "\" that is not defined in the host application's manifest.");
- } else {
- Log.w(TAG, "Wearable " + packageName + " has a permission \"" + wearablePerm +
- "\" that is not granted in the host application.");
- }
- }
- }
- return hasUngrantedPerm;
- }
-
- /** Finishes the service after fulfilling obligation to call startForeground. */
- private void finishServiceEarly(int startId) {
- Pair<Integer, Notification> notifPair = buildNotification(
- getApplicationContext().getPackageName(), "");
- startForeground(notifPair.first, notifPair.second);
- finishService(null, startId);
- }
-
- private void finishService(PowerManager.WakeLock lock, int startId) {
- if (lock != null && lock.isHeld()) {
- lock.release();
- }
- stopSelf(startId);
- }
-
- private synchronized PowerManager.WakeLock getLock(Context context) {
- if (lockStatic == null) {
- PowerManager mgr =
- (PowerManager) context.getSystemService(Context.POWER_SERVICE);
- lockStatic = mgr.newWakeLock(
- PowerManager.PARTIAL_WAKE_LOCK, context.getClass().getSimpleName());
- lockStatic.setReferenceCounted(true);
- }
- return lockStatic;
- }
-
- private class PackageInstallListener implements PackageInstallerImpl.InstallListener {
- private Context mContext;
- private PowerManager.WakeLock mWakeLock;
- private int mStartId;
- private String mApplicationPackageName;
- private PackageInstallListener(Context context, PowerManager.WakeLock wakeLock,
- int startId, String applicationPackageName) {
- mContext = context;
- mWakeLock = wakeLock;
- mStartId = startId;
- mApplicationPackageName = applicationPackageName;
- }
-
- @Override
- public void installBeginning() {
- Log.i(TAG, "Package " + mApplicationPackageName + " is being installed.");
- }
-
- @Override
- public void installSucceeded() {
- try {
- Log.i(TAG, "Package " + mApplicationPackageName + " was installed.");
-
- // Delete tempFile from the file system.
- File tempFile = WearPackageUtil.getTemporaryFile(mContext, mApplicationPackageName);
- if (tempFile != null) {
- tempFile.delete();
- }
- } finally {
- finishService(mWakeLock, mStartId);
- }
- }
-
- @Override
- public void installFailed(int errorCode, String errorDesc) {
- Log.e(TAG, "Package install failed " + mApplicationPackageName
- + ", errorCode " + errorCode);
- finishService(mWakeLock, mStartId);
- }
- }
-
- private class PackageDeleteObserver extends IPackageDeleteObserver.Stub {
- private PowerManager.WakeLock mWakeLock;
- private int mStartId;
-
- private PackageDeleteObserver(PowerManager.WakeLock wakeLock, int startId) {
- mWakeLock = wakeLock;
- mStartId = startId;
- }
-
- public void packageDeleted(String packageName, int returnCode) {
- try {
- if (returnCode >= 0) {
- Log.i(TAG, "Package " + packageName + " was uninstalled.");
- } else {
- Log.e(TAG, "Package uninstall failed " + packageName + ", returnCode " +
- returnCode);
- }
- } finally {
- finishService(mWakeLock, mStartId);
- }
- }
- }
-
- private synchronized Pair<Integer, Notification> buildNotification(final String packageName,
- final String title) {
- int notifId;
- if (mNotifIdMap.containsKey(packageName)) {
- notifId = mNotifIdMap.get(packageName);
- } else {
- notifId = mInstallNotificationId++;
- mNotifIdMap.put(packageName, notifId);
- }
-
- if (mNotificationChannel == null) {
- mNotificationChannel = new NotificationChannel(WEAR_APPS_CHANNEL,
- getString(R.string.wear_app_channel), NotificationManager.IMPORTANCE_MIN);
- NotificationManager notificationManager = getSystemService(NotificationManager.class);
- notificationManager.createNotificationChannel(mNotificationChannel);
- }
- return new Pair<>(notifId, new Notification.Builder(this, WEAR_APPS_CHANNEL)
- .setSmallIcon(R.drawable.ic_file_download)
- .setContentTitle(title)
- .build());
- }
-
- private void getLabelAndUpdateNotification(String packageName, String title) {
- // Update notification since we have a label now.
- NotificationManager notificationManager = getSystemService(NotificationManager.class);
- Pair<Integer, Notification> notifPair = buildNotification(packageName, title);
- notificationManager.notify(notifPair.first, notifPair.second);
- }
-}
diff --git a/src/com/android/packageinstaller/wear/WearPackageUtil.java b/src/com/android/packageinstaller/wear/WearPackageUtil.java
deleted file mode 100644
index bc740ab..0000000
--- a/src/com/android/packageinstaller/wear/WearPackageUtil.java
+++ /dev/null
@@ -1,133 +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.packageinstaller.wear;
-
-import android.content.Context;
-import android.net.Uri;
-import android.os.ParcelFileDescriptor;
-import android.system.ErrnoException;
-import android.system.Os;
-import android.text.TextUtils;
-import android.util.Log;
-
-import org.tukaani.xz.LZMAInputStream;
-import org.tukaani.xz.XZInputStream;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-public class WearPackageUtil {
- private static final String TAG = "WearablePkgInstaller";
-
- private static final String COMPRESSION_LZMA = "lzma";
- private static final String COMPRESSION_XZ = "xz";
-
- public static File getTemporaryFile(Context context, String packageName) {
- try {
- File newFileDir = new File(context.getFilesDir(), "tmp");
- newFileDir.mkdirs();
- Os.chmod(newFileDir.getAbsolutePath(), 0771);
- File newFile = new File(newFileDir, packageName + ".apk");
- return newFile;
- } catch (ErrnoException e) {
- Log.e(TAG, "Failed to open.", e);
- return null;
- }
- }
-
- public static File getIconFile(final Context context, final String packageName) {
- try {
- File newFileDir = new File(context.getFilesDir(), "images/icons");
- newFileDir.mkdirs();
- Os.chmod(newFileDir.getAbsolutePath(), 0771);
- return new File(newFileDir, packageName + ".icon");
- } catch (ErrnoException e) {
- Log.e(TAG, "Failed to open.", e);
- return null;
- }
- }
-
- /**
- * In order to make sure that the Wearable Asset Manager has a reasonable apk that can be used
- * by the PackageManager, we will parse it before sending it to the PackageManager.
- * Unfortunately, PackageParser needs a file to parse. So, we have to temporarily convert the fd
- * to a File.
- *
- * @param context
- * @param fd FileDescriptor to convert to File
- * @param packageName Name of package, will define the name of the file
- * @param compressionAlg Can be null. For ALT mode the APK will be compressed. We will
- * decompress it here
- */
- public static File getFileFromFd(Context context, ParcelFileDescriptor fd,
- String packageName, String compressionAlg) {
- File newFile = getTemporaryFile(context, packageName);
- if (fd == null || fd.getFileDescriptor() == null) {
- return null;
- }
- InputStream fr = new ParcelFileDescriptor.AutoCloseInputStream(fd);
- try {
- if (TextUtils.equals(compressionAlg, COMPRESSION_XZ)) {
- fr = new XZInputStream(fr);
- } else if (TextUtils.equals(compressionAlg, COMPRESSION_LZMA)) {
- fr = new LZMAInputStream(fr);
- }
- } catch (IOException e) {
- Log.e(TAG, "Compression was set to " + compressionAlg + ", but could not decode ", e);
- return null;
- }
-
- int nRead;
- byte[] data = new byte[1024];
- try {
- final FileOutputStream fo = new FileOutputStream(newFile);
- while ((nRead = fr.read(data, 0, data.length)) != -1) {
- fo.write(data, 0, nRead);
- }
- fo.flush();
- fo.close();
- Os.chmod(newFile.getAbsolutePath(), 0644);
- return newFile;
- } catch (IOException e) {
- Log.e(TAG, "Reading from Asset FD or writing to temp file failed ", e);
- return null;
- } catch (ErrnoException e) {
- Log.e(TAG, "Could not set permissions on file ", e);
- return null;
- } finally {
- try {
- fr.close();
- } catch (IOException e) {
- Log.e(TAG, "Failed to close the file from FD ", e);
- }
- }
- }
-
- /**
- * @return com.google.com from expected formats like
- * Uri: package:com.google.com, package:/com.google.com, package://com.google.com
- */
- public static String getSanitizedPackageName(Uri packageUri) {
- String packageName = packageUri.getEncodedSchemeSpecificPart();
- if (packageName != null) {
- return packageName.replaceAll("^/+", "");
- }
- return packageName;
- }
-}