diff --git a/Android.bp b/Android.bp index 4a436da6c5a68fab231b80318e34fbb1ccccaacf..59742acc17080865300f0f5820db79a6a23a15c4 100644 --- a/Android.bp +++ b/Android.bp @@ -21,6 +21,9 @@ apex { name: "com.android.permission", defaults: ["com.android.permission-defaults"], manifest: "apex_manifest.json", + compat_configs: [ + "framework-permission-s-compat-config" + ], } apex_defaults { @@ -30,7 +33,6 @@ apex_defaults { systemserverclasspath_fragments: ["com.android.permission-systemserverclasspath-fragment"], prebuilts: [ "current_sdkinfo", - "privapp_allowlist_com.android.permissioncontroller.xml", ], key: "com.android.permission.key", certificate: ":com.android.permission.certificate", diff --git a/OWNERS b/OWNERS index 8f1443bc6d9d11b00431ab6ddac0681d8da8a583..403e9f43091aa5b10faadcf28409a82c8a7b147b 100644 --- a/OWNERS +++ b/OWNERS @@ -1,3 +1,5 @@ +# Bug component: 137825 + include platform/frameworks/base:/core/java/android/permission/OWNERS include platform/packages/modules/common:/MODULES_OWNERS # see go/mainline-owners-policy diff --git a/PermissionController/Android.bp b/PermissionController/Android.bp index 9b20819f0acda85eac929e32868fdb3c9f45c2e4..0115dece3aaf25c9c600f714c6de6b110a97b907 100644 --- a/PermissionController/Android.bp +++ b/PermissionController/Android.bp @@ -54,37 +54,33 @@ java_library { ], } -// File to be included by permission controller app an mocking tests -filegroup { - name: "permissioncontroller-sources", - srcs: [ - "src/**/*.java", - "src/**/*.kt", - ":permissioncontroller-protos", - ], -} - -filegroup { +java_library { name: "permissioncontroller-protos", + sdk_version: "system_current", + min_sdk_version: "30", srcs: [ "src/**/*.proto", ], + proto: { + type: "lite", + include_dirs: ["packages/modules/Permission/PermissionController/src/com/android/permissioncontroller"], + }, + apex_available: [ + "//apex_available:platform", + "com.android.permission", + ], } -android_app { - name: "PermissionController", - // Compiling against "module_current" would allow using non-APIs within the permission APEX - // boundaries, which may be unsafe because PermissionController is also shipped as a standalone - // artifact. See also b/209458854. +android_library { + name: "PermissionController-lib", sdk_version: "system_current", min_sdk_version: "30", - updatable: true, - privileged: true, - certificate: "platform", - rename_resources_package: false, - required: ["privapp_allowlist_com.android.permissioncontroller.xml"], - - srcs: [":permissioncontroller-sources"], + use_resource_processor: true, + manifest: "AndroidManifest-lib.xml", + srcs: [ + "src/**/*.java", + "src/**/*.kt", + ], //javacflags: ["-Werror"], kotlincflags: [ @@ -95,13 +91,11 @@ android_app { libs: [ "android.car-stubs", - // Soong fails to automatically add this dependency because all the - // *.kt sources are inside a filegroup. - "kotlin-annotations", "safety-center-annotations", ], static_libs: [ + "permissioncontroller-protos", "iconloader_sc_mainline_prod", "com.google.android.material_material", "androidx.transition_transition", @@ -152,18 +146,52 @@ android_app { "lottie", "safety-label", "role-controller", + "permissions-flags-lib", + "android.permission.flags-aconfig-java", + "androidx.compose.foundation_foundation", + "androidx.compose.runtime_runtime", + "androidx.compose.runtime_runtime-livedata", + "androidx.compose.ui_ui", + "androidx.wear.compose_compose-material", ], - proto: { - type: "lite", - include_dirs: ["packages/modules/Permission/PermissionController/src/com/android/permissioncontroller"], + lint: { + strict_updatability_linting: true, + error_checks: ["Recycle"], }, + apex_available: [ + "//apex_available:platform", + "com.android.permission", + ], + + // TODO(b/313706381): Remove jarjar once flagging lib is fixed + jarjar_rules: "jarjar-rules.txt", +} + +android_app { + name: "PermissionController", + // Compiling against "module_current" would allow using non-APIs within the permission APEX + // boundaries, which may be unsafe because PermissionController is also shipped as a standalone + // artifact. See also b/209458854. + sdk_version: "system_current", + min_sdk_version: "30", + updatable: true, + privileged: true, + certificate: "platform", + use_resource_processor: true, + rename_resources_package: false, + privapp_allowlist: ":privapp_allowlist_com.android.permissioncontroller.xml", + + static_libs: ["PermissionController-lib"], + lint: { strict_updatability_linting: true, + error_checks: ["Recycle"], }, optimize: { + proguard_compatibility: false, // TODO(b/215530220): remove when this is default behavior proguard_flags_files: ["proguard.flags"], }, diff --git a/PermissionController/AndroidManifest-lib.xml b/PermissionController/AndroidManifest-lib.xml new file mode 100644 index 0000000000000000000000000000000000000000..7592568236b1dedac85c8f38efa233ecbe8614da --- /dev/null +++ b/PermissionController/AndroidManifest-lib.xml @@ -0,0 +1,18 @@ + + + + + diff --git a/PermissionController/AndroidManifest.xml b/PermissionController/AndroidManifest.xml index 817dd088187b8ff1c2fd41d64f60ee9188589c0b..974ab592006b336582836d478e2e9286c3a1d712 100644 --- a/PermissionController/AndroidManifest.xml +++ b/PermissionController/AndroidManifest.xml @@ -270,8 +270,7 @@ android:windowSoftInputMode="stateAlwaysHidden|adjustNothing" android:visibleToInstantApps="true" android:inheritShowWhenLocked="true" - android:hardwareAccelerated="false" - android:canDisplayOnRemoteDevices="false"> + android:canDisplayOnRemoteDevices="@bool/is_at_least_v"> @@ -291,7 +290,7 @@ android:visibleToInstantApps="true" android:inheritShowWhenLocked="true" android:hardwareAccelerated="false" - android:canDisplayOnRemoteDevices="false"> + android:canDisplayOnRemoteDevices="@bool/is_at_least_v"> @@ -521,7 +521,7 @@ - @@ -577,7 +577,7 @@ - - diff --git a/PermissionController/OWNERS b/PermissionController/OWNERS index 5cd46d61898c802103a6a1b721da78de4d80d30a..3ed65e519578e6660b3119dd31de470f235d12ec 100644 --- a/PermissionController/OWNERS +++ b/PermissionController/OWNERS @@ -12,3 +12,10 @@ joeo@google.com # for SafetyCenter UI changes per-file res/** = file:platform/packages/modules/Permission:/SafetyCenter/OWNERS + +# For Wear related changes +per-file WEAR_OWNERS = file:/PermissionController/WEAR_OWNERS +per-file src/com/android/permissioncontroller/permission/ui/wear/** = file:/PermissionController/WEAR_OWNERS +per-file src/com/android/permissioncontroller/role/ui/wear/** = file:/PermissionController/WEAR_OWNERS +per-file res/*-watch/* = file:/PermissionController/WEAR_OWNERS +per-file tests/permissionui/src/com/android/permissioncontroller/permissionui/ui/wear/** = file:/PermissionController/WEAR_OWNERS diff --git a/PermissionController/TEST_MAPPING b/PermissionController/TEST_MAPPING index 0ae3818fd7c53c15c38a148f7fd268cb5500f282..a7f2aec54caac51a0893ef5049ed2751e039964b 100644 --- a/PermissionController/TEST_MAPPING +++ b/PermissionController/TEST_MAPPING @@ -16,17 +16,17 @@ "name": "PermissionUiTestCases", "options": [ { - "exclude-annotation": "android.platform.test.annotations.FlakyTest" + "exclude-annotation": "androidx.test.filters.FlakyTest" } ] } ], "presubmit-large": [ { - "name": "CtsPermission3TestCases", + "name": "CtsPermissionUiTestCases", "options": [ { - "exclude-annotation": "android.platform.test.annotations.FlakyTest" + "exclude-annotation": "androidx.test.filters.FlakyTest" } ] } @@ -43,7 +43,7 @@ "exclude-filter": "android.app.role.cts.RoleManagerTest#removeSmsRoleHolderThenPermissionIsRevoked" }, { - "exclude-annotation": "androidx.test.filters.FlakyTest" + "exclude-annotation": "androidx.test.filters.FlakyTest" } ], "file_patterns": ["res/xml/roles\\.xml"] @@ -52,7 +52,7 @@ "name": "PermissionUiTestCases[com.google.android.permission.apex]", "options": [ { - "exclude-annotation": "android.platform.test.annotations.FlakyTest" + "exclude-annotation": "androidx.test.filters.FlakyTest" }, // TODO(b/238773220): These tests currently fails on R base image { @@ -73,14 +73,65 @@ ] }, { - "name": "CtsPermission3TestCases[com.google.android.permission.apex]", + "name": "CtsPermissionUiTestCases[com.google.android.permission.apex]", "options": [ { - "exclude-annotation": "android.platform.test.annotations.FlakyTest" + "exclude-annotation": "androidx.test.filters.FlakyTest" } ] } ], + "postsubmit": [ + { + "name": "CtsRoleTestCases", + "file_patterns": ["res/xml/roles\\.xml"] + }, + { + "name": "PermissionUiTestCases" + }, + { + "name": "CtsPermissionUiTestCases" + } + ], + "mainline-postsubmit": [ + { + "name": "CtsRoleTestCases[com.google.android.permission.apex]", + "options": [ + // TODO(b/238677748): These two tests currently fails on R base image + { + "exclude-filter": "android.app.role.cts.RoleManagerTest#openDefaultAppListThenIsNotDefaultAppInList" + }, + { + "exclude-filter": "android.app.role.cts.RoleManagerTest#removeSmsRoleHolderThenPermissionIsRevoked" + } + ], + "file_patterns": ["res/xml/roles\\.xml"] + }, + { + "name": "PermissionUiTestCases[com.google.android.permission.apex]", + "options": [ + // TODO(b/238773220): These tests currently fails on R base image + { + "exclude-filter": "com.android.permissioncontroller.permissionui.ui.handheld.ManageCustomPermissionsFragmentTest#groupSummaryGetsUpdatedWhenPermissionGetsGranted" + }, + { + "exclude-filter": "com.android.permissioncontroller.permissionui.ui.handheld.ManageCustomPermissionsFragmentTest#groupSummaryGetsUpdatedWhenPermissionGetsRevoked" + }, + { + "exclude-filter": "com.android.permissioncontroller.permissionui.ui.handheld.ManageStandardPermissionsFragmentTest#additionalPermissionSummaryGetUpdateWhenAppGetsInstalled" + }, + { + "exclude-filter": "com.android.permissioncontroller.permissionui.ui.handheld.ManageStandardPermissionsFragmentTest#additionalPermissionSummaryGetUpdateWhenDefinerGetsUninstalled" + }, + { + "exclude-filter": "com.android.permissioncontroller.permissionui.ui.handheld.ManageStandardPermissionsFragmentTest#additionalPermissionSummaryGetUpdateWhenUserGetsUninstalled" + } + ] + }, + { + "name": "CtsPermissionUiTestCases[com.google.android.permission.apex]" + } + ], "imports": [ { "path": "vendor/xts/gts-tests/hostsidetests/permissioncontroller" diff --git a/PermissionController/WEAR_OWNERS b/PermissionController/WEAR_OWNERS new file mode 100644 index 0000000000000000000000000000000000000000..da9486f1ca18fb524bb38079f1a80d5c08dea073 --- /dev/null +++ b/PermissionController/WEAR_OWNERS @@ -0,0 +1,3 @@ +adsule@google.com +sadrul@google.com +youngjoonyang@google.com diff --git a/PermissionController/jarjar-rules.txt b/PermissionController/jarjar-rules.txt new file mode 100644 index 0000000000000000000000000000000000000000..f4d8a0be274b56474b2ff9c915cbc004e3a680b0 --- /dev/null +++ b/PermissionController/jarjar-rules.txt @@ -0,0 +1 @@ +rule android.permission.flags.** com.android.permissioncontroller.jarjar.@0 diff --git a/PermissionController/lint-baseline.xml b/PermissionController/lint-baseline.xml index 05a3072344d653064f96fab7c6c59cb79d5210b1..546ed596dd3593a158fc8d1b78daf44a7b7c4169 100644 --- a/PermissionController/lint-baseline.xml +++ b/PermissionController/lint-baseline.xml @@ -1,61 +1,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + message="Field requires API level 33 (current min is 30): `getTAG`" + errorLine1=" MoreIssuesCardPreference.TAG," + errorLine2=" ~~~"> + + + + + + + + + + + + + + + + + + + + + line="104"/> + message="Call requires API level 34 (current min is 33): `getParentGroupId`"> + file="packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyCenterActivity.java" + line="91"/> + message="Call requires API level 34 (current min is 33): `openRelevantSubpage`"> + file="packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyCenterActivity.java" + line="88"/> + message="Call requires API level 34 (current min is 33): `openRelevantSubpage`"> + file="packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyCenterActivity.java" + line="92"/> + message="Class requires API level 34 (current min is 30): `android.app.AppOpsManager.OnOpNotedListener`"> + file="packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/data/v31/AllLightHistoricalPackageOpsLiveData.kt" + line="46"/> + message="Class requires API level 34 (current min is 30): `android.app.AppOpsManager.OnOpNotedListener`"> + file="packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/data/v31/AllLightPackageOpsLiveData.kt" + line="43"/> \ No newline at end of file diff --git a/PermissionController/proguard.flags b/PermissionController/proguard.flags index 13590aa39656ad2dc38bc60b2e35cab78c79f347..292e3e4f4d792bcd9c4b582687e60cef12fcb8c5 100644 --- a/PermissionController/proguard.flags +++ b/PermissionController/proguard.flags @@ -31,3 +31,13 @@ *** set*(***); *** has*(); } + +# Strip verbose logs. +-assumenosideeffects class android.util.Log { + static *** v(...); + static *** isLoggable(...); +} +-assumenosideeffects class android.util.Slog { + static *** v(...); +} +-maximumremovedandroidloglevel 2 diff --git a/PermissionController/res/drawable/ic_edit.xml b/PermissionController/res/drawable/ic_edit.xml new file mode 100644 index 0000000000000000000000000000000000000000..6b806a894b8f0d204de91ef8829a3d2af08771c6 --- /dev/null +++ b/PermissionController/res/drawable/ic_edit.xml @@ -0,0 +1,24 @@ + + + + \ No newline at end of file diff --git a/PermissionController/res/drawable/ic_more_horizontal.xml b/PermissionController/res/drawable/ic_more_horizontal.xml new file mode 100644 index 0000000000000000000000000000000000000000..c770e08efaab8473192d4d4a0a66d8127107f3be --- /dev/null +++ b/PermissionController/res/drawable/ic_more_horizontal.xml @@ -0,0 +1,26 @@ + + + + + diff --git a/PermissionController/res/layout-w764dp-v33/action_button_list.xml b/PermissionController/res/layout-v33/action_button_list_large_screen.xml similarity index 88% rename from PermissionController/res/layout-w764dp-v33/action_button_list.xml rename to PermissionController/res/layout-v33/action_button_list_large_screen.xml index 4db6df47cd0fda644ea010d9d89a63ea195d5934..141290fa20adbaf97f8ee40f041c29071f72012a 100644 --- a/PermissionController/res/layout-w764dp-v33/action_button_list.xml +++ b/PermissionController/res/layout-v33/action_button_list_large_screen.xml @@ -16,6 +16,4 @@ diff --git a/PermissionController/res/layout-v33/spaced_preference_category_no_label.xml b/PermissionController/res/layout-v33/action_button_list_small_screen.xml similarity index 90% rename from PermissionController/res/layout-v33/spaced_preference_category_no_label.xml rename to PermissionController/res/layout-v33/action_button_list_small_screen.xml index cecdc8bcd5a9bb013150452516b452c312a7b560..048ac4595f21d41d08076167a16121b6ee3bc235 100644 --- a/PermissionController/res/layout-v33/spaced_preference_category_no_label.xml +++ b/PermissionController/res/layout-v33/action_button_list_small_screen.xml @@ -14,5 +14,5 @@ ~ limitations under the License. --> - \ No newline at end of file + diff --git a/PermissionController/res/layout-v33/action_button_list.xml b/PermissionController/res/layout-v33/preference_entries_top_padding.xml similarity index 86% rename from PermissionController/res/layout-v33/action_button_list.xml rename to PermissionController/res/layout-v33/preference_entries_top_padding.xml index 3217f4c788f39f39ad252b36f5643433a0bb20a8..0e6e271485ea4f98d7b71068d5488f43a003534c 100644 --- a/PermissionController/res/layout-v33/action_button_list.xml +++ b/PermissionController/res/layout-v33/preference_entries_top_padding.xml @@ -14,7 +14,7 @@ ~ limitations under the License. --> - + android:layout_width="match_parent" + android:layout_height="@dimen/sc_spacing_xsmall" /> \ No newline at end of file diff --git a/PermissionController/res/layout-v33/preference_issue_card.xml b/PermissionController/res/layout-v33/preference_issue_card.xml index 571efae3bf2fb651fc05666af36ed2c7ee38c40b..e6d7491429b12bf2dd1e51d0dada2e80afa7234b 100644 --- a/PermissionController/res/layout-v33/preference_issue_card.xml +++ b/PermissionController/res/layout-v33/preference_issue_card.xml @@ -54,7 +54,7 @@ + layout="?attr/scActionButtonListLayout"/> - + - + + + + + + - - - - - - - - - - - - - - + android:text="@string/grant_dialog_button_allow_limited_access" + android:layout_alignParentStart="true" + style="@style/AppPermissionRadioButton" + android:layout_marginTop="0dp" /> + + + + + + + + + + + + + - + style="@style/PermissionGrantButtonDontAllowMore" /> diff --git a/PermissionController/res/layout/grant_permissions_material3.xml b/PermissionController/res/layout/grant_permissions_material3.xml index d405976cf9cd96d38dc2380a7f889386616b271a..6b1ccb2a40fd8ada99be0189a7731a5a1fdab63d 100644 --- a/PermissionController/res/layout/grant_permissions_material3.xml +++ b/PermissionController/res/layout/grant_permissions_material3.xml @@ -144,7 +144,7 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PermissionController/res/values-af/strings.xml b/PermissionController/res/values-af/strings.xml index 9776511968102400a3d779d54ecf93014504dd6f..0f9558fb4fc4bcf90b940d3b9fc56d22ae58018e 100644 --- a/PermissionController/res/values-af/strings.xml +++ b/PermissionController/res/values-af/strings.xml @@ -34,6 +34,7 @@ "Meer inligting" "Laat alles toe" "Laat altyd alles toe" + "Laat beperkte toegang toe" "Kies foto’ en video’s" "Kies meer" "Moenie meer kies nie" @@ -60,6 +61,7 @@ "Apps" "Programtoestemmings" "Ongebruikte programme" + "Redigeer geselekteerde foto’s vir hierdie app" "Geen ongebruikte programme nie" "0 ongebruikte programme" "Onlangse toestemmingbesluite" @@ -455,48 +457,75 @@ "Wys assistent-aktiveringbespeuring" "Wys ikoon in statusbalk wanneer mikrofoon gebruik word om stemassistent te aktiveer" "Gee <b>%1$s</b> toegang tot jou foto\'s en media op jou toestel?" + "Gee <b>%1$s</b> toegang tot foto’s en media op jou <b>%2$s</b>?" "Gee <b>%1$s</b> toegang tot jou kontakte?" + "Gee <b>%1$s</b> toegang tot jou kontakte op jou <b>%2$s</b>?" "Gee <b>%1$s</b> toegang tot hierdie toestel se ligging?" + "Gee <b>%1$s</b> toegang tot jou <b>%2$s</b> se ligging?" "Die program sal net toegang tot die ligging hê terwyl jy die program gebruik" "Gee <b>%1$s</b> toegang tot hierdie toestel se ligging?" + "Gee <b>%1$s</b> toegang tot jou <b>%2$s se ligging?" "Hierdie program wil dalk die hele tyd toegang tot jou ligging hê, selfs wanneer jy nie die program gebruik nie. ""Laat toe in instellings." "Verander liggingtoegang vir <b>%1$s</b>?" + "Verander liggingtoegang vir <b>%1$s</b> op jou <b>%2$s</b>?" "Hierdie program wil die hele tyd toegang tot jou ligging hê, selfs wanneer jy nie die program gebruik nie. ""Laat toe in instellings." "Laat <b>%1$s</b> toe om toestelle in die omtrek te soek, aan hulle te koppel en hul relatiewe posisie te bepaal?" + "Laat <b>%1$s</b> toestelle in die omtrek op jou <b>%2$s</b> soek, aan hulle koppel, en hul relatiewe posisie bepaal." "Laat <b>%1$s</b> toe om toestelle in die omtrek te soek, aan hulle te koppel en hul relatiewe posisie te bepaal? ""Laat toe in Instellings." "Verander <b>%1$s</b> se liggingtoegang van benaderd na presies?" + "Verander <b>%1$s</b> se liggingtoegang op jou <b>%2$s</b> van benaderd tot presies?" "Gee <b>%1$s</b> toegang tot hierdie toestel se benaderde ligging?" + "Gee <b>%1$s</b> toegang tot jou <b>%2$s</b> se benaderde ligging?" "Presies" "Benaderd" "Gee <b>%1$s</b> toegang tot jou kalender?" + "Gee <b>%1$s</b> toegang tot jou kalender op jou <b>%2$s</b>?" "Laat <b>%1$s</b> toe om SMS\'e te stuur en te bekyk?" + "Laat <b>%1$s</b> toe om SMS’e op jou <b>%2$s</b> te stuur en te bekyk?" "Gee vir <b>%1$s</b> toegang tot foto\'s, media en lêers op jou toestel?" + "Gee <b>%1$s</b> toegang tot foto’s, media en lêers op jou <b>%2$s</b>?" "Gee <b>%1$s</b> toegang tot <b>foto\'s, video\'s, musiek en oudio</b> op hierdie toestel?" "Gee <b>%1$s</b> toegang tot <b>foto\'s, video\'s, musiek, oudio en ander lêers</b> op hierdie toestel?" "Gee <b>%1$s</b> toegang tot musiek en oudio op hierdie toestel?" + "Gee <b>%1$s</b> toegang tot musiek en oudio op jou <b>%2$s</b>?" "Gee <b>%1$s</b> toegang tot foto\'s en video\'s op hierdie toestel?" + "Gee <b>%1$s</b> toegang tot foto’s en video’s op jou <b>%2$s</b>?" "Gee <b>%1$s</b> toegang tot meer foto\'s en video\'s op hierdie toestel?" + "Gee <b>%1$s</b> toegang tot meer foto’s en video’s op jou <b>%2$s</b>?" "Laat <b>%1$s</b> toe om oudio op te neem?" + "Laat <b>%1$s</b> toe om oudio op te neem op jou <b>%2$s</b>?" "Die program sal net kan oudio opneem terwyl jy die program gebruik" "Laat <b>%1$s</b> toe om oudio op te neem?" + "Laat <b>%1$s</b> toe om oudio op te neem op jou <b>%2$s</b>?" "Hierdie program wil dalk die hele tyd oudio opneem, selfs wanneer jy nie die program gebruik nie. ""Laat toe in instellings." "Verander mikrofoontoegang vir <b>%1$s</b>?" + "Verander mikrofoontoegang vir <b>%1$s</b> op jou <b>%2$s</b>?" "Hierdie program wil die hele tyd oudio opneem, selfs wanneer jy nie die program gebruik nie. ""Laat toe in instellings." "Gee <b>%1$s</b> toegang tot jou fisieke aktiwiteit?" + "Gee <b>%1$s</b> toegang tot jou fisieke aktiwiteit op jou <b>%2$s</b>?" "Laat <b>%1$s</b> toe om foto\'s te neem en video\'s op te neem?" + "Laat <b>%1$s</b> toe om foto’s te neem en video’s op te neem op jou <b>%2$s</b>?" "Die program sal net kan foto\'s neem en video\'s opneem terwyl jy die program gebruik" "Laat <b>%1$s</b> toe om foto\'s te neem en video\'s op te neem?" + "Laat <b>%1$s</b> toe om foto’s te neem en video’s op te neem op jou <b>%2$s</b>?" "Hierdie program wil dalk die hele tyd foto\'s neem en video\'s opneem, selfs wanneer jy nie die program gebruik nie. ""Laat toe in instellings." "Verander kameratoegang vir <b>%1$s</b>?" + "Verander kameratoegang vir <b>%1$s</b> op jou <b>%2$s</b>?" "Hierdie program wil die hele tyd foto\'s neem en video\'s opneem, selfs wanneer jy nie die program gebruik nie. ""Laat toe in instellings." "Gee <b>%1$s</b> toegang tot jou foonoproeprekords?" + "Gee <b>%1$s</b> toegang tot jou foonoproeprekords op jou <b>%2$s</b>?" "Laat <b>%1$s</b> toe om foonoproepe te maak en te bestuur?" + "Laat <b>%1$s</b> toe om foonoproepe op jou <b>%2$s</b> te maak en te bestuur?" "Gee <b>%1$s</b> toegang tot sensordata oor jou lewenstekens?" + "Gee <b>%1$s</b> toegang tot sensordata oor jou lewenstekens op jou <b>%2$s</b>?" "Dié program wil dalk deurentyd toegang tot sensordata oor jou lewenstekens hê, selfs wanneer jy nie die program gebruik nie. ""Gaan na instellings"" om hierdie verandering te maak." "Gee <b>%1$s</b> toegang tot die sensordata oor jou lewenstekens?" + "Gee <b>%1$s</b> toegang tot die sensordata oor jou lewenstekens op jou <b>%2$s</b>?" "Gaan na instellings"" om altyd vir hierdie program toegang tot liggaamsensordata te gee, selfs wanneer jy nie die program gebruik nie." "Gee <b>%1$s</b> steeds toegang tot liggaamsensordata terwyl die program gebruik word?" + "Gee <b>%1$s</b> steeds toegang tot liggaamsensordata op jou <b>%2$s</b> terwyl die app gebruik word?" "Laat <b>%1$s</b> toe om vir jou kennisgewings te stuur?" + "Laat <b>%1$s</b> toe om vir jou kennisgewings op jou <b>%2$s</b> te stuur?" "Beheerde toestemmings" "%1$s het liggingtoegang" "Jou organisasie gee %1$s toegang tot jou ligging" diff --git a/PermissionController/res/values-am/strings.xml b/PermissionController/res/values-am/strings.xml index aa5edc9835c129c31ab2975650a4d190cc5ad0a8..de2e0c8d8c7d5f280e44f532b06f6e995422164f 100644 --- a/PermissionController/res/values-am/strings.xml +++ b/PermissionController/res/values-am/strings.xml @@ -34,6 +34,7 @@ "ተጨማሪ መረጃ" "ሁሉንም ፍቀድ" "ሁልጊዜ ሁሉንም ፍቀድ" + "የተገደበ መዳረሻ ፍቀድ" "ፎቶዎችን እና ቪድዮዎችን ምረጥ" "ተጨማሪ ምረጥ" "ተጨማሪ አትምረጥ" @@ -60,6 +61,7 @@ "መተግበሪያዎች" "የመተግበሪያ ፈቃዶች" "ጥቅም ላይ ያልዋሉ መተግበሪያዎች" + "ለዚህ መተግበሪያ የተመረጡ ፎቶዎችን ያርትዑ" "አገልግሎት ላይ ያልዋሉ መተግበሪያዎች የሉም" "0 ሥራ ላይ ያልዋሉ መተግበሪያዎች" "የቅርብ ጊዜ የፈቃድ ውሳኔዎች" @@ -455,48 +457,75 @@ "የረዳት ቀስቃሽ ማግኛን አሳይ" "የድምፅ ረዳትን ለማግበር ማይክራፎን ጥቅም ላይ ሲውል በሁናቴ አሞሌ ውስጥ አዶን አሳይ" "<b>%1$s</b> በመሣሪያዎ ላይ ያሉ ፎቶዎችን፣ እና ማህደረ መረጃን እንዲደርስ ይፈቀድለት?" + "<b>%1$s</b> በእርስዎ <b>%2$s</b> ላይ ፎቶዎችን እና ሚዲያን እንዲደርስ ይፈቀድለት?" "<b>%1$s</b> እውቂያዎችዎን እንዲደርስ ይፈቀድለት?" + "<b>%1$s</b> በእርስዎ <b>%2$s</b> ላይ ዕውቂያዎችዎን እንዲደርስ ይፈቀድለት?" "<b>%1$s</b> የዚህ መሣሪያ አካባቢን እንዲደርስ ይፈቀድለት?" + "<b>%1$s</b> የእርስዎን <b>%2$s</b> አካባቢ እንደደርስ ይፈቀድለት?" "መተግበሪያው እርስዎ ሲጠቀሙበት ብቻ ነው የአካባቢው መዳረሻ የሚኖረው" "<b>%1$s</b> የዚህ መሣሪያ አካባቢን እንዲደርስ ይፈቀድለት?" + "<b>%1$s</b> የእርስዎን <b> %2$s አካባቢ እንዲደርስ ይፈቀድለት?" "ይህ መተግበሪያ አካባቢዎን ሁልጊዜ መድረስ ሊፈልግ ይችላል፣ እርስዎ በማይጠቀሙበት ጊዜም እንኳ። ""በቅንብሮች ውስጥ ይፍቀዱ""።" "ለ <b>%1$s</b> የመገኛ አካባቢ መዳረሻ ይለወጥ?" + "በእርስዎ <b>%2$s</b> ላይ ለ<b>%1$s</b> የአካባቢ መዳረሻ ይለወጥ?" "ይህ መተግበሪያ አካባቢዎን ሁልጊዜ መድረስ ይፈልጋል፣ እርስዎ በማይጠቀሙበት ጊዜም እንኳ። ""በቅንብሮች ውስጥ ይፍቀዱ""።" "<b>%1$s</b> በአቅራቢያ ያሉ የመሣሪያዎች አንጻራዊ አቀማመጥን እንዲፈልግ፣ እንዲገናኝ እና እንዲወስን ይፈቀድለት?" + "<b>%1$s</b> በእርስዎ <b>%2$s</b> ላይ በአቅራቢያ ያሉ መሣሪያዎችን አንጻራዊ አካባቢ ለመፈለግ፣ ለመገናኘት እና ለመወሰን ይፈቀድለት?" "<b>%1$s</b> በአቅራቢያ ያሉ የመሣሪያዎች አንጻራዊ አቀማመጥን እንዲፈልግ፣ እንዲገናኝ እና እንዲወስን ይፈቀድለት? ""በቅንብሮች ውስጥ ይፍቀዱ።" "የ<b>%1$s</b> አካባቢ መዳረሻ ከግምታዊ ወደ ትክክለኛ ይቀየር?" + "የ<b>%1$s</b> የአካባቢ መዳረሻ በእርስዎ <b>%2$s</b> ላይ ከግምታዊ ወደ ትክክለኛ ይለወጥ?" "<b>%1$s</b> የዚህን መሣሪያ ግምታዊ አካባቢ እንዲደርስ ይፈቀድለት?" + "<b>%1$s</b> የእርስዎን የ<b>%2$s</b>’s ግምታዊ አካባቢ እንዲደርስ ይፈቀድለት?" "ትክክለኛ" "ግምታዊ" "<b>%1$s</b> ቀን መቁጠሪያዎን እንዲደርስ ይፈቀድለት?" + "<b>%1$s</b> በእርስዎ <b>%2$s</b> ላይ ቀን መቁጠሪያዎን እንዲደርስ ይፈቀድለት?" "<b>%1$s</b> የኤስኤምኤስ መልዕክቶችን እንዲልክ እና እንዲመለከት ይፈቀድለት?" + "<b>%1$s</b> በእርስዎ <b>%2$s</b> ላይ የኤስኤምኤስ መልዕክቶችን እንዲልክ እና እንዲያይ ይፈቀድለት?" "<b>%1$s</b> በመሣሪያዎ ላይ ያሉ ፎቶዎችን፣ ማህደረ መረጃን እና ፋይሎችን እንዲደርስ ይፈቀድለት?" + "<b>%1$s</b> በእርስዎ <b>%2$s</b> ላይ ፎቶዎችን፣ ሚዲያን እና ፋይሎችን እንዲደርስ ይፈቀድለት?" "<b>%1$s</b> በመሣሪያዎ ላይ ያሉ <b>ፎቶዎችን፣ ቪዲዮዎችን፣ ሙዚቃን እና ኦዲዮን</b> እንዲደርስ ይፈቀድለት?" "<b>%1$s</b> በመሣሪያዎ ላይ ያሉ <b>ፎቶዎችን፣ ቪዲዮዎችን፣ ሙዚቃን፣ ኦዲዮን፣ ቪዲዮዎችን እና ሌሎች ፋይሎችን</b> ዘንድ እንዲደርስ ይፈቀድለት?" "<b>%1$s</b> በዚህ መሣሪያ ላይ ያለ ሙዚቃን እና ሌሎች የኦዲዮ ፋይሎችን እንዲደርስ ይፈቀድለት?" + "<b>%1$s</b> በእርስዎ <b>%2$s</b> ላይ ሙዚቃን እና ኦዲዮን እንዲደርስ ይፈቀድለት?" "<b>%1$s</b> በዚህ መሣሪያ ላይ ያሉ ፎቶዎችን እና ቪዲዮዎችን እንዲደርስ ይፈቀድለት?" + "<b>%1$s</b> በእርስዎ <b>%2$s</b> ላይ ፎቶዎችን እና ቪድዮዎችን እንዲደርስ ይፈቀድለት?" "<b>%1$s</b> በዚህ መሣሪያ ላይ ያሉ ፎቶዎችን እና ቪድዮዎችን እንዲደርስ ይፈቀድለት?" + "<b>%1$s</b> በእርስዎ <b>%2$s</b> ላይ ተጨማሪ ፎቶዎችን እና ቪድዮዎችን እንዲደርስ ይፈቀድለት?" "<b>%1$s</b> ኦዲዮን እንዲቀዳ ይፈቀድለት?" + "<b>%1$s</b> በእርስዎ <b>%2$s</b> ላይ ኦዲዮ እንዲቀዳ ይፈቀድለት?" "መተግበሪያው ኦዲዮን መቅዳት የሚችለው መተግበሪያውን እርስዎ ሲጠቀሙበት ብቻ ነው" "<b>%1$s</b> ኦዲዮን እንዲቀዳ ይፈቀድለት?" + "<b>%1$s</b> በእርስዎ <b>%2$s</b> ላይ ኦዲዮ እንዲቀዳ ይፈቀድለት?" "ይህ መተግበሪያ መተግበሪያውን በማይጠቀሙበት ጊዜም እንኳ ሁልጊዜ ኦዲዮ መቅዳት ሊፈልግ ይችላል። ""በቅንብሮች ውስጥ ይፍቀዱ።" "ለ <b>%1$s</b> የማይክራፎን መዳረሻ ይለወጥ?" + "በእርስዎ <b>%2$s</b> ላይ ለ<b>%1$s</b> የማይክሮፎን መዳረሻ ይለወጥ?" "ይህ መተግበሪያ መተግበሪያውን በማይጠቀሙበት ጊዜም እንኳ ሁልጊዜ ኦዲዮ መቅዳት ይፈልጋል። ""በቅንብሮች ውስጥ ይፍቀዱ።" "<b>%1$s</b> የእርስዎን አካላዊ እንቅስቃሴ እንዲደርስበት ይፈቀድለት?" + "<b>%1$s</b> በእርስዎ <b>%2$s</b> ላይ አካላዊ እንቅስቃሴዎን እንዲደርስ ይፈቀድለት?" "<b>%1$s</b> ስዕሎችን እንዲያነሳ እና ቪዲዮን እንዲቀርጽ ይፈቀድለት?" + "<b>%1$s</b> በእርስዎ <b>%2$s</b>? ላይ ሥዕሎችን እንዲያነሳ እና ቪድዮ እንዲቀርጽ ይፈቀድለት?" "መተግበሪያው ስዕሎችን ማንሳት እና ቪዲዮውን መቅዳት የሚችለው መተግበሪያውን እርስዎ ሲጠቀሙበት ብቻ ነው" "<b>%1$s</b> ስዕሎችን እንዲያነሳ እና ቪዲዮን እንዲቀርጽ ይፈቀድለት?" + "<b>%1$s</b> በእርስዎ <b>%2$s</b>? ላይ ሥዕሎችን እንዲያነሳ እና ቪድዮ እንዲቀርጽ ይፈቀድለት?" "ይህ መተግበሪያ መተግበሪያውን በማይጠቀሙበት ጊዜም እንኳ ሁልጊዜ ሥዕሎችን ማንሳት እና ቪዲዮ መቅዳት ሊፈልግ ይችላል። ""በቅንብሮች ውስጥ ይፍቀዱ።" "ለ <b>%1$s</b> የካሜራ መዳረሻ ይለወጥ?" + "በእርስዎ <b>%2$s</b> ላይ ለ<b>%1$s</b> የካሜራ መዳረሻ ይለወጥ?" "ይህ መተግበሪያ መተግበሪያውን በማይጠቀሙበት ጊዜም እንኳ ሁልጊዜ ሥዕሎችን ማንሳት እና ቪዲዮ መቅዳት ይፈልጋል። ""በቅንብሮች ውስጥ ይፍቀዱ።" "የእርስዎን ስልክ የጥሪ ምዝግብ ማስታወሻዎች <b>%1$s</b> እንዲደርስበት ይፈቀድ?" + "<b>%1$s</b> በእርስዎ <b>%2$s</b> ላይ የስልክ የጥሪ ምዝገባ ማስታወሻዎችዎን እንዲደርስ ይፈቀድለት?" "<b>%1$s</b> የስልክ ጥሪዎችን እንዲያደርግ እና እንዲያቀናብር ይፈቀድለት?" + "<b>%1$s</b> በእርስዎ <b>%2$s</b> ላይ የስልክ ጥሪዎችን ማድረግ እና ማስተዳደር ይፈቀድለት?" "<b>%1$s</b> የሰውነትዎ መሠረታዊ ምልክቶች የዳሳሽ ውሂብ እንዲደርስ ይፈቀድለት?" + "<b>%1$s</b> በእርስዎ <b>%2$s</b> ላይ ስለ መሠረታዊ ምልክቶችዎ የዳሳሽ ውሂብን እንዲደርስ ይፈቀድለት?" "መተግበሪያውን በማይጠቀሙበት ጊዜም እንኳ ይህ መተግበሪያ የእርስዎን የመሠረታዊ ምልክቶች የዳሳሽ ውሂብን ሁልጊዜ መድረስ ይፈልጋል። ይህን ለውጥ ለማድረግ ""ወደ ቅንብሮች ይሂዱ።" "<b>%1$s</b> የሰውነትዎ መሠረታዊ ምልክቶች የዳሳሽ ውሂብ እንዲደርስ ይፈቀድለት?" + "<b>%1$s</b> በእርስዎ <b>%2$s</b> ላይ ስለ መሠረታዊ ምልክቶችዎ የዳሳሽ ውሂቡን እንዲደርስ ይፈቀድለት?" "መተግበሪያውን በማይጠቀሙበት ጊዜ እንኳን ይህ መተግበሪያ የሰውነት ዳሳሽ ውሂብን ሁልጊዜ እንዲደርስ ለመፍቀድ ""ወደ ቅንብሮች ይሂዱ።" "መተግበሪያ ሥራ ላይ በሚውልበት ጊዜ የሰውነት ዳሳሽ ውሂብን እንዲደርስ ለ<b>%1$s</b> መፍቀድ ይቀጥሉ?" + "መተግበሪያ ጥቅም ላይ እየዋለ ሳለ <b>%1$s</b> በእርስዎ <b>%2$s</b> ላይ የሰውነት ዳሳሽ ውሂብን እንዲደርስ መፍቀድ ይቀጥል?" "<b>%1$s</b> ለእርስዎ ማሳወቂያዎች እንዲልክ ይፈቀድለት?" + "<b>%1$s</b> በእርስዎ <b>%2$s</b> ላይ ማሳወቂያዎችን እንዲልክልዎ ይፈቀድለት?" "ቁጥጥር የሚደረግባችድው ፈቃዶች" "%1$s የአካባቢ መዳረሻ አለው" "ድርጅትዎ %1$s አካባቢዎን እንዲደርስ ይፈቅዳል" diff --git a/PermissionController/res/values-ar/strings.xml b/PermissionController/res/values-ar/strings.xml index 8a6f4909d283b68c762a746d4c327c3717b6f974..47731ef8b9f429f7e2d8fb6e381f256d80b8f29d 100644 --- a/PermissionController/res/values-ar/strings.xml +++ b/PermissionController/res/values-ar/strings.xml @@ -34,6 +34,7 @@ "معلومات أكثر" "السماح بالكل" "السماح بالكل دومًا" + "السماح بالوصول المحدود إلى الصور والفيديوهات" "اختيار صور وفيديوهات" "اختيار المزيد" "عدم اختيار المزيد" @@ -60,6 +61,7 @@ "تطبيقات" "أذونات التطبيقات" "التطبيقات غير المستخدمة" + "تغيير الصور المتاحة لهذا التطبيق" "ما مِن تطبيقات غير مستخدمة." "التطبيقات غير المستخدمة: 0" "قرارات حديثة متعلقة بالأذونات" @@ -455,48 +457,75 @@ "عرض الرمز الخاص برصد تشغيل تطبيق مساعد" "عرض الرمز في شريط الحالة عند استخدام الميكروفون لتفعيل المساعد الصوتي." "‏هل تريد السماح لتطبيق <b>%1$s</b> بالدخول إلى الصور والوسائط على جهازك؟" + "‏هل تريد السماح لتطبيق <b>%1$s</b> بالوصول إلى الصور والوسائط على جهاز <b>%2$s</b>؟" "‏هل تريد السماح لتطبيق <b>%1$s</b> بالوصول إلى جهات الاتصال؟" + "‏هل تريد السماح لتطبيق <b>%1$s</b> بالوصول إلى جهات اتصالك على جهاز <b>%2$s</b>؟" "‏هل تريد السماح لتطبيق <b>%1$s</b> بالوصول إلى الموقع الجغرافي لهذا الجهاز؟" + "‏هل تريد السماح لتطبيق <b>%1$s</b> بالوصول إلى الموقع الجغرافي لجهاز <b>%2$s</b>؟" "لن يكون بإمكان التطبيق الوصول إلى الموقع الجغرافي إلا عند استخدامك لهذا التطبيق." "‏هل تريد السماح لتطبيق <b>%1$s</b> بالوصول إلى الموقع الجغرافي لهذا الجهاز؟" + "‏هل تريد السماح لتطبيق <b>%1$s</b> بالوصول إلى الموقع الجغرافي لجهاز <b>%2$s؟" "قد يطلب هذا التطبيق الوصول الدائم إلى موقعك الجغرافي، حتى عند عدم استخدامك للتطبيق. يمكنك ""السماح بذلك في الإعدادات." "‏هل تريد تغيير إمكانية الوصول إلى الموقع الجغرافي بالنسبة إلى <b>%1$s</b>؟" + "‏هل تريد تغيير إذن وصول تطبيق <b>%1$s</b> إلى الموقع الجغرافي على جهاز <b>%2$s</b>؟" "يطلب هذا التطبيق الوصول الدائم إلى موقعك الجغرافي، حتى عند عدم استخدامك للتطبيق. يمكنك ""السماح بذلك في الإعدادات." "‏هل تريد السماح لتطبيق <b>%1$s</b> بالعثور على الأجهزة المجاورة والربط بها وتحديد موضعها النسبي؟" + "‏هل تسمح لتطبيق <b>%1$s</b> بالعثور على الأجهزة المجاورة والربط بها وتحديد موضعها النسبي على <b>%2$s</b>؟" "‏هل تريد السماح لتطبيق <b>%1$s</b> بالعثور على الأجهزة المجاورة والربط بها وتحديد موضعها النسبي؟ ""يمكنك السماح بذلك في \"الإعدادات\"." "هل تريد تغيير إذن وصول <b>%1$s</b> من الموقع الجغرافي التقريبي إلى الموقع الجغرافي الدقيق؟" + "‏هل تريد تغيير إذن وصول تطبيق \"<b>%1$s</b>\" إلى الموقع الجغرافي ليكون دقيقًا بدلاً من كونه تقريبيًّا على جهاز <b>%2$s</b>؟" "‏هل تريد السماح لتطبيق <b>%1$s</b> بالوصول إلى الموقع الجغرافي التقريبي لهذا الجهاز؟" + "‏هل تريد السماح لتطبيق <b>%1$s</b> بالوصول إلى الموقع الجغرافي التقريبي لجهاز <b>%2$s</b>؟" "دقيق" "تقريبي" "‏هل تريد السماح لتطبيق <b>%1$s</b> بالوصول إلى التقويم؟" + "‏هل تريد السماح لتطبيق <b>%1$s</b> بالوصول إلى تقويمك على جهاز <b>%2$s</b>؟" "‏هل تريد السماح لتطبيق <b>%1$s</b> بإرسال رسائل SMS وعرضها؟" + "‏هل تريد السماح لتطبيق <b>%1$s</b> بإرسال الرسائل القصيرة SMS وعرضها على جهاز <b>%2$s</b>؟" "‏هل تريد السماح لتطبيق <b>%1$s</b> بالوصول إلى الصور والوسائط والملفات على جهازك؟" + "‏هل تريد السماح لتطبيق <b>%1$s</b> بالوصول إلى الصور والوسائط والملفات على جهاز <b>%2$s</b>؟" "‏هل تسمح بوصول <b>%1$s</b> إلى <b>الصور والفيديوهات والموسيقى والملفات الصوتية</b> على هذا الجهاز؟" "‏هل تسمح بوصول <b>%1$s</b> إلى <b>الصور والفيديوهات والموسيقى والملفات الصوتية وملفات أخرى</b> على هذا الجهاز؟" "‏هل تريد السماح بوصول <b>%1$s</b> إلى المقاطع الموسيقية والملفات الصوتية على هذا الجهاز؟" + "‏هل تريد السماح لتطبيق <b>%1$s</b> بالوصول إلى الموسيقى والملفات الصوتية على جهاز <b>%2$s</b>؟" "‏هل تريد السماح بوصول <b>%1$s</b> إلى الصور والفيديوهات على هذا الجهاز؟" + "‏هل تريد السماح لتطبيق <b>%1$s</b> بالوصول إلى الصور والفيديوهات على جهاز <b>%2$s</b>؟" "‏هل تريد السماح بوصول تطبيق <b>%1$s</b> إلى المزيد من الصور والفيديوهات على هذا الجهاز؟" + "‏هل تريد السماح لتطبيق <b>%1$s</b> بالوصول إلى مزيد من الصور والفيديوهات على جهاز <b>%2$s</b>؟" "‏هل تريد السماح لتطبيق <b>%1$s</b> بتسجيل الصوت؟" + "‏هل تريد السماح لتطبيق <b>%1$s</b> بتسجيل الصوت على جهاز <b>%2$s</b>؟" "لن يتمكن هذا التطبيق من تسجيل الصوت إلا عندما يكون قيد الاستخدام" "‏هل تريد السماح لتطبيق <b>%1$s</b> بتسجيل الصوت؟" + "‏هل تريد السماح لتطبيق <b>%1$s</b> بتسجيل الصوت على جهاز <b>%2$s</b>؟" "قد يحتاج هذا التطبيق إلى تسجيل الصوت طوال الوقت، حتى عند عدم استخدامك للتطبيق. يمكنك ""السماح بذلك في الإعدادات" "‏هل تريد تغيير إذن الوصول إلى الميكروفون بالنسبة إلى <b>%1$s</b>؟" + "‏هل تريد تغيير إذن وصول تطبيق <b>%1$s</b> إلى الميكروفون على جهاز <b>%2$s</b>؟" "يحتاج هذا التطبيق إلى تسجيل الصوت طوال الوقت، حتى عند عدم استخدامك للتطبيق. يمكنك ""السماح بذلك في الإعدادات" "‏هل تريد السماح للتطبيق <b>%1$s</b> بالوصول إلى بيانات نشاطك البدني؟" + "‏هل تريد السماح لتطبيق <b>%1$s</b> بالوصول إلى بيانات نشاطك البدني على جهاز <b>%2$s</b>؟" "‏هل تريد السماح لتطبيق <b>%1$s</b> بالتقاط صور وتسجيل فيديوهات؟" + "‏هل تريد السماح لتطبيق <b>%1$s</b> بالتقاط الصور وتسجيل الفيديوهات على جهاز <b>%2$s</b>؟" "لن يتمكن هذا التطبيق من التقاط صور وتسجيل فيديوهات إلا عندما يكون قيد الاستخدام" "‏هل تريد السماح لتطبيق <b>%1$s</b> بالتقاط صور وتسجيل فيديوهات؟" + "‏هل تريد السماح لتطبيق <b>%1$s</b> بالتقاط الصور وتسجيل الفيديوهات على جهاز <b>%2$s</b>؟" "قد يحتاج هذا التطبيق إلى التقاط صور وتسجيل فيديوهات طوال الوقت، حتى عند عدم استخدامك للتطبيق. يمكنك ""السماح بذلك في الإعدادات" "‏هل تريد تغيير إذن الوصول إلى الكاميرا بالنسبة إلى <b>%1$s</b>؟" + "‏هل تريد تغيير إذن وصول تطبيق <b>%1$s</b> إلى الكاميرا على جهاز <b>%2$s</b>؟" "يحتاج هذا التطبيق إلى التقاط صور وتسجيل فيديوهات طوال الوقت، حتى عند عدم استخدامك للتطبيق. يمكنك ""السماح بذلك في الإعدادات" "‏هل تريد السماح لتطبيق <b>%1$s</b> بالوصول إلى سجلّ مكالماتك الهاتفية؟" + "‏هل تريد السماح لتطبيق <b>%1$s</b> بالوصول إلى سجلّ مكالمات الهاتف على جهاز <b>%2$s</b>؟" "‏هل تريد السماح لتطبيق <b>%1$s</b> بإجراء المكالمات الهاتفية وإدارتها؟" + "‏هل تريد السماح لتطبيق <b>%1$s</b> بإجراء المكالمات الهاتفية وإدارتها على جهاز <b>%2$s</b>؟" "‏هل تريد السماح لتطبيق <b>%1$s</b> بالوصول إلى بيانات استشعار مؤشراتك الحيوية؟" + "‏هل تريد السماح بوصول <b>%1$s</b> إلى بيانات جهاز الاستشعار المتعلّقة بالمؤشرات الحيوية على <b>%2$s</b>؟" "يطلب هذا التطبيق الوصول الدائم إلى بيانات جهاز الاستشعار المتعلّقة بالمؤشرات الحيوية، حتى في حال عدم استخدامك للتطبيق. لإجراء هذا التغيير، ""انتقِل إلى الإعدادات." "‏هل تريد السماح لتطبيق <b>%1$s</b> بالوصول إلى بيانات استشعار مؤشراتك الحيوية؟" + "‏هل تريد السماح بوصول <b>%1$s</b> إلى بيانات جهاز الاستشعار المتعلّقة بالمؤشرات الحيوية على <b>%2$s</b>؟" "للسماح لهذا التطبيق بالوصول إلى بيانات أجهزة استشعار الجسم دائمًا وحتى عند عدم استخدامك للتطبيق، ""انتقِل إلى الإعدادات""." "‏هل تريد مواصلة السماح لتطبيق <b>%1$s</b> عند استخدامه بالوصول إلى بيانات أجهزة استشعار الجسم؟" + "‏هل تريد مواصلة السماح بوصول تطبيق <b>%1$s</b> المستخدَم إلى بيانات جهاز استشعار الجسم على <b>%2$s</b>؟" "‏هل تريد السماح لتطبيق <b>%1$s</b> بإرسال إشعارات إليك؟" + "‏هل تريد السماح لتطبيق <b>%1$s</b> بإرسال إشعارات إليك على جهاز <b>%2$s</b>؟" "الأذونات خاضعة لتحكّم المشرف" "تطبيق \"%1$s\" مسموح له بالوصول إلى الموقع الجغرافي" "تسمح مؤسستك لتطبيق \"%1$s\" بالوصول إلى موقعك الجغرافي." diff --git a/PermissionController/res/values-as/strings.xml b/PermissionController/res/values-as/strings.xml index 2656530e4a664318216a4e1c969eb3513346f731..162b4a8fff5d5a0232d6e3b6f0f84b128aa068cf 100644 --- a/PermissionController/res/values-as/strings.xml +++ b/PermissionController/res/values-as/strings.xml @@ -34,6 +34,7 @@ "অধিক তথ্য" "আটাইবোৰৰে অনুমতি দিয়ক" "আটাইবোৰকে সদায় অনুমতি দিয়ক" + "সীমিত এক্সেছৰ অনুমতি দিয়ক" "ফট’ আৰু ভিডিঅ’ বাছনি কৰক" "অধিক বাছনি কৰক" "আৰু অধিক বাছনি নকৰিব" @@ -60,6 +61,7 @@ "এপ্" "এপৰ অনুমতি" "অব্যৱহৃত এপ্‌সমূহ" + "এই এপ্‌টোৰ বাবে বাছনি কৰা ফট’ সম্পাদনা কৰক" "ব্যৱহাৰ নকৰা কোনো এপ্‌ নাই" "০ টা অব্যৱহৃত এপ্‌" "শেহতীয়া অনুমতিৰ সিদ্ধান্তসমূহ" @@ -455,48 +457,75 @@ "সহায়কৰ ট্ৰিগাৰ চিনাক্তকৰণ দেখুৱাওক" "ভইচ এছিষ্টেণ্ট সক্ৰিয় কৰিবলৈ মাইক্ৰফ’ন ব্যৱহাৰ কৰিলে স্থিতি দণ্ডত দেখুৱাওক" "<b>%1$s</b>ক আপোনাৰ ডিভাইচত থকা ফট’ আৰু মিডিয়া চাবলৈ অনুমতি দিবনে?" + "<b>%1$s</b>ক আপোনাৰ <b>%2$s</b>ত থকা ফট’ আৰু মিডিয়া এক্সেছ কৰিবলৈ অনুমতি দিবনে?" "<b>%1$s</b>ক আপোনাৰ সম্পৰ্কসূচী চাবলৈ অনুমতি দিবনে?" + "<b>%1$s</b>ক আপোনাৰ <b>%2$s</b>ত আপোনাৰ সম্পৰ্কসমূহ এক্সেছ কৰিবলৈ অনুমতি দিবনে?" "<b>%1$s</b>ক এই ডিভাইচটোৰ অৱস্থান এক্সেছ কৰিবলৈ অনুমতি দিবনে?" + "<b>%1$s</b>ক আপোনাৰ <b>%2$s</b>ৰ অৱস্থান এক্সেছ কৰিবলৈ অনুমতি দিবনে?" "আপুনি এই এপ্ ব্যৱহাৰ কৰি থকাৰ সময়তহে ই আপোনাৰ অৱস্থান এক্সেছ কৰিব পাৰে" "<b>%1$s</b>ক এই ডিভাইচটোৰ অৱস্থান এক্সেছ কৰিবলৈ অনুমতি দিবনে?" + "<b>%1$s</b>ক আপোনাৰ <b>%2$sৰ অৱস্থান এক্সেছ কৰিবলৈ অনুমতি দিবনে?" "এই এপ্‌টোৱে সকলো সময়তে আপোনাৰ অৱস্থান এক্সেছ কৰিবলৈ বিচাৰিব পাৰে, আনকি আপুনি এপ্‌টো ব্যৱহাৰ কৰি নথকা সময়তো। ""ছেটিঙত অনুমতি দিয়ক।" "<b>%1$s</b>ৰ বাবে অৱস্থানৰ এক্সেছ সলনি কৰিবনে?" + "আপোনাৰ <b>%2$s</b>ত <b>%1$s</b>ৰ বাবে অৱস্থানৰ এক্সেছ সলনি কৰিবনে?" "এই এপ্‌টোৱে সকলো সময়তে আপোনাৰ অৱস্থান এক্সেছ কৰিবলৈ বিচাৰে, আনকি আপুনি এপ্‌টো ব্যৱহাৰ কৰি নথকা সময়তো। ""ছেটিঙত অনুমতি দিয়ক।" "<b>%1$s</b>ক বিচাৰিবলৈ, সংযোগ কৰিবলৈ আৰু নিকটৱৰ্তী ডিভাইচৰ আপেক্ষিক স্থান নিৰ্ধাৰণ কৰিবলৈ দিবনে?" + "<b>%1$s</b>ক আপোনাৰ <b>%2$s</b>ত নিকটৱৰ্তী ডিভাইচসমূহ বিচাৰিবলৈ, সংযোগ কৰিবলৈ আৰু সেইসমূহৰ প্ৰাসংগিক অৱস্থান নিৰ্ধাৰণ কৰিবলৈ অনুমতি দিবনে?" "<b>%1$s</b>ক বিচাৰিবলৈ, সংযোগ কৰিবলৈ আৰু নিকটৱৰ্তী ডিভাইচৰ আপেক্ষিক স্থান নিৰ্ধাৰণ কৰিবলৈ দিবনে? ""ছেটিঙত অনুমতি প্ৰদান কৰক।" "<b>%1$s</b>ৰ অৱস্থানৰ এক্সেছ আনুমানিকৰ পৰা সঠিকলৈ সলনি কৰিবনে?" + "আপোনাৰ <b>%2$s</b>ত <b>%1$s</b>ৰ অৱস্থানৰ এক্সেছ আনুমানিকৰ পৰা সঠিকলৈ সলনি কৰিবনে?" "<b>%1$s</b>ক এই ডিভাইচটোৰ আনুমানিক অৱস্থান এক্সেছ কৰিবলৈ অনুমতি দিবনে?" + "<b>%1$s</b>ক আপোনাৰ <b>%2$s</b>ৰ আনুমানিক অৱস্থান এক্সেছ কৰিবলৈ অনুমতি দিবনে?" "সঠিক" "আনুমানিক" "<b>%1$s</b>ক আপোনাৰ কেলেণ্ডাৰ চাবলৈ অনুমতি দিবনে?" + "<b>%1$s</b>ক আপোনাৰ <b>%2$s</b>ত আপোনাৰ কেলেণ্ডাৰ এক্সেছ কৰিবলৈ অনুমতি দিবনে?" "<b>%1$s</b>ক এছএমএছ বাৰ্তা পঠিয়াবলৈ আৰু চাবলৈ অনুমতি দিবনে?" + "<b>%1$s</b>ক আপোনাৰ <b>%2$s</b>ত এছএমএছ বাৰ্তা পঠিয়াবলৈ আৰু চাবলৈ অনুমতি দিবনে?" "<b>%1$s</b>ক আপোনাৰ ডিভাইচত থকা ফট\', মিডিয়া আৰু ফাইল চাবলৈ অনুমতি দিবনে?" + "<b>%1$s</b>ক আপোনাৰ <b>%2$s</b>ত থকা ফট’ মিডিয়া আৰু ফাইল এক্সেছ কৰিবলৈ অনুমতি দিবনে?" "<b>%1$s</b>ক এই ডিভাইচটোত থকা <b>ফট’, ভিডিঅ’, সংগীত আৰু অডিঅ’</b> এক্সেছ কৰিবলৈ দিবনে?" "<b>%1$s</b>ক এই ডিভাইচটোত থকা <b>ফট’, ভিডিঅ’, সংগীত, অডিঅ’ আৰু অন্য ফাইল</b> এক্সেছ কৰিবলৈ দিবনে?" "<b>%1$s</b>ক এই ডিভাইচটোত থকা সংগীত আৰু অডিঅ’ এক্সেছ কৰিবলৈ অনুমতি দিবনে?" + "<b>%1$s</b>ক আপোনাৰ <b>%2$s</b>ত থকা সংগীত আৰু অডিঅ’ এক্সেছ কৰিবলৈ অনুমতি দিবনে?" "<b>%1$s</b>ক এই ডিভাইচটোত থকা ফট’ আৰু ভিডিঅ’ এক্সেছ কৰিবলৈ অনুমতি দিবনে?" + "<b>%1$s</b>ক আপোনাৰ <b>%2$s</b>ত থকা ফট’ আৰু ভিডিঅ’ এক্সেছ কৰিবলৈ অনুমতি দিবনে?" "<b>%1$s</b>ক এই ডিভাইচটোত থকা অধিক ফট’ আৰু ভিডিঅ’ এক্সেছ কৰিবলৈ অনুমতি দিবনে?" + "<b>%1$s</b>ক আপোনাৰ <b>%2$s</b>ত থকা অধিক ফট’ আৰু ভিডিঅ’ এক্সেছ কৰিবলৈ অনুমতি দিবনে?" "<b>%1$s</b>ক অডিঅ\' ৰেকৰ্ড কৰিবলৈ অনুমতি দিবনে?" + "<b>%1$s</b>ক আপোনাৰ <b>%2$s</b>ত অডিঅ’ ৰেকৰ্ড কৰিবলৈ অনুমতি দিবনে?" "আপুনি এই এপ্‌টো ব্যৱহাৰ কৰি থকাৰ সময়তহে কেৱল ই অডিঅ’ ৰেকৰ্ড কৰিব পাৰিব" "<b>%1$s</b>ক অডিঅ’ ৰেকৰ্ড কৰিবলৈ অনুমতি দিবনে?" + "<b>%1$s</b>ক আপোনাৰ <b>%2$s</b>ত অডিঅ’ ৰেকৰ্ড কৰিবলৈ অনুমতি দিবনে?" "এই এপ্‌টোৱে সকলো সময়তে অডিঅ’ ৰেকৰ্ড কৰিবলৈ বিচাৰিব পাৰে, আনকি আপুনি এপ্‌টো ব্যৱহাৰ কৰি নথকাৰ সময়তো। ""ছেটিঙত অনুমতি দিয়ক।" "<b>%1$s</b>ৰ বাবে মাই’ক্ৰ’নৰ এক্সেছ সলনি কৰিবনে?" + "আপোনাৰ <b>%2$s</b>ত <b>%1$s</b>ৰ বাবে মাইক্ৰ’ফ’নৰ এক্সেছ সলনি কৰিবনে?" "এই এপ্‌টোৱে সকলো সময়তে অডিঅ’ ৰেকৰ্ড কৰিবলৈ বিচাৰিছে, আনকি আপুনি এপ্‌টো ব্যৱহাৰ কৰি নথকাৰ সময়তো। ""ছেটিঙত অনুমতি দিয়ক।" "আপোনাৰ শাৰীৰিক কাৰ্যকলাপ <b>%1$s</b>ক এক্সেছ কৰাৰ অনুমতি দিবনে?" + "<b>%1$s</b>ক আপোনাৰ <b>%2$s</b>ত আপোনাৰ শাৰীৰিক কাৰ্যকলাপ এক্সেছ কৰিবলৈ অনুমতি দিবনে?" "<b>%1$s</b>ক ছবি তুলিবলৈ আৰু ভিডিঅ\' ৰেকৰ্ড কৰিবলৈ অনুমতি দিবনে?" + "<b>%1$s</b>ক আপোনাৰ <b>%2$s</b>ত ফট’ তুলিবলৈ আৰু ভিডিঅ’ ৰেকৰ্ড কৰিবলৈ অনুমতি দিবনে?" "আপুনি এই এপ্‌টো ব্যৱহাৰ কৰি থকাৰ সময়তহে কেৱল ই ফট’ তুলিবলৈ আৰু ভিডিঅ’ ৰেকৰ্ড কৰিব পাৰিব।" "<b>%1$s</b>ক ফট’ তুলিবলৈ আৰু ভিডিঅ’ ৰেকৰ্ড কৰিবলৈ অনুমতি দিবনে?" + "<b>%1$s</b>ক আপোনাৰ <b>%2$s</b>ত ফট’ তুলিবলৈ আৰু ভিডিঅ’ ৰেকৰ্ড কৰিবলৈ অনুমতি দিবনে?" "এই এপ্‌টোৱে সকলো সময়তে ফট’ তুলিবলৈ আৰু ভিডিঅ’ ৰেকৰ্ড কৰিবলৈ বিচাৰিব পাৰে, আনকি আপুনি এপ্‌টো ব্যৱহাৰ কৰি নথকাৰ সময়তো। ""ছেটিঙত অনুমতি দিয়ক।" "<b>%1$s</b>ৰ বাবে কেমেৰাৰ এক্সেছ সলনি কৰিবনে?" + "আপোনাৰ <b>%2$s</b>ত <b>%1$s</b>ৰ বাবে কেমেৰাৰ এক্সেছ সলনি কৰিবনে?" "এই এপ্‌টোৱে সকলো সময়তে ফট’ তুলিবলৈ আৰু ভিডিঅ’ ৰেকৰ্ড কৰিবলৈ বিচাৰিছে, আনকি আপুনি এপ্‌টো ব্যৱহাৰ কৰি নথকাৰ সময়তো। ""ছেটিঙত অনুমতি দিয়ক।" "<b>%1$s</b>ক আপোনাৰ ফ\'ন কল লগ চাবলৈ অনুমতি দিবনে?" + "<b>%1$s</b>ক আপোনাৰ <b>%2$s</b>ত আপোনাৰ ফ’নৰ কল লগ এক্সেছ কৰিবলৈ অনুমতি দিবনে?" "<b>%1$s</b>ক ফ\'ন কল কৰিবলৈ আৰু পৰিচালনা কৰিবলৈ অনুমতি দিবনে?" + "<b>%1$s</b>ক আপোনাৰ <b>%2$s</b>ত ফ’ন কল কৰিবলৈ আৰু পৰিচালনা কৰিবলৈ অনুমতি দিবনে?" "<b>%1$s</b>ক আপোনাৰ দেহৰ গুৰুত্বপূৰ্ণ অংগসমূহৰ অৱস্থাৰ বিষয়ে ছেন্সৰৰ ডেটা লাভ কৰিবলৈ অনুমতি দিবনে?" + "<b>%1$s</b>ক আপোনাৰ <b>%2$s</b>ত আপোনাৰ দেহৰ গুৰুত্বপূৰ্ণ অংগসমূহৰ বিষয়ে ছেন্সৰৰ ডেটা এক্সেছ কৰিবলৈ অনুমতি দিবনে?" "এই এপ্‌টোৱে সকলো সময়তে আপোনাৰ দেহৰ গুৰুত্বপূৰ্ণ অংগৰ বিষয়ে ছেন্সৰৰ ডেটাৰ এক্সেছ বিচাৰে, আনকি আপুনি এপ্‌টো ব্যৱহাৰ কৰি নথকাৰ সময়তো। এই সালসলনিটো কৰিবলৈ, ""ছেটিঙলৈ যাওক।" "<b>%1$s</b>ক আপোনাৰ দেহৰ গুৰুত্বপূৰ্ণ অংগসমূহৰ অৱস্থাৰ বিষয়ে ছেন্সৰৰ ডেটাৰ এক্সেছ পাবলৈ অনুমতি দিবনে?" + "<b>%1$s</b>ক আপোনাৰ <b>%2$s</b>ত আপোনাৰ দেহৰ গুৰুত্বপূৰ্ণ অংগসমূহৰ বিষয়ে ছেন্সৰৰ ডেটা এক্সেছ কৰিবলৈ অনুমতি দিবনে?" "এই এপ্‌টোক আপুনি এইটো ব্যৱহাৰ কৰি নথকা সময়কো ধৰি সকলো সময়তে শৰীৰৰ ছেন্সৰৰ ডেটা এক্সেছ কৰিবলৈ দিবলৈ, ""ছেটিঙলৈ যাওক।" "এপ্‌টো ব্যৱহাৰ কৰি থকাৰ সময়ত <b>%1$s</b>ক শৰীৰৰ ছেন্সৰৰ ডেটা এক্সেছ কৰিবলৈ অনুমতি দি থাকিবনে?" + "এপ্‌টো ব্যৱহাৰ কৰি থকাৰ সময়ত <b>%1$s</b>ক আপোনাৰ <b>%2$s</b>ত শৰীৰৰ ছেন্সৰৰ ডেটা এক্সেছ কৰিবলৈ অনুমতি দি থাকিবনে?" "<b>%1$s</b>ক আপোনালৈ জাননী পঠিয়াবলৈ অনুমতি দিবনে?" + "<b>%1$s</b>ক আপোনাৰ <b>%2$s</b>ত আপোনালৈ জাননী পঠিয়াবলৈ অনুমতি দিবনে?" "নিয়ন্ত্ৰিত অনুমতিসমূহ" "%1$sএ অৱস্থানৰ এক্সেছ আছে" "আপোনাৰ প্ৰতিষ্ঠানে %1$sক আপোনাৰ অৱস্থান এক্সেছ কৰাৰ অনুমতি দিয়ে" diff --git a/PermissionController/res/values-az/strings.xml b/PermissionController/res/values-az/strings.xml index a517d458f637ca10400b8aa6ccaa95a836d3e418..3d854cb29a75a8cdf545e8d873f318c0c945a8b4 100644 --- a/PermissionController/res/values-az/strings.xml +++ b/PermissionController/res/values-az/strings.xml @@ -34,6 +34,7 @@ "Ətraflı məlumat" "Hamısına icazə verin" "Həmişə hamısına icazə verin" + "Məhdud girişə icazə verin" "Foto və videolar seçin" "Digərlərini seçin" "Daha seçməyin" @@ -60,6 +61,7 @@ "Tətbiq" "Tətbiq icazələri" "İşlədilməyən tətbiqlər" + "Bu tətbiq üçün seçilmiş fotoları redaktə edin" "İstifadə olunmayan tətbiq yoxdur" "0 istifadə olunmayan tətbiq" "Son icazə qərarları" @@ -455,48 +457,75 @@ "Assistent aktivasiya aşkarlanmasını göstərin" "Mikrofonun istifadəsi zamanı səsli yardımı aktiv etmək üçün status panelində ikonanı göstərin" "<b>%1$s</b> tətbiqinin cihazdakı foto və mediaya daxil olmasına icazə verilsin?" + "<b>%1$s</b> tətbiqinə <b>%2$s</b> cihazında foto və mediaya giriş icazəsi verilsin?" "<b>%1$s</b> tətbiqinə kontaktlara daxil olmaq icazəsi verilsin?" + "<b>%1$s</b> tətbiqinə <b>%2$s</b> cihazında kontaktlara giriş icazəsi verilsin?" "<b>%1$s</b> tətbiqinə bu cihazın məkanına daxil olmaq icazəsi verilsin?" + "<b>%1$s</b> tətbiqinə <b>%2$s</b> məkanına giriş icazəsi verilsin?" "Tətbiq yalnız ondan istifadə etiyiniz zaman məkanı əldə edə bilər" "<b>%1$s</b> tətbiqinə bu cihazın məkanına daxil olmaq icazəsi verilsin?" + "<b>%1$s</b> tətbiqinə <b>%2$s məkanına giriş icazəsi verilsin?" "Bu tətbiq hətta ondan istifadə etmədiyiniz zaman belə məkanınıza daxil olmaq istəyə bilər. ""Ayarlarda icazə verin." "<b>%1$s</b> üçün məkana giriş dəyişdirilsin?" + "<b>%2$s</b> cihazında <b>%1$s</b> üçün məkana giriş dəyişilsin?" "Bu tətbiq hətta ondan istifadə etmədiyiniz zaman belə məkanınıza daxil olmaq istəyir. ""Ayarlarda icazə verin." "<b>%1$s</b> tətbiqinə yaxınlıqdakı cihazları tapmaq, qoşulmaq və nisbi mövqeyini təyin etmək icazəsi verilsin?" + "<b>%1$s</b> <b>%2$s</b> cihazında yaxınlıqdakı cihazların nisbi yerini tapıb, təyin edib, qoşulsun?" "<b>%1$s</b> tətbiqinə yaxınlıqdakı cihazları tapmaq, qoşulmaq və nisbi mövqeyini təyin etmək icazəsi verilsin? ""Ayarlarda icazə verin." "<b>%1$s</b> tətbiqinin məkan girişi təxminidən dəqiqə dəyişdirilsin?" + "<b>%2$s</b> cihazında <b>%1$s</b> tətbiqinin məkana girişi təxminidən dəqiqə dəyişilsin?" "<b>%1$s</b> tətbiqinə bu cihazın təxmini məkanına daxil olmaq icazəsi verilsin?" + "<b>%1$s</b> tətbiqinə <b>%2$s</b> cihazının təxmini məkanına giriş icazəsi verilsin?" "Dəqiq" "Təxmini" "<b>%1$s</b> tətbiqinə təqvimə daxil olmaq icazəsi verilsin?" + "<b>%1$s</b> tətbiqinə <b>%2$s</b> cihazında təqvimə giriş icazəsi verilsin?" "<b>%1$s</b> tətbiqinə SMS mesajları göndərmək və onlara baxmaq icazəsi verilsin?" + "<b>%1$s</b> tətbiqinə <b>%2$s</b> cihazında SMS mesajı göndərmək, onlara baxmaq icazəsi verilsin?" "<b>%1$s</b> tətbiqinə cihazdakı foto, media və fayllara daxil olmaq icazəsi verilsin?" + "<b>%1$s</b> tətbiqinə <b>%2$s</b> cihazında foto, media və fayllara giriş icazəsi verilsin?" "<b>%1$s</b> tətbiqinin bu cihazdakı <b>foto, video, musiqi və audiolara</b> girişinə icazə verilsin?" "<b>%1$s</b> tətbiqinin bu cihazdakı <b>foto, video, musiqi, audio və digər fayllara</b> girişinə icazə verilsin?" "<b>%1$s</b> tətbiqinə bu cihazdakı musiqi və audioya girişinə icazə verilsin?" + "<b>%1$s</b> tətbiqinə <b>%2$s</b> cihazında musiqi və audioya giriş icazəsi verilsin?" "<b>%1$s</b> tətbiqinin cihazdakı foto və videolara girişinə icazə verilsin?" + "<b>%1$s</b> tətbiqinə <b>%2$s</b> cihazında foto və videolara giriş icazəsi verilsin?" "<b>%1$s</b> tətbiqinə bu cihazda digər foto və videolara daxil olmaq icazəsi verilsin?" + "<b>%1$s</b> tətbiqinə <b>%2$s</b> cihazında digər foto və videolara giriş icazəsi verilsin?" "<b>%1$s</b> tətbiqinə səs yazmaq icazəsi verilsin?" + "<b>%1$s</b> tətbiqinə <b>%2$s</b> cihazında audio yazmaq icazəsi verilsin?" "Tətbiq yalnız ondan istifadə etiyiniz zaman audio yaza biləcək" "<b>%1$s</b> tətbiqinə audio yazmaq icazəsi verilsin?" + "<b>%1$s</b> tətbiqinə <b>%2$s</b> cihazında audio yazmaq icazəsi verilsin?" "Bu tətbiq hətta ondan istifadə etmədiyiniz zaman belə audio yazmaq istəyə bilər. ""Ayarlarda icazə verin." "<b>%1$s</b> üçün mikrofona giriş dəyişdirilsin?" + "<b>%2$s</b> cihazında <b>%1$s</b> üçün mikrofona giriş dəyişilsin?" "Bu tətbiq hətta ondan istifadə etmədiyiniz zaman belə audio yazmaq istəyir. ""Ayarlarda icazə verin." "<b>%1$s</b> tətbiqinin fiziki fəaliyyətinizə daxil olmasına icazə verilsin?" + "<b>%1$s</b> tətbiqinə <b>%2$s</b> cihazında fiziki fəaliyyətə giriş icazəsi verilsin?" "<b>%1$s</b> tətbiqinə şəkil və video çəkmək icazəsi verilsin?" + "<b>%1$s</b> tətbiqinə <b>%2$s</b> cihazında şəkil və video çəkmək icazəsi verilsin?" "Tətbiq yalnız ondan istifadə etiyiniz zaman şəkil çəkə və video yaza biləcək" "<b>%1$s</b> tətbiqinə şəkil çəkmək və video yazmaq icazəsi verilsin?" + "<b>%1$s</b> tətbiqinə <b>%2$s</b> cihazında şəkil və video çəkmək icazəsi verilsin?" "Bu tətbiq hətta ondan istifadə etmədiyiniz zaman belə şəkil çəkmək və video yazmaq istəyə bilər. ""Ayarlarda icazə verin." "<b>%1$s</b> üçün kameraya giriş dəyişdirilsin?" + "<b>%1$s</b> tətbiqinin <b>%2$s</b> cihazında kameraya girişi dəyişilsin?" "Bu tətbiq hətta ondan istifadə etmədiyiniz zaman belə şəkil çəkmək və video yazmaq istəyir. ""Ayarlarda icazə verin." "<b>%1$s</b> tətbiqinə telefonun zəng qeydlərinə daxil olmaq icazəsi verilsin?" + "<b>%1$s</b> tətbiqinə <b>%2$s</b> cihazında telefon zəngi qeydlərinə giriş icazəsi verilsin?" "<b>%1$s</b> tətbiqinə telefon zəngləri etmək və onları idarə etmək icazəsi verilsin?" + "<b>%1$s</b> tətbiqinə <b>%2$s</b> cihazında telefon zəngi etmək, idarə etmək icazəsi verilsin?" "<b>%1$s</b> tətbiqinə həyati əlamətlər haqqında sensor dataya daxil olmaq icazəsi verilsin?" + "<b>%1$s</b> üçün <b>%2$s</b> cihazında həyati göstəricilər üzrə sensor datasına giriş icazəsi verilsin?" "Bu tətbiq hər zaman, hətta ondan istifadə etmədiyiniz zaman belə sağlamlıq göstəriciləriniz haqqında sensor datasına giriş etmək istəyir. Bu dəyişikliyi etmək üçün ""ayarlara keçin""." "<b>%1$s</b> tətbiqinə sağlamlıq göstəriciləriniz haqqında sensor datasına giriş icazəsi verilsin?" + "<b>%1$s</b> üçün <b>%2$s</b> cihazında həyati göstəricilər üzrə sensor datasına giriş icazəsi verilsin?" "Tətbiqdən istifadə etmədiyiniz zaman belə, bu tətbiqin bədən sensoru datasına hər zaman giriş etməsinə icazə vermək üçün ""ayarlara keçin." "<b>%1$s</b> tətbiqinin istifadə zamanı bədən sensoru datasına giriş etməsinə icazə verilməyə davam edilsin?" + "<b>%1$s</b> istifadə edilərkən ona <b>%2$s</b> cihazında bədən sensoru datasına giriş icazəsi verilsin?" "<b>%1$s</b> tətbiqinə sizə bildiriş göndərmək icazəsi verilsin?" + "<b>%1$s</b> tətbiqinə <b>%2$s</b> cihazında bildiriş göndərmək icazəsi verilsin?" "İdarə edilən icazələr" "%1$s tətbiqinin məkan icazəsi var" "Təşkilat %1$s tətbiqinə məkan icazəsi verir" diff --git a/PermissionController/res/values-b+sr+Latn/strings.xml b/PermissionController/res/values-b+sr+Latn/strings.xml index 510680ef7999b8990007bd9fe89d4302ce281932..3f109b75689905dcf0d482c66a4fe380ff6aa2da 100644 --- a/PermissionController/res/values-b+sr+Latn/strings.xml +++ b/PermissionController/res/values-b+sr+Latn/strings.xml @@ -34,6 +34,7 @@ "Više informacija" "Dozvoli sve" "Uvek dozvoli sve" + "Dozvoli ograničen pristup" "Izaberite slike i video snimke" "Izaberite još" "Ništa više" @@ -60,6 +61,7 @@ "Aplikacije" "Dozvole za aplikacije" "Aplikacije koje se ne koriste" + "Menjaj izabrane slike za ovu aplikaciju" "Nema aplik. koje se ne koriste" "0 aplikac. koje se ne koriste" "Nedavne odluke o dozvolama" @@ -93,7 +95,7 @@ "%1$s pruža usluge lokacije za ovaj uređaj. Pristup lokaciji možete da izmenite u podešavanjima lokacije." "Ako odbijete ovu dozvolu, osnovne funkcije uređaja možda neće više ispravno raditi." "Ova aplikacija je dizajnirana za stariju verziju Android-a. Ako ovoj aplikaciji odbijete pristup za slike i video snimke, povlači se i pristup muzici i drugim audio snimcima." - "Ova aplikacija je dizajnirana za stariju verziju Android-a. Ako ovoj aplikaciji odbijete pristup za muziku i druge audio snimke, povlači se i pristup slikama i video snimcima." + "Ova aplikacija je dizajnirana za stariju verziju Android-a. Ako ovoj aplikaciji odbijete pristup za muziku i druge audio snimke, povlači se i pristup slikama i videima." "Ako odbijete ovu dozvolu, neke funkcije uređaja kojima upravlja ova aplikacija možda neće više ispravno raditi." "Primenjuje se u skladu sa smernicama" "Pristup u pozadini je onemogućen smernicama" @@ -240,7 +242,7 @@ "Aplikacije sa ovom dozvolom mogu da šalju i pregledaju SMS-ove" "Aplikacije sa ovom dozvolom mogu da pristupaju slikama, medijskom sadržaju i fajlovima na uređaju" "Aplikacije sa ovom dozvolom mogu da pristupaju muzici i drugim audio fajlovima na ovom uređaju" - "Aplikacije sa ovom dozvolom mogu da pristupaju slikama i video snimcima na ovom uređaju" + "Aplikacije sa ovom dozvolom mogu da pristupaju slikama i videima na ovom uređaju" "Poslednji pristup: %1$s" "Trenutno odbijeno/poslednji pristup: %1$s" "Bez pristupa" @@ -455,48 +457,75 @@ "Prikazuj otkrivanje aktiviranja pomoćnika" "Prikazuje ikonu na statusnoj traci kada se mikrofon koristi za aktiviranje glasovnog pomoćnika" "Želite li da dozvolite da <b>%1$s</b> pristupa slikama i medijima na uređaju?" + "Dozvoljavate da <b>%1$s</b> pristupa slikama i medijima na uređaju <b>%2$s</b>?" "Želite da dozvolite da <b>%1$s</b> pristupa kontaktima?" + "Dozvoljavate da <b>%1$s</b> pristupa kontaktima na uređaju <b>%2$s</b>?" "Želite da dozvolite da <b>%1$s</b> pristupa lokaciji ovog uređaja?" + "Dozvoljavate da <b>%1$s</b> pristupa lokaciji uređaja <b>%2$s</b>?" "Aplikacija će imati pristup lokaciji samo dok koristite aplikaciju" "Želite da dozvolite da <b>%1$s</b> pristupa lokaciji ovog uređaja?" + "Dozvoljavate da <b>%1$s</b> pristupa lokaciji uređaja <b>%2$s?" "Ova aplikacija možda želi da pristupa lokaciji sve vreme, čak i kada ne koristite aplikaciju. ""Dozvolite u podešavanjima." "Želite li da promenite pristup lokaciji za aplikaciju <b>%1$s</b>?" + "Menjate pristup lokaciji za aplikaciju <b>%1$s</b> na uređaju <b>%2$s</b>?" "Ova aplikacija želi da pristupa lokaciji sve vreme, čak i kada ne koristite aplikaciju. ""Dozvolite u podešavanjima." "Dozvoljavate da <b>%1$s</b> pronalazi uređaje u blizini, povezuje se s njima i određuje im relativan položaj?" + "<b>%1$s</b> može da nalazi uređaje u blizini, povezuje se sa njima i utvrđuje relativni položaj na: <b>%2$s</b>?" "Dozvoljavate da <b>%1$s</b> pronalazi uređaje u blizini, povezuje se s njima i određuje im relativan položaj? ""Dozvolite u podešavanjima." "Želite li da promenite pristup aplikacije <b>%1$s</b> iz približne lokacije na preciznu?" + "Menjate pristup aplikacije <b>%1$s</b> lokaciji uređaja <b>%2$s</b> iz približne u preciznu lokaciju?" "Želite li da omogućite da <b>%1$s</b> pristupa približnoj lokaciji ovog uređaja?" + "Dozvoljavate da <b>%1$s</b> pristupa približnoj lokaciji uređaja <b>%2$s</b>?" "Precizna" "Približna" "Želite da dozvolite da <b>%1$s</b> pristupa kalendaru?" + "Dozvoljavate da <b>%1$s</b> pristupa kalendaru na uređaju <b>%2$s</b>?" "Želite da dozvolite da <b>%1$s</b> šalje i pregleda SMS-ove?" + "Dozvoljavate da <b>%1$s</b> šalje i pregleda SMS poruke na uređaju <b>%2$s</b>?" "Želite da dozvolite da <b>%1$s</b> pristupa slikama, medijskim i drugim fajlovima na uređaju?" + "Dozvoljavate da <b>%1$s</b> pristupa slikama, medijima i fajlovima na uređaju <b>%2$s</b>?" "Pristup <b>slikama, videu, muzici i zvuku</b> na uređaju za <b>%1$s</b>?" "Pristup slikama, videu, muzici, zvuku i drugom na uređaju za <b>%1$s</b>?" "Dozvoljavate li pristup muzici i zvuku na ovom uređaju za <b>%1$s</b>?" + "Dozvoljavate da <b>%1$s</b> pristupa muzici i audio sadržaju na uređaju <b>%2$s</b>?" "Dozvoljavate li pristup slikama i videu na ovom uređaju za <b>%1$s</b>?" - "Dozvoljavate li da <b>%1$s</b> pristupa i drugim slikama i video snimcima na ovom uređaju?" + "Dozvoljavate da <b>%1$s</b> pristupa slikama i videima na uređaju <b>%2$s</b>?" + "Dozvoljavate li da <b>%1$s</b> pristupa i drugim slikama i videima na ovom uređaju?" + "Dozvoljavate da <b>%1$s</b> pristupa i drugim slikama i videima na uređaju <b>%2$s</b>?" "Želite da dozvolite da <b>%1$s</b> snima zvuk?" + "Dozvoljavate da <b>%1$s</b> snima audio sadržaj na uređaju <b>%2$s</b>?" "Aplikacija će moći da snima zvuk samo dok koristite aplikaciju" "Želite da dozvolite da <b>%1$s</b> snima zvuk?" + "Dozvoljavate da <b>%1$s</b> snima audio sadržaj na uređaju <b>%2$s</b>?" "Ova aplikacija možda želi da snima zvuk sve vreme, čak i kada ne koristite aplikaciju. ""Dozvolite u podešavanjima." "Želite da promenite pristup mikrofonu za aplikaciju <b>%1$s</b>?" + "Menjate pristup mikrofonu za aplikaciju <b>%1$s</b> na uređaju <b>%2$s</b>?" "Ova aplikacija želi da snima zvuk sve vreme, čak i kada ne koristite aplikaciju. ""Dozvolite u podešavanjima." "Želite li da dozvolite da <b>%1$s</b> pristupa fizičkim aktivnostima?" + "Dozvoljavate da <b>%1$s</b> pristupa podacima o fizičkim aktivnostima na uređaju <b>%2$s</b>?" "Želite da dozvolite da <b>%1$s</b> snima slike i video snimke?" + "Dozvolićete da aplikacija <b>%1$s</b> snima slike i video snimke na uređaju <b>%2$s</b>?" "Aplikacija će moći da snima slike i video snimke samo dok koristite aplikaciju" "Želite da dozvolite da <b>%1$s</b> snima slike i video snimke?" + "Dozvoljavate da <b>%1$s</b> snima slike i video snimke na uređaju <b>%2$s</b>?" "Ova aplikacija možda želi da snima slike i video snimke sve vreme, čak i kada ne koristite aplikaciju. ""Dozvolite u podešavanjima." "Želite da promenite pristup kameri za aplikaciju <b>%1$s</b>?" + "Menjate pristup kameri za aplikaciju <b>%1$s</b> na uređaju <b>%2$s</b>?" "Ova aplikacija želi da snima slike i video snimke sve vreme, čak i kada ne koristite aplikaciju. ""Dozvolite u podešavanjima." "Želite da dozvolite da <b>%1$s</b> pristupa evidencijama poziva na telefonu?" + "Dozvoljavate da <b>%1$s</b> pristupa evidencijama telefonskih poziva na uređaju <b>%2$s</b>?" "Želite da dozvolite da <b>%1$s</b> upućuje pozive i upravlja njima?" + "Dozvoljavate da <b>%1$s</b> upućuje telefonske pozive i upravlja njima na uređaju <b>%2$s</b>?" "Želite da dozvolite da <b>%1$s</b> pristupa podacima senzora o vitalnim funkcijama?" + "Dozvoljavate da <b>%1$s</b> pristupa podacima senzora o vitalnim znacima na uređaju <b>%2$s</b>?" "Ova aplikacija želi da sve vreme pristupa podacima senzora o vitalnim funkcijama, čak i kada ne koristite aplikaciju. Da biste obavili ovu izmenu, ""idite u podešavanja." "Želite da omogućite da <b>%1$s</b> pristupa podacima senzora o vitalnim funkcijama?" + "Dozvoljavate da <b>%1$s</b> pristupa podacima senzora o vitalnim znacima na uređaju <b>%2$s</b>?" "Da biste dozvolili ovoj aplikaciji da sve vreme pristupa podacima senzora za telo, čak i kada ne koristite aplikaciju, ""idite u podešavanja." "Želite da <b>%1$s</b> i dalje pristupa podacima senzora za telo dok se aplikacija koristi?" + "Dozvoljavate da <b>%1$s</b> tokom korišćenja i dalje pristupa podacima senzora za telo na: <b>%2$s</b>?" "Želite da dozvolite da vam <b>%1$s</b> šalje obaveštenja?" + "Dozvoljavate da vam <b>%1$s</b> šalje obaveštenja na uređaju <b>%2$s</b>?" "Kontrolisane dozvole" "%1$s ima pristup lokaciji" "Organizacija dozvoljava da %1$s pristupa lokaciji" @@ -558,18 +587,18 @@ "Ni pristup drugim fajlovima neće biti dozvoljen" "Biće dozvoljen pristup i drugim fajlovima" "Ni pristup drugim fajlovima neće biti dozvoljen" - "Biće dozvoljen pristup i slikama i video snimcima" - "Ni pristup slikama i video snimcima neće biti dozvoljen" + "Biće dozvoljen pristup i slikama i videima" + "Ni pristup slikama i videima neće biti dozvoljen" "Biće dozvoljen pristup i muzici i audio fajlovima" "Ni pristup muzici i audio fajlovima neće biti dozvoljen" - "Ova aplikacija ne podržava najnoviju verziju Android-a. Ako ova aplikacija može da pristupa muzici i audio fajlovima, biće joj dozvoljeno i da pristupa slikama, video snimcima i drugim fajlovima." - "Ova aplikacija ne podržava najnoviju verziju Android-a. Ako ova aplikacija ne može da pristupa muzici i audio fajlovima, neće joj biti dozvoljeno ni da pristupa slikama, video snimcima i drugim fajlovima." - "Ova aplikacija ne podržava najnoviju verziju Android-a. Ako ova aplikacija može da pristupa slikama i video snimcima, biće joj dozvoljeno i da pristupa muzici, audio i drugim fajlovima." - "Ova aplikacija ne podržava najnoviju verziju Android-a. Ako ova aplikacija ne može da pristupa slikama i video snimcima, neće joj biti dozvoljeno ni da pristupa muzici, audio i drugim fajlovima." - "Ova aplikacija ne podržava najnoviju verziju Android-a. Ako ova aplikacija može da pristupa muzici i audio fajlovima, biće joj dozvoljeno i da pristupa slikama i video snimcima." - "Ova aplikacija ne podržava najnoviju verziju Android-a. Ako ova aplikacija ne može da pristupa muzici i audio fajlovima, neće joj biti dozvoljeno ni da pristupa slikama i video snimcima." - "Ova aplikacija ne podržava najnoviju verziju Android-a. Ako ova aplikacija može da pristupa slikama i video snimcima, biće joj dozvoljeno i da pristupa muzici i audio fajlovima." - "Ova aplikacija ne podržava najnoviju verziju Android-a. Ako ova aplikacija ne može da pristupa muzici i audio fajlovima, neće joj biti dozvoljeno ni da pristupa slikama i video snimcima." + "Ova aplikacija ne podržava najnoviju verziju Android-a. Ako ova aplikacija može da pristupa muzici i audio fajlovima, biće joj dozvoljeno i da pristupa slikama, videima i drugim fajlovima." + "Ova aplikacija ne podržava najnoviju verziju Android-a. Ako ova aplikacija ne može da pristupa muzici i audio fajlovima, neće joj biti dozvoljeno ni da pristupa slikama, videima i drugim fajlovima." + "Ova aplikacija ne podržava najnoviju verziju Android-a. Ako ova aplikacija može da pristupa slikama i videima, biće joj dozvoljeno i da pristupa muzici, audio i drugim fajlovima." + "Ova aplikacija ne podržava najnoviju verziju Android-a. Ako ova aplikacija ne može da pristupa slikama i videima, neće joj biti dozvoljeno ni da pristupa muzici, audio i drugim fajlovima." + "Ova aplikacija ne podržava najnoviju verziju Android-a. Ako ova aplikacija može da pristupa muzici i audio fajlovima, biće joj dozvoljeno i da pristupa slikama i videima." + "Ova aplikacija ne podržava najnoviju verziju Android-a. Ako ova aplikacija ne može da pristupa muzici i audio fajlovima, neće joj biti dozvoljeno ni da pristupa slikama i videima." + "Ova aplikacija ne podržava najnoviju verziju Android-a. Ako ova aplikacija može da pristupa slikama i videima, biće joj dozvoljeno i da pristupa muzici i audio fajlovima." + "Ova aplikacija ne podržava najnoviju verziju Android-a. Ako ova aplikacija ne može da pristupa muzici i audio fajlovima, neće joj biti dozvoljeno ni da pristupa slikama i videima." "Pregledajte aplikaciju sa pristupom lokaciji u pozadini" "%s uvek može da pristupa vašoj lokaciji, čak i kad je aplikacija zatvorena" "Pregledajte aplikaciju sa pristupom lokaciji u pozadini" diff --git a/PermissionController/res/values-be/strings.xml b/PermissionController/res/values-be/strings.xml index c6e081982410c4c20e45dfe0025ea6530827d95d..ef9983065e2da9c2cfdcac48fc54d09847db0050 100644 --- a/PermissionController/res/values-be/strings.xml +++ b/PermissionController/res/values-be/strings.xml @@ -34,6 +34,7 @@ "Падрабязней" "Дазволіць усе" "Заўсёды дазваляць усе" + "Дазволіць абмежаваны доступ" "Выбраць фота і відэа" "Яшчэ" "Больш не выбіраць" @@ -60,6 +61,7 @@ "Праграмы" "Дазволы праграмы" "Праграмы, якія не выкарыстоўваюцца" + "Змяніць спіс фота, да якіх гэта праграма мае доступ" "Няма нескарыстаных праграм" "0 праграм не ў карыстанні" "Нядаўнія рашэнні наконт дазволаў" @@ -455,48 +457,75 @@ "Паказваць значок актывацыі памочніка" "Паказваць значок на панэлі стану, калі мікрафон выкарыстоўваецца для актывацыі галасавога памочніка" "Дазволіць праграме <b>%1$s</b> доступ да фота і мультымедыя на вашай прыладзе?" + "Дазволіць праграме <b>%1$s</b> доступ да фота і мультымедыя на прыладзе <b>%2$s</b>?" "Дазволіць праграме <b>%1$s</b> доступ да вашых кантактаў?" + "Дазволіць праграме <b>%1$s</b> доступ да кантактаў на прыладзе <b>%2$s</b>?" "Дазволіць праграме <b>%1$s</b> доступ да звестак пра месцазнаходжанне гэтай прылады?" + "Дазволіць праграме <b>%1$s</b> доступ да даных пра месцазнаходжанне прылады <b>%2$s’s</b>?" "Праграма будзе мець доступ да звестак пра месцазнаходжанне толькі падчас карыстання ёю" "Дазволіць праграме <b>%1$s</b> доступ да звестак пра месцазнаходжанне гэтай прылады?" + "Дазволіць праграме <b>%1$s</b> доступ да даных пра месцазнаходжанне прылады <b>%2$s</b>?" "Гэта праграма можа запытваць пастаянны доступ да звестак пра ваша месцазнаходжанне, нават калі яна не выкарыстоўваецца. ""Дайце дазвол у наладах." "Змяніць налады доступу да даных пра месцазнаходжанне для праграмы <b>%1$s</b>?" + "Змяніць для праграмы <b>%1$s</b> налады доступу да даных пра месцазнаходжанне на прыладзе <b>%2$s</b>?" "Гэта праграма запытвае пастаянны доступ да звестак пра ваша месцазнаходжанне, нават калі яна не выкарыстоўваецца. ""Дайце дазвол у наладах." "Дазволіць праграме <b>%1$s</b> знаходзіць прылады паблізу, падключацца да іх і вызначаць адлегласць да іх?" + "Дазволіць праграме <b>%1$s</b> знаходзіць прылады паблізу, падключацца да іх і вызначаць іх адноснае месцазнаходжанне на прыладзе <b>%2$s</b>?" "Дазволіць праграме <b>%1$s</b> знаходзіць прылады паблізу, падключацца да іх і вызначаць адлегласць да такіх прылад? ""Дазволіць у наладах." "Памяняць у доступах праграмы \"<b>%1$s</b>\" прыблізнае месцазнаходжанне на дакладнае?" + "Дазволіць праграме \"<b>%1$s</b>\" доступ да даных пра дакладнае месцазнаходжанне прылады <b>%2$s</b> замест прыблізнага?" "Дазволіць праграме <b>%1$s</b> доступ да звестак пра прыблізнае месцазнаходжанне гэтай прылады?" + "Дазволіць праграме <b>%1$s</b> доступ да даных пра прыблізнае месцазнаходжанне прылады <b>%2$s</b>?" "Дакладна" "Прыблізна" "Дазволіць праграме <b>%1$s</b> доступ да вашага календара?" + "Дазволіць праграме <b>%1$s</b> доступ да календара на прыладзе <b>%2$s</b>?" "Дазволіць праграме <b>%1$s</b> адпраўляць і праглядаць SMS-паведамленні?" + "Дазволіць праграме <b>%1$s</b> адпраўляць і праглядаць SMS-паведамленні на прыладзе <b>%2$s</b>?" "Дазволіць праграме <b>%1$s</b> доступ да фота, мультымедыя і файлаў на вашай прыладзе?" + "Дазволіць праграме <b>%1$s</b> доступ да фота, мультымедыя і файлаў на прыладзе <b>%2$s</b>?" "Дазволіць праграме <b>%1$s</b> доступ да <b>фота, відэа, музыкі і аўдыяфайлаў</b> на гэтай прыладзе?" "Дазволіць праграме <b>%1$s</b> доступ да <b>фота, відэа, музыкі, аўдыя і файлаў</b> на гэтай прыладзе?" "Дазволіць праграме <b>%1$s</b> доступ да музыкі і аўдыя на гэтай прыладзе?" + "Дазволіць праграме <b>%1$s</b> доступ да музыкі і аўдыя на прыладзе <b>%2$s</b>?" "Дазволіць праграме <b>%1$s</b> доступ да фота і відэа на гэтай прыладзе?" + "Дазволіць праграме <b>%1$s</b> доступ да фота і відэа на прыладзе <b>%2$s</b>?" "Дазволіць праграме <b>%1$s</b> доступ да дадатковых фота і відэа на гэтай прыладзе?" + "Дазволіць праграме <b>%1$s</b> доступ да іншых фота і відэа на прыладзе <b>%2$s</b>?" "Дазволіць праграме <b>%1$s</b> запісваць аўдыя?" + "Дазволіць праграме <b>%1$s</b> запісваць аўдыя на прыладзе <b>%2$s</b>?" "Гэта праграма зможа запісваць аўдыя толькі падчас яе выкарыстання" "Дазволіць праграме <b>%1$s</b> запісваць аўдыя?" + "Дазволіць праграме <b>%1$s</b> запісваць аўдыя на прыладзе <b>%2$s</b>?" "Гэта праграма можа запісваць аўдыя ўвесь час, нават калі яна не выкарыстоўваецца. ""Дайце дазвол у наладах." "Змяніць налады доступу да мікрафона для праграмы <b>%1$s</b>?" + "Змяніць для праграмы <b>%1$s</b> налады доступу да мікрафона на прыладзе <b>%2$s</b>?" "Гэта праграма запытвае дазвол запісваць аўдыя ўвесь час, нават калі яна не выкарыстоўваецца. ""Дайце дазвол у наладах." "Дазволіць праграме <b>%1$s</b> доступ да даных фізічнай актыўнасці?" + "Дазволіць праграме <b>%1$s</b> доступ да даных аб фізічнай актыўнасці на прыладзе <b>%2$s</b>?" "Дазволіць праграме <b>%1$s</b> рабіць фота і запісваць відэа?" + "Дазволіць праграме <b>%1$s</b> знімаць фота і відэа на прыладзе <b>%2$s</b>?" "Гэта праграма зможа рабіць фота і запісваць відэа толькі падчас яе выкарыстання" "Дазволіць праграме <b>%1$s</b> рабіць фота і запісваць відэа?" + "Дазволіць праграме <b>%1$s</b> знімаць фота і відэа на прыладзе <b>%2$s</b>?" "Гэта праграма можа рабіць фота і запісваць відэа ўвесь час, нават калі яна не выкарыстоўваецца. ""Дайце дазвол у наладах." "Змяніць налады доступу да камеры для праграмы <b>%1$s</b>?" + "Змяніць для праграмы <b>%1$s</b> налады доступу да камеры на прыладзе <b>%2$s</b>?" "Гэта праграма запытвае дазвол рабіць фота і запісваць відэа ўвесь час, нават калі яна не выкарыстоўваецца. ""Дайце дазвол у наладах." "Дазволіць праграме <b>%1$s</b> доступ да журналаў выклікаў вашага тэлефона?" + "Дазволіць праграме <b>%1$s</b> доступ да журналаў тэлефонных выклікаў на прыладзе <b>%2$s</b>?" "Дазволіць праграме <b>%1$s</b> рабіць тэлефонныя выклікі і кіраваць імі?" + "Дазволіць праграме <b>%1$s</b> рабіць тэлефонныя выклікі і кіраваць імі на прыладзе <b>%2$s</b>?" "Дазволіць праграме <b>%1$s</b> доступ да даных з датчыкаў пра вашы асноўныя фізіялагічныя паказчыкі?" + "Дазволіць праграме <b>%1$s</b> доступ да даных датчыкаў з паказчыкамі арганізма на прыладзе <b>%2$s</b>?" "Гэта праграма запытвае пастаянны доступ да даных датчыкаў з паказчыкамі вашага арганізма, нават калі яна не выкарыстоўваецца. Каб змяніць дазвол, ""перайдзіце ў налады""." "Дазволіць праграме <b>%1$s</b> доступ да даных датчыкаў з паказчыкамі вашага арганізма?" + "Дазволіць праграме <b>%1$s</b> доступ да даных датчыкаў з паказчыкамі арганізма на прыладзе <b>%2$s</b>?" "Каб дазволіць гэтай праграме мець пастаянны доступ да даных датчыкаў цела, нават калі яна не выкарыстоўваецца, ""перайдзіце ў налады." "Захаваць для праграмы \"<b>%1$s</b>” дазвол на доступ да даных датчыкаў цела ў час яе выкарыстання?" + "Захаваць для праграмы <b>%1$s</b> дазвол на доступ да даных датчыкаў цела падчас яе выкарыстання на прыладзе <b>%2$s</b>?" "Дазволіць праграме <b>%1$s</b> адпраўляць вам апавяшчэнні?" + "Дазволіць праграме <b>%1$s</b> адпраўляць вам апавяшчэнні на прыладзе <b>%2$s</b>?" "Кіраваныя дазволы" "Праграма \"%1$s\" мае доступ да даных геалакацыі" "Ваша арганізацыя дазволіла праграме \"%1$s\" мець доступ да вашага месцазнаходжання" diff --git a/PermissionController/res/values-bg/strings.xml b/PermissionController/res/values-bg/strings.xml index a8c0e63151314b3063d48019ff5a25daff995da7..fb5d670c72b36421a688973347e5c262e1df2302 100644 --- a/PermissionController/res/values-bg/strings.xml +++ b/PermissionController/res/values-bg/strings.xml @@ -34,6 +34,7 @@ "Още информация" "Разрешаване на пълен достъп" "Винаги да се разрешава пълен достъп" + "Разрешаване на ограничения достъп" "Избиране на снимки и видеоклипове" "Избиране на още" "Без избиране на още" @@ -60,6 +61,7 @@ "Приложения" "Разрешения за приложенията" "Неизползвани приложения" + "Редактиране на избраните снимки за това приложение" "Няма неизползвани приложения" "0 неизползвани приложения" "Скорошни решения за разрешения" @@ -455,48 +457,75 @@ "Показване на икона за готовност на асистент" "Показване на икона в лентата на състоянието, когато микрофонът се използва за активиране на гласовия асистент" "Да се разреши ли на <b>%1$s</b> да има достъп до снимките и мултимедията на устройството ви?" + "Да се разреши ли достъп на <b>%1$s</b> до снимките и мултимедията на вашия <b>%2$s</b>?" "Да се разреши ли на <b>%1$s</b> да осъществява достъп до контактите ви?" + "Да се разреши ли достъп на <b>%1$s</b> до контактите ви на вашия <b>%2$s</b>?" "Да се разреши ли на <b>%1$s</b> да осъществява достъп до местоположението на това устройство?" + "Да се разреши ли достъп на <b>%1$s</b> до местоположението на вашия <b>%2$s</b>?" "Само когато използвате приложението, то ще има достъп до местоположението" "Да се разреши ли на <b>%1$s</b> да осъществява достъп до местоположението на това устройство?" + "Да се разреши ли достъп на <b>%1$s</b> до местоположението на вашия <b>%2$s</b>?" "Това приложение може да иска да осъществява постоянен достъп до местоположението ви – дори когато не го използвате. ""Разрешете от настройките""." "Да се промени ли достъпът до местоположението за <b>%1$s</b>?" + "Да се промени ли достъпът на <b>%1$s</b> до местоположението на вашия <b>%2$s</b>?" "Това приложение иска да осъществява постоянен достъп до местоположението ви – дори когато не го използвате. ""Разрешете от настройките""." "Да се разреши ли на <b>%1$s</b> да намира у-ва в близост, да се свързва с тях и да определя относит. им позиция?" + "Разреш. на <b>%1$s</b> да намира, да се свързва със и да опред. отн. поз. на у-ва в близост до вашия <b>%2$s</b>?" "Да се разреши ли на <b>%1$s</b> да намира у-ва в близост, да се свързва с тях и да определя относит. им позиция? ""Разрешаване от настройките""." "Да се промени ли достъпът на <b>%1$s</b> от приблизително местоположение на точно?" + "Да се промени ли достъпът на <b>%1$s</b> до местоположението на вашия <b>%2$s</b> от приблизително към точно?" "Да се разреши ли на <b>%1$s</b> да осъществява достъп до приблизителното местоположение на това устройство?" + "Да се разреши ли достъп на <b>%1$s</b> до приблизителното местоположение на вашия <b>%2$s</b>?" "Точно" "Приблизително" "Да се разреши ли на <b>%1$s</b> да осъществява достъп до календара ви?" + "Да се разреши ли достъп на <b>%1$s</b> до календара ви на вашия <b>%2$s</b>?" "Да се разреши ли на <b>%1$s</b> да изпраща и преглежда SMS съобщения?" + "Да се разреши ли на <b>%1$s</b> да изпраща и преглежда SMS съобщения на вашия <b>%2$s</b>?" "Да се разреши ли на <b>%1$s</b> да има достъп до снимките, мултимедията и файловете на устройството ви?" + "Да се разреши ли достъп на <b>%1$s</b> до снимките, мултимедията и файловете на вашия <b>%2$s</b>?" "Разрешаване на <b>%1$s</b> достъп до <b>снимките, видео- и аудиосъдържанието</b> на устройството ви?" "Разр. на <b>%1$s</b> достъп до <b>снимките, видео- и аудиосъдърж. и другите файлове</b> на у-вото?" "Да се разреши ли на <b>%1$s</b> да осъществява достъп до музиката и аудиофайловете на това устройство?" + "Да се разреши ли достъп на <b>%1$s</b> до музиката и аудиото на вашия <b>%2$s</b>?" "Да се разреши ли на <b>%1$s</b> да осъществява достъп до снимките и видеоклиповете на това устройство?" + "Да се разреши ли достъп на <b>%1$s</b> до снимките и видеоклиповете на вашия <b>%2$s</b>?" "Да се разреши ли на <b>%1$s</b> да осъществява достъп до още снимки и видеоклипове на това устройство?" + "Да се разреши ли достъп на <b>%1$s</b> до още снимки и видеоклипове на вашия <b>%2$s</b>?" "Да се разреши ли на <b>%1$s</b> да записва аудио?" + "Да се разреши ли на <b>%1$s</b> да записва аудио на вашия <b>%2$s</b>?" "Приложението ще може да записва аудио само когато го използвате" "Да се разреши ли на <b>%1$s</b> да записва аудио?" + "Да се разреши ли на <b>%1$s</b> да записва аудио на вашия <b>%2$s</b>?" "Това приложение може да иска да записва аудио по всяко време – дори когато не го използвате. ""Разрешете от настройките." "Да се промени ли достъпът до микрофона за <b>%1$s</b>?" + "Да се промени ли достъпът на <b>%1$s</b> до микрофона на вашия <b>%2$s</b>?" "Това приложение иска да записва аудио по всяко време – дори когато не го използвате. ""Разрешете от настройките." "Да се разреши ли на <b>%1$s</b> да осъществява достъп до физическата ви активност?" + "Да се разреши ли достъп на <b>%1$s</b> до физическата ви активност на вашия <b>%2$s</b>?" "Да се разреши ли на <b>%1$s</b> да прави снимки и да записва видеоклипове?" + "Да се разреши ли на <b>%1$s</b> да прави снимки и да записва видеоклипове на вашия <b>%2$s</b>?" "Приложението ще може да прави снимки и записва видеоклипове само когато го използвате" "Да се разреши ли на <b>%1$s</b> да прави снимки и да записва видеоклипове?" + "Да се разреши ли на <b>%1$s</b> да прави снимки и да записва видеоклипове на вашия <b>%2$s</b>?" "Това приложение може да иска да прави снимки и да записва видеоклипове по всяко време – дори когато не го използвате. ""Разрешете от настройките." "Да се промени ли достъпът до камерата за <b>%1$s</b>?" + "Да се промени ли достъпът на <b>%1$s</b> до камерата на вашия <b>%2$s</b>?" "Това приложение иска да прави снимки и да записва видеоклипове по всяко време – дори когато не го използвате. ""Разрешете от настройките." "Да се разреши ли на <b>%1$s</b> да осъществява достъп до списъците с телефонните ви обаждания?" + "Да се разреши ли достъп на <b>%1$s</b> до списъците с телефонните ви обаждания на вашия <b>%2$s</b>?" "Да се разреши ли на <b>%1$s</b> да извършва и управлява телефонни обаждания?" + "Да се разреши ли на <b>%1$s</b> да извършва и управлява телефонни обаждания на вашия <b>%2$s</b>?" "Да се разреши ли на <b>%1$s</b> да осъществява достъп до данните от сензорите за жизнените ви показатели?" + "Да се разреши ли достъп на <b>%1$s</b> до данните за жизнените ви показатели на вашия <b>%2$s</b>?" "Това приложение иска постоянен достъп до данните от сензорите за жизнените ви показатели – дори когато не го използвате. За да извършите тази промяна, ""отворете настройките""." "Да се разреши ли на <b>%1$s</b> да осъществява достъп до данните от сензорите за жизнените ви показатели?" + "Да се разреши ли достъп на <b>%1$s</b> до данните за жизнените ви показатели на вашия <b>%2$s</b>?" "За да разрешите на това приложение да осъществява достъп до данните от сензорите за тяло по всяко време – дори когато не го използвате, ""отворете настройките""." "Да се предоставя ли достъп на <b>%1$s</b> до данните от сензорите за тяло, докато приложението се използва?" + "Да има ли достъп <b>%1$s</b> до данните от сенз. за тяло на вашия <b>%2$s</b>, докато прил. се ползва?" "Да се разреши ли на <b>%1$s</b> да ви изпраща известия?" + "Да се разреши ли на <b>%1$s</b> да ви изпраща известия на вашия <b>%2$s</b>?" "Контролирани разрешения" "%1$s има достъп до местоположението" "Организацията ви разрешава на %1$s да осъществява достъп до местоположението ви" diff --git a/PermissionController/res/values-bn/strings.xml b/PermissionController/res/values-bn/strings.xml index ca112b542b53170e5aff16e5fa5f3e62df16c984..c17a53046bea4bc5e96faa33953a78f787dad031 100644 --- a/PermissionController/res/values-bn/strings.xml +++ b/PermissionController/res/values-bn/strings.xml @@ -34,6 +34,7 @@ "আরও তথ্য" "সব অনুমোদন করুন" "সবসময় সব অনুমতি দিন" + "সীমিত অ্যাক্সেসের অনুমতি দিন" "ফটো এবং ভিডিও বেছে নিন" "আরও বেছে নিন" "আর বেছে নেবেন না" @@ -44,13 +45,13 @@ "<b>%1$s</b> অ্যাপটিকে সব সময় এটি করার অনুমতি দেবেন?: %2$s" "শুধুমাত্র অ্যাপ ব্যবহার করার সময়" "সব সময়" - "অনুমতি দেবেন না এবং আর জিজ্ঞাসা করবেন না" + "অনুমতি দেবেন না ও আবার জিজ্ঞাসা করা হোক তা চান না" "%1$dটি বন্ধ করা হয়েছে" "সবগুলি বন্ধ করা হয়েছে" "কোনওটিই বন্ধ করা হয়নি" "অনুমতি দিন" "সর্বদা অনুমতি দিন" - "অ্যাপ ব্যবহার করার সময়" + "শুধুমাত্র অ্যাপ ব্যবহার করার সময়" "সুনির্দিষ্ট লোকেশনে পরিবর্তন করুন" "আনুমানিক লোকেশন রাখুন" "শুধুমাত্র এই সময়ে" @@ -60,6 +61,7 @@ "অ্যাপ" "অ্যাপের অনুমতি" "অব্যবহৃত অ্যাপ" + "এই অ্যাপের জন্য বেছে নেওয়া ফটো এডিট করুন" "অব্যবহৃত কোনও অ্যাপ নেই" "ব্যবহার না করা একটিও অ্যাপ নেই" "অনুমতি সংক্রান্ত সাম্প্রতিক সিদ্ধান্ত" @@ -455,48 +457,75 @@ "অ্যাসিস্ট্যান্ট ট্রিগার ডিটেকশন দেখুন" "ভয়েস অ্যাসিস্ট্যান্ট চালু করতে মাইক্রোফোন ব্যবহার হলে স্ট্যাটাস বারে আইকন দেখায়" "<b>%1$s</b>-কে আপনার ডিভাইসের ফটো এবং মিডিয়াতে অ্যাক্সেস দেবেন?" + "আপনার <b>%2$s</b> ডিভাইসে ফটো ও মিডিয়া অ্যাক্সেস করার জন্য <b>%1$s</b> অ্যাপকে অনুমতি দিতে চান?" "<b>%1$s</b>-কে আপনার পরিচিতিতে অ্যাক্সেস দেবেন?" + "আপনার <b>%2$s</b> ডিভাইসে পরিচিতি অ্যাক্সেস করার জন্য <b>%1$s</b> অ্যাপকে অনুমতি দিতে চান?" "<b>%1$s</b>-কে এই ডিভাইসের লোকেশন অ্যাক্সেস করতে দেবেন?" + "আপনার <b>%2$s</b> ডিভাইসের লোকেশন অ্যাক্সেস করার জন্য <b>%1$s</b> অ্যাপকে অনুমতি দিতে চান?" "আপনি এই অ্যাপ ব্যবহার করার সময়েই শুধু সেটি আপনার লোকেশন অ্যাক্সেস করতে পারবে" "<b>%1$s</b>-কে এই ডিভাইসের লোকেশন অ্যাক্সেস করতে দেবেন?" + "<b>%1$s</b> অ্যাপকে আপনার <b>%2$s ডিভাইসের লোকেশন অ্যাক্সেস করার অনুমতি দিতে চান?" "এই অ্যাপ হয়ত সবসময় আপনার লোকেশন অ্যাক্সেস করতে চায়, এমনকি আপনার অ্যাপ চালু না থাকলেও। ""সেটিংস বিকল্প থেকে অনুমতি দিন।" "<b>%1$s</b>-এর জন্য লোকেশন অ্যাক্সেস পরিবর্তন করতে চান?" + "আপনার <b>%2$s</b> ডিভাইসে <b>%1$s</b> অ্যাপের জন্য লোকেশনের অ্যাক্সেস পরিবর্তন করতে চান?" "এই অ্যাপটি সবসময় আপনার লোকেশন অ্যাক্সেস করতে চায়, এমনকি আপনার অ্যাপ চালু না থাকলেও। ""সেটিংস বিকল্প থেকে অনুমতি দিন।" "কাছাকাছি ডিভাইস খুঁজে দেখতে, কানেক্ট করতে এবং সেটির আপেক্ষিক অবস্থান নির্ধারণ করতে <b>%1$s</b> অ্যাপকে অনুমতি দেবেন?" + "আপনার <b>%2$s</b> ডিভাইসে <b>%1$s</b> অ্যাপকে আশেপাশের ডিভাইস খুঁজতে, কানেক্ট করতে এবং সেটি কোথায় রয়েছে তা জানার অনুমতি দিতে চান?" "কাছাকাছি ডিভাইস খুঁজে দেখতে, কানেক্ট করতে এবং সেটির আপেক্ষিক অবস্থান নির্ধারণ করতে <b>%1$s</b> অ্যাপকে অনুমতি দেবেন? ""সেটিংস থেকে অনুমতি দিন।" "<b>%1$s</b>-এ লোকেশন অ্যাক্সেস, আনুমানিক থেকে সুনির্দিষ্ট লোকেশনে পরিবর্তন করতে চান?" + "আপনার <b>%2$s</b> ডিভাইসে <b>%1$s</b> অ্যাপের লোকেশন আনুমানিক থেকে সঠিকে পরিবর্তন করতে চান?" "<b>%1$s</b>-কে এই ডিভাইসের নিকটবর্তী লোকেশন অ্যাক্সেস করতে দেবেন?" + "আপনার <b>%2$s</b> ডিভাইসের আনুমানিক লোকেশন অ্যাক্সেস করার জন্য <b>%1$s</b> অ্যাপকে অনুমতি দিতে চান?" "নির্ভুল" "নিকটবর্তী" "<b>%1$s</b>-কে আপনার ক্যালেন্ডারে অ্যাক্সেস দেবেন?" + "আপনার <b>%2$s</b> ডিভাইসে ক্যালেন্ডার অ্যাক্সেস করার জন্য <b>%1$s</b> অ্যাপকে অনুমতি দিতে চান?" "<b>%1$s</b>-কে এসএমএস দেখতে ও পাঠাতে দেবেন?" + "আপনার <b>%2$s</b> ডিভাইসে এসএমএস মেসেজ পাঠাতে ও দেখাতে <b>%1$s</b> অ্যাপকে অনুমতি দিতে চান?" "<b>%1$s</b>-কে আপনার ডিভাইসের ফটো, মিডিয়া এবং ফাইলে অ্যাক্সেস দেবেন?" + "আপনার <b>%2$s</b> ডিভাইসে ফটো, মিডিয়া এবং ফাইল অ্যাক্সেস করার জন্য <b>%1$s</b> অ্যাপকে অনুমতি দিতে চান?" "এই ডিভাইসে <b>%1$s</b>-কে <b>ফটো, ভিডিও, মিউজিক এবং অডিও</b> অ্যাক্সেসের অনুমতি দেবেন?" "এই ডিভাইসে <b>%1$s</b>-কে <b>ফটো, ভিডিও, মিউজিক, অডিও ও অন্যান্য ফাইল</b> অ্যাক্সেসের অনুমতি দেবেন?" "এই ডিভাইসে <b>%1$s</b>-কে মিউজিক ও অডিও ফাইল অ্যাক্সেসের অনুমতি দেবেন?" + "আপনার <b>%2$s</b> ডিভাইসে মিউজিক ও অডিও অ্যাক্সেস করার জন্য <b>%1$s</b> অ্যাপকে অনুমতি দিতে চান?" "এই ডিভাইসে <b>%1$s</b>-কে ফটো ও ভিডিও অ্যাক্সেসের অনুমতি দেবেন?" + "আপনার <b>%2$s</b> ডিভাইসে ফটো ও ভিডিও অ্যাক্সেস করার জন্য <b>%1$s</b> অ্যাপকে অনুমতি দিতে চান?" "এই ডিভাইসে <b>%1$s</b>-কে আরও ফটো ও ভিডিও অ্যাক্সেসের অনুমতি দেবেন?" + "আপনার <b>%2$s</b> ডিভাইসে আরও ফটো ও ভিডিও অ্যাক্সেস করার জন্য <b>%1$s</b> অ্যাপকে অনুমতি দিতে চান?" "<b>%1$s</b>-কে অডিও রেকর্ড করার অনুমতি দেবেন?" + "<b>%1$s</b> অ্যাপকে আপনার <b>%2$s</b> ডিভাইসে অডিও রেকর্ড করার অনুমতি দিতে চান?" "আপনি এই অ্যাপ ব্যবহার করার সময়েই শুধুমাত্র সেটি অডিও রেকর্ড করতে পারবে" "<b>%1$s</b>-কে অডিও রেকর্ড করার অনুমতি দিতে চান?" + "<b>%1$s</b> অ্যাপকে আপনার <b>%2$s</b> ডিভাইসে অডিও রেকর্ড করার অনুমতি দিতে চান?" "এই অ্যাপ হয়ত সবসময় এমনকি আপনি যখন অ্যাপ ব্যবহার করছেন না তখনও অডিও রেকর্ড করতে চাইতে পারে। ""সেটিংস থেকে অনুমতি দিন।" "<b>%1$s</b>-এর জন্য মাইক্রোফোন অ্যাক্সেস পরিবর্তন করতে চান?" + "আপনার <b>%2$s</b> ডিভাইসে <b>%1$s</b> অ্যাপের জন্য মাইক্রোফোনের অ্যাক্সেস পরিবর্তন করতে চান?" "এই অ্যাপ হয়ত সবসময় এমনকি আপনি যখন অ্যাপ ব্যবহার করছেন না তখনও অডিও রেকর্ড করতে চাইবে। ""সেটিংস থেকে অনুমতি দিন।" "<b>%1$s</b>-কে আপনার শারীরিক অ্যাক্টিভিটি অ্যাক্সেস করার অনুমতি দিতে চান?" + "আপনার <b>%2$s</b> ডিভাইসে শারীরিক অ্যাক্টিভিটি অ্যাক্সেস করার জন্য <b>%1$s</b> অ্যাপকে অনুমতি দিতে চান?" "<b>%1$s</b>-কে ফটো তোলা ও ভিডিও রেকর্ড করার অনুমতি দেবেন?" + "আপনার <b>%2$s</b> ডিভাইসে <b>%1$s</b> অ্যাপকে ছবি তোলার এবং ভিডিও রেকর্ড করার অনুমতি দিতে চান?" "আপনি এই অ্যাপ ব্যবহার করার সময়েই শুধুমাত্র সেটি ছবি তুলতে এবং ভিডিও রেকর্ড করতে পারবে" "<b>%1$s</b> অ্যাপকে ফটো তুলতে এবং ভিডিও রেকর্ড করার অনুমতি দিতে চান?" + "আপনার <b>%2$s</b> ডিভাইসে <b>%1$s</b> অ্যাপকে ছবি তোলার এবং ভিডিও রেকর্ড করার অনুমতি দিতে চান?" "এই অ্যাপ হয়ত সবসময় এমনকি আপনি যখন অ্যাপ ব্যবহার করছেন না তখনও ছবি তুলতে এবং ভিডিও রেকর্ড করতে চাইতে পারে। ""সেটিংস থেকে অনুমতি দিন।" "<b>%1$s</b>-এর জন্য ক্যামেরা অ্যাক্সেস পরিবর্তন করতে চান?" + "আপনার <b>%2$s</b> ডিভাইসে <b>%1$s</b> অ্যাপের জন্য ক্যামেরার অ্যাক্সেস পরিবর্তন করতে চান?" "এই অ্যাপ সবসময় এমনকি আপনি যখন অ্যাপ ব্যবহার করছেন না তখনও ছবি তুলতে এবং ভিডিও রেকর্ড করতে চাইবে। ""সেটিংস থেকে অনুমতি দিন।" "<b>%1$s</b>-কে আপনার ফোন কল লগ অ্যাক্সেস করার অনুমতি দেবেন?" + "আপনার <b>%2$s</b> ডিভাইসে ফোনের কল লগ অ্যাক্সেস করার জন্য <b>%1$s</b> অ্যাপকে অনুমতি দিতে চান?" "<b>%1$s</b>-কে কল করতে এবং কল পরিচালনা করতে দেবেন?" + "আপনার <b>%2$s</b> ডিভাইসে ফোন কল করতে ও ম্যানেজ করতে <b>%1$s</b> অ্যাপকে অনুমতি দিতে চান?" "<b>%1$s</b>-কে সেন্সর থেকে আপনার ভাইটাল সাইনের ডেটা অ্যাক্সেস করতে দেবেন?" + "আপনার <b>%2$s</b>-এ ভাইটাল সাইন সম্পর্কিত সেন্সর ডেটা অ্যাক্সেস করার জন্য <b>%1$s</b>-কে অনুমতি দিতে চান?" "এই অ্যাপ সবসময় শারীরবৃত্তীয় লক্ষণ সংক্রান্ত সেন্সর ডেটা অ্যাক্সেস করার অনুমতি চায়, এমনকী আপনি যখন অ্যাপটি ব্যবহার করছেন না, তখনও। এই পরিবর্তন চালু করতে, ""সেটিংসে যান।" "<b>%1$s</b>-কে আপনার বেঁচে থাকার গুরুত্বপূর্ণ লক্ষণ সম্পর্কিত সেন্সর ডেটা অ্যাক্সেস করার অনুমতি দিতে চান?" + "আপনার <b>%2$s</b>-এ ভাইটাল সাইন সম্পর্কিত সেন্সর ডেটা অ্যাক্সেস করার জন্য <b>%1$s</b>-কে অনুমতি দিতে চান?" "অ্যাপটি ব্যবহার না করলেও, সেটিকে সবসময় বডি সেন্সর ডেটাতে অ্যাক্সেস দিতে ""সেটিংসে যান""।" "ব্যবহার করার সময় <b>%1$s</b> অ্যাপকে বডি সেন্সর ডেটার অ্যাক্সেস দিয়ে রাখতে চান?" + "ব্যবহার করার সময় <b>%2$s</b> ডিভাইসে <b>%1$s</b> অ্যাপকে বডি সেন্সর ডেটা অ্যাক্সেস করার অনুমতি দিতে চান?" "<b>%1$s</b>-কে বিজ্ঞপ্তি পাঠানোর অনুমতি দেবেন?" + "আপনার <b>%2$s</b> ডিভাইসে বিজ্ঞপ্তি পাঠানোর জন্য <b>%1$s</b> অ্যাপকে অনুমতি দিতে চান?" "নিয়ন্ত্রিত অনুমতি" "%1$s-এর লোকেশন অ্যাক্সেস আছে" "আপনার সংস্থা %1$s-কে আপনার লোকেশন অ্যাক্সেস করার অনুমতি দেয়" diff --git a/PermissionController/res/values-bs/strings.xml b/PermissionController/res/values-bs/strings.xml index 069c6e418cf55d317e3da4658019bc0802398f97..061ed86a145158a1a58af271b0896da78524eb37 100644 --- a/PermissionController/res/values-bs/strings.xml +++ b/PermissionController/res/values-bs/strings.xml @@ -34,6 +34,7 @@ "Više informacija" "Dozvoli sve" "Uvijek dozvoli sve" + "Dozvoli ograničeni pristup" "Odabir fotografija i videozapisa" "Odaberi više" "Nemoj odabrati više" @@ -60,6 +61,7 @@ "Aplikacije" "Odobrenja za aplikaciju" "Nekorištene aplikacije" + "Uredite odabrane fotografije za aplikaciju" "Nema nekorištenih aplikacija" "0 nekorištenih aplikacija" "Nedavne odluke o odobrenjima" @@ -455,48 +457,75 @@ "Prikaži otkrivanje aktiviranja asistenta" "Prikaz ikone na statusnoj traci kada se mikrofon koristi za aktiviranje glasovne pomoći" "Dozvoliti aplikaciji <b>%1$s</b> da pristupa fotografijama i medijima na vašem uređaju?" + "Dozvoliti aplikaciji <b>%1$s</b> da pristupa fotografijama i medijskim fajlovima na uređaju <b>%2$s</b>?" "Dozvoliti aplikaciji <b>%1$s</b> da pristupa vašim kontaktima?" + "Dozvoliti aplikaciji <b>%1$s</b> da pristupa kontaktima na uređaju <b>%2$s</b>?" "Dozvoliti aplikaciji <b>%1$s</b> da pristupa lokaciji ovog uređaja?" + "Dozvoliti aplikaciji <b>%1$s</b> da pristupa lokaciji uređaja <b>%2$s</b>?" "Aplikacija će imati pristup lokaciji isključivo dok je koristite" "Dozvoliti aplikaciji <b>%1$s</b> da pristupa lokaciji ovog uređaja?" + "Dozvoliti aplikaciji <b>%1$s</b> da pristupa lokaciji uređaja <b>%2$s</b>?" "Moguće je da će aplikacija željeti pristup vašoj lokaciji sve vrijeme, čak i kada je ne budete koristili. ""Dozvolite u postavkama." "Promijeniti pristup lokaciji za aplikaciju <b>%1$s</b>?" + "Promijeniti pristup lokaciji za aplikaciju <b>%1$s</b> na uređaju <b>%2$s</b>?" "Ova aplikacija želi pristup vašoj lokaciji sve vrijeme, čak i kada je ne koristite. ""Dozvolite u postavkama." "Dozvoliti aplikaciji <b>%1$s</b> da pronađe uređaje u blizini, poveže se s njima te odredi njihov relativni položaj?" + "Dozvoliti aplikaciji <b>%1$s</b> da traži, poveže se i odredi položaj uređaja u blizini na uređaju <b>%2$s</b>?" "Dozvoliti aplikaciji <b>%1$s</b> da pronađe uređaje u blizini, poveže se s njima te odredi njihov relativni položaj? ""Dozvolite u postavkama." "Promijeniti pristup aplikacije <b>%1$s</b> lokaciji iz približne u tačnu?" + "Promijeniti pristup aplikacije <b>%1$s</b> lokaciji na uređaju <b>%2$s</b> iz približne u tačnu?" "Dozvoliti aplikaciji <b>%1$s</b> da pristupa približnoj lokaciji ovog uređaja?" + "Dozvoliti aplikaciji <b>%1$s</b> da pristupa približnoj lokaciji uređaja <b>%2$s</b>?" "Tačno" "Približno" "Dozvoliti aplikaciji <b>%1$s</b> da pristupi vašem kalendaru?" + "Dozvoliti aplikaciji <b>%1$s</b> da pristupa kalendaru na uređaju <b>%2$s</b>?" "Dozvoliti aplikaciji <b>%1$s</b> da šalje i pregleda SMS poruke?" + "Dozvoliti aplikaciji <b>%1$s</b> da šalje i pregleda SMS poruke na uređaju <b>%2$s</b>?" "Dozvoliti aplikaciji <b>%1$s</b> da pristupa fotografijama, medijima i fajlovima na vašem uređaju?" + "Dozvoliti aplikaciji <b>%1$s</b> da pristupa fotografijama, medijima i fajlovima na uređaju <b>%2$s</b>?" "Dozvoliti da <b>%1$s</b> pristupa <b>foto/video/muzičkim/audio fajlovima</b> na ovom uređaju?" "Dozvoliti da <b>%1$s</b> pristupa <b>foto/video/muzičkim/audio i drugim fajlovima</b> na uređaju?" "Dozvoliti da <b>%1$s</b> pristupa muzici i zvuku na ovom uređaju?" + "Dozvoliti aplikaciji <b>%1$s</b> da pristupa muzici i audio zapisima na uređaju <b>%2$s</b>?" "Dozvoliti aplikaciji <b>%1$s</b> da pristupa fotografijama i videozapisima na ovom uređaju?" + "Dozvoliti aplikaciji <b>%1$s</b> da pristupa fotografijama i videozapisima na uređaju <b>%2$s</b>?" "Dozvoliti aplikaciji <b>%1$s</b> da pristupa većem broju fotografija i videozapisa na uređaju?" + "Dozvoliti aplikaciji <b>%1$s</b> da pristupa većem broju fotografija i videozapisa na uređaju <b>%2$s</b>?" "Dozvoliti aplikaciji <b>%1$s</b> da snima zvuk?" + "Dozvoliti aplikaciji <b>%1$s</b> da snima zvuk na uređaju <b>%2$s</b>?" "Aplikacija će moći snimati zvuk samo za vrijeme korištenja" "Dozvoliti aplikaciji <b>%1$s</b> snimanje zvuka?" + "Dozvoliti aplikaciji <b>%1$s</b> da snima zvuk na uređaju <b>%2$s</b>?" "Ova aplikacija može tražiti da snima zvuk sve vrijeme, čak i kada je ne koristite. ""Dozvolite u postavkama." "Promijeniti pristup mikrofonu za aplikaciju <b>%1$s</b>?" + "Promijeniti pristup mikrofonu za aplikaciju <b>%1$s</b> na uređaju <b>%2$s</b>?" "Ova aplikacija traži da snima zvuk sve vrijeme, čak i kada je ne koristite. ""Dozvolite u postavkama." "Dozvoliti aplikaciji <b>%1$s</b> da pristupa informacijama o vašoj fizičkoj aktivnosti?" + "Dozvoliti aplikaciji <b>%1$s</b> da pristupa fizičkoj aktivnosti na uređaju <b>%2$s</b>?" "Dozvoliti aplikaciji <b>%1$s</b> da snima fotografije i videozapise?" + "Dozvoliti aplikaciji <b>%1$s</b> da snima slike i videozapise na uređaju <b>%2$s</b>?" "Aplikacija će moći snimati slike i videozapise samo za vrijeme korištenja" "Dozvoliti aplikaciji <b>%1$s</b> snimanje slika i videozapisa?" + "Dozvoliti aplikaciji <b>%1$s</b> da snima slike i videozapise na uređaju <b>%2$s</b>?" "Ova aplikacija može tražiti da snima slike i videozapise sve vrijeme, čak i kada je ne koristite. ""Dozvolite u postavkama." "Promijeniti pristup kameri za aplikaciju <b>%1$s</b>?" + "Promijeniti pristup kameri za aplikaciju <b>%1$s</b> na uređaju <b>%2$s</b>?" "Ova aplikacija traži da snima slike i videozapise sve vrijeme, čak i kada je ne koristite. ""Dozvolite u postavkama." "Dozvoliti aplikaciji <b>%1$s</b> da pristupa zapisnicima poziva?" + "Dozvoliti aplikaciji <b>%1$s</b> da pristupa zapisnicima telefonskih poziva na uređaju <b>%2$s</b>?" "Dozvoliti aplikaciji <b>%1$s</b> da upućuje pozive i upravlja njima?" + "Dozvoliti aplikaciji <b>%1$s</b> da uspostavlja telefonske pozive i upravlja njima na uređaju <b>%2$s</b>?" "Dozvoliti aplikaciji <b>%1$s</b> da pristupa senzornim podacima o vašim vitalnim znakovima?" + "Dozvoliti aplikaciji <b>%1$s</b> da pristupa podacima senzora o vitalnim znakovima na uređaju <b>%2$s</b>?" "Ova aplikacija želi pristupati podacima senzora o vašim vitalnim znakovima sve vrijeme, čak i kada je ne koristite. Da to promijenite, ""idite u postavke." "Dozvoliti aplikaciji <b>%1$s</b> da pristupa podacima senzora o vašim vitalnim znakovima?" + "Dozvoliti aplikaciji <b>%1$s</b> da pristupa podacima senzora o vitalnim znakovima na uređaju <b>%2$s</b>?" "Da dozvolite aplikaciji da pristupa podacima tjelesnih senzora sve vrijeme, čak i kada je ne koristite, ""idite u postavke." "Nastaviti dozvoljavati aplikaciji <b>%1$s</b> da pristupa podacima tjelesnih senzora dok se koristi?" + "Nastaviti dozvoljavati aplikaciji <b>%1$s</b> da pristupa podacima tjelesnih senzora na uređaju <b>%2$s</b> dok je koristite?" "Dozvoliti aplikaciji <b>%1$s</b> da vam šalje obavještenja?" + "Dozvoliti aplikaciji <b>%1$s</b> da šalje obavještenja na uređaj <b>%2$s</b>?" "Kontrolirana odobrenja" "Aplikacija %1$s ima pristup lokaciji" "Vaša organizacija dozvoljava aplikaciji %1$s da pristupa vašoj lokaciji" diff --git a/PermissionController/res/values-ca/strings.xml b/PermissionController/res/values-ca/strings.xml index 0187eabc6fbc8792cbced642a19015e2f4cb0778..729b8f20f9a72e3f550612d7ef20809d1dc83326 100644 --- a/PermissionController/res/values-ca/strings.xml +++ b/PermissionController/res/values-ca/strings.xml @@ -34,6 +34,7 @@ "Més informació" "Permet-ho tot" "Permet sempre tot" + "Permet l\'accés limitat" "Selecciona fotos i vídeos" "Selecciona\'n més" "No seleccionis més" @@ -60,6 +61,7 @@ "Aplicacions" "Permisos d\'aplicacions" "Aplicacions no utilitzades" + "Edita les fotos seleccionades per a aquesta aplicació" "Cap aplicació sense utilitzar" "0 aplicacions no utilitzades" "Decisions recents de permisos" @@ -455,48 +457,75 @@ "Mostra la detecció d\'activador de l\'assistent" "Mostra una icona a la barra d\'estat quan s\'utilitzi el micròfon per activar l\'assistent de veu" "Vols permetre que <b>%1$s</b> accedeixi a les fotos i al contingut multimèdia del dispositiu?" + "Vols permetre que <b>%1$s</b> accedeixi a les fotos i al contingut multimèdia del dispositiu <b>%2$s</b>?" "Vols permetre que <b>%1$s</b> accedeixi als contactes?" + "Vols permetre que <b>%1$s</b> accedeixi als contactes del dispositiu <b>%2$s</b>?" "Permetre que <b>%1$s</b> accedeixi a la ubicació del dispositiu?" + "Vols permetre que <b>%1$s</b> accedeixi a la ubicació del dispositiu <b>%2$s</b>?" "L\'aplicació només tindrà accés a la ubicació quan l\'estiguis utilitzant" "Vols permetre que <b>%1$s</b> accedeixi a la ubicació del dispositiu?" + "Vols permetre que <b>%1$s</b> accedeixi a la ubicació del dispositiu <b>%2$s</b>?" "Aquesta aplicació vol tenir accés a la teva ubicació sempre, fins i tot quan no l\'estiguis utilitzant. ""Pots permetre-ho a Configuració""." "Vols canviar l\'accés a la ubicació per a <b>%1$s</b>?" + "Vols canviar l\'accés a la ubicació de <b>%1$s</b> al dispositiu <b>%2$s</b>?" "Aquesta aplicació vol tenir accés a la teva ubicació sempre, fins i tot quan no l\'estiguis utilitzant. ""Pots permetre-ho a Configuració""." "Vols permetre que <b>%1$s</b> cerqui els dispositius propers, s\'hi connecti i en determini la posició relativa?" + "Vols permetre que <b>%1$s</b> cerqui la posició relativa de disp. propers, la determini i s\'hi connecti al <b>%2$s</b>?" "Vols permetre que <b>%1$s</b> cerqui els dispositius propers, s\'hi connecti i en determini la posició relativa? ""Permet a Configuració""." "Vols canviar l\'accés a la ubicació que té <b>%1$s</b> d\'aproximada a exacta?" + "Vols canviar l\'accés a la ubicació de <b>%1$s</b> al dispositiu <b>%2$s</b> d\'Aproximada a Exacta?" "Vols permetre que <b>%1$s</b> accedeixi a la ubicació aproximada del dispositiu?" + "Vols permetre que <b>%1$s</b> accedeixi a la ubicació aproximada del dispositiu <b>%2$s</b>?" "Exacta" "Aproximada" "Vols permetre que <b>%1$s</b> accedeixi al calendari?" + "Vols permetre que <b>%1$s</b> accedeixi al calendari del dispositiu <b>%2$s</b>?" "Vols permetre que <b>%1$s</b> enviï i llegeixi missatges SMS?" + "Vols permetre que <b>%1$s</b> enviï i llegeixi missatges SMS al dispositiu <b>%2$s</b>?" "Vols permetre que <b>%1$s</b> accedeixi a fotos, contingut multimèdia i fitxers del dispositiu?" + "Vols permetre que <b>%1$s</b> accedeixi a fotos, contingut multimèdia i fitxers del dispositiu <b>%2$s</b>?" "Vols permetre que <b>%1$s</b> accedeixi als <b>vídeos, fotos, música i àudio</b> del dispositiu?" "Vols permetre que <b>%1$s</b> accedeixi als <b>vídeos, fotos, música, àudio i altres fitxers</b>?" "Vols permetre que <b>%1$s</b> accedeixi a la música i l\'àudio d\'aquest dispositiu?" + "Vols permetre que <b>%1$s</b> accedeixi a la música i l\'àudio del dispositiu <b>%2$s</b>?" "Vols permetre que <b>%1$s</b> accedeixi a les fotos i els vídeos d\'aquest dispositiu?" + "Vols permetre que <b>%1$s</b> accedeixi a les fotos i als vídeos del dispositiu <b>%2$s</b>?" "Vols permetre que <b>%1$s</b> accedeixi a més fotos i vídeos d\'aquest dispositiu?" + "Vols permetre que <b>%1$s</b> accedeixi a més fotos i vídeos del dispositiu <b>%2$s</b>?" "Vols permetre que <b>%1$s</b> gravi àudio?" + "Vols permetre que <b>%1$s</b> gravi àudio al dispositiu <b>%2$s</b>?" "L\'aplicació només podrà gravar àudio mentre l\'estiguis utilitzant" "Vols permetre que <b>%1$s</b> gravi àudio?" + "Vols permetre que <b>%1$s</b> gravi àudio al dispositiu <b>%2$s</b>?" "És possible que aquesta aplicació vulgui gravar àudio sempre, fins i tot quan no l\'estiguis utilitzant. ""Pots permetre-ho a la configuració""." "Vols canviar l\'accés al micròfon de l\'aplicació <b>%1$s</b>?" + "Vols canviar l\'accés al micròfon de <b>%1$s</b> al dispositiu <b>%2$s</b>?" "Aquesta aplicació vol gravar àudio sempre, fins i tot quan no l\'estiguis utilitzant. ""Pots permetre-ho a la configuració""." "Vols permetre que <b>%1$s</b> accedeixi a la teva activitat física?" + "Vols permetre que <b>%1$s</b> accedeixi a la teva activitat física al dispositiu <b>%2$s</b>?" "Vols permetre que <b>%1$s</b> faci fotos i gravi vídeos?" + "Vols permetre que <b>%1$s</b> faci fotos i gravi vídeos al dispositiu <b>%2$s</b>?" "L\'aplicació només podrà fer fotos i gravar vídeos mentre l\'estiguis utilitzant" "Vols permetre que <b>%1$s</b> faci fotos i gravi vídeos?" + "Vols permetre que <b>%1$s</b> faci fotos i gravi vídeos al dispositiu <b>%2$s</b>?" "És possible que aquesta app vulgui fer fotos i gravar vídeos sempre, fins i tot quan no l\'estiguis utilitzant. ""Pots permetre-ho a la configuració""." "Vols canviar l\'accés a la càmera de l\'aplicació <b>%1$s</b>?" + "Vols canviar l\'accés a la càmera de <b>%1$s</b> al dispositiu <b>%2$s</b>?" "Aquesta aplicació vol fer fotos i gravar vídeos sempre, fins i tot quan no l\'estiguis utilitzant. ""Pots permetre-ho a la configuració""." "Vols permetre que <b>%1$s</b> accedeixi als registres de trucades del telèfon?" + "Vols permetre que <b>%1$s</b> accedeixi als registres de trucades del dispositiu <b>%2$s</b>?" "Vols permetre que <b>%1$s</b> faci trucades telefòniques i les gestioni?" + "Vols permetre que <b>%1$s</b> faci trucades i les gestioni al dispositiu <b>%2$s</b>?" "Vols permetre que <b>%1$s</b> accedeixi a les dades del sensor de constants vitals?" + "Vols permetre que <b>%1$s</b> accedeixi a les dades del sensor sobre les constants vitals al dispositiu <b>%2$s</b>?" "Aquesta aplicació vol accedir a les dades del sensor sobre les constants vitals sempre, fins i tot quan no l\'utilitzis. Per fer aquest canvi, ""ves a la configuració""." "Vols permetre que <b>%1$s</b> accedeixi a les dades dels sensors sobre les constants vitals?" + "Vols permetre que <b>%1$s</b> accedeixi a les dades del sensor sobre les constants vitals al dispositiu <b>%2$s</b>?" "Per permetre que l\'aplicació accedeixi sempre a les dades del sensor corporal, fins i tot quan no la utilitzis, ""ves a la configuració""." "Vols continuar permetent que <b>%1$s</b> accedeixi a les dades del sensor corporal mentre s\'utilitza?" + "Vols permetre que <b>%1$s</b> accedeixi a les dades del sensor corporal del <b>%2$s</b> mentre s\'utilitza?" "Vols permetre que <b>%1$s</b> t\'enviï notificacions?" + "Vols permetre que <b>%1$s</b> t\'enviï notificacions al dispositiu <b>%2$s</b>?" "Permisos controlats" "%1$s té accés a la ubicació" "La teva organització permet a %1$s accedir a la teva ubicació" diff --git a/PermissionController/res/values-cs/strings.xml b/PermissionController/res/values-cs/strings.xml index 1c28eb9124edbd8e1821b1f8389dd039055cada0..20c5944035fca68b134c5338223a36b77e8020f8 100644 --- a/PermissionController/res/values-cs/strings.xml +++ b/PermissionController/res/values-cs/strings.xml @@ -34,6 +34,7 @@ "Další informace" "Povolit vše" "Vždy zobrazit vše" + "Povolit omezený přístup" "Vybrat fotky a videa" "Vybrat další" "Nevybírat další" @@ -60,6 +61,7 @@ "Aplikace" "Oprávnění aplikace" "Nepoužívané aplikace" + "Upravit vybrané fotky pro tuto aplikaci" "Žádné nepoužívané aplikace" "Žádné nepoužívané aplikace" "Nedávná rozhodnutí o oprávnění" @@ -455,48 +457,75 @@ "Zobrazit detekci spuštění asistenta" "Zobrazovat na stavovém řádku ikonu, když bude pomocí mikrofonu aktivován hlasový asistent" "Povolit aplikaci <b>%1$s</b> přístup k fotkám a mediálnímu obsahu v zařízení?" + "Povolit aplikaci <b>%1$s</b> přístup k fotkám a médiím v zařízení <b>%2$s</b>?" "Povolit aplikaci <b>%1$s</b> přístup ke kontaktům?" + "Povolit aplikaci <b>%1$s</b> na zařízení <b>%2$s</b> přístup k vašim kontaktům?" "Povolit aplikaci <b>%1$s</b> přístup k poloze tohoto zařízení?" + "Povolit aplikaci <b>%1$s</b> přístup k poloze zařízení <b>%2$s</b>?" "Aplikace bude mít přístup k poloze, pouze když ji budete používat" "Povolit aplikaci <b>%1$s</b> přístup k poloze tohoto zařízení?" + "Povolit aplikaci <b>%1$s</b> přístup k poloze zařízení <b>%2$s</b>?" "Aplikace může požadovat přístup k poloze vždy, i když ji nebudete používat. ""Povolit ho můžete v nastavení""." "Změnit přístup k poloze pro aplikaci <b>%1$s</b>?" + "Změnit na zařízení <b>%2$s</b> přístup aplikace <b>%1$s</b> k poloze?" "Aplikace požaduje přístup k poloze vždy, i když ji nebudete používat. ""Povolit ho můžete v nastavení""." "Povolit aplikaci <b>%1$s</b> najít zařízení v okolí, připojit se k nim a zjistit jejich relativní polohu?" + "Povolit aplikaci <b>%1$s</b> na zařízení <b>%2$s</b> najít zařízení v okolí, připojit se k nim a zjistit jejich relativní polohu?" "Povolit aplikaci <b>%1$s</b> najít zařízení v okolí, připojit se k nim a zjistit jejich relativní polohu? ""Povolit to můžete v nastavení." "Změnit přístup aplikace <b>%1$s</b> k poloze z přibližné na přesnou?" + "Změnit na zařízení <b>%2$s</b> přístup aplikace <b>%1$s</b> k poloze z přibližné na přesnou?" "Povolit aplikaci <b>%1$s</b> přístup k přibližné poloze tohoto zařízení?" + "Povolit aplikaci <b>%1$s</b> přístup k přibližné poloze zařízení <b>%2$s</b>?" "Přesná" "Přibližná" "Povolit aplikaci <b>%1$s</b> přístup ke kalendáři?" + "Povolit aplikaci <b>%1$s</b> přístup ke kalendáři na zařízení <b>%2$s</b>?" "Povolit aplikaci <b>%1$s</b> odesílat a zobrazovat SMS?" + "Povolit aplikaci <b>%1$s</b> na zařízení <b>%2$s</b> odesílat a zobrazovat SMS?" "Povolit aplikaci <b>%1$s</b> přístup k fotkám, mediálnímu obsahu a souborům v zařízení?" + "Povolit aplikaci <b>%1$s</b> přístup k fotkám, médiím a videím v zařízení <b>%2$s</b>?" "Povolit aplikaci <b>%1$s</b> přístup k <b>fotkám, videím, hudbě a zvuku</b> v zařízení?" "Povolit aplikaci <b>%1$s</b> přístup k <b>fotkám, videím, hudbě, zvuku a dalším souborům</b> v zařízení?" "Povolit aplikaci <b>%1$s</b> přístup k hudbě a zvuku v zařízení?" + "Povolit aplikaci <b>%1$s</b> přístup k hudbě a zvukovému obsahu v zařízení <b>%2$s</b>?" "Povolit aplikaci <b>%1$s</b> přístup k fotkám a videím v zařízení?" + "Povolit aplikaci <b>%1$s</b> přístup k fotkám a videím v zařízení <b>%2$s</b>?" "Povolit aplikaci <b>%1$s</b> přístup k dalším fotkám a videím v zařízení?" + "Povolit aplikaci <b>%1$s</b> přístup k dalším fotkám a videím v zařízení <b>%2$s</b>?​" "Povolit aplikaci <b>%1$s</b> nahrávat zvuk?" + "Povolit aplikaci <b>%1$s</b> nahrávat na zařízení <b>%2$s</b> zvuk?" "Aplikace bude moci zaznamenávat zvuk, pouze když ji budete používat" "Povolit aplikaci <b>%1$s</b> nahrávat zvuk?" + "Povolit aplikaci <b>%1$s</b> nahrávat na zařízení <b>%2$s</b> zvuk?" "Tato aplikace může chtít zaznamenávat zvuk kdykoli, dokonce i když ji nepoužíváte. ""Povolit v nastavení" "Změnit přístup k mikrofonu pro aplikaci <b>%1$s</b>?" + "Změnit na zařízení <b>%2$s</b> přístup aplikace <b>%1$s</b> k mikrofonu?" "Tato aplikace chce zaznamenávat zvuk kdykoli, dokonce i když ji nepoužíváte. ""Povolit v nastavení" "Povolit aplikaci <b>%1$s</b> přístup k vaší fyzické aktivitě?" + "Povolit aplikaci <b>%1$s</b> na zařízení <b>%2$s</b> přístup k vaší fyzické aktivitě?" "Povolit aplikaci <b>%1$s</b> fotit a nahrávat videa?" + "Povolit aplikaci <b>%1$s</b> fotit na zařízení <b>%2$s</b> a nahrávat na něm video?" "Aplikace bude moci pořizovat snímky a nahrávat videa, pouze když ji budete používat" "Povolit aplikaci <b>%1$s</b> fotit a nahrávat videa?" + "Povolit aplikaci <b>%1$s</b> fotit na zařízení <b>%2$s</b> a nahrávat na něm video?" "Tato aplikace může chtít pořizovat snímky a nahrávat videa kdykoli, dokonce i když ji nepoužíváte. ""Povolit v nastavení" "Změnit přístup k fotoaparátu pro aplikaci <b>%1$s</b>?" + "Změnit na zařízení <b>%2$s</b> přístup aplikace <b>%1$s</b> k mikrofonu?" "Tato aplikace chce pořizovat snímky a nahrávat videa kdykoli, dokonce i když ji nepoužíváte. ""Povolit v nastavení" "Povolit aplikaci <b>%1$s</b> přístup k seznamu telefonních hovorů?" + "Povolit aplikaci <b>%1$s</b> přístup k vašim seznamům hovorů na zařízení <b>%2$s</b>?" "Povolit aplikaci <b>%1$s</b> uskutečňovat a spravovat telefonní hovory?" + "Povolit aplikaci <b>%1$s</b> uskutečňovat a spravovat na zařízení <b>%2$s</b> telefonní hovory?" "Povolit aplikaci <b>%1$s</b> přístup k údajům ze senzorů vašich životních funkcí?" + "Povolit aplikaci <b>%1$s</b> na zařízení <b>%2$s</b> přístup k datům ze senzorů životních funkcí?" "Aplikace požaduje přístup k datům ze senzorů vašich životních funkcí vždy, i když ji nebudete používat. Pokud tuto změnu chcete provést, ""přejděte do nastavení." "Povolit aplikaci <b>%1$s</b> přístup k datům ze senzorů vašich životních funkcí?" + "Povolit aplikaci <b>%1$s</b> na zařízení <b>%2$s</b> přístup k datům ze senzorů životních funkcí?" "Pokud chcete této aplikaci povolit trvalý přístup k datům z tělesných senzorů, i když aplikaci nepoužíváte, ""přejděte do nastavení""." "Chcete, aby aplikace <b>%1$s</b> dál měla přístup k datům z tělesných senzorů během používání aplikace?" + "Chcete, aby aplikace <b>%1$s</b> na zařízení <b>%2$s</b> měla během používání i nadále přístup k datům z tělesných senzorů?" "Povolit aplikaci <b>%1$s</b> odesílat oznámení?" + "Povolit aplikaci <b>%1$s</b> odesílat na zařízení <b>%2$s</b> oznámení?" "Spravovaná oprávnění" "Aplikace %1$s má přístup k poloze" "Vaše organizace umožňuje aplikaci %1$s přístup k vaší poloze" diff --git a/PermissionController/res/values-da/strings.xml b/PermissionController/res/values-da/strings.xml index 7fe9f930911959e726b348cff9b1ca54c3880995..7655150ee598c8bddf40fad7e147edd2fc8586c2 100644 --- a/PermissionController/res/values-da/strings.xml +++ b/PermissionController/res/values-da/strings.xml @@ -34,6 +34,7 @@ "Mere info" "Tillad alle" "Tillad altid alle" + "Tillad begrænset adgang" "Vælg billeder og videoer" "Vælg flere" "Vælg ikke flere" @@ -60,6 +61,7 @@ "Apps" "Apptilladelser" "Apps, du ikke bruger" + "Rediger valget af billeder for denne app" "Ingen ubrugte apps" "Der er 0 ubrugte apps" "Nylige beslutninger om tilladelser" @@ -263,7 +265,7 @@ "Nogle tilladelser blev fjernet for at beskytte dit privatliv. Tryk for at gennemgå dem" "Tilladelser er fjernet for ubrugte apps" "Nogle apps er ikke blevet brugt i et par måneder. Tryk for at gennemgå dem." - "{count,plural, =1{# ubrugt app}one{# ubrugt app}other{# ubrugt apps}}" + "{count,plural, =1{# ubrugt app}one{# ubrugt app}other{# ubrugte apps}}" "Tilladelser og midlertidige filer er blevet fjernet, og notifikationer blev stoppet. Tryk for at se." "Gennemgå apps, som har fået fjernet tilladelser" "Tilladelser og midlertidige filer for de apps, du ikke har brugt for nylig, blev fjernet, og notifikationer ophørte." @@ -455,48 +457,75 @@ "Vis aktiveringsregistrering for assistenten" "Vis ikon på statusbjælken, når mikrofonen bruges til at aktivere taleassistenten" "Vil du give <b>%1$s</b> adgang til billeder og medier på din enhed?" + "Vil du give <b>%1$s</b> adgang til billeder og medier på din <b>%2$s</b>?" "Vil du give <b>%1$s</b> adgang til dine kontakter?" + "Vil du give <b>%1$s</b> adgang til dine kontakter på din <b>%2$s</b>?" "Vil du give <b>%1$s</b> adgang til enhedens lokation?" + "Vil du give <b>%1$s</b> adgang til lokationen for din <b>%2$s</b>?" "Appen har kun adgang til lokationen, når du bruger appen" "Vil du give <b>%1$s</b> adgang til enhedens lokation?" + "Vil du give <b>%1$s</b> adgang til lokationen for din <b>%2$s</b>?" "Denne app vil muligvis gerne have adgang til din lokation hele tiden, også når du ikke bruger appen. ""Giv tilladelse under Indstillinger." "Vil du skifte lokationsadgang for <b>%1$s</b>?" + "Vil du ændre lokationsadgangen for <b>%1$s</b> på din <b>%2$s</b>?" "Appen vil gerne have adgang til din lokation hele tiden, også når du ikke bruger appen. ""Giv appen tilladelse i Indstillinger." "Skal <b>%1$s</b> kunne finde, oprette forbindelse til og fastslå den relative placering af enheder i nærheden?" + "Vil du give <b>%1$s</b> tilladelse til at finde, oprette forbindelse til og bestemme den relative position af enheder i nærheden på din <b>%2$s</b>?" "Skal <b>%1$s</b> kunne finde, oprette forbindelse til og fastslå den relative placering af enheder i nærheden? ""Tillad i Indstillinger." "Vil du skifte lokationsadgang for <b>%1$s</b> fra omtrentlig til nøjagtig?" + "Vil du ændre lokationsadgangen for <b>%1$s</b> på din <b>%2$s</b> fra omtrentlig til præcis?" "Vil du give <b>%1$s</b> adgang til enhedens omtrentlige lokation?" + "Vil du give <b>%1$s</b> adgang til den omtrentlige lokation for din <b>%2$s</b>?" "Præcis" "Omtrentlig" "Vil du give <b>%1$s</b> adgang til din kalender?" + "Vil du give <b>%1$s</b> adgang til din kalender på din <b>%2$s</b>?" "Vil du give <b>%1$s</b> tilladelse til at sende og se sms-beskeder?" + "Vil du give <b>%1$s</b> tilladelse til at sende og se sms-beskeder på din <b>%2$s</b>?" "Vil du give <b>%1$s</b> adgang til billeder, medier og filer på din enhed?" + "Vil du give <b>%1$s</b> adgang til billeder, medier og filer på din <b>%2$s</b>?" "Vil du give <b>%1$s</b> adgang til <b>billeder, videoer, musik og lyd</b> på denne enhed?" "Vil du give <b>%1$s</b> adgang til <b>billeder, videoer, musik, lyd og andre filer</b> på denne enhed?" "Vil du give <b>%1$s</b> adgang til musik og lyd på denne enhed?" + "Vil du give <b>%1$s</b> adgang til musik og lyd på din <b>%2$s</b>?" "Vil du give <b>%1$s</b> adgang til billeder og videoer på denne enhed?" + "Vil du give <b>%1$s</b> adgang til billeder og videoer på din <b>%2$s</b>?" "Vil du give <b>%1$s</b> tilladelse til at tilgå flere billeder og videoer på denne enhed?" + "Vil du give <b>%1$s</b> adgang til flere billeder og videoer på din <b>%2$s</b>?" "Vil du give <b>%1$s</b> tilladelse til at optage lyd?" + "Vil du give <b>%1$s</b> tilladelse til at optage lyd på din <b>%2$s</b>?" "Appen kan kun optage lyd, mens du bruger appen" "Vil du give <b>%1$s</b> tilladelse til at optage lyd?" + "Vil du give <b>%1$s</b> tilladelse til at optage lyd på din <b>%2$s</b>?" "Denne app vil gerne optage lyd hele tiden, også når du ikke bruger appen. ""Tillad dette i indstillingerne""." "Vil du skifte mikrofonadgang for <b>%1$s</b>?" + "Vil du ændre mikrofonadgangen for <b>%1$s</b> på din <b>%2$s</b>?" "Denne app vil gerne optage lyd hele tiden, også når du ikke bruger appen. ""Tillad dette i indstillingerne""." "Vil du tillade, at <b>%1$s</b> får adgang til din fysiske aktivitet?" + "Vil du give <b>%1$s</b> adgang til din fysiske aktivitet på din <b>%2$s</b>?" "Vil du give <b>%1$s</b> tilladelse til at tage billeder og optage video?" + "Vil du give <b>%1$s</b> tilladelse til at tage billeder og optage video på din <b>%2$s</b>?" "Appen kan kun tage billeder og optage video, mens du bruger appen" "Vil du give <b>%1$s</b> tilladelse til at tage billeder og optage video?" + "Vil du give <b>%1$s</b> tilladelse til at tage billeder og optage video på din <b>%2$s</b>?" "Denne app vil gerne tage billeder og optage video hele tiden, også når du ikke bruger appen. ""Tillad dette i indstillingerne""." "Vil du skifte kameraadgang for <b>%1$s</b>?" + "Vil du ændre kameraadgangen for <b>%1$s</b> på din <b>%2$s</b>?" "Denne app vil gerne tage billeder og optage video hele tiden, også når du ikke bruger appen. ""Tillad dette i indstillingerne""." "Vil du give <b>%1$s</b> adgang til dine opkaldslister?" + "Vil du give <b>%1$s</b> adgang til din historik over telefonopkald på din <b>%2$s</b>?" "Vil du give <b>%1$s</b> tilladelse til at foretage og administrere telefonopkald?" + "Vil du give <b>%1$s</b> tilladelse til at foretage og administrere telefonopkald på din <b>%2$s</b>?" "Vil du give <b>%1$s</b> adgang til sensordata om dine vitale værdier?" + "Vil du give <b>%1$s</b> adgang til sensordata om dine vitale værdier på din <b>%2$s</b>?" "Denne app anmoder om at tilgå sensordataene om dine vitale værdier hele tiden, også når du ikke bruger appen. Du kan foretage denne ændring ved at ""gå til indstillingerne." "Vil du give <b>%1$s</b> adgang til sensordataene om dine vitale værdier?" + "Vil du give <b>%1$s</b> adgang til sensordataene om dine vitale værdier på din <b>%2$s</b>?" "Du kan give denne app adgang til kropssensordata hele tiden – selv når du ikke bruger appen – ved at ""gå til indstillingerne." "Vil du fortsætte med at give <b>%1$s</b> adgang til kropssensordata, mens appen er i brug?" + "Vil du fortsat give <b>%1$s</b> adgang til kropssensordata på din <b>%2$s</b>, mens appen er i brug?" "Vil du give <b>%1$s</b> tilladelse til at sende dig notifikationer?" + "Vil du give <b>%1$s</b> tilladelse til at sende dig notifikationer på din <b>%2$s</b>?" "Administrerede tilladelser" "%1$s har lokationsadgang" "Din organisation har givet %1$s tilladelse til at tilgå din lokation" diff --git a/PermissionController/res/values-de-v34/strings.xml b/PermissionController/res/values-de-v34/strings.xml index 8b6f95055cd2c2e414c9a8db67008c77bf9418cd..ed699cce39e2c8c8748bc0f33b1a079dda22ace3 100644 --- a/PermissionController/res/values-de-v34/strings.xml +++ b/PermissionController/res/values-de-v34/strings.xml @@ -17,7 +17,7 @@ - "Sicherheit & Datenschutz" + "Datenschutz & Sicherheit" "Einstellungen" "Health Connect" "App-Zugriff auf Gesundheitsdaten verwalten" diff --git a/PermissionController/res/values-de/strings.xml b/PermissionController/res/values-de/strings.xml index 1ac8e1d38395a842b4a7a4b99619e164467a5ef9..4b862e97d22aea2fd1b1f68598f1910151960527 100644 --- a/PermissionController/res/values-de/strings.xml +++ b/PermissionController/res/values-de/strings.xml @@ -34,6 +34,7 @@ "Weitere Infos" "Vollen Zugriff erlauben" "Immer vollen Zugriff erlauben" + "Eingeschränkten Zugriff zulassen" "Fotos und Videos auswählen" "Mehr auswählen" "Keine weiteren auswählen" @@ -60,6 +61,7 @@ "Apps" "App-Berech­tigungen" "Nicht verwendete Apps" + "Für diese App ausgewählte Fotos bearbeiten" "Keine nicht verwendeten Apps" "Keine nicht verwendeten Apps" "Aktuelle Berechtigungsentscheidungen" @@ -455,48 +457,75 @@ "Auslösererkennung für Assistenten anzeigen" "Symbol in der Statusleiste anzeigen, wenn das Mikrofon verwendet wird, um den Sprachassistenten zu aktivieren" "<b>%1$s</b> erlauben, auf Fotos und Medien auf deinem Gerät zuzugreifen?" + "Darf <b>%1$s</b> auf deinem <b>%2$s</b> auf Fotos und Medien zugreifen?" "„%1$s“ erlauben, auf deine Kontakte zuzugreifen?" + "Darf <b>%1$s</b> auf deinem <b>%2$s</b> auf die Kontakte zugreifen?" "<b>%1$s</b> erlauben, den Gerätestandort abzurufen?" + "Darf <b>%1$s</b> auf deinem <b>%2$ss</b> auf die Standortdaten zugreifen?" "Die App hat nur Zugriff auf den Gerätestandort, solange du sie verwendest" "<b>%1$s</b> erlauben, den Gerätestandort abzurufen?" + "Darf <b>%1$s</b> auf deinem <b>%2$s<b> auf die Standortdaten zugreifen?" "Diese App möchte eventuell Zugriff auf deinen Standort haben, auch wenn du sie nicht verwendest. ""Du kannst das in den Einstellungen zulassen." "Standortzugriff für <b>%1$s</b> ändern?" + "Standortzugriff für <b>%1$s</b> auf deinem <b>%2$s</b> ändern?" "Diese App möchte jederzeit Zugriff auf deinen Standort haben, auch wenn du sie nicht verwendest. ""Du kannst das in den Einstellungen zulassen." "Zulassen, dass <b>%1$s</b> Geräte in der Nähe finden, sich mit ihnen verbinden und ihre relative Position bestimmen kann?" + "Darf <b>%1$s</b> auf deinem <b>%2$s</b> die relative Position von Geräten in der Nähe bestimmen und sich verbinden?" "Zulassen, dass <b>%1$s</b> Geräte in der Nähe finden, sich mit ihnen verbinden und ihre relative Position bestimmen kann? ""In den Einstellungen zulassen." "Soll der Standortzugriff von <b>%1$s</b> von „Ungefähr“ zu „Genau“ geändert werden?" + "Standortzugriff von <b><b>%1$s</b></b> auf deinem <b>%2$s</b> von „ungefähr“ zu „genau“ ändern?" "<b>%1$s</b> erlauben, den ungefähren Gerätestandort abzurufen?" + "Darf <b>%1$s</b> auf deinem <b>%2$ss</b> auf die Angaben zum ungefähren Standort zugreifen?" "Genau" "Ungefähr" "<b>%1$s</b> erlauben, auf deinen Kalender zuzugreifen?" + "Darf <b>%1$s</b> auf deinem <b>%2$s</b> auf den Kalender zugreifen?" "<b>%1$s</b> erlauben, SMS zu senden und aufzurufen?" + "Darf <b>%1$s</b> dir auf deinem <b>%2$s</b> SMS-Nachrichten senden und auf sie zugreifen?" "<b>%1$s</b> erlauben, auf Fotos, Medien und Dateien auf deinem Gerät zuzugreifen?" + "Darf <b>%1$s</b> auf deinem <b>%2$s</b> auf Fotos, Medien und Dateien zugreifen?" "<b>%1$s</b> erlauben, auf <b>Foto-, Video-, Musik- und Audiodateien</b> auf diesem Gerät zuzugreifen?" "<b>%1$s</b> erlauben, auf <b>Foto-, Video-, Musik-, Audio- und andere Dateien</b> auf diesem Gerät zuzugreifen?" "<b>%1$s</b> erlauben, auf Musik- und Audiodateien auf diesem Gerät zuzugreifen?" + "Darf <b>%1$s</b> auf deinem <b>%2$s</b> auf Musik- und Audiodateien zugreifen?" "<b>%1$s</b> erlauben, auf Fotos und Videos auf diesem Gerät zuzugreifen?" + "Darf <b>%1$s</b> auf deinem <b>%2$s</b> auf Fotos und Videos zugreifen?" "Darf <b>%1$s</b> auf weitere Fotos und Videos auf diesem Gerät zugreifen?" + "Darf <b>%1$s</b> auf deinem <b>%2$s</b> auf weitere Fotos und Videos zugreifen?" "<b>%1$s</b> erlauben, Audioaufnahmen zu machen?" + "Darf <b>%1$s</b> mit deinem <b>%2$s</b> Audioaufnahmen machen?" "Diese App kann nur Audioaufnahmen machen, solange du sie verwendest" "<b>%1$s</b> erlauben, Audioaufnahmen zu machen?" + "Darf <b>%1$s</b> mit deinem <b>%2$s</b> Audioaufnahmen machen?" "Diese App möchte ggf. jederzeit Audioaufnahmen machen können, auch wenn du sie nicht verwendest. ""Du kannst das in den Einstellungen zulassen." "Mikrofonzugriff für <b>%1$s</b> ändern?" + "Mikrofonzugriff für <b>%1$s</b> auf deinem <b>%2$s</b> ändern?" "Diese App möchte jederzeit Audioaufnahmen machen können, auch wenn du sie nicht verwendest. ""Du kannst das in den Einstellungen zulassen." "<b>%1$s</b> erlauben, auf deine körperliche Aktivität zuzugreifen?" + "Darf <b>%1$s</b> auf deinem <b>%2$s</b> auf die Daten zu deinen körperlichen Aktivitäten zugreifen?" "<b>%1$s</b> erlauben, Bilder und Videos aufzunehmen?" + "Darf <b>%1$s</b> mit deinem <b>%2$s</b> Foto- und Videoaufnahmen machen?" "Diese App kann nur Bilder und Videos aufnehmen, solange du sie verwendest" "<b>%1$s</b> erlauben, Bilder und Videos aufzunehmen?" + "Darf <b>%1$s</b> mit deinem <b>%2$s</b> Foto- und Videoaufnahmen machen?" "Diese App möchte ggf. jederzeit Bilder und Videos aufnehmen können, auch wenn du sie nicht verwendest. ""Du kannst das in den Einstellungen zulassen." "Kamerazugriff für <b>%1$s</b> ändern?" + "Kamerazugriff für <b>%1$s</b> auf deinem <b>%2$s</b> ändern?" "Diese App möchte jederzeit Bilder und Videos aufnehmen können, auch wenn du sie nicht verwendest. ""Du kannst das in den Einstellungen zulassen." "<b>%1$s</b> erlauben, auf deine Anrufliste zuzugreifen?" + "Darf <b>%1$s</b> auf deinem <b>%2$s</b> auf die Anruflisten zugreifen?" "<b>%1$s</b> erlauben, Anrufe zu starten und zu verwalten?" + "Darf <b>%1$s</b> auf deinem <b>%2$s</b> Anrufe starten und verwalten?" "<b>%1$s</b> erlauben, auf Sensordaten zu deinen Vitalfunktionen zuzugreifen?" + "Darf <b>%1$s</b> auf deinem <b>%2$s</b> auf Sensordaten zu deinen Vitalzeichen zugreifen?" "Die App möchte jederzeit auf die Sensordaten zu deinen Vitalfunktionen zugreifen, auch wenn du sie nicht verwendest. Du kannst das ""in den Einstellungen ändern""." "<b>%1$s</b> erlauben, auf Sensordaten zu deinen Vitalfunktionen zuzugreifen?" + "Darf <b>%1$s</b> auf deinem <b>%2$s</b> auf die Sensordaten zu deinen Vitalzeichen zugreifen?" "Damit diese App dauerhaft auf Daten des Körpersensors zugreifen kann, auch dann, wenn sie nicht verwendet wird, ""rufe die Einstellungen auf""." "<b>%1$s</b> Zugriff auf Körpersensordaten bei Verwendung weiter erlauben?" + "Darf <b>%1$s</b> bei Nutzung der App weiter auf Körpersensordaten auf deinem <b>%2$s</b> zugreifen?" "<b>%1$s</b> erlauben, dir Benachrichtigungen zu senden?" + "Darf <b>%1$s</b> dir auf deinem <b>%2$s</b> Benachrichtigungen senden?" "Erteilte Berechtigungen" "%1$s hat Standortzugriff" "Deine Organisation erlaubt %1$s den Zugriff auf deinen Standort" @@ -520,7 +549,7 @@ "Für Apps und Dienste" "Die Mikrofondaten können immer noch geteilt werden, wenn du den Notruf wählst." "Ändern" - "Sicherheit & Datenschutz" + "Datenschutz & Sicherheit" "Gerät prüfen" "Schließen" "Diese Warnung schließen?" @@ -531,7 +560,7 @@ "Sicherheits- und Datenschutzstatus. %1$s. %2$s" "Sicherheitseinstellungen" "Berechtigungen" - "Sicherheit & Datenschutz" + "Datenschutz & Sicherheit" "Status prüfen" "Datenschutzeinstellungen" "Weitere Einstellungen" diff --git a/PermissionController/res/values-el/strings.xml b/PermissionController/res/values-el/strings.xml index 54056ef0160d4784e0a1b926051bb00ca0799d99..a8039d2d932357165c2810428db6a6ef2ae65b34 100644 --- a/PermissionController/res/values-el/strings.xml +++ b/PermissionController/res/values-el/strings.xml @@ -34,6 +34,7 @@ "Περισσότερα" "Να επιτρέπεται" "Να επιτρέπονται πάντα όλα" + "Να επιτρέπεται περιορισμένη πρόσβαση" "Επιλογή φωτογραφιών και βίντεο" "Επιλέξτε περισσότερα" "Να μην γίνει επιλογή περισσότερων" @@ -60,6 +61,7 @@ "Εφαρμογές" "Άδειες εφαρμογών" "Εφαρ. που δεν χρησιμοποιούνται" + "Επεξεργασία επιλεγμένων φωτογραφιών για αυτή την εφαρμογή" "Όλες οι εφαρμογές χρησ/νται" "0 εφαρμογές που δεν χρησ/νται" "Πρόσφατες αποφάσεις για άδειες" @@ -455,48 +457,75 @@ "Εμφάνιση εντοπισμού ενεργοποίησης βοηθού" "Εμφάνιση εικονιδίου στη γραμμή κατάστασης όταν το μικρόφωνο χρησιμοποιείται για την ενεργοποίηση του φωνητικού βοηθού" "Να επιτρέπεται στο <b>%1$s</b> να έχει πρόσβαση σε φωτογραφίες και μέσα στη συσκευή σας;" + "Επιτρέπεται στην εφαρμογή <b>%1$s</b> η πρόσβαση σε φωτογραφίες και μέσα στη συσκευή <b>%2$s</b>;" "Να επιτρέπεται στο <b>%1$s</b> να έχει πρόσβαση στις επαφές σας;" + "Επιτρέπεται στην εφαρμογή <b>%1$s</b> η πρόσβαση στις επαφές σας στη συσκευή <b>%2$s</b>;" "Να επιτρέπεται στην εφαρμογή <b>%1$s</b> η πρόσβαση στην τοποθεσία αυτής της συσκευής;" + "Επιτρέπεται στην εφαρμογή <b>%1$s</b> η πρόσβαση στην τοποθεσία της συσκευής <b>%2$s</b>;" "Η εφαρμογή θα έχει πρόσβαση στην τοποθεσία μόνο κατά τη διάρκεια χρήσης της εφαρμογής" "Να επιτρέπεται στο <b>%1$s</b> να έχει πρόσβαση στην τοποθεσία αυτής της συσκευής;" + "Επιτρέπεται στην εφαρμογή <b>%1$s</b> η πρόσβαση στην τοποθεσία της συσκευής <b>%2$s;" "Αυτή η εφαρμογή θέλει να έχει συνεχώς πρόσβαση στην τοποθεσία σας, ακόμη και όταν δεν χρησιμοποιείτε την εφαρμογή. ""Εγκρίνετε το αίτημα στις ρυθμίσεις." "Αλλαγή πρόσβασης στην τοποθεσία για την εφαρμογή <b>%1$s</b>;" + "Αλλαγή της πρόσβασης σε τοποθεσία για την εφαρμογή <b>%1$s</b> στη συσκευή <b>%2$s</b>;" "Αυτή η εφαρμογή θέλει να έχει συνεχώς πρόσβαση στην τοποθεσία σας, ακόμη και όταν δεν χρησιμοποιείτε την εφαρμογή. ""Εγκρίνετε το αίτημα στις ρυθμίσεις." "Να επιτρέπεται η εύρεση, η σύνδεση κι ο προσδιορισμός σχετικής τοποθεσίας των κοντινών συσκευών από <b>%1$s</b>;" + "Επιτρέπεται στο <b>%1$s</b> εύρεση, σύνδεση και προσδιορ. σχετ. θέσης κοντινών συσκευών στο <b>%2$s</b>;" "Να επιτρέπεται η εύρεση, η σύνδεση κι ο προσδιορισμός σχετικής τοποθεσίας των κοντινών συσκευών από <b>%1$s</b>; ""Έγκριση στις Ρυθμίσεις." "Αλλαγή της πρόσβασης της εφαρμογής <b>%1$s</b> στην τοποθεσία από κατά προσέγγιση σε ακριβή;" + "Αλλαγή της πρόσβασης της εφαρμογής <b>%1$s</b> στην τοποθεσία της συσκευής <b>%2$s</b> από κατά προσέγγιση σε ακριβή;" "Να επιτρέπεται στο <b>%1$s</b> να έχει πρόσβαση στην κατά προσέγγιση τοποθεσία αυτής της συσκευής;" + "Επιτρέπεται στο <b>%1$s</b> η πρόσβαση στην τοποθεσία κατά προσέγγιση της συσκευής <b>%2$s</b>;" "Ακριβής" "Κατά προσέγγιση" "Να επιτρέπεται στο <b>%1$s</b> να έχει πρόσβαση στο ημερολόγιό σας;" + "Επιτρέπεται στην εφαρμογή <b>%1$s</b> η πρόσβαση στο ημερολόγιό σας στη συσκευή <b>%2$s</b>;" "Να επιτρέπεται στο <b>%1$s</b> η αποστολή και η προβολή μηνυμάτων SMS;" + "Επιτρέπεται στην εφαρμογή <b>%1$s</b> η αποστολή και η προβολή μηνυμάτων SMS στη συσκευή <b>%2$s</b>;" "Να επιτρέπεται στο <b>%1$s</b> να έχει πρόσβαση σε φωτογραφίες, μέσα και αρχεία στη συσκευή σας;" + "Επιτρέπεται στο <b>%1$s</b> η πρόσβαση σε φωτογραφίες, μέσα και αρχεία στη συσκευή <b>%2$s</b>;" "Να επιτρέπεται στην εφαρμογή <b>%1$s</b> η πρόσβαση σε <b>φωτογραφίες, βίντεο, μουσική και ήχο</b> της συσκευής;" "Να επιτρέπεται στην εφαρμογή <b>%1$s</b> η πρόσβαση σε <b>φωτογραφίες, βίντεο, μουσική, ήχο και άλλα αρχεία</b> της συσκευής;" "Να επιτρέπεται στην εφαρμογή <b>%1$s</b> η πρόσβαση στη μουσική και στα αρχεία ήχου αυτής της συσκευής;" + "Επιτρέπεται στην εφαρμογή <b>%1$s</b> η πρόσβαση σε μουσική και ήχο στη συσκευή <b>%2$s</b>;" "Να επιτρέπεται στην εφαρμογή <b>%1$s</b> η πρόσβαση στις φωτογραφίες και τα βίντεο αυτής της συσκευής;" + "Επιτρέπεται στην εφαρμογή <b>%1$s</b> η πρόσβαση σε φωτογραφίες και βίντεο στη συσκευή <b>%2$s</b>;" "Να επιτρέπεται στην εφαρμογή <b>%1$s</b> η πρόσβαση σε περισσότερες φωτογραφίες και βίντεο αυτής της συσκευής;" + "Επιτρέπεται στο <b>%1$s</b> η πρόσβαση σε περισσότερες φωτογραφίες και βίντεο στη συσκευή <b>%2$s</b>;" "Να επιτρέπεται στο <b>%1$s</b> η εγγραφή ήχου;" + "Επιτρέπεται στην εφαρμογή <b>%1$s</b> η εγγραφή ήχου στη συσκευή <b>%2$s</b>;" "Αυτή η εφαρμογή θα μπορεί να εγγράφει ήχο μόνο όταν τη χρησιμοποιείτε" "Να επιτρέπεται στο <b>%1$s</b> η εγγραφή ήχου;" + "Επιτρέπεται στην εφαρμογή <b>%1$s</b> η εγγραφή ήχου στη συσκευή <b>%2$s</b>;" "Αυτή η εφαρμογή ενδέχεται να εγγράφει βίντεο συνεχώς, ακόμη και όταν δεν τη χρησιμοποιείτε. ""Έγκριση στις ρυθμίσεις." "Αλλαγή πρόσβασης στο μικρόφωνο για την εφαρμογή <b>%1$s</b>;" + "Αλλαγή της πρόσβασης μικροφώνου για την εφαρμογή <b>%1$s</b> στη συσκευή <b>%2$s</b>;" "Αυτή η εφαρμογή θέλει να εγγράφει ήχο συνεχώς, ακόμη και όταν δεν τη χρησιμοποιείται. ""Έγκριση στις ρυθμίσεις." "Να επιτρέπεται στο <b>%1$s</b> να έχει πρόσβαση στη σωματική σας δραστηριότητα;" + "Επιτρέπεται στην εφαρμογή <b>%1$s</b> η πρόσβαση στη σωματική δραστηριότητά σας στη συσκευή <b>%2$s</b>;" "Να επιτρέπεται στο <b>%1$s</b> η λήψη φωτογραφιών και η εγγραφή βίντεο;" + "Επιτρέπεται στην εφαρμογή <b>%1$s</b> η λήψη φωτογραφιών και η εγγραφή βίντεο στη συσκευή <b>%2$s</b>;" "Αυτή η εφαρμογή θα μπορεί να τραβάει φωτογραφίες και να εγγράφει βίντεο μόνο όταν τη χρησιμοποιείτε" "Να επιτρέπεται στο <b>%1$s</b> η λήψη φωτογραφιών και η εγγραφή βίντεο;" + "Επιτρέπεται στην εφαρμογή <b>%1$s</b> η λήψη φωτογραφιών και η εγγραφή βίντεο στη συσκευή <b>%2$s</b>;" "Αυτή η εφαρμογή ενδέχεται να τραβάει φωτογραφίες και να εγγράφει βίντεο συνεχώς, ακόμη και όταν δεν τη χρησιμοποιείτε. ""Έγκριση στις Ρυθμίσεις." "Αλλαγή πρόσβασης στην κάμερα για την εφαρμογή <b>%1$s</b>;" + "Αλλαγή της πρόσβασης κάμερας για την εφαρμογή <b>%1$s</b> στη συσκευή <b>%2$s</b>;" "Αυτή η εφαρμογή θέλει να τραβάει φωτογραφίες και να εγγράφει βίντεο συνεχώς, ακόμη και όταν δεν τη χρησιμοποιείται. ""Έγκριση στις Ρυθμίσεις." "Να επιτρέπεται στο <b>%1$s</b> να έχει πρόσβαση στα αρχεία καταγραφής τηλεφωνικών κλήσεών σας;" + "Επιτρέπεται στο <b>%1$s</b> η πρόσβαση στα αρχεία καταγραφής τηλεφ. κλήσεων στη συσκευή <b>%2$s</b>;" "Να επιτρέπεται στο <b>%1$s</b> η πραγματοποίηση και η διαχείριση τηλεφωνικών κλήσεων;" + "Επιτρέπεται στο <b>%1$s</b> η πραγματοποίηση και η διαχείριση τηλεφ. κλήσεων στη συσκευή <b>%2$s</b>;" "Να επιτρέπεται στο <b>%1$s</b> να έχει πρόσβαση στα δεδομένα αισθητήρα σχετικά με τις ζωτικές ενδείξεις σας;" + "Επιτρέπεται στο <b>%1$s</b> η πρόσβαση στα δεδομένα αισθητήρων ζωτικών λειτουργιών σας στο <b>%2$s</b>;" "Αυτή η εφαρμογή θέλει πρόσβαση στα δεδομένα αισθητήρα για τις ζωτικές σας ενδείξεις, ακόμη και όταν δεν τη χρησιμοποιείτε. Για να κάνετε αυτή την αλλαγή, ""μεταβείτε στις ρυθμίσεις." "Να επιτρέπεται στο <b>%1$s</b> η πρόσβαση σε δεδομένα αισθητήρα σχετικά με τις ζωτικές ενδείξεις σας;" + "Επιτρέπεται στο <b>%1$s</b> η πρόσβαση στα δεδομένα αισθητήρων ζωτικών λειτουργιών σας στο <b>%2$s</b>;" "Για να επιτρέψετε σε αυτή την εφαρμογή να έχει πρόσβαση σε δεδομένα αισθητήρων σώματος οποιαδήποτε στιγμή, ακόμα και όταν δεν χρησιμοποιείτε την εφαρμογή, ""μεταβείτε στις ρυθμίσεις." "Να συνεχίσει να επιτρέπεται στο <b>%1$s</b> η πρόσβαση σε δεδομένα αισθητήρων σώματος ενώ χρησιμοποιείται;" + "Να συνεχ. να επιτρ. σε <b>%1$s</b> η πρόσβ. σε δεδομ. αισθ. σώμ. σε <b>%2$s</b> κατά τη χρήση της εφαρ.;" "Να επιτρέπεται στο <b>%1$s</b> να σας στέλνει ειδοποιήσεις;" + "Επιτρέπεται στην εφαρμογή <b>%1$s</b> η αποστολή ειδοποιήσεων στη συσκευή <b>%2$s</b>;" "Ελεγχόμενες άδειες" "Η εφαρμογή %1$s έχει πρόσβαση στην τοποθεσία" "Ο οργανισμός σας επιτρέπει στην εφαρμογή %1$s να έχει πρόσβαση στην τοποθεσία σας" diff --git a/PermissionController/res/values-en-rAU/strings.xml b/PermissionController/res/values-en-rAU/strings.xml index 77c6837ad7bd43597bd89ef14da9c2d2cf1acbf5..6fb7994a8fc0b29c35fd37d7f2831a492e10729d 100644 --- a/PermissionController/res/values-en-rAU/strings.xml +++ b/PermissionController/res/values-en-rAU/strings.xml @@ -34,6 +34,7 @@ "More info" "Allow all" "Always allow all" + "Allow limited access" "Select photos and videos" "Select more" "Don\'t select more" @@ -60,6 +61,7 @@ "Apps" "App permissions" "Unused apps" + "Edit selected photos for this app" "No unused apps" "Zero unused apps" "Recent permission decisions" @@ -455,48 +457,75 @@ "Show assistant trigger detection" "Show icon in status bar when microphone is used to activate voice assistant" "Allow <b>%1$s</b> to access photos and media on your device?" + "Allow <b>%1$s</b> to access photos and media on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access your contacts?" + "Allow <b>%1$s</b> to access your contacts on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access this device’s location?" + "Allow <b>%1$s</b> to access your <b>%2$s’s</b> location?" "The app will only have access to the location while you\'re using the app" "Allow <b>%1$s</b> to access this device’s location?" + "Allow <b>%1$s</b> to access your <b>%2$s’s location?" "This app may want to access your location all the time, even when you’re not using the app. ""Allow in settings." "Change location access for <b>%1$s</b>?" + "Change location access for <b>%1$s</b> on your <b>%2$s</b>?" "This app wants to access your location all the time, even when you’re not using the app. ""Allow in Settings." "Allow <b>%1$s</b> to find, connect to and determine the relative position of nearby devices?" + "Allow <b>%1$s</b> to find, connect to and determine the relative position of nearby devices on your <b>%2$s</b>?" "Allow <b>%1$s</b> to find, connect to and determine the relative position of nearby devices? ""Allow in settings." "Change <b>%1$s</b>’s location access from approximate to precise?" + "Change <b>%1$s</b>’s location access on your <b>%2$s</b> from approximate to precise?" "Allow <b>%1$s</b> to access this device’s approximate location?" + "Allow <b>%1$s</b> to access your <b>%2$s</b>’s approximate location?" "Precise" "Approximate" "Allow <b>%1$s</b> to access your calendar?" + "Allow <b>%1$s</b> to access your calendar on your <b>%2$s</b>?" "Allow <b>%1$s</b> to send and view SMS messages?" + "Allow <b>%1$s</b> to send and view SMS messages on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access photos, media and files on your device?" + "Allow <b>%1$s</b> to access photos, media and files on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access <b>photos, videos, music and audio</b> on this device?" "Allow <b>%1$s</b> to access <b>photos, videos, music, audio and other files</b> on this device?" "Allow <b>%1$s</b> to access music and audio on this device?" + "Allow <b>%1$s</b> to access music and audio on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access photos and videos on this device?" + "Allow <b>%1$s</b> to access photos and videos on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access more photos and videos on this device?" + "Allow <b>%1$s</b> to access more photos and videos on your <b>%2$s</b>?" "Allow <b>%1$s</b> to record audio?" + "Allow <b>%1$s</b> to record audio on your <b>%2$s</b>?" "The app will only be able to record audio while you’re using the app" "Allow <b>%1$s</b> to record audio?" + "Allow <b>%1$s</b> to record audio on your <b>%2$s</b>?" "This app may want to record audio all the time, even when you’re not using the app. ""Allow in settings." "Change microphone access for <b>%1$s</b>?" + "Change microphone access for <b>%1$s</b> on your <b>%2$s</b>?" "This app wants to record audio all the time, even when you’re not using the app. ""Allow in settings." "Allow <b>%1$s</b> to access your physical activity?" + "Allow <b>%1$s</b> to access your physical activity on your <b>%2$s</b>?" "Allow <b>%1$s</b> to take pictures and record video?" + "Allow <b>%1$s</b> to take pictures and record video on your <b>%2$s</b>?" "The app will only be able to take pictures and record video while you’re using the app" "Allow <b>%1$s</b> to take pictures and record video?" + "Allow <b>%1$s</b> to take pictures and record video on your <b>%2$s</b>?" "This app may want to take pictures and record video all the time, even when you’re not using the app. ""Allow in settings." "Change camera access for <b>%1$s</b>?" + "Change camera access for <b>%1$s</b> on your <b>%2$s</b>?" "This app wants to take pictures and record video all the time, even when you’re not using the app. ""Allow in settings." "Allow <b>%1$s</b> to access your phone call logs?" + "Allow <b>%1$s</b> to access your phone call logs on your <b>%2$s</b>?" "Allow <b>%1$s</b> to make and manage phone calls?" + "Allow <b>%1$s</b> to make and manage phone calls on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access sensor data about your vital signs?" + "Allow <b>%1$s</b> to access sensor data about your vital signs on your <b>%2$s</b>?" "This app wants to access sensor data about your vital signs all the time, even when you’re not using the app. To make this change, ""go to Settings." "Allow <b>%1$s</b> to access the sensor data about your vital signs?" + "Allow <b>%1$s</b> to access the sensor data about your vital signs on your <b>%2$s</b>?" "To let this app access body sensor data all the time, even when you’re not using the app, ""go to settings." "Keep allowing <b>%1$s</b> to access body sensor data while the app is in use?" + "Keep allowing <b>%1$s</b> to access body sensor data on your <b>%2$s</b> while app is in use?" "Allow <b>%1$s</b> to send you notifications?" + "Allow <b>%1$s</b> to send you notifications on your <b>%2$s</b>?" "Controlled permissions" "%1$s has location access" "Your organisation allows %1$s to access your location" diff --git a/PermissionController/res/values-en-rCA/strings.xml b/PermissionController/res/values-en-rCA/strings.xml index ef5fb90866bab9740434b9ce72de0a45fd2b0fd0..a01a0cef26402ff180e685b239921f2a75e5e5c0 100644 --- a/PermissionController/res/values-en-rCA/strings.xml +++ b/PermissionController/res/values-en-rCA/strings.xml @@ -34,6 +34,7 @@ "More info" "Allow all" "Always allow all" + "Allow limited access" "Select photos and videos" "Select more" "Don’t select more" @@ -60,6 +61,7 @@ "Apps" "App permissions" "Unused apps" + "Edit selected photos for this app" "No unused apps" "0 unused apps" "Recent permission decisions" @@ -419,7 +421,7 @@ ", " " and " "default apps" - "Microphone & Camera" + "Microphone and camera" "Settings" "Default apps" "No default apps" @@ -455,48 +457,75 @@ "Show assistant trigger detection" "Show icon in status bar when microphone is used to activate voice assistant" "Allow <b>%1$s</b> to access photos and media on your device?" + "Allow <b>%1$s</b> to access photos and media on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access your contacts?" + "Allow <b>%1$s</b> to access your contacts on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access this device’s location?" + "Allow <b>%1$s</b> to access your <b>%2$s’s</b> location?" "The app will only have access to the location while you\'re using the app" "Allow <b>%1$s</b> to access this device’s location?" + "Allow <b>%1$s</b> to access your <b>%2$s’s location?" "This app may want to access your location all the time, even when you’re not using the app. ""Allow in settings." "Change location access for <b>%1$s</b>?" + "Change location access for <b>%1$s</b> on your <b>%2$s</b>?" "This app wants to access your location all the time, even when you’re not using the app. ""Allow in settings." "Allow <b>%1$s</b> to find, connect to, and determine the relative position of nearby devices?" + "Allow <b>%1$s</b> to find, connect to, and determine the relative position of nearby devices on your <b>%2$s</b>?" "Allow <b>%1$s</b> to find, connect to, and determine the relative position of nearby devices? ""Allow in settings." "Change <b>%1$s</b>’s location access from approximate to precise?" + "Change <b>%1$s</b>’s location access on your <b>%2$s</b> from approximate to precise?" "Allow <b>%1$s</b> to access this device’s approximate location?" + "Allow <b>%1$s</b> to access your <b>%2$s</b>’s approximate location?" "Precise" "Approximate" "Allow <b>%1$s</b> to access your calendar?" + "Allow <b>%1$s</b> to access your calendar on your <b>%2$s</b>?" "Allow <b>%1$s</b> to send and view SMS messages?" + "Allow <b>%1$s</b> to send and view SMS messages on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access photos, media, and files on your device?" + "Allow <b>%1$s</b> to access photos, media, and files on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access <b>photos, videos, music, and audio</b> on this device?" "Allow <b>%1$s</b> to access <b>photos, videos, music, audio, and other files</b> on this device?" "Allow <b>%1$s</b> to access music and audio on this device?" + "Allow <b>%1$s</b> to access music and audio on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access photos and videos on this device?" + "Allow <b>%1$s</b> to access photos and videos on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access more photos and videos on this device?" + "Allow <b>%1$s</b> to access more photos and videos on your <b>%2$s</b>?" "Allow <b>%1$s</b> to record audio?" + "Allow <b>%1$s</b> to record audio on your <b>%2$s</b>?" "The app will only be able to record audio while you’re using the app" "Allow <b>%1$s</b> to record audio?" + "Allow <b>%1$s</b> to record audio on your <b>%2$s</b>?" "This app may want to record audio all the time, even when you’re not using the app. ""Allow in settings." "Change microphone access for <b>%1$s</b>?" + "Change microphone access for <b>%1$s</b> on your <b>%2$s</b>?" "This app wants to record audio all the time, even when you’re not using the app. ""Allow in settings." "Allow <b>%1$s</b> to access your physical activity?" + "Allow <b>%1$s</b> to access your physical activity on your <b>%2$s</b>?" "Allow <b>%1$s</b> to take pictures and record video?" + "Allow <b>%1$s</b> to take pictures and record video on your <b>%2$s</b>?" "The app will only be able to take pictures and record video while you’re using the app" "Allow <b>%1$s</b> to take pictures and record video?" + "Allow <b>%1$s</b> to take pictures and record video on your <b>%2$s</b>?" "This app may want to take pictures and record video all the time, even when you’re not using the app. ""Allow in settings." "Change camera access for <b>%1$s</b>?" + "Change camera access for <b>%1$s</b> on your <b>%2$s</b>?" "This app wants to take pictures and record video all the time, even when you’re not using the app. ""Allow in settings." "Allow <b>%1$s</b> to access your phone call logs?" + "Allow <b>%1$s</b> to access your phone call logs on your <b>%2$s</b>?" "Allow <b>%1$s</b> to make and manage phone calls?" + "Allow <b>%1$s</b> to make and manage phone calls on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access sensor data about your vital signs?" + "Allow <b>%1$s</b> to access sensor data about your vital signs on your <b>%2$s</b>?" "This app wants to access sensor data about your vital signs all the time, even when you’re not using the app. To make this change, ""go to settings." "Allow <b>%1$s</b> to access the sensor data about your vital signs?" + "Allow <b>%1$s</b> to access the sensor data about your vital signs on your <b>%2$s</b>?" "To let this app access body sensor data all the time, even when you’re not using the app, ""go to settings." "Keep allowing <b>%1$s</b> to access body sensor data while app is in use?" + "Keep allowing <b>%1$s</b> to access body sensor data on your <b>%2$s</b> while app is in use?" "Allow <b>%1$s</b> to send you notifications?" + "Allow <b>%1$s</b> to send you notifications on your <b>%2$s</b>?" "Controlled permissions" "%1$s has location access" "Your organization allows %1$s to access your location" diff --git a/PermissionController/res/values-en-rGB/strings.xml b/PermissionController/res/values-en-rGB/strings.xml index 9feaad707234f8ba2c28b7a5f5cef7d21ee578e9..bfaca7355631e42fabf201d1c12493e0af3ce2b3 100644 --- a/PermissionController/res/values-en-rGB/strings.xml +++ b/PermissionController/res/values-en-rGB/strings.xml @@ -34,6 +34,7 @@ "More info" "Allow all" "Always allow all" + "Allow limited access" "Select photos and videos" "Select more" "Don\'t select more" @@ -60,6 +61,7 @@ "Apps" "App permissions" "Unused apps" + "Edit selected photos for this app" "No unused apps" "Zero unused apps" "Recent permission decisions" @@ -455,48 +457,75 @@ "Show assistant trigger detection" "Show icon in status bar when microphone is used to activate voice assistant" "Allow <b>%1$s</b> to access photos and media on your device?" + "Allow <b>%1$s</b> to access photos and media on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access your contacts?" + "Allow <b>%1$s</b> to access your contacts on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access this device’s location?" + "Allow <b>%1$s</b> to access your <b>%2$s’s</b> location?" "The app will only have access to the location while you’re using the app" "Allow <b>%1$s</b> to access this device’s location?" + "Allow <b>%1$s</b> to access your <b>%2$s’s location?" "This app may want to access your location all the time, even when you’re not using the app. ""Allow in settings." "Change location access for <b>%1$s</b>?" + "Change location access for <b>%1$s</b> on your <b>%2$s</b>?" "This app wants to access your location all the time, even when you’re not using the app. ""Allow in Settings." "Allow <b>%1$s</b> to find, connect to and determine the relative position of nearby devices?" + "Allow <b>%1$s</b> to find, connect to and determine the relative position of nearby devices on your <b>%2$s</b>?" "Allow <b>%1$s</b> to find, connect to and determine the relative position of nearby devices? ""Allow in settings." "Change <b>%1$s</b>’s location access from approximate to precise?" + "Change <b>%1$s</b>’s location access on your <b>%2$s</b> from approximate to precise?" "Allow <b>%1$s</b> to access this device’s approximate location?" + "Allow <b>%1$s</b> to access your <b>%2$s</b>’s approximate location?" "Precise" "Approximate" "Allow <b>%1$s</b> to access your calendar?" + "Allow <b>%1$s</b> to access your calendar on your <b>%2$s</b>?" "Allow <b>%1$s</b> to send and view SMS messages?" + "Allow <b>%1$s</b> to send and view SMS messages on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access photos, media and files on your device?" + "Allow <b>%1$s</b> to access photos, media and files on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access <b>photos, videos, music and audio</b> on this device?" "Allow <b>%1$s</b> to access <b>photos, videos, music, audio and other files</b> on this device?" "Allow <b>%1$s</b> to access music and audio on this device?" + "Allow <b>%1$s</b> to access music and audio on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access photos and videos on this device?" + "Allow <b>%1$s</b> to access photos and videos on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access more photos and videos on this device?" + "Allow <b>%1$s</b> to access more photos and videos on your <b>%2$s</b>?" "Allow <b>%1$s</b> to record audio?" + "Allow <b>%1$s</b> to record audio on your <b>%2$s</b>?" "The app will only be able to record audio while you’re using the app" "Allow <b>%1$s</b> to record audio?" + "Allow <b>%1$s</b> to record audio on your <b>%2$s</b>?" "This app may want to record audio all the time, even when you’re not using the app. ""Allow in settings." "Change microphone access for <b>%1$s</b>?" + "Change microphone access for <b>%1$s</b> on your <b>%2$s</b>?" "This app wants to record audio all the time, even when you’re not using the app. ""Allow in settings." "Allow <b>%1$s</b> to access your physical activity?" + "Allow <b>%1$s</b> to access your physical activity on your <b>%2$s</b>?" "Allow <b>%1$s</b> to take pictures and record video?" + "Allow <b>%1$s</b> to take pictures and record video on your <b>%2$s</b>?" "The app will only be able to take pictures and record video while you’re using the app" "Allow <b>%1$s</b> to take pictures and record video?" + "Allow <b>%1$s</b> to take pictures and record video on your <b>%2$s</b>?" "This app may want to take pictures and record video all the time, even when you’re not using the app. ""Allow in settings." "Change camera access for <b>%1$s</b>?" + "Change camera access for <b>%1$s</b> on your <b>%2$s</b>?" "This app wants to take pictures and record video all the time, even when you’re not using the app. ""Allow in settings." "Allow <b>%1$s</b> to access your phone call logs?" + "Allow <b>%1$s</b> to access your phone call logs on your <b>%2$s</b>?" "Allow <b>%1$s</b> to make and manage phone calls?" + "Allow <b>%1$s</b> to make and manage phone calls on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access sensor data about your vital signs?" + "Allow <b>%1$s</b> to access sensor data about your vital signs on your <b>%2$s</b>?" "This app wants to access sensor data about your vital signs all the time, even when you’re not using the app. To make this change, ""go to Settings." "Allow <b>%1$s</b> to access the sensor data about your vital signs?" + "Allow <b>%1$s</b> to access the sensor data about your vital signs on your <b>%2$s</b>?" "To let this app access body sensor data all the time, even when you’re not using the app, ""go to settings." "Keep allowing <b>%1$s</b> to access body sensor data while the app is in use?" + "Keep allowing <b>%1$s</b> to access body sensor data on your <b>%2$s</b> while app is in use?" "Allow <b>%1$s</b> to send you notifications?" + "Allow <b>%1$s</b> to send you notifications on your <b>%2$s</b>?" "Controlled permissions" "%1$s has location access" "Your organisation allows %1$s to access your location" diff --git a/PermissionController/res/values-en-rIN/strings.xml b/PermissionController/res/values-en-rIN/strings.xml index 9feaad707234f8ba2c28b7a5f5cef7d21ee578e9..bfaca7355631e42fabf201d1c12493e0af3ce2b3 100644 --- a/PermissionController/res/values-en-rIN/strings.xml +++ b/PermissionController/res/values-en-rIN/strings.xml @@ -34,6 +34,7 @@ "More info" "Allow all" "Always allow all" + "Allow limited access" "Select photos and videos" "Select more" "Don\'t select more" @@ -60,6 +61,7 @@ "Apps" "App permissions" "Unused apps" + "Edit selected photos for this app" "No unused apps" "Zero unused apps" "Recent permission decisions" @@ -455,48 +457,75 @@ "Show assistant trigger detection" "Show icon in status bar when microphone is used to activate voice assistant" "Allow <b>%1$s</b> to access photos and media on your device?" + "Allow <b>%1$s</b> to access photos and media on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access your contacts?" + "Allow <b>%1$s</b> to access your contacts on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access this device’s location?" + "Allow <b>%1$s</b> to access your <b>%2$s’s</b> location?" "The app will only have access to the location while you’re using the app" "Allow <b>%1$s</b> to access this device’s location?" + "Allow <b>%1$s</b> to access your <b>%2$s’s location?" "This app may want to access your location all the time, even when you’re not using the app. ""Allow in settings." "Change location access for <b>%1$s</b>?" + "Change location access for <b>%1$s</b> on your <b>%2$s</b>?" "This app wants to access your location all the time, even when you’re not using the app. ""Allow in Settings." "Allow <b>%1$s</b> to find, connect to and determine the relative position of nearby devices?" + "Allow <b>%1$s</b> to find, connect to and determine the relative position of nearby devices on your <b>%2$s</b>?" "Allow <b>%1$s</b> to find, connect to and determine the relative position of nearby devices? ""Allow in settings." "Change <b>%1$s</b>’s location access from approximate to precise?" + "Change <b>%1$s</b>’s location access on your <b>%2$s</b> from approximate to precise?" "Allow <b>%1$s</b> to access this device’s approximate location?" + "Allow <b>%1$s</b> to access your <b>%2$s</b>’s approximate location?" "Precise" "Approximate" "Allow <b>%1$s</b> to access your calendar?" + "Allow <b>%1$s</b> to access your calendar on your <b>%2$s</b>?" "Allow <b>%1$s</b> to send and view SMS messages?" + "Allow <b>%1$s</b> to send and view SMS messages on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access photos, media and files on your device?" + "Allow <b>%1$s</b> to access photos, media and files on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access <b>photos, videos, music and audio</b> on this device?" "Allow <b>%1$s</b> to access <b>photos, videos, music, audio and other files</b> on this device?" "Allow <b>%1$s</b> to access music and audio on this device?" + "Allow <b>%1$s</b> to access music and audio on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access photos and videos on this device?" + "Allow <b>%1$s</b> to access photos and videos on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access more photos and videos on this device?" + "Allow <b>%1$s</b> to access more photos and videos on your <b>%2$s</b>?" "Allow <b>%1$s</b> to record audio?" + "Allow <b>%1$s</b> to record audio on your <b>%2$s</b>?" "The app will only be able to record audio while you’re using the app" "Allow <b>%1$s</b> to record audio?" + "Allow <b>%1$s</b> to record audio on your <b>%2$s</b>?" "This app may want to record audio all the time, even when you’re not using the app. ""Allow in settings." "Change microphone access for <b>%1$s</b>?" + "Change microphone access for <b>%1$s</b> on your <b>%2$s</b>?" "This app wants to record audio all the time, even when you’re not using the app. ""Allow in settings." "Allow <b>%1$s</b> to access your physical activity?" + "Allow <b>%1$s</b> to access your physical activity on your <b>%2$s</b>?" "Allow <b>%1$s</b> to take pictures and record video?" + "Allow <b>%1$s</b> to take pictures and record video on your <b>%2$s</b>?" "The app will only be able to take pictures and record video while you’re using the app" "Allow <b>%1$s</b> to take pictures and record video?" + "Allow <b>%1$s</b> to take pictures and record video on your <b>%2$s</b>?" "This app may want to take pictures and record video all the time, even when you’re not using the app. ""Allow in settings." "Change camera access for <b>%1$s</b>?" + "Change camera access for <b>%1$s</b> on your <b>%2$s</b>?" "This app wants to take pictures and record video all the time, even when you’re not using the app. ""Allow in settings." "Allow <b>%1$s</b> to access your phone call logs?" + "Allow <b>%1$s</b> to access your phone call logs on your <b>%2$s</b>?" "Allow <b>%1$s</b> to make and manage phone calls?" + "Allow <b>%1$s</b> to make and manage phone calls on your <b>%2$s</b>?" "Allow <b>%1$s</b> to access sensor data about your vital signs?" + "Allow <b>%1$s</b> to access sensor data about your vital signs on your <b>%2$s</b>?" "This app wants to access sensor data about your vital signs all the time, even when you’re not using the app. To make this change, ""go to Settings." "Allow <b>%1$s</b> to access the sensor data about your vital signs?" + "Allow <b>%1$s</b> to access the sensor data about your vital signs on your <b>%2$s</b>?" "To let this app access body sensor data all the time, even when you’re not using the app, ""go to settings." "Keep allowing <b>%1$s</b> to access body sensor data while the app is in use?" + "Keep allowing <b>%1$s</b> to access body sensor data on your <b>%2$s</b> while app is in use?" "Allow <b>%1$s</b> to send you notifications?" + "Allow <b>%1$s</b> to send you notifications on your <b>%2$s</b>?" "Controlled permissions" "%1$s has location access" "Your organisation allows %1$s to access your location" diff --git a/PermissionController/res/values-en-rXC/strings.xml b/PermissionController/res/values-en-rXC/strings.xml index c712a6f2d83840d92a95ac908072c87e25ace9dc..34a84175e7fecc61aab1405a4c1df280d76cf8c0 100644 --- a/PermissionController/res/values-en-rXC/strings.xml +++ b/PermissionController/res/values-en-rXC/strings.xml @@ -34,6 +34,7 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‎‏‏‏‏‎‏‎‏‏‏‏‏‏‎‎‎‏‏‏‏‎‎‎‎‎‏‎‏‏‎‏‎‎‏‎‏‏‏‏‎‎‏‏‏‎‎‏‎‎‏‏‎‏‎‎‏‎More info‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‏‏‎‏‎‏‏‏‏‎‎‏‏‎‏‎‏‏‎‏‏‎‏‎‏‏‏‏‎‏‏‏‏‏‎‏‏‎‏‎‏‎‎‏‏‎‎‏‎‏‎‏‏‎‎‎Allow all‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‏‏‎‏‏‏‏‎‎‏‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‏‎‏‎‏‏‏‎‏‏‏‏‏‏‎‏‏‎‏‎‎‎‎‎‎‎‏‏‏‎Always allow all‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‎‎‏‎‏‎‏‎‎‏‏‏‎‏‎‎‎‏‎‎‏‏‏‎‎‎‎‏‎‎‎‏‎‎‎‏‏‏‏‏‎‏‏‏‏‎‏‏‏‏‏‎‏‎‎Allow limited access‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‏‎‎‏‎‎‏‎‏‏‎‏‎‏‏‎‎‎‎‎‎‎‎‏‏‎‏‏‎‎‏‏‎‎‎‏‎‎‎‎‎‏‎‏‏‏‎‏‏‏‏‎‎‏‎‎Select photos and videos‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‏‎‏‏‎‏‎‎‏‎‎‎‎‏‏‎‎‏‎‎‏‎‎‏‏‏‎‏‎‏‎‎‏‎‏‎‏‏‏‎‏‎‏‏‎‎‎‏‎‎‏‏‎‏‏‎‏‎Select more‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‏‎‎‏‎‏‎‏‎‎‏‎‎‎‎‎‎‎‎‏‎‎‎‎‏‎‎‏‎‎‏‎‏‎‏‏‎‏‎‏‎‎‏‏‎‎‎‎‏‎‏‎‎‎Don’t select more‎‏‎‎‏‎" @@ -60,6 +61,7 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‏‎‏‎‎‏‎‏‎‎‎‏‎‏‏‏‎‏‎‎‏‎‏‏‎‏‏‎‏‏‏‏‎‏‏‏‎‏‎‏‏‎‏‏‎‎‎‎‎‎‏‎‎‎‎‏‎‎Apps‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‎‏‏‎‎‎‏‎‎‎‏‎‏‏‎‏‎‎‏‎‏‎‎‏‏‏‎‏‎‏‏‎‎‏‏‎‎‏‏‏‎‎‎‎‏‎‎‎‎‎‏‎‎‏‏‎‏‎App permissions‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‏‎‎‎‏‏‏‏‏‎‏‏‎‎‎‎‎‏‎‏‏‎‎‏‏‏‏‏‎‏‏‏‎‎‎‏‏‎‏‏‎‏‏‏‎‎‏‎‏‎‎‏‎‏‏‎‎Unused apps‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‏‏‏‎‎‎‏‎‎‏‏‎‏‎‏‎‏‏‏‎‎‎‎‎‎‏‎‏‏‏‎‎‏‎‏‏‏‎‏‎‏‎‎‎‏‎‏‎‎‎‏‎‏‏‎‎‎Edit selected photos for this app‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‎‏‏‎‏‎‏‏‎‏‏‎‎‎‎‎‏‎‎‎‎‏‎‎‎‏‏‏‏‏‏‎‎‏‏‏‏‎‎‎‏‎‏‎‏‎‎‏‏‏‏‎‏‏‏‏‏‏‎No unused apps‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‏‎‏‎‏‎‎‏‎‎‎‎‎‏‎‎‏‎‏‎‏‏‏‏‏‎‎‎‏‎‏‏‎‎‎‎‏‏‎‎‏‎‏‎‏‏‎‎‏‎‎‎0 unused apps‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‎‏‎‎‏‎‏‏‏‏‎‎‎‏‏‎‏‎‏‎‏‎‎‏‎‎‏‎‎‎‏‏‎‏‏‎‎‏‎‏‎‎‏‎‎‎‎‎‏‎‎‎‎‎‎‎‎Recent permission decisions‎‏‎‎‏‎" @@ -455,48 +457,75 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‏‏‎‎‎‏‏‎‎‎‎‎‏‏‎‎‏‏‏‎‎‎‏‎‏‏‎‎‎‎‎‏‏‎‏‎‎‏‏‏‏‎‎‏‏‏‎‎‎‎‎‎‏‎‏‎‎Show assistant trigger detection‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‏‏‏‏‎‎‎‎‎‎‎‎‏‎‏‎‏‏‎‎‏‎‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‏‎‎‎‏‏‎‎‏‎‏‏‎‏‎‎‏‏‎Show icon in status bar when microphone is used to activate voice assistant‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‏‏‎‏‏‎‎‎‏‎‏‏‎‎‎‏‏‎‏‎‏‎‏‏‎‎‎‏‏‎‎‎‎‎‏‏‎‏‏‏‏‎‎‎‏‏‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access photos and media on your device?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‏‎‏‏‎‏‎‏‎‎‏‎‏‎‎‎‏‎‎‎‎‎‏‏‎‏‎‎‏‏‎‏‏‏‎‏‏‏‎‏‏‏‏‎‏‏‎‎‏‎‏‏‏‏‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access photos and media on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‏‏‎‏‎‎‏‏‎‎‎‏‏‎‎‏‎‏‎‎‏‎‏‏‎‎‏‎‎‎‎‏‏‏‏‎‎‎‏‏‎‎‏‎‎‏‎‏‏‏‏‏‏‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access your contacts?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‏‎‎‎‎‎‏‎‏‎‏‎‏‎‎‏‏‏‎‎‏‏‎‏‎‎‎‎‎‏‏‏‎‏‏‏‎‏‎‏‎‎‎‏‎‏‎‏‎‎‏‎‎‏‎‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access your contacts on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‎‎‎‏‎‎‏‎‎‏‎‏‏‎‏‏‏‏‏‏‎‏‏‏‎‏‎‏‏‎‏‏‏‏‎‏‎‏‎‎‎‎‎‎‏‎‏‏‎‏‎‏‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access this device’s location?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‏‎‏‏‎‎‎‏‏‏‏‏‎‏‎‏‏‎‏‎‏‏‏‏‎‎‎‏‏‏‏‎‎‏‎‎‎‏‎‎‎‏‎‏‏‎‏‎‎‎‏‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎’s</b> location?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‏‎‎‏‎‏‎‎‏‎‏‏‏‎‎‏‎‎‏‏‏‎‎‎‏‏‎‏‏‎‏‏‏‏‏‏‏‎‎‏‎‎‏‎‏‎‏‏‏‏‎‎‎‏‏‎‎The app will only have access to the location while you’re using the app‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‏‎‎‎‏‎‎‎‏‎‎‎‏‏‏‎‏‎‎‎‎‎‏‏‎‎‎‎‏‏‏‎‎‏‏‏‏‎‎‏‏‏‎‎‏‎‏‎‎‏‎‎‏‏‎‎‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access this device’s location?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‎‏‏‏‏‎‏‏‏‎‎‎‎‏‏‎‎‏‎‏‎‏‎‏‏‎‎‎‎‏‎‏‎‎‎‏‎‏‎‎‎‏‏‎‎‎‏‎‏‏‏‏‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎’s location?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‎‏‎‎‎‏‎‎‎‏‏‎‎‎‎‏‏‏‏‎‏‎‎‏‎‏‎‎‏‏‏‎‎‎‎‎‎‏‏‏‏‎‎‏‏‎‏‏‏‎‏‏‎‏‎This app may want to access your location all the time, even when you’re not using the app. ‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎Allow in settings.‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‏‎‏‎‎‎‏‏‏‎‎‏‏‏‏‎‎‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‎‏‏‎‏‎‎‏‏‏‎‏‏‎‎‏‏‎‏‎‎‎Change location access for <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‎‏‎‏‏‏‏‎‏‎‎‎‏‎‎‏‎‎‏‏‏‎‎‏‏‎‏‏‎‎‏‎‎‎‏‎‎‏‏‎‎‏‎‎‎‎‎‎‎‏‎‎‎‏‎Change location access for <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‏‎‎‎‎‏‎‏‏‏‏‎‎‏‏‎‎‏‏‏‏‏‏‎‎‏‎‎‏‏‎‏‏‏‎‏‎‏‏‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‎‏‎This app wants to access your location all the time, even when you’re not using the app. ‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎Allow in settings.‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‏‎‎‎‏‎‏‎‏‎‏‏‎‏‏‎‎‎‏‏‎‎‎‎‏‏‎‎‏‏‎‎‎‎‎‏‎‏‎‎‏‏‎‎‏‎‏‎‏‏‎‏‏‏‎‎‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to find, connect to, and determine the relative position of nearby devices?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‎‏‎‎‎‎‏‏‎‎‎‎‏‏‎‎‎‎‏‎‎‎‏‎‏‏‏‎‎‏‎‏‎‎‏‎‎‏‎‎‏‏‎‎‏‏‎‏‎‎‎‎‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to find, connect to, and determine the relative position of nearby devices on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‎‎‎‏‏‏‏‎‎‏‏‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‎‎‎‎‎‏‎‎‎‏‎‎‎‎‎‎‏‎‏‏‎‏‏‎‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to find, connect to, and determine the relative position of nearby devices? ‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎Allow in settings.‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‎‎‏‏‎‎‏‎‎‏‏‏‎‎‏‎‏‏‎‎‏‎‎‏‏‏‎‎‎‏‏‏‏‏‏‏‎‎‎‏‎‎‏‏‏‏‏‎‎‏‎‎‎‏‎‎‎‎Change ‎‏‎‎‏‏‎<b>%1$s</b>‎‏‎‎‏‏‏‎’s location access from approximate to precise?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‎‎‏‏‏‎‎‎‎‏‎‏‎‎‎‏‏‏‎‏‎‏‏‏‎‎‎‏‎‎‎‏‎‎‏‏‎‎‎‏‏‏‏‏‎‎‏‏‎‏‎‎‎‎Change ‎‏‎‎‏‏‎<b>%1$s</b>‎‏‎‎‏‏‏‎’s location access on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b> from approximate to precise?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‎‎‏‎‏‎‎‎‎‎‎‎‎‏‏‏‏‎‏‏‎‎‎‎‎‎‎‎‏‎‎‎‎‎‎‎‎‏‎‏‏‏‏‎‏‏‎‎‎‏‎‎‎‎‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access this device’s approximate location?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‏‎‏‎‏‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‎‎‏‏‏‎‏‏‏‏‎‎‏‎‎‏‎‎‏‎‏‎‏‏‏‏‎‎‏‎‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b>’s approximate location?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‎‎‎‏‏‏‎‎‎‏‏‏‎‏‏‏‏‎‏‎‏‎‎‏‏‏‎‎‎‎‏‏‎‏‎‏‎‎‏‏‎‏‏‏‏‏‏‎‏‎‎‎‏‏‏‏‎‎Precise‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‎‏‏‎‏‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‏‏‏‎‎‏‏‎‏‏‏‎‎‏‏‎‎‏‎‎‎‏‎‏‏‏‎‎‏‎‎‎‏‎Approximate‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‎‏‎‏‏‏‎‎‎‏‎‏‏‏‏‎‎‏‏‎‎‏‎‏‎‏‏‎‎‏‏‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‏‏‎‏‏‏‏‎‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access your calendar?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‎‎‎‏‎‎‏‏‏‎‎‏‎‏‎‎‎‎‏‏‏‎‏‎‏‎‏‏‎‎‏‏‏‏‎‏‏‏‏‏‎‏‎‎‎‏‏‎‎‎‎‎‏‎‏‎‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access your calendar on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‎‏‏‎‏‏‏‎‎‏‏‎‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‏‏‏‏‎‎‎‏‎‎‎‎‎‎‎‎‏‎‎‎‏‎‏‏‏‏‏‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to send and view SMS messages?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‎‏‎‏‏‎‎‏‏‏‏‎‎‎‎‎‏‎‏‎‎‏‏‎‎‎‎‏‎‎‏‏‏‏‎‎‏‎‎‎‎‎‎‏‏‎‏‏‎‏‏‎‏‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to send and view SMS messages on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‎‎‎‎‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‎‎‎‏‏‎‏‎‎‎‏‎‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access photos, media, and files on your device?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‎‎‎‎‏‏‏‎‎‎‎‏‏‎‎‏‏‎‏‏‏‏‏‎‎‎‏‏‎‏‏‎‎‏‏‏‎‏‏‎‏‎‎‎‎‎‎‏‏‎‏‎‎‏‏‏‎‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access photos, media, and files on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‏‏‏‎‎‏‏‏‎‏‏‏‎‎‏‎‏‎‏‎‏‏‏‎‏‏‏‏‎‎‎‏‎‎‏‏‏‎‎‏‏‏‎‎‏‏‎‎‎‎‎‎‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access <b>photos, videos, music, and audio</b> on this device?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‎‎‏‎‏‎‏‎‏‎‏‎‏‎‎‎‏‏‏‏‎‏‏‏‏‏‎‏‏‏‎‎‏‎‏‎‏‎‎‏‏‏‏‎‎‎‎‏‎‎‏‎‏‎‏‎‎‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access <b>photos, videos, music, audio, and other files</b> on this device?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‏‎‎‎‎‎‏‎‏‏‎‏‎‏‏‎‎‎‏‏‎‏‏‎‎‎‏‎‎‏‎‏‏‏‏‏‏‎‏‎‏‎‎‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access music and audio on this device?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‎‎‎‏‏‏‎‏‏‏‏‏‏‎‎‏‏‏‏‎‎‎‏‏‎‏‏‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‎‎‎‏‎‎‏‏‏‏‏‏‏‎‎‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access music and audio on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‏‎‎‎‎‎‎‎‏‎‎‏‏‏‎‏‎‏‎‎‏‎‎‏‏‎‏‏‎‏‏‏‎‎‎‏‎‎‏‎‏‏‎‏‏‎‏‎‎‎‎‏‏‎‏‏‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access photos and videos on this device?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‎‏‏‏‎‎‎‏‎‏‎‎‎‏‏‏‎‏‏‎‏‏‎‏‎‏‏‎‎‎‏‎‏‎‏‎‎‏‏‏‏‎‎‎‎‎‏‏‎‏‏‏‏‏‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access photos and videos on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‎‏‏‏‏‎‎‏‎‏‎‎‎‎‏‎‎‎‎‏‎‎‏‏‏‏‏‎‎‎‎‏‏‏‎‎‎‎‎‎‎‎‎‎‏‏‎‎‎‏‏‎‎‎‏‏‎‎‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access more photos and videos on this device?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‎‎‏‎‏‎‏‏‎‏‏‎‎‎‏‏‏‎‏‏‏‏‏‏‏‎‎‏‏‏‎‏‎‏‎‎‎‏‎‎‏‏‏‎‎‎‏‎‏‎‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access more photos and videos on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‎‎‏‏‎‏‎‏‎‎‏‎‏‎‎‎‎‎‏‏‎‏‎‎‏‏‏‏‎‎‏‎‎‏‏‎‎‎‏‎‏‎‎‏‎‎‏‏‏‎‏‎‎‎‏‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to record audio?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‏‎‎‏‎‏‎‎‏‎‏‏‏‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‏‎‏‎‎‏‏‎‏‎‏‏‎‏‏‏‏‏‏‎‏‎‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to record audio on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‎‏‏‎‎‏‏‎‏‏‏‏‎‎‎‎‏‏‎‎‏‏‏‏‎‎‎‎‎‏‎‏‏‏‏‏‏‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎The app will only be able to record audio while you’re using the app‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‏‎‎‎‎‏‏‎‏‏‎‎‏‎‏‏‏‎‎‎‏‏‎‏‎‎‏‎‏‎‎‏‎‏‎‏‏‎‏‎‏‎‎‏‎‎‏‏‎‏‏‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to record audio?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‏‎‏‎‎‎‎‎‏‎‎‏‏‏‏‎‏‎‏‎‎‎‏‎‎‎‎‏‎‏‏‏‎‎‎‏‏‏‏‏‎‎‏‎‏‏‏‏‏‎‎‎‎‏‎‎‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to record audio on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‏‏‏‎‏‎‏‏‏‏‎‎‏‎‎‏‎‏‏‏‎‏‏‎‏‏‎‎‏‎‎‎‎‎‏‎‎‎‎‏‏‏‏‎‎‏‎‎‏‏‎‎‏‎‏‏‏‎‎This app may want to record audio all the time, even when you’re not using the app. ‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎Allow in settings.‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‎‏‏‏‎‏‎‎‏‏‎‎‏‎‎‏‎‏‎‏‏‏‎‏‏‎‏‏‏‏‎‏‎‎‎‎‏‏‎‎‎‎‎‏‏‏‎‎‏‏‎‏‏‏‏‎‏‎Change microphone access for <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‏‎‎‎‏‎‏‏‎‎‏‏‎‎‎‎‎‎‎‏‏‏‎‎‎‎‎‏‎‏‏‎‏‎‏‎‏‏‏‏‏‏‎‏‏‎‏‎‎‎‏‎‎‏‎‏‏‎Change microphone access for <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‏‏‎‏‎‏‏‎‎‎‎‎‏‏‏‎‎‏‏‏‎‏‏‏‏‎‏‎‎‏‏‏‏‎‏‎‎‎‎‎‎‏‎‎‎‎‎‎‎‎‏‎‏‏‏‏‎This app wants to record audio all the time, even when you’re not using the app. ‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎Allow in settings.‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‏‏‎‎‏‎‎‏‏‎‎‏‏‎‎‎‎‎‎‏‏‎‎‏‎‏‏‏‏‎‏‎‏‎‎‎‎‎‏‏‎‎‎‎‏‎‏‏‏‎‎‎‏‏‏‎‏‎‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access your physical activity?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‏‎‏‎‎‏‏‎‎‏‏‎‎‏‏‏‏‎‎‏‏‎‏‏‎‎‏‏‏‎‏‏‏‎‎‏‏‎‏‎‎‏‏‎‎‏‏‎‏‏‏‏‎‏‏‏‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access your physical activity on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‏‎‎‎‏‏‎‎‎‏‏‏‎‎‏‎‏‏‎‎‏‏‏‎‎‎‏‎‎‎‎‎‏‎‏‏‏‏‎‎‎‎‏‎‏‎‎‏‎‏‎‏‎‎‎‏‎‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to take pictures and record video?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‏‎‏‎‏‏‏‎‏‏‎‎‏‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‎‏‎‏‎‏‏‎‏‎‏‎‎‎‏‎‏‎‎‎‏‎‎‏‎‎‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to take pictures and record video on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‎‏‏‎‎‎‏‏‎‏‎‏‎‏‏‎‎‏‏‎‏‏‎‏‏‏‏‏‎‎‎‏‏‎‎‎‏‎‏‏‎‏‏‏‏‎‏‎‏‏‎The app will only be able to take pictures and record video while you’re using the app‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‏‎‏‎‏‏‏‏‎‎‏‎‏‏‎‎‏‏‏‎‎‎‏‏‏‎‎‏‏‏‏‎‏‏‏‎‎‏‏‎‎‎‎‎‏‎‎‏‎‏‏‏‎‎‏‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to take pictures and record video?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‎‏‏‏‏‎‎‎‎‏‎‎‏‏‎‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‎‎‏‏‎‏‏‏‎‎‎‎‎‏‎‏‎‏‏‏‏‎‎‎‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to take pictures and record video on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‏‏‏‎‎‎‎‎‏‏‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‎‏‎‏‏‎‏‎‏‎‏‏‏‎‏‏‎‏‏‎‎‎‎‎‎‏‏‎‎This app may want to take pictures and record video all the time, even when you’re not using the app. ‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎Allow in settings.‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‏‏‏‎‎‏‎‎‎‏‏‎‏‏‏‎‎‏‏‎‏‎‏‎‎‎‏‎‎‏‏‏‎‏‏‎‏‎‎‏‎‎‎‏‏‎‏‏‏‎‏‎‏‏‏‎‎Change camera access for <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‎‎‏‎‎‎‏‎‏‎‎‎‎‎‎‏‏‎‎‎‏‎‏‏‏‎‏‏‎‎‏‎‏‎‎‏‎‎‎‎‎‎‏‏‏‎‎‏‏‎‎‏‏‏‏‎‎‎Change camera access for <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‏‏‏‏‏‏‎‎‎‏‏‏‏‎‏‏‎‎‏‏‎‎‏‏‏‎‏‏‏‏‎‎‏‎‏‎‎‏‎‏‏‏‏‎‏‎‏‎‎‏‎‏‎This app wants to take pictures and record video all the time, even when you’re not using the app. ‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎Allow in settings.‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‎‏‎‎‏‏‎‎‎‎‏‎‎‎‎‏‎‎‎‎‎‏‎‏‏‎‏‏‏‎‏‎‎‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‎‎‏‎‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access your phone call logs?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‎‎‎‏‏‎‎‏‏‏‎‎‎‎‏‏‏‎‎‏‎‏‎‎‎‏‎‎‏‏‎‎‏‎‎‎‎‏‏‎‏‏‎‏‏‏‎‏‎‎‎‏‎‏‏‏‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access your phone call logs on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‎‏‏‎‎‎‏‎‏‎‏‏‏‏‏‎‏‏‎‎‎‎‎‏‏‎‎‎‎‎‏‎‏‎‏‏‏‏‏‎‎‏‎‎‏‎‎‎‏‎‎‏‎‎‎‎‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to make and manage phone calls?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‏‏‏‎‏‎‏‏‎‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‎‏‎‏‏‏‏‎‎‏‎‎‏‏‏‏‎‏‏‏‎‎‎‏‎‏‎‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to make and manage phone calls on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‎‎‎‎‎‏‏‎‏‎‎‎‏‏‏‎‎‎‎‏‎‏‏‏‎‏‎‎‏‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‎‎‎‏‎‎‏‎‏‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access sensor data about your vital signs?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‎‎‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‏‎‏‎‎‏‎‏‏‎‏‎‎‏‎‏‎‎‎‎‎‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access sensor data about your vital signs on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‎‏‎‎‎‎‎‏‎‏‏‎‎‎‏‎‎‏‎‏‎‏‏‎‎‎‎‎‏‎‏‎‏‎‏‏‏‎‏‏‏‎‎‎‎‎‏‎‏‎‎‎‏‏‎This app wants to access sensor data about your vital signs all the time, even when you’re not using the app. To make this change, ‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎go to settings.‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‎‎‏‎‎‏‏‎‎‏‏‎‎‏‎‎‎‏‎‏‏‎‎‎‎‏‏‎‏‏‏‎‎‎‎‏‏‏‎‏‎‏‎‏‏‎‎‏‏‎‎‏‏‏‎‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access the sensor data about your vital signs?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‏‏‏‏‎‏‎‎‎‎‎‏‎‎‎‎‏‎‏‏‎‏‎‏‎‏‏‎‎‏‏‏‏‏‏‎‎‏‏‎‎‎‎‏‏‎‎‏‏‎‎‏‎‎‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access the sensor data about your vital signs on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‎‏‏‏‎‏‎‏‏‏‏‏‏‏‎‎‎‏‏‏‎‏‎‎‎‎‎‎‎‏‏‏‏‎‏‏‏‏‏‎‏‏‏‏‏‎‎‎‏‏‎‏‏‎‏‎To let this app access body sensor data all the time, even when you’re not using the app, ‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎go to settings.‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‏‎‎‏‎‏‎‎‏‏‏‎‏‏‏‎‏‏‏‏‏‎‏‎‏‏‎‏‏‎‎‏‏‏‎‎‎‎‎‏‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎Keep allowing <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access body sensor data while app is in use?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‏‏‏‏‎‎‎‏‏‏‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‎‏‏‏‏‎‏‎‎‏‏‏‏‏‎‎‎‎‎‏‏‎‏‏‏‎Keep allowing <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to access body sensor data on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b> while app is in use?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‏‎‎‎‏‎‏‏‏‎‎‏‎‎‎‎‏‎‎‏‎‎‏‎‎‏‎‏‎‏‏‎‏‎‏‏‎‎‏‎‏‏‎‏‏‎‎‏‎‎‎‎‏‎‏‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to send you notifications?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‏‏‎‏‎‎‏‏‏‎‎‎‏‎‏‎‏‏‏‎‎‎‏‎‏‏‎‎‎‏‎‏‏‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‎Allow <b>‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎</b> to send you notifications on your <b>‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎</b>?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‏‏‎‎‏‎‏‏‏‎‏‏‏‎‎‏‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‏‎‎‎‎‏‏‏‎‏‎‎‎‎‏‎‏‏‎‏‎‏‎‎‎Controlled permissions‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‎‏‎‎‎‎‏‏‏‏‎‎‏‏‎‎‎‏‎‎‎‎‎‎‏‏‏‏‎‎‎‏‏‏‎‎‏‏‏‏‎‎‎‏‏‎‎‎‎‎‏‎‎‏‎‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎ has location access‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‏‏‏‎‎‏‎‏‎‎‎‎‎‏‎‎‏‏‏‏‎‎‏‎‎‎‎‎‎‎‏‎‏‎‎‏‏‎‎‏‏‎‏‎‎‎‎‎‏‎‏‎‏‏‎‎Your organization allows ‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎ to access your location‎‏‎‎‏‎" diff --git a/PermissionController/res/values-es-rUS/strings.xml b/PermissionController/res/values-es-rUS/strings.xml index a59575bd3565706c0eb5ab93907f4e884ccf7333..ba838606250e61f43801656c1882b1b2df976216 100644 --- a/PermissionController/res/values-es-rUS/strings.xml +++ b/PermissionController/res/values-es-rUS/strings.xml @@ -34,6 +34,7 @@ "Más información" "Permitir todo" "Permitir todo siempre" + "Permite el acceso limitado" "Seleccionar fotos y videos" "Seleccionar más" "No seleccionar más" @@ -60,6 +61,7 @@ "Apps" "Permisos de la app" "Apps que no usas" + "Editar las fotos seleccionadas para esta app" "No hay ninguna app sin usar" "0 apps en desuso" "Acciones recientes de permisos" @@ -455,48 +457,75 @@ "Mostrar detección de activación de asistente" "Mostrar ícono en la barra de estado cuando se use el micrófono para activar la función \"Asistente de voz\"" "¿Quieres permitir que <b>%1$s</b> acceda a las fotos y el contenido multimedia del dispositivo?" + "¿Permitir que <b>%1$s</b> acceda a fotos y contenido multimedia en tu <b>%2$s</b>?" "¿Permitir que <b>%1$s</b> acceda a tus contactos?" + "¿Permitir que <b>%1$s</b> acceda a los contactos en tu <b>%2$s</b>?" "¿Quieres permitir que <b>%1$s</b> acceda a la ubicación de este dispositivo?" + "¿Permitir que <b>%1$s</b> acceda a la ubicación de tu <b>%2$s</b>?" "La app solo tendrá acceso a la ubicación cuando esté en uso" "¿Quieres permitir que <b>%1$s</b> acceda a la ubicación de este dispositivo?" + "¿Permitir que <b>%1$s</b> acceda a la ubicación de tu <b>%2$s</b&gt?" "Es posible que esta app quiera acceder a tu ubicación todo el tiempo, incluso cuando no la uses. ""Permite el acceso en Configuración." "¿Quieres cambiar el acceso a la ubicación de <b>%1$s</b>?" + "¿Cambiar el acceso a la ubicación de <b>%1$s</b> en tu <b>%2$s</b>?" "Esta app quiere acceder a tu ubicación todo el tiempo, incluso cuando no la uses. ""Permite el acceso en Configuración." "¿Permitir que <b>%1$s</b> encuentre dispositivos cercanos, se conecte a ellos y determine su ubicación relativa?" + "¿Permitir que <b>%1$s</b> busque disp. cercanos, se conecte y fije su posición relativa en tu <b>%2$s</b>?" "¿Permitir que <b>%1$s</b> encuentre dispositivos cercanos, se conecte a ellos y determine su ubicación relativa? ""Hazlo en Configuración." "¿Quieres cambiar el acceso a la ubicación de <b>%1$s</b> de aproximada a precisa?" + "¿Cambiar el acceso a la ubicación de <b>%1$s</b> en tu <b>%2$s</b> de Aproximada a Precisa?" "¿Deseas permitir que <b>%1$s</b> acceda a la ubicación aproximada de este dispositivo?" + "¿Permitir que <b>%1$s</b> acceda a la ubicación aproximada de tu <b>%2$s</b>?" "Precisa" "Aproximada" "¿Permitir que <b>%1$s</b> acceda a tu calendario?" + "¿Permitir que <b>%1$s</b> acceda al calendario en tu <b>%2$s</b>?" "¿Permitir que <b>%1$s</b> envíe y vea SMS?" + "¿Permitir que <b>%1$s</b> envíe y vea SMS en tu <b>%2$s</b>?" "¿Quieres permitir que <b>%1$s</b> acceda a las fotos, el contenido multimedia y los archivos de tu dispositivo?" + "¿Permitir que <b>%1$s</b> acceda a fotos, contenido multimedia y archivos en tu <b>%2$s</b>?" "¿Permitir que <b>%1$s</b> acceda a <b>fotos, videos, música y audio</b> del dispositivo?" "¿Permitir que <b>%1$s</b> acceda a <b>fotos, videos, música, audio y otros archivos</b> del dispositivo?" "¿Permitir que <b>%1$s</b> acceda a la música y los archivos de audio de este dispositivo?" + "¿Permitir que <b>%1$s</b> acceda a la música y al audio en tu <b>%2$s</b>?" "¿Permitir que <b>%1$s</b> acceda a las fotos y los videos de este dispositivo?" + "¿Permitir que <b>%1$s</b> acceda a fotos y videos en tu <b>%2$s</b>?" "¿Quieres permitir que <b>%1$s</b> acceda a más fotos y videos del dispositivo?" + "¿Permitir que <b>%1$s</b> acceda a más fotos y videos en tu <b>%2$s</b>?" "¿Permitir que <b>%1$s</b> grabe audio?" + "¿Permitir que <b>%1$s</b> grabe audio en tu <b>%2$s</b>?" "La app solo podrá grabar audio cuando esté en uso" "¿Permitir que <b>%1$s</b> grabe audio?" + "¿Permitir que <b>%1$s</b> grabe audio en tu <b>%2$s</b>?" "Es posible que esta app quiera grabar audio todo el tiempo, incluso cuando no la estés usando. ""Permite el acceso en Configuración." "¿Cambiar el acceso al micrófono de <b>%1$s</b>?" + "¿Cambiar el acceso al micrófono de <b>%1$s</b> en tu <b>%2$s</b>?" "Esta app quiere grabar audio todo el tiempo, incluso cuando no la uses. ""Permite el acceso en Configuración." "¿Quieres permitir que <b>%1$s</b> acceda a tu actividad física?" + "¿Permitir que <b>%1$s</b> acceda a la actividad física en tu <b>%2$s</b>?" "¿Permitir que <b>%1$s</b> tome fotos y grabe videos?" + "¿Permitir que <b>%1$s</b> tome fotos y grabe videos en tu <b>%2$s</b>?" "La app solo podrá tomar fotos y grabar videos cuando esté en uso" "¿Permitir que <b>%1$s</b> tome fotos y grabe videos?" + "¿Permitir que <b>%1$s</b> tome fotos y grabe videos en tu <b>%2$s</b>?" "Es posible que esta app quiera tomar fotos y grabar videos todo el tiempo, incluso cuando no la estés usando. ""Permite el acceso en Configuración." "¿Cambiar el acceso a la cámara de <b>%1$s</b>?" + "¿Cambiar el acceso a la cámara de <b>%1$s</b> en tu <b>%2$s</b>?" "Esta app quiere tomar fotos y grabar videos todo el tiempo, incluso cuando no la uses. ""Permite el acceso en Configuración." "¿Permitir que <b>%1$s</b> acceda al registro de las llamadas telefónicas?" + "¿Permitir que <b>%1$s</b> acceda a los registros de llamadas en tu <b>%2$s</b>?" "¿Permitir que <b>%1$s</b> haga y administre las llamadas telefónicas?" + "¿Permitir que <b>%1$s</b> haga y administre llamadas telefónicas en tu <b>%2$s</b>?" "¿Permitir que <b>%1$s</b> acceda a los datos de sensores de tus signos vitales?" + "¿Permitir que <b>%1$s</b> acceda a datos de sensores de tus signos vitales en tu <b>%2$s</b>?" "Esta app quiere acceder a los datos de sensores de tus signos vitales todo el tiempo, incluso cuando no la usas. Para realizar este cambio, ""ve a configuración." "¿Quieres permitir que <b>%1$s</b> acceda a los datos de los sensores de tus signos vitales?" + "¿Permitir que <b>%1$s</b> acceda a datos de sensores de tus signos vitales en tu <b>%2$s</b>?" "Para permitir que esta app acceda a datos del sensor corporal todo el tiempo, incluso cuando no la uses, ""ve a la configuración." "¿Quieres seguir permitiendo que <b>%1$s</b> acceda a datos del sensor corporal mientras está en uso?" + "¿Seguir permitiendo que <b>%1$s</b> acceda a datos del sensor corporal de tu <b>%2$s</b> mientras se usa?" "¿Quieres permitir que <b>%1$s</b> te envíe notificaciones?" + "¿Permitir que <b>%1$s</b> te envíe notificaciones en tu <b>%2$s</b>?" "Permisos controlados" "%1$s tiene acceso a la ubicación" "Tu organización permite que %1$s acceda a tu ubicación" diff --git a/PermissionController/res/values-es/strings.xml b/PermissionController/res/values-es/strings.xml index cb76d35602ad69aea76df20a71c17aa874a9fe77..54f7751c254ec478f6171a563914fc5427d02e50 100644 --- a/PermissionController/res/values-es/strings.xml +++ b/PermissionController/res/values-es/strings.xml @@ -34,6 +34,7 @@ "Más información" "Permitir todos" "Permitir todos siempre" + "Permitir acceso limitado" "Seleccionar fotos y vídeos" "Seleccionar más" "No seleccionar más" @@ -60,6 +61,7 @@ "Aplicaciones" "Permisos de aplicaciones" "Aplicaciones no usadas" + "Cambia las fotos seleccionadas para esta aplicación" "No hay aplicaciones no usadas" "0 aplicaciones no usadas" "Decisiones recientes de permisos" @@ -455,48 +457,75 @@ "Mostrar la detección de activación del asistente" "Mostrar icono en la barra de estado cuando se utilice el micrófono para activar el asistente de voz" "¿Permitir que <b>%1$s</b> acceda a las fotos y archivos multimedia del dispositivo?" + "¿Permitir que <b>%1$s</b> acceda a fotos y vídeos de tu <b>%2$s</b>?" "¿Permitir que <b>%1$s</b> acceda a tus contactos?" + "¿Permitir que <b>%1$s</b> acceda a los contactos de tu <b>%2$s</b>?" "¿Permitir que <b>%1$s</b> acceda a la ubicación de este dispositivo?" + "¿Permitir que <b>%1$s</b> acceda a la ubicación de tu <b>%2$s</b>?" "La aplicación solo podrá acceder a la ubicación cuando la estés usando" "¿Permitir que <b>%1$s</b> acceda a la ubicación de este dispositivo?" + "¿Permitir que <b>%1$s</b> acceda a la ubicación de tu <b>%2$s?" "Es posible que esta aplicación quiera acceder a tu ubicación siempre, aunque no la estés usando. Puedes darle permiso en ""Ajustes""." "¿Quieres cambiar el acceso a la ubicación de <b>%1$s</b>?" + "¿Cambiar el acceso a la ubicación de <b>%1$s</b> en tu <b>%2$s</b>?" "Esta aplicación quiere acceder a tu ubicación siempre, incluso aunque no la estés usando. Puedes darle permiso en ""Ajustes""." "¿Permitir que <b>%1$s</b> busque, se conecte y determine la posición relativa de dispositivos cercanos?" + "¿Permitir que <b>%1$s</b> busque, se conecte y fije la posición relativa de disp. cercanos en tu <b>%2$s</b>?" "¿Permitir que <b>%1$s</b> busque, se conecte y determine la posición relativa de dispositivos cercanos? ""Permítelo en los ajustes" "¿Cambiar el acceso a la ubicación de <b>%1$s</b> de aproximada a precisa?" + "¿Cambiar el acceso a la ubicación de <b>%1$s</b> en tu <b>%2$s</b> de Aproximada a Precisa?" "¿Permitir que <b>%1$s</b> acceda a la ubicación aproximada de este dispositivo?" + "¿Permitir que <b>%1$s</b> acceda a la ubicación aproximada de tu <b>%2$s</b>?" "Precisa" "Aproximada" "¿Permitir que <b>%1$s</b> acceda a tu calendario?" + "¿Permitir que <b>%1$s</b> acceda al calendario de tu <b>%2$s</b>?" "¿Permitir que <b>%1$s</b> envíe y lea mensajes SMS?" + "¿Permitir que <b>%1$s</b> envíe y lea mensajes SMS en tu <b>%2$s</b>?" "¿Permitir que <b>%1$s</b> acceda a las fotos, al contenido multimedia y a los archivos de tu dispositivo?" + "¿Permitir que <b>%1$s</b> acceda a fotos, contenido multimedia y archivos de tu <b>%2$s</b>?" "¿Permitir que <b>%1$s</b> acceda a <b>fotos, vídeos, música y audio</b> de este dispositivo?" "¿Permitir que <b>%1$s</b> acceda a <b>fotos, vídeos, música, audio y otros archivos</b> del dispositivo?" "¿Permitir que <b>%1$s</b> acceda a música y audio de este dispositivo?" + "¿Permitir que <b>%1$s</b> acceda a la música y audio de tu <b>%2$s</b>?" "¿Permitir que <b>%1$s</b> acceda a fotos y vídeos de este dispositivo?" + "¿Permitir que <b>%1$s</b> acceda a fotos y vídeos de tu <b>%2$s</b>?" "¿Permitir que <b>%1$s</b> acceda a más fotos y vídeos de este dispositivo?" + "¿Permitir que <b>%1$s</b> acceda a más fotos y vídeos de tu <b>%2$s</b>?" "¿Permitir que <b>%1$s</b> grabe audio?" + "¿Permitir que <b>%1$s</b> grabe vídeos en tu <b>%2$s</b>?" "La aplicación solo podrá grabar audio mientras la estés usando." "¿Permitir que <b>%1$s</b> grabe audio?" + "¿Permitir que <b>%1$s</b> grabe vídeos en tu <b>%2$s</b>?" "Es posible que esta aplicación deba grabar audio en todo momento, aunque no se esté usando. Puedes darle este permiso en ""Ajustes." "¿Quieres cambiar el acceso de <b>%1$s</b> al micrófono?" + "¿Cambiar el acceso al micrófono de <b>%1$s</b> en tu <b>%2$s</b>?" "Esta aplicación debe grabar audio en todo momento, aunque no la estés usando. ""Puedes darle este permiso en Ajustes." "¿Permitir que <b>%1$s</b> acceda a tu actividad física?" + "¿Permitir que <b>%1$s</b> acceda a la actividad física de tu <b>%2$s</b>?" "¿Permitir que <b>%1$s</b> haga fotos y grabe vídeos?" + "¿Permitir que <b>%1$s</b> haga fotos y grabe vídeos en tu <b>%2$s</b>?" "La aplicación solo podrá hacer fotografías y grabar vídeos mientras la estés usando." "¿Permitir que <b>%1$s</b> haga fotos y grabe vídeos?" + "¿Permitir que <b>%1$s</b> haga fotos y grabe vídeos en tu <b>%2$s</b>?" "Es posible que esta aplicación deba hacer fotografías y grabar vídeos en todo momento, aunque no se esté usando. ""Puedes darle este permiso en Ajustes." "¿Quieres cambiar el acceso de <b>%1$s</b> a la cámara?" + "¿Cambiar el acceso a la cámara de <b>%1$s</b> en tu <b>%2$s</b>?" "Esta aplicación debe hacer fotografías y grabar vídeos en todo momento, aunque no la estés usando. ""Puedes darle este permiso en Ajustes." "¿Permitir que <b>%1$s</b> acceda a los registros de llamadas del teléfono?" + "¿Permitir que <b>%1$s</b> acceda a los registros de llamadas de teléfono de tu <b>%2$s</b>?" "¿Permitir que <b>%1$s</b> haga y gestione llamadas?" + "¿Permitir que <b>%1$s</b> haga y gestione llamadas en tu <b>%2$s</b>?" "¿Permitir que <b>%1$s</b> acceda a los datos del sensor sobre tus constantes vitales?" + "¿Permitir que <b>%1$s</b> acceda a los datos de sensores sobre constantes vitales de tu <b>%2$s</b>?" "Esta aplicación quiere acceder a los datos de sensores de tus constantes vitales todo el tiempo, incluso cuando no la uses. Para hacer este cambio, ""ve a los ajustes""." "¿Permitir que <b>%1$s</b> acceda a los datos de sensores de tus constantes vitales?" + "¿Permitir que <b>%1$s</b> acceda a los datos de sensores sobre constantes vitales de tu <b>%2$s</b>?" "Para permitir que esta aplicación acceda a datos de sensores corporales todo el tiempo, incluso cuando no la uses, ""ve a los ajustes""." "¿Seguir permitiendo que <b>%1$s</b> acceda a los datos de los sensores corporales mientras se usa?" + "¿Permitir que <b>%1$s</b> acceda a los datos del sensor corporal de tu <b>%2$s</b> mientras se usa?" "¿Permitir que <b>%1$s</b> te envíe notificaciones?" + "¿Permitir que <b>%1$s</b> envíe notificaciones a tu <b>%2$s</b>?" "Permisos controlados" "%1$s tiene acceso a la ubicación" "Tu organización permite que %1$s acceda a tu ubicación" diff --git a/PermissionController/res/values-et/strings.xml b/PermissionController/res/values-et/strings.xml index 027b554e0964590254aecad983bd4f4dd67ac84c..f17cbd1f8b320253cafafbe25a135aa30d45b1fb 100644 --- a/PermissionController/res/values-et/strings.xml +++ b/PermissionController/res/values-et/strings.xml @@ -34,6 +34,7 @@ "Lisateave" "Anna juurdepääs kõigile" "Luba alati kõik" + "Luba piiratud juurdepääs" "Valige fotod ja videod" "Valige rohkem" "Ära vali rohkem" @@ -60,6 +61,7 @@ "Rakendused" "Rakenduse load" "Kasutamata rakendused" + "Selle rakenduse jaoks valitud fotode muutmine" "Kasutamata rakendusi pole" "0 kasutamata rakendust" "Hiljutised lubade otsused" @@ -455,48 +457,75 @@ "Assistendi käivitamise tuvastamise kuvamine" "Ikooni kuvamine olekuribal, kui häälassistendi aktiveerimiseks kasutatakse mikrofoni" "Kas lubada rakendusele <b>%1$s</b> juurdepääs seadmes olevatele fotodele ja meediale?" + "Kas lubada rakendusele <b>%1$s</b> teie seadmes <b>%2$s</b> juurdepääs fotodele ja meediumisisule?" "Kas lubada rakendusele <b>%1$s</b> juurdepääs teie kontaktidele?" + "Kas lubada rakendusele <b>%1$s</b> teie seadmes <b>%2$s</b> juurdepääs teie kontaktidele?" "Kas lubada rakendusele <b>%1$s</b> juurdepääs selle seadme asukohale?" + "Kas lubada rakendusele <b>%1$s</b> juurdepääs teie seadme <b>%2$s</b> asukohale?" "Rakendusel on juurdepääs asukohale vaid sel ajal, kui rakendust kasutate" "Kas lubada rakendusele <b>%1$s</b> juurdepääs selle seadme asukohale?" + "Kas lubada rakendusele <b>%1$s</b> juurdepääs selle seadme <b>%2$s</b> asukohale?" "See rakendus võib soovida pidevat juurdepääsu teie asukohale (ka siis, kui te rakendust ei kasuta). ""Lubage see seadetes""." "Kas muuta rakenduse <b>%1$s</b> puhul juurdepääsu asukohale?" + "Kas muuta rakenduse <b>%1$s</b> puhul teie seadmes <b>%2$s</b> juurdepääsu asukohale?" "See rakendus soovib pidevat juurdepääsu teie asukohale (ka siis, kui te rakendust ei kasuta). ""Lubage see seadetes""." "Kas lubada rakendusel <b>%1$s</b> leida lähedalasuvaid seadmeid, nendega ühendada ja nende suhteline asukoht määrata?" + "Kas lubada rakendusel <b>%1$s</b> otsida ja määratleda teie seadmes <b>%2$s</b> läheduses olevate seadmete suhtelist asukohta ja sellega ühendada?" "Kas lubada rakendusel <b>%1$s</b> leida lähedalasuvaid seadmeid, nendega ühendada ja nende suhteline asukoht määrata? ""Lubage menüüs Seaded." "Kas muuta rakenduse <b>%1$s</b> asukohale juurdepääsemise tase ligikaudsest täpseks?" + "Kas muuta rakenduse <b>%1$s</b> juurdepääs asukohateabele teie seadmes <b>%2$s</b> ligikaudsest täpseks?" "Kas lubada rakendusele <b>%1$s</b> juurdepääs selle seadme ligikaudsele asukohale?" + "Kas lubada rakendusele <b>%1$s</b> juurdepääs teie seadme <b>%2$s</b> ligikaudsele asukohale?" "Täpne" "Ligikaudne" "Kas lubada rakendusele <b>%1$s</b> juurdepääs teie kalendrile?" + "Kas lubada rakendusele <b>%1$s</b> teie seadmes <b>%2$s</b> juurdepääs teie kalendrile?" "Kas lubada rakendusel <b>%1$s</b> saata ja vaadata SMS-sõnumeid?" + "Kas lubada rakendusel <b>%1$s</b> saata ja vaadata teie seadmes <b>%2$s</b> SMS-sõnumeid?" "Kas lubada rakendusele <b>%1$s</b> juurdepääs seadmes olevatele fotodele, meediale ja failidele?" + "Kas lubada rakendusele <b>%1$s</b> teie seadmes <b>%2$s</b> juurdepääs fotodele, meediumisisule ja failidele?" "Kas anda rakendusele <b>%1$s</b&gt seadmes juurdep. <b>fotodele, videotele, muusikale ja helidele</b>?" "Anda rakendusele <b>%1$s</b> juurdep. <b>foto-, video-, muusika-, heli- ja muudele failidele</b>?" "Kas anda rakendusele <b>%1$s</b> selles seadmes juurdepääs muusikale ja helifailidele?" + "Kas lubada rakendusele <b>%1$s</b> selles seadmes <b>%2$s</b> juurdepääs muusikale ja helifailidele?" "Kas anda rakendusele <b>%1$s</b> selles seadmes juurdepääs fotodele ja videotele?" + "Kas lubada rakendusele <b>%1$s</b> teie seadmes <b>%2$s</b> juurdepääs fotodele ja videotele?" "Kas anda rakendusele <b>%1$s</b> selles seadmes juurdepääs rohkematele fotodele ja videotele?" + "Kas lubada rakendusele <b>%1$s</b> teie seadmes <b>%2$s</b> juurdepääs enamatele fotodele ja videotele?" "Kas lubada rakendusel <b>%1$s</b> salvestada heli?" + "Kas lubada rakendusel <b>%1$s</b> salvestada teie seadmes <b>%2$s</b> heli?" "Rakendus saab heli salvestada vaid siis, kui rakendust kasutate" "Kas lubada rakendusel <b>%1$s</b> heli salvestada?" + "Kas lubada rakendusel <b>%1$s</b> salvestada teie seadmes <b>%2$s</b> heli?" "See rakendus võib soovida heli salvestada mis tahes ajal (ka siis, kui te rakendust ei kasuta). ""Lubage see seadetes." "Kas muuta rakenduse <b>%1$s</b> puhul juurdepääsu mikrofonile?" + "Kas muuta rakenduse <b>%1$s</b> puhul teie seadmes <b>%2$s</b> juurdepääsu mikrofonile?" "See rakendus soovib heli salvestada mis tahes ajal (ka siis, kui te rakendust ei kasuta). ""Lubage see seadetes." "Kas anda rakendusele <b>%1$s</b> juurdepääs teie füüsilisele tegevusele?" + "Kas lubada rakendusele <b>%1$s</b> seadmes <b>%2$s</b> juurdepääs teie füüsilise tegevuse andmetele?" "Kas lubada rakendusel <b>%1$s</b> jäädvustada pilte ja salvestada videoid?" + "Kas lubada rakendusel <b>%1$s</b> teha teie seadmes <b>%2$s</b> pilte ja salvestada videot?" "Rakendus saab pildistada ja videoid salvestada vaid siis, kui rakendust kasutate" "Kas lubada rakendusel <b>%1$s</b> pildistada ja videoid salvestada?" + "Kas lubada rakendusel <b>%1$s</b> teha teie seadmes <b>%2$s</b> pilte ja salvestada videot?" "See rakendus võib soovida pildistada ja videoid salvestada mis tahes ajal (ka siis, kui te rakendust ei kasuta). ""Lubage see seadetes." "Kas muuta rakenduse <b>%1$s</b> puhul juurdepääsu kaamerale?" + "Kas muuta rakenduse <b>%1$s</b> puhul teie seadmes <b>%2$s</b> juurdepääsu kaamerale?" "See rakendus soovib pildistada ja videoid salvestada mis tahes ajal (ka siis, kui te rakendust ei kasuta). ""Lubage see seadetes." "Kas lubada rakendusel <b>%1$s</b> pääseda juurde teie telefoni kõnelogidele?" + "Kas lubada rakendusele <b>%1$s</b> teie seadmes <b>%2$s</b> juurdepääs teie telefoni kõnelogidele?" "Kas lubada rakendusel <b>%1$s</b> teha ja hallata telefonikõnesid?" + "Kas lubada rakendusel <b>%1$s</b> teha ja hallata teie seadmes <b>%2$s</b> telefonikõnesid?" "Kas lubada rakendusele <b>%1$s</b> juurdepääs anduri andmetele teie eluliste näitajate kohta?" + "Kas lubada rakendusele <b>%1$s</b> seadmes <b>%2$s</b> juurdepääs anduri andmetele teie eluliste näitajate kohta?" "See rakendus soovib pidevat juurdepääsu teie elulistele näitajatele (ka siis, kui te rakendust ei kasuta). Selle muudatuse tegemiseks ""avage seaded." "Kas lubada rakendusele <b>%1$s</b> juurdepääs anduri andmetele teie eluliste näitajate kohta?" + "Kas lubada rakendusele <b>%1$s</b> seadmes <b>%2$s</b> juurdepääs anduri andmetele teie eluliste näitajate kohta?" "Selleks et anda rakendusele pidev juurdepääs kehaanduri andmetele (ka siis, kui rakendust ei kasutata), ""avage seaded." "Kas lubada jätkuvalt rakendusel <b>%1$s</b> pääseda juurde kehaanduri andmetele, kui rakendust kasutatakse?" + "Kas lubada jätkuvalt rakendusele <b>%1$s</b> teie seadmes <b>%2$s</b> juurdepääsu kehaanduri andmetele, kui rakendust kasutatakse?" "Kas lubada rakendusel <b>%1$s</b> teile märguandeid saata?" + "Kas lubada rakendusel <b>%1$s</b> saata teie seadmes <b>%2$s</b> teile märguandeid?" "Hallatud load" "Rakendus %1$s pääseb juurde asukohale" "Teie organisatsioon lubab rakendusel %1$s pääseda juurde teie asukohale." diff --git a/PermissionController/res/values-eu/strings.xml b/PermissionController/res/values-eu/strings.xml index aaa711b18c67b915a84f7311e4654beabc0579e3..a84c1f9ca1789115a1bc698e996d4cd590afbf95 100644 --- a/PermissionController/res/values-eu/strings.xml +++ b/PermissionController/res/values-eu/strings.xml @@ -34,6 +34,7 @@ "Datu gehiago" "Eman guztirako baimena" "Eman guztirako baimena beti" + "Eman sarbide mugatua" "Hautatu argazkiak eta bideoak" "Hautatu beste batzuk" "Ez hautatu gehiago" @@ -60,6 +61,7 @@ "Aplikazioak" "Aplikazio-baimenak" "Erabiltzen ez diren aplikazioak" + "Editatu aplikazio honetarako hautatutako argazkiak" "Ez dago erabiltzen ez duzun aplikaziorik" "Erabiltzen ez diren 0 aplikazio" "Azkenaldian baimenen inguruan hartutako erabakiak" @@ -455,48 +457,75 @@ "Erakutsi laguntzailea abiarazteko hautematea" "Mikrofonoa erabiltzen denean ahozko laguntza aktibatzeko, erakutsi dagokion ikonoa egoera-barran" "Gailuko argazkiak eta multimedia-edukia erabiltzeko baimena eman nahi diozu <b&gt%1$s</b> aplikazioari?" + "<b>%2$s</b> gailuko argazkiak eta multimedia-edukia erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "Kontaktuak erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" + "<b>%2$s</b> gailuko kontaktuak erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "Gailuaren kokapena erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" + "<b>%2$s</b> gailuaren kokapena erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "Hura erabiltzen ari zarenean soilik atzituko du aplikazioak kokapena" "Gailuaren kokapena erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" + "<b>%2$s gailuaren kokapena erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "Baliteke aplikazioak beti atzitu behar izatea zure kokapena, baita aplikazioa erabiltzen ari ez zarenean ere. ""Eman baimen hori Ezarpenak atalean""." "Kokapenerako sarbidea aldatu nahi diozu <b>%1$s</b> aplikazioari?" + "<b>%2$s</b> gailuaren kokapena erabiltzeko baimena aldatu nahi diozu <b>%1$s</b> aplikazioari?" "Aplikazioak beti atzitu nahi du zure kokapena, baita aplikazioa erabiltzen ari ez zarenean ere. ""Eman baimen hori Ezarpenak atalean""." "Inguruko gailuak aurkitu, haietara konektatu eta haien arteko distantzia erlatiboa zehazteko baimena eman <b>%1$s</b> aplikazioari?" + "<b>%2$s</b> gailuan inguruko gailuak aurkitu, haietara konektatu eta haien distantzia erlatiboa zehazteko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "Inguruko gailuak aurkitzeko, haietara konektatzeko eta haien arteko distantzia erlatiboa zehazteko baimena eman nahi diozu <b>%1$s</b&gt aplikazioari? ""Eman baimena ezarpenetan." "<b>%1$s</b> aplikazioak gutxi gorabeherako kokapena atzi dezake. Kokapen zehatza erabiltzeko baimena eman nahi diozu?" + "<b>%1$s</b> aplikazioak <b>%2$s</b> gailuaren gutxi gorabeherako kokapena erabil dezake. Kokapen zehatza erabiltzeko baimena eman nahi diozu?" "Gailuaren gutxi gorabeherako kokapena erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" + "<b>%2$s</b> gailuaren gutxi gorabeherako kokapena erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "Zehatza" "Gutxi gorabeherakoa" "Egutegia erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" + "<b>%2$s</b> gailuko egutegia erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "SMS mezuak bidaltzeko eta ikusteko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" + "<b>%2$s</b> gailuan SMSak bidaltzeko eta ikusteko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "Gailuko argazkiak, multimedia-edukia eta fitxategiak erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" + "<b>%2$s</b> gailuko argazkiak, multimedia-edukia eta fitxategiak erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "Gailuko <b>argazkiak, bideoak, musika eta audioa</b> erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "Gailuko <b>argazkiak, bideoak, musika, audioa eta bestelako fitxategiak</b> erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "Gailuko musika eta audioa erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" + "<b>%2$s</b> gailuko musika eta audioa erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "Gailuko argazkiak eta bideoak erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" + "<b>%2$s</b> gailuko argazki eta bideoak erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "Gailuko argazki eta bideo gehiago erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" + "<b>%2$s</b> gailuko argazki eta bideo gehiago erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "Audioa grabatzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" + "<b>%2$s</b> gailuan audioa grabatzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "Aplikazioak hura erabiltzean soilik grabatuko du audioa" "Audioa grabatzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" + "<b>%2$s</b> gailuan audioa grabatzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "Baliteke aplikazioak edonoiz grabatzea audioa, baita aplikazioa erabiltzen ari ez zarenean ere. ""Eman baimena ezarpenetan." "Mikrofonorako sarbidea aldatu nahi diozu <b>%1$s</b> aplikazioari?" + "<b>%2$s</b> gailuko mikrofonoa erabiltzeko baimena aldatu nahi diozu <b>%1$s</b> aplikazioari?" "Aplikazioak edonoiz grabatu nahi du audioa, baita aplikazioa erabiltzen ari ez zarenean ere. ""Eman baimena ezarpenetan." "Zure jarduera fisikoa erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" + "<b>%2$s</b> gailuko jarduera fisikoak erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "Argazkiak ateratzeko eta bideoak grabatzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" + "<b>%2$s</b> gailuan argazkiak atera eta bideoak grabatzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "Aplikazioak hura erabiltzean soilik aterako ditu argazkiak, eta grabatuko bideoak" "Argazkiak atera eta bideoak grabatzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" + "<b>%2$s</b> gailuan argazkiak atera eta bideoak grabatzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "Baliteke aplikazioak edonoiz ateratzea argazkiak eta grabatzea bideoak, baita aplikazioa erabiltzen ari ez zarenean ere. ""Eman baimena ezarpenetan." "Kamerarako sarbidea aldatu nahi diozu <b>%1$s</b> aplikazioari?" + "<b>%2$s</b> gailuko kamera erabiltzeko baimena aldatu nahi diozu <b>%1$s</b> aplikazioari?" "Aplikazioak edonoiz atera nahi ditu argazkiak eta grabatu bideoak, baita aplikazioa erabiltzen ari ez zarenean ere. ""Eman baimena ezarpenetan." "Telefonoko deien erregistroa erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" + "<b>%2$s</b> gailuko deien erregistroa erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "Telefono-deiak egiteko eta kudeatzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" + "<b>%2$s</b> gailuan telefono-deiak egiteko eta kudeatzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "Bizi-konstanteei buruzko sentsorearen datuak erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" + "<b>%2$s</b> gailuko bizi-konstanteei buruzko sentsoreen datuak erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "Aplikazioak bizi-konstanteei buruzko sentsoreen datuak atzitu nahi ditu, baita aplikazioa erabiltzen ari ez zarenean ere. Aldaketa hori egiteko, ""joan ezarpenetara." "Bizi-konstanteei buruzko sentsoreen datuak erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" + "<b>%2$s</b> gailuko bizi-konstanteei buruzko sentsoreen datuak erabiltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "Aplikazioari gorputz-sentsoreen datuak beti erabiltzeko baimena emateko (baita aplikazioa erabiltzen ari ez zarenean ere), ""joan ezarpenetara." "<b>%1$s</b> erabili bitartean gorputz-sentsoreen datuak erabiltzeko baimena eman nahi diozu aplikazio horri?" + "<b>%1$s</b> erabili bitartean <b>%2$s</b> gailuko gorputz-sentsoreen datuak erabiltzeko baimena eman nahi diozu aplikazioari?" "Jakinarazpenak bidaltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" + "<b>%2$s</b> gailura jakinarazpenak bidaltzeko baimena eman nahi diozu <b>%1$s</b> aplikazioari?" "Kontrolatutako baimenak" "%1$s aplikazioak kokapena erabil dezake" "Erakundeak kokapena erabiltzeko baimena eman dio %1$s aplikazioari" diff --git a/PermissionController/res/values-fa/strings.xml b/PermissionController/res/values-fa/strings.xml index a5c05ca32f68924db1196258ad4e68086287586c..671694e0d10340a10e99c4bcea08ffce9f1feaf4 100644 --- a/PermissionController/res/values-fa/strings.xml +++ b/PermissionController/res/values-fa/strings.xml @@ -18,7 +18,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> "کنترل‌کننده اجازه" "تأیید" - "مجوزها" + "اجازه‌ها" "لغو" "برگشت" "دردسترس" @@ -34,6 +34,7 @@ "اطلاعات بیشتر" "مجاز بودن همه" "همه موارد همیشه مجازاند" + "مجاز کردن دسترسی محدود" "انتخاب عکس و ویدیو" "انتخاب موارد بیشتر" "دیگر چیزی انتخاب نشود" @@ -60,6 +61,7 @@ "برنامه‌ها" "اجازه‌های برنامه" "برنامه‌های استفاده‌نشده" + "ویرایش عکس‌های انتخاب‌شده برای این برنامه" "برنامه استفاده‌نشده‌ای موجود نیست" "برنامه استفاده‌نشده‌ای وجود ندارد" "تصمیم‌های اخیر درباره اجازه‌ها" @@ -111,7 +113,7 @@ "فقط هنگام استفاده از برنامه مجاز است" "اجازه ندادن" "درحال بارگیری…" - "همه مجوزها" + "همه اجازه‌ها" "سایر قابلیت‌های برنامه" "درخواست اجازه" "Android Wear" @@ -143,7 +145,7 @@ "{count,plural, =1{# ساعت}one{# ساعت}other{# ساعت}}" "{count,plural, =1{# دقیقه}one{# دقیقه}other{# دقیقه}}" "{count,plural, =1{# ثانیه}one{# ثانیه}other{# ثانیه}}" - "همه مجوزها" + "همه اجازه‌ها" "هر زمانی" "{count,plural, =1{# روز گذشته}one{# روز گذشته}other{# روز گذشته}}" "{count,plural, =1{# ساعت گذشته}one{# ساعت گذشته}other{# ساعت گذشته}}" @@ -158,9 +160,9 @@ "پراستفاده‌ترین مجوز در هرزمانی" "پراستفاده‌ترین مجوز در ۷ روز گذشته" "پراستفاده‌ترین مجوز در ۲۴ ساعت گذشته" - "پراستفاده‌ترین مجوزها در ۱ ساعت گذشته" + "پراستفاده‌ترین اجازه‌ها در ۱ ساعت گذشته" "پراستفاده‌ترین مجوزها در ۱۵ دقیقه گذشته" - "پراستفاده‌ترین مجوزها در ۱ دقیقه گذشته" + "پراستفاده‌ترین اجازه‌ها در ۱ دقیقه گذشته" "{count,plural, =1{در # روز گذشته استفاده نشده است}one{در # روز گذشته استفاده نشده است}other{در # روز گذشته استفاده نشده است}}" "{count,plural, =1{در # ساعت گذشته استفاده نشده است}one{در # ساعت گذشته استفاده نشده است}other{در # ساعت گذشته استفاده نشده است}}" "{count,plural, =1{یک برنامه از آن استفاده کرده است}one{# برنامه از آن استفاده کرده است}other{# برنامه از آن استفاده کرده است}}" @@ -168,9 +170,9 @@ "فیلترشده براساس: %1$s" "حذف فیلتر" "فیلتر کردن براساس" - "فیلتر کردن براساس مجوزها" + "فیلتر کردن براساس اجازه‌ها" "فیلتر براساس زمان" - "بیشترین مجوزها" + "بیشترین اجازه‌ها" "بیشترین تعداد دسترسی" "اخیر" "به‌ترتیب استفاده برنامه" @@ -450,53 +452,80 @@ "تنظیمات پیشرفته" "تنظیمات پیشرفته" "نمایش استفادهٔ برنامه سیستم" - "نمایش استفاده برنامه سیستم از مجوزها در نوار وضعیت، داشبورد، و جاهای دیگر" + "نمایش استفاده برنامه سیستم از اجازه‌ها در نوار وضعیت، داشبورد، و جاهای دیگر" "برجسته کردن استفاده برای موارد زیر" "نمایش دستیار تشخیص راه‌انداز" "نمایش نماد مربوطه در نوار وضعیت وقتی از میکروفون برای فعال کردن دستیار صوتی استفاده می‌شود" "‏به <b>%1$s<b> اجازه داده شود به عکس‌ها و رسانه‌های موجود در دستگاهتان دسترسی پیدا کند؟" + "‏به <b>%1$s</b> اجازه داده شود به عکس‌ها و رسانه‌های <b>%2$s</b> دسترسی داشته باشد؟" "‏به <b>%1$s</b> اجازه داده شود به مخاطبین شما دسترسی پیدا کند؟" + "‏به <b>%1$s</b> اجازه داده شود به مخاطبینتان در <b>%2$s</b> دسترسی داشته باشد؟" "‏به <b>%1$s</b> اجازه داده شود به مکان این دستگاه دسترسی پیدا کند؟" + "‏به <b>%1$s</b> اجازه داده شود به مکان <b>%2$s’s</b> دسترسی داشته باشد؟" "این برنامه فقط وقتی از آن استفاده می‌کنید، به مکان دسترسی خواهد داشت" "‏به <b>%1$s</b> اجازه داده شود به مکان این دستگاه دسترسی پیدا کند؟" + "‏به <b>%1$s</b> اجازه داده شود به مکان <b>%2$s دسترسی داشته باشد؟" "این برنامه ممکن است بخواهد مرتب به مکانتان دسترسی داشته باشد، حتی زمانی‌که از برنامه استفاده نمی‌کنید. ""در تنظیمات به آن اجازه دهید." "‏دسترسی به مکان برای <b&gt؛%1$s</b&gt تغییر کند؟" + "‏دسترسی <b>%1$s</b> به مکان در <b>%2$s</b> تغییر کند؟" "این برنامه می‌خواهد مرتب به مکانتان دسترسی داشته باشد، حتی زمانی‌که از برنامه استفاده نمی‌کنید. ""در تنظیمات به آن اجازه دهید." "‏به <b>%1$s</b> اجازه داده شود دستگاه‌های اطراف را پیدا کند، به آن‌ها متصل شود، و موقعیت نسبی آن‌ها را مشخص کند؟" + "‏به <b>%1$s</b> اجازه داده شود در <b>%2$s</b> دستگاه‌های اطراف را پیدا کند، به آن‌ها متصل شود، و موقعیت نسبی آن‌ها را تعیین کند؟" "‏به <b>%1$s</b> اجازه داده شود دستگاه‌های اطراف را پیدا کند، به آن‌ها متصل شود، و موقعیت نسبی آن‌ها را مشخص کند؟ ""در تنظیمات اجازه دهید." "دسترسی <b>%1$s</b> به مکان از حالت تقریبی به دقیق تغییر کند؟" + "‏دسترسی <b>%1$s</b> به مکان <b>%2$s</b> از تقریبی به دقیق تغییر کند؟" "‏به <b&gt؛%1$s</b&gt؛ اجازه داده شود به مکان تقریبی این دستگاه دسترسی پیدا کند؟" + "‏به <b>%1$s</b> اجازه داده شود به مکان تقریبی <b>%2$s</b> دسترسی داشته باشد؟" "دقیق" "تقریبی" "‏به <b>%1$s</b> اجازه دسترسی به تقویمتان داده شود؟" + "‏به <b>%1$s</b> اجازه داده شود به تقویمتان در <b>%2$s</b> دسترسی داشته باشد؟" "‏به «<b>%1$s<b>» اجازه داده شود پیامک ارسال و مشاهده کند؟" + "‏به <b>%1$s</b> اجازه داده شود در <b>%2$s</b> پیامک ارسال کند و پیامک‌ها را مشاهده کند؟" "‏به برنامه <b>%1$s<b> اجازه داده شود به عکس‌ها، رسانه، و فایل‌های موجود در دستگاهتان دسترسی داشته باشد؟" + "‏به <b>%1$s</b> اجازه داده شود به عکس‌ها، رسانه‌ها، و فایل‌های <b>%2$s</b> دسترسی داشته باشد؟" "‏به <b>%1$s</b> اجازه می‌دهید به <b>عکس‌ها، ویدیوها، موسیقی، و فایل‌های صوتی</b> این دستگاه دسترسی داشته باشد؟" "‏به <b>%1$s</b> اجازه می‌دهید به <b>عکس‌ها، ویدیوها، موسیقی، صوت، و فایل‌های دیگر</b> این دستگاه دسترسی داشته باشد؟" "‏به <b>%1$s</b> اجازه می‌دهید به فایل‌های موسیقی و صوتی در این دستگاه دسترسی داشته باشد؟" + "‏به <b>%1$s</b> اجازه داده شود در <b>%2$s</b> به فایل‌های موسیقی و صوتی دسترسی داشته باشد؟" "‏به <b>%1$s</b> اجازه می‌دهید به عکس‌ها و ویدیوهای این دستگاه دسترسی داشته باشد؟" + "‏به <b>%1$s</b> اجازه داده شود به عکس‌ها و ویدیوهای <b>%2$s</b> دسترسی داشته باشد؟" "‏به <b>%1$s</b> اجازه می‌دهید به عکس‌ها و ویدیوهای بیشتری در این دستگاه دسترسی داشته باشد؟" + "‏به <b>%1$s</b> اجازه داده شود به عکس‌ها و ویدیوهای بیشتری در <b>%2$s</b> دسترسی داشته باشد؟" "‏به </b>%1$s</b> اجازه داده شود صدا ضبط کند؟" + "‏به <b>%1$s</b> اجازه داده شود در <b>%2$s</b> صدا ضبط کند؟" "این برنامه فقط وقتی از آن استفاده می‌کنید، می‌تواند صدا ضبط کند" "‏به </b>%1$s</b> اجازه داده شود صدا ضبط کند؟" + "‏به <b>%1$s</b> اجازه داده شود در <b>%2$s</b> صدا ضبط کند؟" "این برنامه ممکن است بخواهد مرتب صدا ضبط کند، حتی زمانی‌که از برنامه استفاده نمی‌کنید. ""در تنظیمات به آن اجازه دهید." "‏دسترسی به میکروفون برای <b>%1$s</b> تغییر کند؟" + "‏دسترسی <b>%1$s</b> به میکروفون در <b>%2$s</b> تغییر کند؟" "این برنامه می‌خواهد مرتب صدا ضبط کند، حتی زمانی‌که از برنامه استفاده نمی‌کنید. ""در تنظیمات به آن اجازه دهید." "‏به <b>%1$s</b> اجازه می‌دهید به فعالیت فیزیکی‌تان دسترسی پیدا کند؟" + "‏به <b>%1$s</b> اجازه داده شود به فعالیت فیزیکی‌تان در <b>%2$s</b> دسترسی داشته باشد؟" "‏به <b>%1$s</b> اجازه داده شود عکس بگیرد و ویدیو ضبط کند؟" + "‏به <b>%1$s</b> t اجازه داده شود در <b>%2$s</b> عکس بگیرد و ویدیو ضبط کند؟" "این برنامه فقط وقتی از آن استفاده می‌کنید، می‌تواند عکس و فیلم بگیرد" "‏به <b>%1$s</b> اجازه داده شود عکس بگیرد و ویدیو ضبط کند؟" + "‏به <b>%1$s</b> t اجازه داده شود در <b>%2$s</b> عکس بگیرد و ویدیو ضبط کند؟" "این برنامه ممکن است بخواهد مرتب عکس و فیلم بگیرد، حتی زمانی‌که از برنامه استفاده نمی‌کنید. ""در تنظیمات به آن اجازه دهید." "‏دسترسی به دوربین برای <b>%1$s</b> تغییر کند؟" + "‏دسترسی <b>%1$s</b> به دوربین در <b>%2$s</b> تغییر کند؟" "این برنامه می‌خواهد مرتب عکس و فیلم بگیرد، حتی زمانی‌که از برنامه استفاده نمی‌کنید. ""در تنظیمات به آن اجازه دهید." "‏به <b>%1$s</b> اجازه داده شود به گزارش تماس‌های تلفنی شما دسترسی داشته باشد؟" + "‏به <b>%1$s</b> اجازه داده شود به گزارش‌های تماس تلفنتان در <b>%2$s</b> دسترسی داشته باشد؟" "‏به <b>%1$s<b> اجازه داده شود تماس‌های تلفنی برقرار کند و آن‌ها را مدیریت کند؟" + "‏به <b>%1$s</b> اجازه داده شود در <b>%2$s</b> تماس‌های تلفنی برقرار کند و آن‌ها را مدیریت کند؟" "‏به <b>%1$s<b> اجازه داده شود به داده‌های حسگر مربوط به علائم حیاتی شما دسترسی پیدا کند؟" + "‏به <b>%1$s</b> اجازه داده شود به داده‌های علائم حیاتی‌تان از حسگر <b>%2$s</b> دسترسی داشته باشد؟" "این برنامه می‌خواهد به داده‌های حسگر از علائم حیاتی شما همیشه دسترسی داشته باشد، حتی زمانی که از برنامه استفاده نمی‌کنید. برای انجام این تغییر، ""به تنظیمات بروید." "‏به <b>%1$s</b> اجازه می‌دهید به داده‌های علائم حیاتی‌تان از حسگر دسترسی داشته باشد؟" + "‏به <b>%1$s</b> اجازه داده شود به داده‌های علائم حیاتی‌تان از حسگر <b>%2$s</b> دسترسی داشته باشد؟" "برای اینکه این برنامه بتواند همیشه و حتی زمانی که از برنامه استفاده نمی‌کنید به داده‌های حسگر بدن دسترسی داشته باشد، ""به تنظیمات بروید." "‏به <b>%1$s</b> همچنان اجازه داده شود درحین استفاده، به داده‌های حسگر بدن دسترسی داشته باشد؟" + "‏به <b>%1$s</b> همچنان اجازه داده شود در <b>%2$s</b> به داده‌های حسگر بدن، درحین استفاده از برنامه، دسترسی داشته باشد؟" "‏به <b>%1$s</b> اجازه داده شود اعلان ارسال کند؟" + "‏به <b>%1$s</b> اجازه داده شود در <b>%2$s</b> اعلان ارسال کند؟" "مجوزهای کنترل‌شده" "%1$s به مکان دسترسی دارد" "سازمان شما به %1$s اجازه داده است به مکانتان دسترسی داشته باشد" diff --git a/PermissionController/res/values-fi/strings.xml b/PermissionController/res/values-fi/strings.xml index 519ce8bc306a593788a395c91313a4382ddb66e9..ee85d8df212c3d3d3481f2d950ae7bc03fdaf283 100644 --- a/PermissionController/res/values-fi/strings.xml +++ b/PermissionController/res/values-fi/strings.xml @@ -34,6 +34,7 @@ "Lisätietoja" "Salli kaikki" "Salli aina kaikki" + "Salli rajoitettu pääsy" "Valitse kuvia ja videoita" "Valitse lisää" "Älä valitse enempää" @@ -60,6 +61,7 @@ "Sovell." "Sovellusluvat" "Käyttämättömät sovellukset" + "Muuta sovelluksen kuvavalintaa" "Ei käyttämättömiä sovelluksia" "0 käyttämätöntä sovellusta" "Viimeaikaiset lupapäätökset" @@ -455,48 +457,75 @@ "Näytä avustajan käynnistyskomennon havaitseminen" "Näytä tilarivillä kuvake, kun ääniapuri aktivoidaan mikrofonin avulla." "Saako <b>%1$s</b> käyttää laitteellasi olevia kuvia ja mediaa?" + "Saako <b>%1$s</b> pääsyn laitteelta (<b>%2$s</b>) löytyviin kuviin ja mediaan?" "Saako <b>%1$s</b> yhteystietojesi käyttöoikeuden?" + "Saako <b>%1$s</b> pääsyn laitteelta (<b>%2$s</b>) löytyviin yhteystietoihin?" "Saako <b>%1$s</b> pääsyn tämän laitteen sijaintiin?" + "Saako <b>%1$s</b> pääsyn laitteen (<b>%2$s’s</b>) sijaintiin?" "Sovellus saa sijainnin käyttöoikeuden vain silloin, kun käytät sovellusta" "Saako <b>%1$s</b> pääsyn tämän laitteen sijaintiin?" + "Saako <b>%1$s</b> pääsyn laitteen (<b>%2$s) sijaintiin?" "Sovellus voi haluta nähdä sijaintisi aina, myös silloin kun et käytä sitä. ""Myönnä lupa asetuksista""." "Muutetaanko sijainnin käyttöoikeutta (<b>%1$s</b>)?" + "Muutetaanko sijainnin pääsyoikeuksia (<b>%1$s</b>) laitteella (<b>%2$s</b>)?" "Sovellus haluaa nähdä sijaintisi aina, myös silloin kun et käytä sitä. ""Myönnä lupa asetuksista""." "Saako <b>%1$s</b> löytää lähellä olevia laitteita, yhdistää niihin ja määrittää niiden suhteellisen sijainnin?" + "Saako <b>%1$s</b> löytää laitteita lähellä (<b>%2$s</b>), yhdistää ja määrittää suhteellisen sijainnin?" "Saako <b>%1$s</b> löytää lähellä olevia laitteita, yhdistää niihin ja määrittää niiden suhteellisen sijainnin? ""Myönnä lupa asetuksista." "Muutetaanko sijainnin käyttöoikeus (<b>%1$s</b>) likimääräisestä tarkaksi?" + "Muutetaanko sijainnin pääsyoikeudet (<b>%1$s</b>) laitteella (<b>%2$s</b>) likimääräisistä tarkoiksi?" "Saako <b>%1$s</b> pääsyn tämän laitteen karkeaan sijaintiin?" + "Saako <b>%1$s</b> pääsyn laitteen (<b>%2$s</b>) likimääräiseen sijaintiin?" "Tarkka" "Likimääräinen" "Saako <b>%1$s</b> pääsyn kalenteriisi?" + "Saako <b>%1$s</b> pääsyn laitteen (<b>%2$s</b>) kalenteriin?" "Saako <b>%1$s</b> lähettää ja lukea tekstiviestejä?" + "Saako <b>%1$s</b> lähettää ja lukea tekstiviestejä laitteella (<b>%2$s</b>)?" "Saako <b>%1$s</b> käyttää laitteellasi olevia kuvia, mediaa ja tiedostoja?" + "Saako <b>%1$s</b> pääsyn laitteelta (<b>%2$s</b>) löytyviin kuviin, mediaan ja tiedostoihin?" "Saako <b>%1$s</b> pääsyn laitteen <b>kuviin, videoihin, musiikkiin ja audioon</b>?" "Saako <b>%1$s</b> pääsyn <b>kuviin, videoihin, musiikkiin, audioon ja muihin tiedostoihin</b>?" "Saako <b>%1$s</b> pääsyn tällä laitteella oleviin musiikki- ja audiotiedostoihin?" + "Saako <b>%1$s</b> pääsyn laitteelta (<b>%2$s</b>) löytyvään musiikkiin ja audioon?" "Saako <b>%1$s</b> pääsyn laitteella oleviin kuviin ja mediaan?" + "Saako <b>%1$s</b> pääsyn laitteelta (<b>%2$s</b>) löytyviin kuviin ja videoihin?" "Saako <b>%1$s</b> pääsyn useampiin laitteella oleviin kuviin ja mediaan?" + "Saako <b>%1$s</b> pääsyn useampiin laitteelta (<b>%2$s</b>) löytyviin kuviin ja videoihin?" "Saako <b>%1$s</b> tallentaa audiota?" + "Saako <b>%1$s</b> tallentaa audiota laitteella (<b>%2$s</b>)?" "Sovellus voi tallentaa audiota vain silloin, kun käytät sitä" "Saako <b>%1$s</b> tallentaa audiota?" + "Saako <b>%1$s</b> tallentaa audiota laitteella (<b>%2$s</b>)?" "Sovellus voi haluta tallentaa audiota aina, myös silloin kun et käytä sitä. ""Myönnä lupa asetuksista""." "Muutetaanko mikrofonin käyttöoikeutta (<b>%1$s</b>)?" + "Muutetaanko mikrofonin pääsyoikeuksia (<b>%1$s</b>) laitteella (<b>%2$s</b>)?" "Sovellus haluaa tallentaa audiota aina, myös silloin kun et käytä sitä. ""Myönnä lupa asetuksista""." "Saako <b>%1$s</b> nähdä liikkumistietosi?" + "Saako <b>%1$s</b> pääsyn laitteelta (<b>%2$s</b>) löytyviin fyysisen aktiivisuuden tietoihin?" "Saako <b>%1$s</b> ottaa kuvia ja nauhoittaa videoita?" + "Saako <b>%1$s</b> ottaa kuvia ja kuvata videoita laitteella (<b>%2$s</b>)?" "Sovellus voi ottaa kuvia ja videoita vain silloin, kun käytät sitä" "Saako <b>%1$s</b> ottaa kuvia ja videoita?" + "Saako <b>%1$s</b> ottaa kuvia ja kuvata videoita laitteella (<b>%2$s</b>)?" "Sovellus voi haluta ottaa kuvia ja videoita aina, myös silloin kun et käytä sitä. ""Myönnä lupa asetuksista""." "Muutetaanko kameran käyttöoikeutta (<b>%1$s</b>)?" + "Muutetaanko kameran pääsyoikeuksia (<b>%1$s</b>) laitteella (<b>%2$s</b>)?" "Sovellus haluaa ottaa kuvia ja videoita aina, myös silloin kun et käytä sitä. ""Myönnä lupa asetuksista""." "Saako <b>%1$s</b> puhelulokien käyttöoikeuden?" + "Saako <b>%1$s</b> pääsyn laitteelta (<b>%2$s</b>) löytyviin puhelulokeihin?" "Saako <b>%1$s</b> soittaa ja hallinnoida puheluita?" + "Saako %1$s soittaa ja hallinnoida puheluita laitteella (<b>%2$s</b>?)?" "Saako <b>%1$s</b> käyttää anturitietoja elintoiminnoistasi?" + "Voiko <b>%1$s</b> saada pääsyn laitteelta (<b>%2$s</b>) löytyvään elintoimintojen anturidataan?" "Sovellus haluaa pääsyn elintoimintojasi koskevaan anturidataan aina, myös silloin, kun et käytä sovellusta. Voit myöntää luvan ""asetuksista""." "Saako <b>%1$s</b> käyttää anturidataa elintoiminnoistasi?" + "Saako <b>%1$s</b> pääsyn laitteelta (<b>%2$s</b>) löytyvään elintoimintojen anturidataan?" "Jos haluat myöntää sovellukselle pääsyn kehoanturidataan aina, myös silloin, kun et käytä sovellusta, ""siirry asetuksiin." "Haluatko edelleen sallia pääsyn kehoanturidataan, kun <b>%1$s</b> on käytössä?" + "Haluatko edelleen sallia pääsyn laitteen (<b>%2$s</b>) kehoanturidataan, kun <b>%1$s</b> on käytössä?" "Saako <b>%1$s</b> lähettää sinulle ilmoituksia?" + "Saako <b>%1$s</b> lähettää ilmoituksia laitteelle (<b>%2$s</b>)?" "Automaattisesti myönnetyt käyttöoikeudet" "Sovelluksella (%1$s) on pääsy sijaintiin" "Organisaatiosi sallii sovelluksen (%1$s) pääsyn sijaintiin" diff --git a/PermissionController/res/values-fr-rCA/strings.xml b/PermissionController/res/values-fr-rCA/strings.xml index 3e71c4d16a6c026186e9dabfb2ac914e8408cfc7..50d896bcb8873fd8e03f173108041f22d18eb16a 100644 --- a/PermissionController/res/values-fr-rCA/strings.xml +++ b/PermissionController/res/values-fr-rCA/strings.xml @@ -34,6 +34,7 @@ "En savoir plus" "Tout autoriser" "Toujours tout autoriser" + "Autoriser un accès limité" "Sélectionner des photos et des vidéos" "Sélectionner d\'autres photos" "Ne pas en sélectionner d\'autres" @@ -60,6 +61,7 @@ "Applications" "Autorisations des applications" "Applications non utilisées" + "Modifiez une sélection de photos pour cette application" "Aucune application inutilisée" "Aucune application inutilisée" "Décisions d\'autorisation récentes" @@ -455,48 +457,75 @@ "Afficher la détection des déclencheurs de l\'assistant" "Afficher l\'icône dans la barre d\'état lorsque le microphone est utilisé pour activer l\'assistant vocal" "Autoriser %1$s à accéder aux photos et aux médias de votre appareil?" + "Autoriser « %1$s » à accéder au contenu multimédia et aux photos sur votre « %2$s »?" "Autoriser <b>%1$s</b> à accéder à vos contacts?" + "Autoriser « %1$s » à accéder à vos contacts sur votre « %2$s »?" "Autoriser <b>%1$s</b> à accéder à la position de cet appareil?" + "Autoriser « %1$s » à accéder à la position de votre « %2$s »?" "L\'application aura uniquement accès à la position lorsque vous l\'utilisez" "Autoriser <b>%1$s</b> à accéder à la position de cet appareil?" + "Autoriser « %1$s » à accéder à la position de votre « %2$s »?" "Cette appli pourrait demander à accéder à votre position en tout temps, même si vous ne l\'utilisez pas. Accordez cette autorisation dans les ""paramètres""." "Modifier l\'accès à la position pour « %1$s »?" + "Modifier l\'accès à la position pour « %1$s » sur votre « %2$s »?" "Cette application veut accéder à votre position en tout temps, même lorsque vous ne l\'utilisez pas. Accordez cette autorisation dans les ""paramètres""." "Autoriser <b>%1$s</b> à trouver les appareils à proximité, à s\'y connecter et à déterminer leur position relative?" + "Autoriser « %1$s » à détecter les appareils à prox., à s\'y connecter et à déterminer leur position relative sur votre « %2$s »?" "Autoriser <b>%1$s</b> à trouver les appareils à proximité, à s\'y connecter et à déterminer leur position relative? ""Accordez l\'autorisation dans les paramètres." "Modifier l\'accès à la position de l\'application <b>%1$s</b> d\'approximative à exacte?" + "Modifier l\'accès à la position de « <b>%1$s</b> » sur votre « %2$s » d\'approximative à précise?" "Autoriser <b>%1$s</b> à accéder à la position approximative de cet appareil?" + "Autoriser « %1$s » à accéder à la position approximative de votre « %2$s »?" "Exacte" "Approximative" "Autoriser <b>%1$s</b> à accéder à votre agenda?" + "Autoriser « %1$s » à accéder à votre agenda sur votre « %2$s »?" "Autoriser <b>%1$s</b> à envoyer et à afficher des messages texte?" + "Autoriser « %1$s » à envoyer et à afficher des messages texte sur votre « %2$s »?" "Autoriser <b>%1$s</b> à accéder aux photos, au contenu multimédia et aux fichiers de votre appareil?" + "Autoriser « %1$s » à accéder au contenu multimédia, aux photos et aux fichiers sur votre « %2$s »?" "Autoriser <b>%1$s</b> à accéder <b>aux photos, aux vidéos, et aux fichiers musicaux et audio</b> sur cet appareil?" "Autoriser <b>%1$s</b> à accéder <b>aux photos, aux vidéos, et aux fichiers musicaux, audio et autres</b> sur cet appareil?" "Autoriser <b>%1$s</b> à accéder aux fichiers musicaux et audio sur cet appareil?" + "Autoriser « %1$s » à accéder aux fichiers musicaux et audio sur votre « %2$s »?" "Autoriser <b>%1$s</b> à accéder aux photos et aux vidéos sur cet appareil?" + "Autoriser « %1$s » à accéder aux photos et vidéos sur votre « %2$s »?" "Autoriser <b>%1$s</b> à accéder à plus de photos et de vidéos sur cet appareil?" + "Autoriser « %1$s » à accéder à plus de photos et de vidéos sur votre « %2$s »?" "Autoriser <b>%1$s</b> à enregistrer l\'audio?" + "Autoriser « %1$s » à enregistrer de l\'audio sur votre « %2$s »?" "L\'application pourra uniquement enregistrer de l\'audio lorsque vous l\'utilisez" "Autoriser « %1$s » à enregistrer de l\'audio?" + "Autoriser « %1$s » à enregistrer de l\'audio sur votre « %2$s »?" "Cette application pourrait demander à enregistrer de l\'audio en tout temps, même lorsque vous ne l\'utilisez pas. ""Autorisez dans les paramètres." "Modifier l\'accès au microphone pour « %1$s »?" + "Modifier l\'accès au microphone pour « %1$s » sur votre « %2$s »?" "Cette application veut enregistrer de l\'audio en tout temps, même si vous ne l\'utilisez pas. ""Autorisez dans les paramètres." "Autoriser « %1$s » à accéder à vos activités physiques?" + "Autoriser « %1$s » à accéder à votre activité physique sur votre « %2$s »?" "Autoriser <b>%1$s</b> à prendre des photos et à enregistrer des vidéos?" + "Autoriser « %1$s » à prendre des photos et à enregistrer des vidéos sur votre « %2$s »?" "L\'application pourra uniquement prendre des photos et enregistrer des vidéos lorsque vous l\'utilisez" "Autoriser « %1$s » à prendre des photos et à enregistrer des vidéos?" + "Autoriser « %1$s » à prendre des photos et à enregistrer des vidéos sur votre « %2$s »?" "Cette appli pourrait demander à prendre des photos et des vidéos en tout temps, même lorsque vous ne l\'utilisez pas. ""Autorisez dans les paramètres." "Modifier l\'accès à l\'appareil photo pour « %1$s »?" + "Modifier l\'accès à l\'appareil photo pour « %1$s » sur votre « %2$s »?" "Cette application veut prendre des photos et enregistrer des vidéos en tout temps, même lorsque vous ne l\'utilisez pas. ""Autorisez dans les paramètres." "Autoriser <b>%1$s</b> à accéder à vos journaux d\'appels?" + "Autoriser « %1$s » à accéder à vos journaux d\'appels téléphoniques sur votre « %2$s »?" "Autoriser <b>%1$s</b> à faire et à gérer des appels téléphoniques?" + "Autoriser « %1$s » à passer et à gérer des appels téléphoniques sur votre « %2$s »?" "Autoriser « %1$s » à accéder aux données des capteurs pour vos signes vitaux?" + "Autoriser « %1$s » à accéder aux données des capteurs relatives à vos signes vitaux sur votre « %2$s »?" "Cette application souhaite pouvoir accéder en tout temps aux données des capteurs relatives à vos signes vitaux, même lorsque vous ne l\'utilisez pas. Pour effectuer ce changement, ""accédez aux paramètres""." "Autoriser « %1$s » à accéder aux données des capteurs relatives à vos signes vitaux?" + "Autoriser « %1$s » à accéder aux données des capteurs relatives à vos signes vitaux sur votre « %2$s »?" "Pour permettre à cette application d\'accéder aux données des capteurs corporels en tout temps, même lorsque vous n\'utilisez pas l\'application, ""accédez aux paramètres""." "Voulez-vous continuer à autoriser <b>%1$s</b> à accéder aux données des capteurs corporels pendant l\'utilisation de l\'appli?" + "Continuer à autoriser « %1$s » à accéder aux données des capteurs corporels sur votre « %2$s » pendant l\'utilisation de l\'appli?" "Autoriser <b>%1$s</b> à vous envoyer des notifications?" + "Autoriser « %1$s » à vous envoyer des notifications sur votre « %2$s »?" "Autorisations contrôlées" "%1$s dispose d\'un accès à la position" "Votre organisation permet à %1$s d\'accéder à votre position" diff --git a/PermissionController/res/values-fr/strings.xml b/PermissionController/res/values-fr/strings.xml index 6af03ec38dde34fcfcbcd9c6de60db1bbb6f2be0..97c3461e5e046f09dced53080e9e061dbc4f0206 100644 --- a/PermissionController/res/values-fr/strings.xml +++ b/PermissionController/res/values-fr/strings.xml @@ -34,6 +34,7 @@ "Plus d\'infos" "Tout autoriser" "Toujours autoriser" + "Autoriser un accès limité" "Certaines photos et vidéos" "Sélectionner plus" "Ne rien sélectionner de plus" @@ -60,6 +61,7 @@ "Applications" "Autorisations des applications" "Applications inutilisées" + "Modifier les photos sélectionnées pour cette application" "Aucune appli inutilisée" "0 appli inutilisée" "Décisions autorisations récentes" @@ -455,48 +457,75 @@ "Afficher la détection de l\'activation de l\'assistant" "Afficher une icône dans la barre d\'état lorsque le micro est utilisé pour activer l\'assistance vocale" "Autoriser <b>%1$s</b> à accéder aux photos et contenus multimédias sur votre appareil ?" + "Autoriser <b>%1$s</b> à accéder aux photos et contenus multimédias sur votre <b>%2$s</b> ?" "Autoriser <b>%1$s</b> à accéder à vos contacts ?" + "Autoriser <b>%1$s</b> à accéder à vos contacts sur votre <b>%2$s</b> ?" "Autoriser <b>%1$s</b> à accéder à la position de cet appareil ?" + "Autoriser <b>%1$s</b> à accéder à la position de votre <b>%2$s ?" "L\'application n\'a accès à la position de l\'appareil que lorsqu\'elle est ouverte" "Autoriser <b>%1$s</b> à accéder à la position de cet appareil ?" + "Autoriser <b>%1$s</b> à accéder à la position de votre <b>%2$s ?" "Cette appli peut vouloir accéder à votre position en permanence, même lorsque vous ne l\'utilisez pas. ""Autorisez-la à le faire dans les paramètres." "Changer l\'autorisation d\'accès à la position pour <b>%1$s</b> ?" + "Modifier l\'accès à la position de <b>%1$s</b> sur votre <b>%2$s</b> ?" "Cette appli souhaite accéder à votre position en permanence, même lorsque vous ne l\'utilisez pas. ""Autorisez-la à le faire dans les paramètres." "Autoriser <b>%1$s</b> à détecter les appareils à proximité, s\'y connecter et déterminer leur position relative ?" + "Autoriser <b>%1$s</b> à détecter des appareils à proximité, s\'y connecter et déterminer leur position relative sur votre <b>%2$s</b> ?" "Autoriser %1$s à détecter les appareils à proximité, s\'y connecter et déterminer leur position relative ? ""Autoriser dans les paramètres" "Donner à <b>%1$s</b> l\'accès à la position exacte et non plus approximative ?" + "Modifier l\'accès à la position de <b>%1$s</b> sur votre <b>%2$s</b> d\'approximative à précise ?" "Autoriser <b>%1$s</b> à accéder à la position approximative de cet appareil ?" + "Autoriser <b>%1$s</b> à accéder à la position approximative de votre <b>%2$s</b> ?" "Exacte" "Approximative" "Autoriser <b>%1$s</b> à accéder à votre agenda ?" + "Autoriser <b>%1$s</b> à accéder à votre agenda sur votre <b>%2$s</b> ?" "Autoriser <b>%1$s</b> à envoyer et afficher des SMS ?" + "Autoriser <b>%1$s</b> à envoyer et afficher des SMS sur votre <b>%2$s</b> ?" "Autoriser <b>%1$s</b> à accéder aux photos, contenus multimédias et fichiers sur votre appareil ?" + "Autoriser <b>%1$s</b> à accéder aux photos, contenus multimédias et fichiers sur votre <b>%2$s</b> ?" "Autoriser <b>%1$s</b> à accéder aux <b>photos, vidéos, fichiers musicaux/audio</b> sur l\'appareil ?" "Autoriser <b>%1$s</b> à accéder aux <b>photos, vidéos, fichiers musicaux/audio, etc.</b> sur l\'appareil ?" "Autoriser <b>%1$s</b> à accéder à la musique et à l\'audio sur cet appareil ?" + "Autoriser <b>%1$s</b> à accéder à la musique et à l\'audio sur votre <b>%2$s</b> ?" "Autoriser <b>%1$s</b> à accéder aux photos et vidéos sur cet appareil ?" + "Autoriser <b>%1$s</b> à accéder aux photos et vidéos sur votre <b>%2$s</b> ?" "Autoriser <b>%1$s</b> à accéder à d\'autres photos et vidéos sur cet appareil ?" + "Autoriser <b>%1$s</b> à accéder à d\'autres photos et vidéos sur votre <b>%2$s</b> ?" "Autoriser <b>%1$s</b> à enregistrer de l\'audio ?" + "Autoriser <b>%1$s</b> à réaliser des enregistrements audio sur votre <b>%2$s</b> ?" "Cette application ne pourra réaliser des enregistrements audio que lorsque vous l\'utiliserez" "Permettre à <b>%1$s</b> de réaliser des enregistrements audio ?" + "Autoriser <b>%1$s</b> à réaliser des enregistrements audio sur votre <b>%2$s</b> ?" "Cette application peut souhaiter réaliser des enregistrements audio à tout moment, même quand vous ne l\'utilisez pas. ""Autoriser dans les paramètres" "Changer l\'autorisation d\'accès au micro pour <b>%1$s</b> ?" + "Modifier l\'accès au microphone de <b>%1$s</b> sur votre <b>%2$s</b> ?" "Cette application souhaite réaliser des enregistrements audio à tout moment, même quand vous ne l\'utilisez pas. ""Autoriser dans les paramètres" "Autoriser %1$s à accéder aux données relatives à votre activité physique ?" + "Autoriser <b>%1$s</b> à accéder à votre activité physique sur votre <b>%2$s</b> ?" "Autoriser <b>%1$s</b> à prendre des photos et enregistrer des vidéos ?" + "Autoriser <b>%1$s</b> à prendre des photos et des vidéos sur votre <b>%2$s</b> ?" "Cette application ne pourra prendre des photos et enregistrer des vidéos que lorsque vous l\'utiliserez" "Autoriser <b>%1$s</b> à prendre des photos et enregistrer des vidéos ?" + "Autoriser <b>%1$s</b> à prendre des photos et des vidéos sur votre <b>%2$s</b> ?" "Cette application peut souhaiter prendre des photos et des vidéos à tout moment, même quand vous ne l\'utilisez pas. ""Autoriser dans les paramètres" "Changer l\'autorisation d\'accès à l\'appareil photo pour <b>%1$s</b> ?" + "Modifier l\'accès à l\'appareil photo de <b>%1$s</b> sur votre <b>%2$s</b> ?" "Cette application souhaite prendre des photos et des vidéos à tout moment, même quand vous ne l\'utilisez pas. ""Autoriser dans les paramètres" "Autoriser <b>%1$s</b> à accéder aux journaux d\'appels de votre téléphone ?" + "Autoriser <b>%1$s</b> à accéder à vos journaux d\'appels sur votre <b>%2$s</b> ?" "Autoriser <b>%1$s</b> à passer et gérer des appels téléphoniques ?" + "Autoriser <b>%1$s</b> à passer et gérer des appels sur votre <b>%2$s</b> ?" "Autoriser <b>%1$s</b> à accéder aux données des capteurs concernant vos signes vitaux ?" + "Autoriser <b>%1$s</b> à accéder à vos signes vitaux sur votre <b>%2$s</b> ?" "Cette application veut accéder en permanence aux données des capteurs liées aux signes vitaux, même quand vous ne l\'utilisez pas. Pour autoriser ce changement, ""accédez aux paramètres." "Autoriser <b>%1$s</b> à accéder aux données des capteurs concernant vos signes vitaux ?" + "Autoriser <b>%1$s</b> à accéder à vos signes vitaux sur votre <b>%2$s</b> ?" "Pour autoriser cette appli à accéder aux données des capteurs corporels en permanence, même quand vous ne l\'utilisez pas, ""accédez aux paramètres""." "Continuer à autoriser %1$s à accéder aux données des capteurs corporels seulement en cours d\'utilisation ?" + "Continuer à autoriser <b>%1$s</b> à accéder aux données des capteurs corporels en cours d\'utilisation sur votre <b>%2$s</b> ?" "Autoriser <b>%1$s</b> à vous envoyer des notifications ?" + "Autoriser <b>%1$s</b> à vous envoyer des notifications sur votre <b>%2$s</b> ?" "Autorisations contrôlées" "%1$s a accès à votre position" "Votre organisation autorise %1$s à accéder à votre position" diff --git a/PermissionController/res/values-gl/strings.xml b/PermissionController/res/values-gl/strings.xml index ad7705f596be359f7a5442e7934d51b9467da2a6..5c5a61bafd93fbd4740283640b74acae47527567 100644 --- a/PermissionController/res/values-gl/strings.xml +++ b/PermissionController/res/values-gl/strings.xml @@ -34,6 +34,7 @@ "Máis datos" "Permitir todos" "Permitir todos sempre" + "Permitir acceso limitado" "Seleccionar fotos e vídeos" "Seleccionar máis" "Non seleccionar máis" @@ -60,6 +61,7 @@ "Aplicacións" "Permisos de aplicacións" "Aplicacións que non se usan" + "Editar as fotos seleccionadas desta aplicación" "Non hai aplicacións sen usar" "0 aplicacións que non se usan" "Decisións recentes de permisos" @@ -455,48 +457,75 @@ "Mostrar detección do activador do asistente" "Mostra unha icona na barra de estado cando se utiliza o micrófono para activar o asistente de voz" "Queres permitir que <b>%1$s</b> acceda ás fotos, ao contido multimedia e aos ficheiros do teu dispositivo?" + "Queres permitir que <b>%1$s</b> acceda ás fotos e ao contido multimedia no dispositivo <b>%2$s</b>?" "Queres permitir que a aplicación <b>%1$s</b> acceda aos teus contactos?" + "Queres permitir que a aplicación <b>%1$s</b> acceda aos teus contactos no dispositivo <b>%2$s</b>?" "Queres permitir que a aplicación <b>%1$s</b> acceda á localización deste dispositivo?" + "Queres permitir que a aplicación <b>%1$s</b> acceda á localizacion do dispositivo <b>%2$s</b>?" "A aplicación só terá acceso á localización mentres a esteas utilizando" "Queres permitir que a aplicación <b>%1$s</b> acceda á localización deste dispositivo?" + "Queres permitir que a aplicación <b>%1$s</b> acceda á localización do dispositivo <b>%2$s</b>?" "Esta aplicación pode querer acceder á túa localización todo o tempo, incluso cando non a esteas utilizando. ""Permitir en Configuración""." "Queres cambiar o acceso da aplicación <b>%1$s</b> á localización?" + "Queres cambiar o acceso da aplicación <b>%1$s</b> á localización no dispositivo <b>%2$s</b>?" "Esta aplicación quere acceder á túa localización todo o tempo, incluso cando non a esteas utilizando. ""Permitir en Configuración""." "Permitir que <b>%1$s</b> atope dispositivos próximos, se conecte a eles e determine a súa posición relativa?" + "Permites que <b>%1$s</b> busque, conecte e fixe a posición relativa dos disp. próximos no <b>%2$s</b>?" "Permitir que <b>%1$s</b> atope dispositivos próximos, se conecte a eles e determine a súa posición relativa? ""Permitir na configuración""." "Queres que o acceso de <b>%1$s</b> á localización cambie de aproximada a precisa?" + "Queres cambiar o acceso á localización da aplicación <b>%1$s</b> no dispositivo <b>%2$s</b> de aproximada a exacta?" "Queres permitir que a aplicación <b>%1$s</b> acceda á localización aproximada deste dispositivo?" + "Queres permitir que <b>%1$s</b> acceda á localización aproximada do dispositivo <b>%2$s</b>?" "Precisa" "Aproximada" "Queres permitir que a aplicación <b>%1$s</b> acceda ao teu calendario?" + "Queres permitir que a aplicación <b>%1$s</b> acceda ao teu calendario no dispositivo <b>%2$s</b>?" "Queres permitir que a aplicación <b>%1$s</b> envíe e vexa mensaxes SMS?" + "Queres permitir que a aplicación <b>%1$s</b> envíe e vexa mensaxes SMS no dispositivo <b>%2$s</b>?" "Queres permitir que a aplicación <b>%1$s</b> acceda a fotos, contido multimedia e ficheiros no teu dispositivo?" + "Queres permitir que <b>%1$s</b> acceda ás fotos, ao contido multimedia e aos ficheiros no <b>%2$s</b>?" "Queres permitir que <b>%1$s</b> acceda ás <b>fotos, vídeos, música e audio</b> deste dispositivo?" "Queres permitir que <b>%1$s</b> acceda ás <b>fotos, vídeos, música, audio e outros ficheiros</b> do dispositivo?" "Queres permitir que <b>%1$s</b> acceda á música e aos ficheiros de audio deste dispositivo?" + "Queres permitir que <b>%1$s</b> acceda á música e aos ficheiros de audio no dispositivo <b>%2$s</b>?" "Queres permitir que <b>%1$s</b> acceda ás fotos e aos vídeos deste dispositivo?" + "Queres permitir que a aplicación <b>%1$s</b> acceda ás fotos e aos vídeos no dispositivo <b>%2$s</b>?" "Queres permitir que <b>%1$s</b> acceda a máis fotos e vídeos deste dispositivo?" + "Queres permitir que a aplicación <b>%1$s</b> acceda a máis fotos e vídeos no dispositivo <b>%2$s</b>?" "Queres permitir que a aplicación <b>%1$s</b> grave audio?" + "Queres permitir que a aplicación <b>%1$s</b> grave audio no dispositivo <b>%2$s</b>?" "Esta aplicación só poderá gravar audio cando a esteas utilizando" "Queres permitir que a aplicación <b>%1$s</b> grave audio?" + "Queres permitir que a aplicación <b>%1$s</b> grave audio no dispositivo <b>%2$s</b>?" "Pode que esta aplicación queira gravar audio todo o tempo, incluso cando non a esteas utilizando. ""Permitir en Configuración." "Queres cambiar o acceso da aplicación <b>%1$s</b> ao micrófono?" + "Queres cambiar o acceso da aplicación <b>%1$s</b> ao micrófono no dispositivo <b>%2$s</b>?" "Esta aplicación quere gravar audio todo o tempo, incluso cando non a esteas utilizando. ""Permitir en Configuración." "Queres permitir que <b>%1$s</b> acceda á túa actividade física?" + "Queres permitir que a aplicación <b>%1$s</b> acceda á tua actividade física no dispositivo <b>%2$s</b>?" "Queres permitir que a aplicación <b>%1$s</b> realice fotos e grave vídeos?" + "Queres permitir que a aplicación <b>%1$s</b> tire fotos e grave vídeos no dispositivo <b>%2$s</b>?" "Esta aplicación só poderá sacar fotos e gravar vídeos cando a esteas utilizando" "Queres permitir que a aplicación <b>%1$s</b> saque fotos e grave vídeos?" + "Queres permitir que a aplicación <b>%1$s</b> tire fotos e grave vídeos no dispositivo <b>%2$s</b>?" "Pode que esta aplicación queira sacar fotos e gravar vídeos todo o tempo, incluso cando non a esteas utilizando. ""Permitir en Configuración." "Queres cambiar o acceso da aplicación <b>%1$s</b> á cámara?" + "Queres cambiar o acceso da aplicación <b>%1$s</b> á cámara no dispositivo <b>%2$s</b>?" "Esta aplicación quere sacar fotos e gravar vídeos todo o tempo, incluso cando non a esteas utilizando. ""Permitir en Configuración." "Queres permitir que <b>%1$s</b> acceda aos rexistros de chamadas do teléfono?" + "Queres permitir que <b>%1$s</b> acceda aos rexistros de chamadas telefónicas no <b>%2$s</b>?" "Queres permitir que a aplicación <b>%1$s</b> realice e xestione chamadas telefónicas?" + "Queres permitir que a aplicación <b>%1$s</b> realice e xestione chamadas no dispositivo <b>%2$s</b>?" "Queres permitir que a aplicación <b>%1$s</b> acceda aos datos dos sensores sobre as túas constantes vitais?" + "Queres permitir que <b>%1$s</b> acceda aos datos dos sensores sobre as constantes vitais no <b>%2$s</b>?" "Esta aplicación require acceso aos datos dos sensores sobre as túas constantes vitais en todo momento, mesmo cando non a usas. Para facer este cambio, ""vai á configuración." "Permitir que <b>%1$s</b> acceda aos datos dos sensores sobre as túas constantes vitais?" + "Queres permitir que <b>%1$s</b> acceda aos datos dos sensores sobre as constantes vitais no <b>%2$s</b>?" "Para permitir que esta aplicación acceda aos datos dos sensores corporais en todo momento, aínda que non a esteas utilizando, ""vai á configuración""." "Permites que a aplicación <b>%1$s</b> siga accedendo aos datos dos sensores corporais mentres estea en uso?" + "Permites que <b>%1$s</b> acceda aos datos dos sensores corporais no <b>%2$s</b> mentres estea en uso?" "Queres permitir que <b>%1$s</b> che envíe notificacións?" + "Queres permitir que a aplicación <b>%1$s</b> che envíe notificacións no dispositivo <b>%2$s</b>?" "Permisos controlados" "%1$s ten acceso á localización" "A túa organización permite que %1$s acceda á túa localización" diff --git a/PermissionController/res/values-gu/strings.xml b/PermissionController/res/values-gu/strings.xml index 1d9126a862060966aac99d741081ed0f6d517f6b..bd5988260da07b83cfa9879e730ce3c0e3687c30 100644 --- a/PermissionController/res/values-gu/strings.xml +++ b/PermissionController/res/values-gu/strings.xml @@ -34,6 +34,7 @@ "વધુ માહિતી" "બધાને મંજૂરી આપો" "હંમેશાં માટે બધાને મંજૂરી આપો" + "મર્યાદિત ઍક્સેસની મંજૂરી આપો" "ફોટા અને વીડિયો પસંદ કરો" "વધુ ફોટા પસંદ કરો" "વધુ પસંદ કરશો નહીં" @@ -60,6 +61,7 @@ "ઍપ" "ઍપની પરવાનગીઓ" "ન વપરાયેલી ઍપ" + "આ ઍપ માટે પસંદ કરેલા ફોટામાં ફેરફાર કરો" "કોઈ બિનવપરાયેલી ઍપ નથી" "બિનવપરાયેલી 0 ઍપ" "પરવાનગી સંબંધિત નિર્ણયો" @@ -455,48 +457,75 @@ "આસિસ્ટંટ ટ્રિગરની ઓળખ બતાવો" "જ્યારે માઇક્રોફોનનો ઉપયોગ કરીને વૉઇસ આસિસ્ટંટ સક્રિય કરવામાં આવે, ત્યારે માઇક્રોફોનનું આઇકન સ્ટેટસ બારમાં બતાવો" "<b>%1$s</b>ને તમારા ડિવાઇસ પર ફોટા અને મીડિયાને ઍક્સેસ કરવાની મંજૂરી આપીએ?" + "શું <b>%1$s</b>ને તમારા <b>%2$s</b> પર ફોટા અને મીડિયા ઍક્સેસ કરવાની મંજૂરી આપીએ?" "<b>%1$s</b>ને તમારા સંપર્કોને ઍક્સેસ કરવાની મંજૂરી આપીએ?" + "શું <b>%1$s</b>ને તમારા <b>%2$s</b> પર તમારા સંપર્કો ઍક્સેસ કરવાની મંજૂરી આપીએ?" "<b>%1$s</b>ને આ ડિવાઇસના સ્થાનને ઍક્સેસ કરવાની મંજૂરી આપીએ?" + "શું <b>%1$s</b>ને તમારા <b>%2$sનું</b> લોકેશન ઍક્સેસ કરવાની મંજૂરી આપીએ?" "જ્યારે તમે ઍપનો ઉપયોગ કરી રહ્યા હશો માત્ર ત્યારે જ ઍપ સ્થાનને ઍક્સેસ કરી શકશે" "<b>%1$s</b>ને આ ડિવાઇસના સ્થાનને ઍક્સેસ કરવાની મંજૂરી આપીએ?" + "શું <b>%1$s</b>ને તમારા <b>%2$sનું લોકેશન ઍક્સેસ કરવાની મંજૂરી આપીએ?" "તમે આ ઍપનો ઉપયોગ કરી રહ્યાં ન હો, તો પણ તે હંમેશાં તમારા સ્થાનને ઍક્સેસ કરી શકે છે. ""સેટિંગમાંથી મંજૂરી આપો." "<b>%1$s</b> માટે સ્થાનનો ઍક્સેસ બદલીએ?" + "તમારા <b>%2$s</b> પર <b>%1$s</b> માટે લોકેશન ઍક્સેસ બદલીએ?" "તમે આ ઍપનો ઉપયોગ કરી રહ્યાં ન હો, તો પણ તે હંમેશાં તમારા સ્થાનને ઍક્સેસ કરવા માગે છે. ""સેટિંગમાંથી મંજૂરી આપો." "<b>%1$s</b>ને નજીકના ડિવાઇસને શોધવાની, તેને કનેક્ટ કરવાની તેમજ સંબંધિત અંતર નક્કી કરવાની મંજૂરી આપીએ?" + "<b>%1$s</b>ને તમારા <b>%2$s</b> પર નજીકના ડિવાઇસ શોધવાની, કનેક્ટ કરવાની ને સંબંધિત અંતર નક્કી કરવાની મંજૂરી આપીએ?" "<b>%1$s</b>ને નજીકના ડિવાઇસને શોધવાની, તેને કનેક્ટ કરવાની તેમજ સંબંધિત અંતર નક્કી કરવાની મંજૂરી આપીએ? ""સેટિંગમાં મંજૂરી આપો." "<b>%1$s</b>નો સ્થાનનો ઍક્સેસ અંદાજિતમાંથી બદલીને ચોક્કસ કરીએ?" + "શું <b>%1$s</b>નો તમારા <b>%2$s</b> પરનો લોકેશનનો ઍક્સેસ અંદાજિતમાંથી બદલીને ચોક્કસ કરીએ?" "<b>%1$s</b>ને આ ડિવાઇસના અંદાજીત સ્થાનને ઍક્સેસ કરવાની મંજૂરી આપીએ?" + "શું <b>%1$s</b>ને તમારા <b>%2$s</b>ના અંદાજિત લોકેશનને ઍક્સેસ કરવાની મંજૂરી આપીએ?" "ચોક્કસ" "અંદાજિત" "<b>%1$s</b>ને તમારા કૅલેન્ડરને ઍક્સેસ કરવાની મંજૂરી આપીએ?" + "શું <b>%1$s</b>ને તમારા <b>%2$s</b> પર તમારા કૅલેન્ડરને ઍક્સેસ કરવાની મંજૂરી આપીએ?" "<b>%1$s</b>ને SMS મેસેજ મોકલવા અને જોવાની મંજૂરી આપીએ?" + "શું <b>%1$s</b>ને તમારા <b>%2$s</b> પર SMS મેસેજ મોકલવાની અને જોવાની મંજૂરી આપીએ?" "<b>%1$s</b>ને તમારા ડિવાઇસ પરના ફોટા, મીડિયા અને ફાઇલોને ઍક્સેસ કરવાની મંજૂરી આપીએ?" + "શું <b>%1$s</b>ને તમારા <b>%2$s</b> પર ફોટા, મીડિયા અને ફાઇલો ઍક્સેસ કરવાની મંજૂરી આપીએ?" "શું <b>%1$s</b>ને આ ડિવાઇસ પરના </b>ફોટા, વીડિયો, મ્યુઝિક અને ઑડિયો</b>ના ઍક્સેસની મંજૂરી આપીએ?" "<b>%1$s</b>ને આ ડિવાઇસ પર <b>ફોટા, વીડિયો, મ્યુઝિક, ઑડિયો અને અન્ય ફાઇલો<b>ના ઍક્સેસની મંજૂરી આપીએ?" "શું <b>%1$s</b>ને આ ડિવાઇસ પરની મ્યુઝિક અને ઑડિયો ફાઇલો ઍક્સેસ કરવાની મંજૂરી આપીએ?" + "શું <b>%1$s</b>ને તમારા <b>%2$s</b> પર મ્યુઝિક અને ઑડિયો ઍક્સેસ કરવાની મંજૂરી આપીએ?" "શું <b>%1$s</b>ને આ ડિવાઇસ પરના ફોટા અને વીડિયો ઍક્સેસ કરવાની મંજૂરી આપીએ?" + "શું <b>%1$s</b>ને તમારા <b>%2$s</b> પર ફોટા અને વીડિયો ઍક્સેસ કરવાની મંજૂરી આપીએ?" "શું <b>%1$s</b>ને આ ડિવાઇસ પરના વધુ ફોટા અને વીડિયો ઍક્સેસ કરવાની મંજૂરી આપીએ?" + "શું <b>%1$s</b>ને તમારા <b>%2$s</b> પર વધુ ફોટા અને વીડિયો ઍક્સેસ કરવાની મંજૂરી આપીએ?" "<b>%1$s</b>ને ઑડિયો રેકૉર્ડ કરવાની મંજૂરી આપીએ?" + "શું <b>%1$s</b>ને તમારા <b>%2$s</b> પર ઑડિયો રેકૉર્ડ કરવાની મંજૂરી આપીએ?" "જ્યારે તમે ઍપનો ઉપયોગ કરી રહ્યા હશો, માત્ર ત્યારે જ ઍપ ઑડિયો રેકોર્ડ કરી શકશે" "<b>%1$s</b>ને ઑડિયો રેકોર્ડ કરવાની મંજૂરી આપીએ?" + "શું <b>%1$s</b>ને તમારા <b>%2$s</b> પર ઑડિયો રેકૉર્ડ કરવાની મંજૂરી આપીએ?" "તમે આ ઍપનો ઉપયોગ કરી રહ્યાં ન હો, તો પણ ઍપ હંમેશાં ઑડિયો રેકોર્ડ કરવાનું ઇચ્છી શકે છે. ""સેટિંગમાંથી મંજૂરી આપો." "<b>%1$s</b> માટે માઇક્રોફોનનો ઍક્સેસ બદલીએ?" + "તમારા <b>%2$s</b> પર <b>%1$s</b> માટે માઇક્રોફોન ઍક્સેસ બદલીએ?" "તમે આ ઍપનો ઉપયોગ કરી રહ્યાં ન હો, તો પણ ઍપ હંમેશાં ઑડિયો રેકોર્ડ કરવા માગે છે. ""સેટિંગમાંથી મંજૂરી આપો." "<b>%1$s</b>ને તમારી શારીરિક પ્રવૃત્તિને ઍક્સેસ કરવાની મંજૂરી આપવી છે?" + "શું <b>%1$s</b>ને તમારા <b>%2$s</b> પર તમારી શારીરિક પ્રવૃત્તિ ઍક્સેસ કરવાની મંજૂરી આપીએ?" "<b>%1$s</b>ને ફોટા પાડવાની અને વીડિયો રેકોર્ડ કરવાની મંજૂરી આપીએ?" + "શું <b>%1$s</b>ને તમારા <b>%2$s</b> પર ફોટા લેવાની અને વીડિયો રેકોર્ડ કરવાની મંજૂરી આપીએ?" "જ્યારે તમે ઍપનો ઉપયોગ કરી રહ્યા હશો, માત્ર ત્યારે જ ઍપ ફોટા લઈ શકશે અને વીડિયો રેકોર્ડ કરી શકશે" "<b>%1$s</b>ને ફોટા લેવાની અને વીડિયો રેકોર્ડ કરવાની મંજૂરી આપીએ?" + "શું <b>%1$s</b>ને તમારા <b>%2$s</b> પર ફોટા લેવાની અને વીડિયો રેકોર્ડ કરવાની મંજૂરી આપીએ?" "તમે આ ઍપનો ઉપયોગ કરી રહ્યાં ન હો, તો પણ ઍપ હંમેશાં ફોટા લેવા અને વીડિયો રેકોર્ડ કરવાનું ઇચ્છી શકે છે. ""સેટિંગમાંથી મંજૂરી આપો." "<b>%1$s</b> માટે કૅમેરાનો ઍક્સેસ બદલીએ?" + "શું તમારા <b>%2$s</b> પર <b>%1$s</b> માટે કૅમેરાનો ઍક્સેસ બદલીએ?" "તમે આ ઍપનો ઉપયોગ કરી રહ્યાં ન હો, તો પણ ઍપ હંમેશાં ફોટા લેવા અને વીડિયો રેકોર્ડ કરવા માગે છે. ""સેટિંગમાંથી મંજૂરી આપો." "<b>%1$s</b>ને તમારા ફોનના કૉલ લૉગ ઍક્સેસ કરવાની મંજૂરી આપીએ?" + "શું <b>%1$s</b>ને તમારા <b>%2$s</b> પર તમારા ફોનના કૉલ લૉગ ઍક્સેસ કરવાની મંજૂરી આપીએ?" "<b>%1$s</b>ને ફોન કૉલ કરવાની અને તેને મેનેજ કરવાની મંજૂરી આપીએ?" + "શું <b>%1$s</b>ને તમારા <b>%2$s</b> પર ફોન કૉલ કરવાની અને તેને મેનેજ કરવાની મંજૂરી આપીએ?" "<b>%1$s</b>ને તમારા જીવિત હોવાના મહત્ત્વપૂર્ણ સંકેતો વિશેના સેન્સર ડેટાને ઍક્સેસ કરવાની મંજૂરી આપીએ?" + "<b>%1$s</b>ને તમારા <b>%2$s</b> પર તમારા જીવિત હોવાના મહત્ત્વપૂર્ણ સંકેતો વિશેનો સેન્સરનો ડેટા ઍક્સેસ કરવાની મંજૂરી આપીએ?" "આ ઍપ તમારા આરોગ્ય વિશે મહત્ત્વપૂર્ણ સંકેતો આપતો સેન્સરનો ડેટા હંમેશાં ઍક્સેસ કરવા માગે છે, તમે ઍપ ન વાપરતા હો ત્યારે પણ. આમાં ફેરફાર કરવા માટે, ""સેટિંગ પર જાઓ." "<b>%1$s</b>ને તમારા જીવિત હોવાના મહત્ત્વપૂર્ણ સંકેતો વિશેનો સેન્સરનો ડેટા ઍક્સેસ કરવાની મંજૂરી આપીએ?" + "<b>%1$s</b>ને તમારા <b>%2$s</b> પર તમારા જીવિત હોવાના મહત્ત્વપૂર્ણ સંકેતો વિશેનો સેન્સરનો ડેટા ઍક્સેસ કરવાની મંજૂરી આપીએ?" "જ્યારે તમે ઍપનો ઉપયોગ કરી રહ્યાં ન હો, ત્યારે પણ આ ઍપને બૉડી સેન્સરનો ડેટા ઍક્સેસ કરવાની મંજૂરી આપવા માટે, ""સેટિંગ પર જાઓ." "ઍપ ઉપયોગમાં હોય ત્યારે <b>%1$s</b>ને બૉડી સેન્સર ડેટા ઍક્સેસ કરવાની મંજૂરી આપવાનું ચાલુ રાખીએ?" + "ઍપના ઉપયોગ વખતે, <b>%1$s</b>ને તમારા <b>%2$s</b> પર બૉડી સેન્સર ડેટા ઍક્સેસ કરવાની મંજૂરી ચાલુ રાખીએ?" "શું <b>%1$s</b>ને તમને નોટિફિકેશન મોકલવાની મંજૂરી આપીએ?" + "શું <b>%1$s</b>ને તમારા ;b>%2$s</b> પર નોટિફિકેશન મોકલવાની મંજૂરી આપીએ?" "નિયંત્રિત પરવાનગીઓ" "%1$s પાસે લોકેશન ઍક્સેસ છે" "તમારી સંસ્થા %1$sને તમારું લોકેશન ઍક્સેસ કરવાની મંજૂરી આપે છે" diff --git a/PermissionController/res/values-hi/strings.xml b/PermissionController/res/values-hi/strings.xml index bad54b39a1436c93a060efac1cb597facf9a7cc0..04b9167aa6c887391ab1e4b29dfeb2ed3db3260f 100644 --- a/PermissionController/res/values-hi/strings.xml +++ b/PermissionController/res/values-hi/strings.xml @@ -34,6 +34,7 @@ "ज़्यादा जानकारी" "सभी के लिए अनुमति दें" "हमेशा के लिए सभी को अनुमति दें" + "सीमित ऐक्सेस देने की अनुमति दें" "चुनिंदा फ़ोटो और वीडियो को अनुमति दें" "ज़्यादा फ़ोटो चुनें" "ज़्यादा फ़ोटो और वीडियो न चुनें" @@ -60,6 +61,7 @@ "ऐप्लिकेशन" "ऐप्लिकेशन की अनुमतियां" "इस्तेमाल नहीं किए गए ऐप्लिकेशन" + "इस ऐप्लिकेशन के पास किन फ़ोटो का ऐक्सेस होगा, इसमें बदलाव करें" "ऐसा कोई ऐप्लिकेशन नहींं है जिसका इस्तेमाल न किया गया हो" "इस्तेमाल न किए जाने वाले ऐप" "हाल ही में दी गई अनुमतियां" @@ -455,48 +457,75 @@ "असिस्टेंट ऐप्लिकेशन का माइक्रोफ़ोन चालू है या बंद, इसकी सूचना दिखाएं" "आवाज़ से डिवाइस का इस्तेमाल करने के लिए, माइक्रोफ़ोन का इस्तेमाल करते समय स्थिति बार में आइकॉन दिखाएं" "<b>%1$s</b> को अपने डिवाइस में मौजूद फ़ोटो और मीडिया ऐक्सेस करने की अनुमति देनी है?" + "क्या <b>%1$s</b> को आपके <b>%2$s</b> में मौजूद फ़ोटो और मीडिया का ऐक्सेस देना है?" "<b>%1$s</b> को अपने संपर्क देखने की अनुमति देनी है?" + "क्या <b>%1$s</b> को आपके <b>%2$s</b> में मौजूद, संपर्कों का ऐक्सेस देना है?" "<b>%1$s</b> को इस डिवाइस की जगह की जानकारी ऐक्सेस करने की अनुमति देनी है?" + "क्या <b>%1$s</b> को आपके <b>%2$s</b> की जगह की जानकारी का ऐक्सेस देना है?" "ऐप्लिकेशन, डिवाइस की जगह की जानकारी सिर्फ़ तभी देख पाएगा जब आप इसका इस्तेमाल कर रहे हों" "<b>%1$s</b> को इस डिवाइस की जगह की जानकारी ऐक्सेस करने की अनुमति देनी है?" + "क्या <b>%1$s</b> को आपके <b>%2$s की जगह की जानकारी का डेटा ऐक्सेस करने की अनुमति देनी है?" "यह ऐप्लिकेशन शायद आपके डिवाइस की जगह की जानकारी हर समय ऐक्सेस करना चाहता है. उस समय भी जब आप इसका इस्तेमाल न कर रहे हों. ""सेटिंग में इसकी अनुमति दें." "<b>%1$s</b> के लिए जगह की जानकारी का ऐक्सेस बदलना चाहते हैं?" + "क्या <b>%1$s</b> के लिए, आपके <b>%2$s</b> की जगह की जानकारी का ऐक्सेस बदलना है?" "यह ऐप्लिकेशन आपके डिवाइस की जगह की जानकारी हर समय ऐक्सेस करना चाहता है. उस समय भी जब आप इसका इस्तेमाल न कर रहे हों. ""सेटिंग में इसकी अनुमति दें." "क्या आपको <b>%1$s</b> को आस-पास मौजूद डिवाइसों को खोजने, उनसे कनेक्ट करने, और उनकी जगह की जानकारी का पता लगाने की अनुमति देनी है?" + "क्या <b>%1$s</b> को आपके <b>%2$s</b> के आस-पास मौजूद डिवाइसों को खोजने, उनसे कनेक्ट करने, और उनकी जगह की जानकारी का पता लगाने की अनुमति देनी है?" "क्या आप <b>%1$s</b> को आस-पास मौजूद डिवाइसों को खोजने, उनसे कनेक्ट करने, और उनकी जगह की जानकारी का पता लगाने की अनुमति देना चाहते हैं? ""सेटिंग में जाकर अनुमति दें." "क्या <b>%1$s</b> आपकी जगह की अनुमानित जानकारी के बजाय सटीक जानकारी ऐक्सेस करे?" + "क्या <b>%2$s</b> के लिए, <b>%1$s</b> की जगह की जानकारी का ऐक्सेस अनुमानित से सटीक में बदलना है?" "क्या आपको <b>%1$s</b> को इस डिवाइस की जगह की अनुमानित जानकारी ऐक्सेस करने की अनुमति देनी है?" + "क्या <b>%1$s</b> को <b>%2$s</b> की जगह की अनुमानित जानकारी के डेटा का ऐक्सेस देना है?" "सटीक जगह" "अनुमानित जगह" "<b>%1$s</b> को अपना कैलेंडर ऐक्सेस करने की अनुमति देना है?" + "क्या <b>%1$s</b> को आपके <b>%2$s</b> में मौजूद, कैलेंडर के डेटा का ऐक्सेस देना है?" "<b>%1$s</b> को एसएमएस (मैसेज) भेजने और देखने की अनुमति देनी है?" + "क्या <b>%1$s</b> को आपके <b>%2$s</b> से मैसेज भेजने और उन्हें देखने का ऐक्सेस देना है?" "<b>%1$s</b> को डिवाइस पर मौजूद फ़ोटो, ऑडियो-वीडियो, और फ़ाइलें ऐक्सेस करने की अनुमति देना चाहते हैं?" + "क्या <b>%1$s</b> को आपके <b>%2$s</b> में मौजूद फ़ोटो, मीडिया, और फ़ाइल का ऐक्सेस देना है?" "<b>%1$s</b> को इस डिवाइस में मौजूद <b>फ़ोटो, वीडियो, संगीत, और ऑडियो</b> का ऐक्सेस देना है?" "<b>%1$s</b> को डिवाइस में मौजूद <b>फ़ोटो, वीडियो, संगीत, ऑडियो, और अन्य फ़ाइल</b> का ऐक्सेस देना है?" "<b>%1$s</b> को इस डिवाइस में मौजूद संगीत और ऑडियो ऐक्सेस करने की अनुमति देनी है?" + "क्या <b>%1$s</b> को आपके <b>%2$s में मौजूद संगीत और ऑडियो का ऐक्सेस देना है?" "<b>%1$s</b> को इस डिवाइस में मौजूद फ़ोटो और वीडियो ऐक्सेस करने की अनुमति देनी है?" + "क्या <b>%1$s</b> को आपके <b>%2$s</b> में मौजूद फ़ोटो और वीडियो का ऐक्सेस देना है?" "क्या <b>%1$s</b> को इस डिवाइस पर मौजूद अन्य फ़ोटो और वीडियो का ऐक्सेस देना है?" + "क्या <b>%1$s</b> को आपके <b>%2$s</b> पर मौजूद अन्य फ़ोटो और वीडियो का ऐक्सेस देना है?" "<b>%1$s</b> को ऑडियो रिकॉर्ड करने की अनुमति देनी है?" + "क्या <b>%1$s</b> को आपके <b>%2$s</b> पर ऑडियो रिकॉर्ड करने की अनुमति देनी है?" "ऐप्लिकेशन सिर्फ़ तब ही ऑडियो रिकॉर्ड कर पाएगा, जब आप ऐप्लिकेशन इस्तेमाल कर रहे हों" "क्या आप <b>%1$s</b> को ऑडियो रिकॉर्ड करने की अनुमति देना चाहते हैं?" + "क्या <b>%1$s</b> को आपके <b>%2$s</b> पर ऑडियो रिकॉर्ड करने की अनुमति देनी है?" "यह ऐप्लिकेशन हर समय ऑडियो रिकॉर्ड कर सकता है. ऐप्लिकेशन इस्तेमाल न करने पर भी ऐसा हो सकता है. ""सेटिंग में जाकर अनुमति दें." "क्या आप <b>%1$s</b> के लिए, माइक्रोफ़ोन के ऐक्सेस की अनुमति बदलना चाहते हैं?" + "क्या <b>%1$s</b> के लिए, आपके <b>%2$s</b> के माइक्रोफ़ोन का ऐक्सेस बदलना है?" "यह ऐप्लिकेशन हर समय ऑडियो रिकॉर्ड करना चाहता है, तब भी जब आप ऐप्लिकेशन इस्तेमाल न कर रहे हों. ""सेटिंग में जाकर अनुमति दें." "<b>%1$s</b> को अपनी शारीरिक गतिविधि की जानकारी पाने की अनुमति देना चाहते हैं?" + "क्या <b>%1$s</b> को <b>%2$s</b> में मौजूद, आपकी शारीरिक गतिविधि की जानकारी का ऐक्सेस देना है?" "<b>%1$s</b> को फ़ोटो खींचने और वीडियो रिकॉर्ड करने की अनुमति देनी है?" + "क्या <b>%1$s</b> को आपके <b>%2$s</b> पर फ़ोटो लेने और वीडियो रिकॉर्ड करने की अनुमति देनी है?" "ऐप्लिकेशन सिर्फ़ तब ही तस्वीरें ले पाएगा और वीडियो रिकॉर्ड कर पाएगा, जब आप ऐप्लिकेशन इस्तेमाल कर रहे हों" "क्या आप <b>%1$s</b> को तस्वीरें लेने और वीडियो रिकॉर्ड करने की अनुमति देना चाहते हैं?" + "क्या <b>%1$s</b> को आपके <b>%2$s</b> पर फ़ोटो लेने और वीडियो रिकॉर्ड करने की अनुमति देनी है?" "यह ऐप्लिकेशन हर समय तस्वीरें ले सकता है और वीडियो रिकॉर्ड कर सकता है. ऐप्लिकेशन इस्तेमाल न करने पर भी ऐसा हो सकता है. ""सेटिंग में जाकर अनुमति दें." "क्या आप <b>%1$s</b> के लिए, कैमरे के ऐक्सेस की अनुमति बदलना चाहते हैं?" + "क्या <b>%1$s</b> के लिए, आपके <b>%2$s</b> के कैमरे का ऐक्सेस बदलना है?" "यह ऐप्लिकेशन हर समय तस्वीरें लेना और वीडियो रिकॉर्ड करना चाहता है, तब भी जब आप ऐप्लिकेशन इस्तेमाल न कर रहे हों. ""सेटिंग में जाकर अनुमति दें." "<b>%1$s</b> को अपने फ़ोन के काॅल लाॅग को ऐक्सेस करने की अनुमति देनी है?" + "क्या <b>%1$s</b> को आपके <b>%2$s</b> में मौजूद, कॉल लॉग का ऐक्सेस देना है?" "<b>%1$s</b> को फ़ोन कॉल करने और उन्हें मैनेज करने की अनुमति देनी है?" + "क्या <b>%1$s</b> को आपके <b>%2$s से फ़ोन कॉल करने और उन्हें मैनेज करने का ऐक्सेस देना है?" "<b>%1$s</b> को अपने स्वास्थ्य से जुड़ी ज़रूरी जानकारी इस्तेमाल करने की अनुमति देनी है?" + "<b>%1$s</b> को <b>%2$s</b> में मौजूद, शरीर के बारे में जानकारी देने वाले सेंसर डेटा का ऐक्सेस देना है?" "यह ऐप्लिकेशन, आपके शरीर के बारे में ज़रूरी जानकारी देने वाले सेंसर डेटा को हमेशा ऐक्सेस करने की अनुमति मांगता है. यह अनुमति उस समय के लिए भी मांगी जाती है जिस समय ऐप्लिकेशन का इस्तेमाल न हो रहा हो. यह अनुमति देने के लिए, ""सेटिंग पर जाएं." "<b>%1$s</b> को अपने शरीर के बारे में जानकारी देने वाले लक्षणों के सेंसर डेटा को ऐक्सेस करने की अनुमति दें?" + "<b>%1$s</b> को <b>%2$s</b> में मौजूद, शरीर के बारे में जानकारी देने वाले सेंसर डेटा का ऐक्सेस देना है?" "इस ऐप्लिकेशन का इस्तेमाल न किए जाने पर भी, इसे बॉडी सेंसर के डेटा को हमेशा ऐक्सेस करने की अनुमति देने के लिए, ""सेटिंग पर जाएं." "क्या इस्तेमाल के दौरान, <b>%1$s</b> को बॉडी सेंसर के डेटा का ऐक्सेस देते रहना है?" + "क्या इस्तेमाल के दौरान, <b>%2$s</b> पर <b>%1$s</b> को बॉडी सेंसर के डेटा का ऐक्सेस देते रहना है?" "<b>%1$s</b> को सूचनाएं भेजने की अनुमति दें?" + "क्या <b>%1$s</b> को आपके <b>%2$s</b> पर सूचनाएं भेजने की अनुमति देनी है?" "कंट्रोल की गई अनुमतियां" "%1$s के पास, डिवाइस की जगह की जानकारी का ऐक्सेस है" "आपके संगठन ने %1$s को, डिवाइस की जगह की जानकारी का ऐक्सेस दिया है" diff --git a/PermissionController/res/values-hr/strings.xml b/PermissionController/res/values-hr/strings.xml index b63d820f2c1db11a452b9f02ea891fbdc0d8acb3..d4518084631e538b244412a6f8e0a52aa38b4392 100644 --- a/PermissionController/res/values-hr/strings.xml +++ b/PermissionController/res/values-hr/strings.xml @@ -34,6 +34,7 @@ "Više podataka" "Dopusti sve" "Uvijek dopusti sve" + "Omogućivanje ograničenog pristupa" "Odaberite slike i videozapise" "Odaberite više" "Nemoj dopustiti" @@ -60,6 +61,7 @@ "Aplikacije" "Dopuštenja za aplikacije" "Nekorištene aplikacije" + "Uređivanje odabranih fotografija za ovu aplikaciju" "Nema nekorištenih aplikacija" "Nema nekorištenih aplikacija" "Nedavne odluke o dopuštenjima" @@ -455,48 +457,75 @@ "Prikaz otkrivanja okidača asistenta" "Prikazuje ikonu na traci statusa kada se za aktiviranje glasovne pomoći upotrebljava mikrofon" "Želite li dopustiti aplikaciji <b>%1$s</b> da pristupa fotografijama i medijima na vašem uređaju?" + "Dopustiti da <b>%1$s</b> pristupa fotografijama i medijima na uređaju <b>%2$s</b>?" "Želite li aplikaciji <b>%1$s</b> dopustiti da pristupa vašim kontaktima?" + "Dopustiti da <b>%1$s</b> pristupa vašim kontaktima na uređaju <b>%2$s</b>?" "Želite li aplikaciji <b>%1$s</b> dopustiti da pristupa lokaciji ovog uređaja?" + "Dopustiti da <b>%1$s</b> pristupa lokaciji uređaja <b>%2$s</b>?" "Aplikacija će imati pristup lokaciji samo dok upotrebljavate aplikaciju" "Želite li aplikaciji <b>%1$s</b> dopustiti da pristupa lokaciji ovog uređaja?" + "Dopustiti da <b>%1$s</b> pristupa lokaciji vašeg uređaja <b>%2$s?" "Ova aplikacija možda će uvijek htjeti imati pristup vašoj lokaciji, čak i kad je ne koristite. ""Dopustite u postavkama." "Želite li promijeniti pristup lokaciji za aplikaciju <b>%1$s</b>?" + "Promijeniti pristup lokaciji za aplikaciju <b>%1$s</b> na uređaju <b>%2$s</b>?" "Ova aplikacija želi uvijek pristupati vašoj lokaciji, čak i kad je ne koristite. ""Dopustite u postavkama." "Želite li aplikaciji <b>%1$s</b> dopustiti da traži uređaje u blizini, povezuje se s njima i određuje njihov približni položaj?" + "Dopustiti da <b>%1$s</b> pronađe uređaje u blizini i njihov relativan položaj i poveže se s njima na uređaju <b>%2$s</b>?" "Dopustiti da <b>%1$s</b> traži uređaje u blizini, poveže se s njima i odredi njihov približni položaj? ""Dopustite u postavkama." "Želite li aplikaciji <b>%1$s</b> promijeniti pristup iz približne lokacije u točnu?" + "Promijeniti aplikaciji <b>%1$s</b> pristup lokaciji na uređaju <b>%2$s</b> iz približne u točnu?" "Želite li dopustiti aplikaciji <b>%1$s</b> da pristupa približnoj lokaciji ovog uređaja?" + "Dopustiti da <b>%1$s</b> pristupa približnoj lokaciji vašeg uređaja <b>%2$s</b>?" "Točno" "Približno" "Želite li dopustiti aplikaciji <b>%1$s</b> da pristupa vašem kalendaru?" + "Dopustiti da <b>%1$s</b> pristupa vašem kalendaru na uređaju <b>%2$s</b>?" "Želite li dopustiti aplikaciji <b>%1$s</b> da šalje i pregledava SMS poruke?" + "Dopustiti da <b>%1$s</b> šalje i pregledava SMS poruke na uređaju <b>%2$s</b>?" "Želite li dopustiti aplikaciji <b>%1$s</b> da pristupa fotografijama, medijima i datotekama na vašem uređaju?" + "Dopustiti da <b>%1$s</b> pristupa fotografijama, medijima i datotekama na uređaju <b>%2$s</b>?" "Dopustiti aplikaciji <b>%1$s</b> pristup <b>foto/video/audiodatotekama i glazbi</b> na ovom uređaju?" "Dopustiti apl. <b>%1$s</b> pristup <b>foto/video/audio i drugim datotekama te glazbi</b> na uređaju?" "Želite li dopustiti aplikaciji <b>%1$s</b> pristup glazbi i audiodatotekama na ovom uređaju?" + "Dopustiti da <b>%1$s</b> pristupa glazbi i audiodatotekama na uređaju <b>%2$s</b>?" "Želite li aplikaciji <b>%1$s</b> dopustiti pristup fotografijama i videozapisima na ovom uređaju?" + "Dopustiti da <b>%1$s</b> pristupa fotografijama i videozapisima na uređaju <b>%2$s</b>?" "Želite li aplikaciji <b>%1$s</b> dopustiti pristup većem broju fotografija i videozapisa na ovom uređaju?" + "Dopustiti da <b>%1$s</b> pristupa većem broju fotografija i videozapisa na uređaju <b>%2$s</b>?" "Želite li aplikaciji <b>%1$s</b> dopustiti da snima audiozapise?" + "Dopustiti da <b>%1$s</b> snima audiozapise na vašem uređaju <b>%2$s</b>?" "Aplikacija će moći snimati audiozapise samo dok je upotrebljavate" "Želite li aplikaciji <b>%1$s</b> dopustiti da snima audiozapise?" + "Dopustiti da <b>%1$s</b> snima audiozapise na vašem uređaju <b>%2$s</b>?" "Aplikacija će možda snimati audiozapise u svakom trenutku, čak i kad je ne upotrebljavate. ""Dopustite u postavkama." "Želite li promijeniti pristup mikrofonu za aplikaciju <b>%1$s</b>?" + "Promijeniti pristup mikrofonu za aplikaciju <b>%1$s</b> na uređaju <b>%2$s</b>?" "Aplikacija traži dopuštenje za snimanje audiozapisa u svakom trenutku, čak i kad je ne upotrebljavate. ""Dopustite u postavkama." "Želite li dopustiti da <b>%1$s</b> pristupa vašoj tjelesnoj aktivnosti?" + "Dopustiti da <b>%1$s</b> pristupa vašoj tjelesnoj aktivnosti na uređaju <b>%2$s</b>?" "Želite li aplikaciji <b>%1$s</b> dopustiti da snima fotografije i videozapise?" + "Dopustiti da <b>%1$s</b> snima fotografije i videozapise na vašem uređaju <b>%2$s</b>?" "Aplikacija će moći snimati fotografije i videozapise samo dok je upotrebljavate" "Želite li aplikaciji <b>%1$s</b> dopustiti da snima fotografije i videozapise?" + "Dopustiti da <b>%1$s</b> snima fotografije i videozapise na vašem uređaju <b>%2$s</b>?" "Aplikacija će možda snimati fotografije i videozapise u svakom trenutku, čak i kad je ne upotrebljavate. ""Dopustite u postavkama." "Želite li promijeniti pristup kameri za aplikaciju <b>%1$s</b>?" + "Promijeniti pristup kameri za aplikaciju <b>%1$s</b> na uređaju <b>%2$s</b>?" "Aplikacija traži dopuštenje za snimanje fotografija i videozapisa u svakom trenutku, čak i kad je ne upotrebljavate. ""Dopustite u postavkama." "Želite li aplikaciji <b>%1$s</b> dopustiti da pristupa zapisnicima poziva vašeg telefona?" + "Dopustiti da <b>%1$s</b> pristupa zapisnicima poziva vašeg telefona na uređaju <b>%2$s</b>?" "Želite li aplikaciji <b>%1$s</b> dopustiti da upućuje telefonske pozive i upravlja njima?" + "Dopustiti da <b>%1$s</b> upućuje telefonske pozive i upravlja njima na uređaju <b>%2$s</b>?" "Želite li dopustiti aplikaciji <b>%1$s</b> da pristupa podacima senzora o vašim vitalnim znakovima?" + "Dopustiti da <b>%1$s</b> pristupa podacima senzora o vašim vitalnim znakovima na uređaju <b>%2$s</b>?" "Aplikacija želi uvijek pristupati podacima senzora o vašim vitalnim znakovima, čak i kad je ne upotrebljavate. Da biste unijeli tu promjenu, ""otvorite postavke""." "Želite li dopustiti aplikaciji <b>%1$s</b> da pristupa podacima senzora o vašim vitalnim znakovima?" + "Dopustiti da <b>%1$s</b> pristupa podacima senzora o vašim vitalnim znakovima na uređaju <b>%2$s</b>?" "Da biste omogućili aplikaciji da uvijek pristupa podacima s biometrijskih senzora, čak i kada je ne upotrebljavate, ""otvorite postavke." "Nastaviti dopuštati aplikaciji <b>%1$s</b> pristup podacima s biometrijskih senzora dok je upotrebljavate?" + "Nastaviti dopuštati da <b>%1$s</b> tijekom upotrebe pristupa podacima biometrijskih senzora na uređaju <b>%2$s</b>?" "Želite li aplikaciji <b>%1$s</b> dopustiti da vam šalje obavijesti?" + "Dopustiti da vam <b>%1$s</b> šalje obavijesti na uređaju <b>%2$s</b>?" "Kontrolirana dopuštenja" "%1$s ima pristup lokaciji" "Vaša organizacija dopušta da %1$s pristupa vašoj lokaciji" diff --git a/PermissionController/res/values-hu/strings.xml b/PermissionController/res/values-hu/strings.xml index 12ad687a6c59a4980ef0f9aa2b1c31c330f7d3f3..c47c9ee9f62dea9904014409f717a5bacfbda912 100644 --- a/PermissionController/res/values-hu/strings.xml +++ b/PermissionController/res/values-hu/strings.xml @@ -34,6 +34,7 @@ "Bővebben" "Összes engedélyezése" "Összes engedélyezése mindig" + "Korlátozott hozzáférés engedélyezése" "Fotók és videók kijelölése" "Több kijelölése" "Nem jelölök ki többet" @@ -60,6 +61,7 @@ "Alkalmazások" "Alkalmazásengedélyek" "Nem használt alkalmazások" + "Az alkalmazáshoz kiválasztott fotók módosítása" "Nincsenek nem használt appok" "0 nem használt alkalmazás" "Friss engedélyezési döntések" @@ -455,48 +457,75 @@ "Segédet aktiváló parancsok észlelésének megjelenítése" "Ikon megjelenítése az állapotsoron, amikor a rendszer a mikrofont használja a hangsegéd aktiválásához" "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen az eszközön tárolt fotókhoz és médiatartalmakhoz?" + "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen fotókhoz és médiatartalmakhoz itt: <b>%2$s</b>?" "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen a névjegyekhez?" + "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen a névjegyeihez ezen az eszközön: <b>%2$s</b>?" "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen az eszköz helyadataihoz?" + "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen a következő eszköz helyadataihoz: <b>%2$s</b>?" "Az alkalmazás csak akkor férhet hozzá a helyadatokhoz, amikor Ön használja az alkalmazást" "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen az eszköz helyadataihoz?" + "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen a következő eszköz helyadataihoz: <b>%2$s?" "Előfordulhat, hogy az alkalmazás akkor is hozzá szeretne férni a helyadataihoz, amikor nem használja az alkalmazást. ""A beállításokban engedélyezheti." "Megváltoztatja a helyadatokhoz való hozzáférést a következő számára: <b>%1$s</b>?" + "Módosítja a(z) <b>%1$s</b> helyadatokhoz való hozzáférését ezen az eszközön: <b>%2$s</b>?" "Az alkalmazás akkor is hozzá szeretne férni az Ön helyadataihoz, amikor Ön nem használja az alkalmazást. ""A beállításokban engedélyezheti." "A(z) <b>%1$s</b> megkeresheti a közeli eszközöket, meghatározhatja relatív pozíciójukat, és csatlakozhat hozzájuk?" + "Megtalálhatja a(z) <b>%1$s</b> a közeli eszközöket, csatlakozhat hozzájuk, és meghatározhatja a relatív pozíciójukat itt: <b>%2$s</b>?" "A(z) <b>%1$s</b> megkeresheti a közeli eszközöket, meghatározhatja relatív pozíciójukat, és csatlakozhat hozzájuk? ""Engedélyezés a beállításokban." "Megváltoztatja a(z) <b>%1$s</b> helyhozzáférését hozzávetőlegesről pontosra?" + "Módosítja a(z) <b>%1$s</b> számára biztosított helyhozzáférést hozzávetőlegesről pontosra ezen az eszközön: <b>%2$s</b>?" "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen az eszköz hozzávetőleges helyadataihoz?" + "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen a következő hozzávetőleges helyéhez: <b>%2$s</b>?" "Pontos" "Hozzávetőleges" "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen a naptárhoz?" + "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen a naptárhoz itt: <b>%2$s</b>?" "Engedélyezi a(z) <b>%1$s</b> számára, hogy SMS-eket küldhessen és tekinthessen meg?" + "Engedélyezi a(z) <b>%1$s</b> számára, hogy SMS-eket küldjön és tekintsen meg itt: <b>%2$s</b>?" "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen az eszközön tárolt fotókhoz, médiatartalmakhoz és fájlokhoz?" + "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen a fotókhoz, médiatartalmakhoz és fájlokhoz itt: <b>%2$s</b>?" "Hozzáférhet a(z) <b>%1$s</b> az eszközön lévő <b>fotókhoz, videókhoz, zenékhez és hangfájlokhoz</b>?" "Hozzáférhet a(z) <b>%1$s</b> az eszközön tárolt <b>fotókhoz, hang-, videó- és egyéb fájlokhoz</b>?" "Hozzáférhet a(z) <b>%1$s</b> az eszközön tárolt zenékhez és egyéb hanganyagokhoz?" + "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen a zenékhez ezen az eszközön: <b>%2$s</b>?" "Hozzáférhet a(z) <b>%1$s</b> az eszközön tárolt fotókhoz és videókhoz?" + "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen a fotókhoz és a videókhoz itt: <b>%2$s</b>?" "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen az eszközön tárolt további fotókhoz és videókhoz?" + "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen további képekhez és videókhoz itt: <b>%2$s</b>?" "Engedélyezi a(z) <b>%1$s</b> számára, hogy hangfelvételt készíthessen?" + "Engedélyezi a(z) <b>%1$s</b> számára, hogy hangfelvételt készítsen ezen az eszközön: <b>%2$s</b>?" "Az alkalmazás csak akkor tud majd hangfelvételt készíteni, amikor Ön használja az alkalmazást." "Engedélyezi a(z) <b>%1$s</b> számára, hogy hangfelvételt készíthessen?" + "Engedélyezi a(z) <b>%1$s</b> számára, hogy hangfelvételt készítsen ezen az eszközön: <b>%2$s</b>?" "Lehet, hogy az alkalmazás akkor is szeretne hangfelvételt készíteni, amikor Ön nem használja az alkalmazást. ""A beállításokban engedélyezheti." "Módosítja a mikrofonhoz való hozzáférést a következő számára: <b>%1$s</b>?" + "Módosítja a(z) <b>%1$s</b> mikrofonhoz való hozzáférését ezen az eszközön: <b>%2$s</b>?" "Az alkalmazás akkor is szeretne hangfelvételt készíteni, amikor Ön nem használja az alkalmazást. ""A beállításokban engedélyezheti." "Engedélyezi a(z) <b>%1$s</b> számára a testmozgási adataihoz való hozzáférést?" + "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen a testmozgásadatokhoz itt: <b>%2$s</b>?" "Engedélyezi a(z) <b>%1$s</b> számára, hogy képeket és videókat készíthessen?" + "Engedélyezi a(z) <b>%1$s</b> számára, hogy képeket és videót készítsen ezen az eszközön: <b>%2$s</b>?" "Az alkalmazás csak akkor tud majd fényképeket és videókat készíteni, amikor Ön használja az alkalmazást." "Engedélyezi a(z) <b>%1$s</b> számára, hogy fényképeket és videókat készíthessen?" + "Engedélyezi a(z) <b>%1$s</b> számára, hogy képeket és videót készítsen ezen az eszközön: <b>%2$s</b>?" "Lehet, hogy az alkalmazás akkor is szeretne fotókat és videókat készíteni, amikor Ön nem használja az alkalmazást. ""A beállításokban engedélyezheti." "Módosítja a kamerához való hozzáférést a következő számára: <b>%1$s</b>?" + "Módosítja a(z) <b>%1$s</b> kamerához való hozzáférését ezen az eszközön: <b>%2$s</b>?" "Az alkalmazás akkor is szeretne fényképeket és videókat készíteni, amikor Ön nem használja az alkalmazást. ""A beállításokban engedélyezheti." "Engedélyezi, hogy a(z) <b>%1$s</b> hozzáférjen az Ön hívásnaplóihoz?" + "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen a telefon hívásnaplóihoz itt: <b>%2$s</b>?" "Engedélyezi a(z) <b>%1$s</b> számára, hogy hívásokat indíthasson és kezelhessen?" + "Engedélyezi a(z) <b>%1$s</b> számára, hogy hívást indítson, és kezelje a hívásokat itt: <b>%2$s</b>?" "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen az életjelekkel kapcsolatos szenzoradatokhoz?" + "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen az életfunkciókkal kapcsolatos szenzoradatokhoz itt: <b>%2$s</b>?" "Ez az alkalmazás akkor is hozzá szeretne férni az életjelekkel kapcsolatos szenzoradatokhoz, ha nincs használatban. A módosításhoz ""lépjen a beállításokhoz." "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen az életjelekkel kapcsolatos szenzoradatokhoz?" + "Engedélyezi a(z) <b>%1$s</b> számára, hogy hozzáférjen az életfunkció-adatokhoz itt: <b>%2$s</b>?" "Ha engedélyezni szeretné, hogy ez az alkalmazás mindig hozzáférjen a testérzékelők adataihoz (még akkor is, amikor nem használja), ""lépjen a beállításokhoz""." "Továbbra is hozzáférhessen használat közben a(z) <b>%1$s</b> alkalmazás a testérzékelők adataihoz?" + "A(z) <b>%1$s</b> továbbra is hozzáférhet a testérzékelők adataihoz használat közben itt: <b>%2$s</b>?" "Engedélyezi a(z) <b>%1$s</b> számára, hogy értesítéseket küldjön Önnek?" + "Engedélyezi a(z) <b>%1$s</b> számára, hogy értesítéseket küldjön Önnek ezen az eszközön: <b>%2$s</b>?" "Szabályozott engedélyek" "A(z) %1$s hozzáfér a tartózkodási helyhez" "Szervezete lehetővé teszi a(z) %1$s számára, hogy hozzáférjen az Ön tartózkodási helyéhez" diff --git a/PermissionController/res/values-hy/strings.xml b/PermissionController/res/values-hy/strings.xml index 73742eb535118ae97b2f9a6fc57286f6b418db10..8d92099d24851163d518512ce50ee75459781480 100644 --- a/PermissionController/res/values-hy/strings.xml +++ b/PermissionController/res/values-hy/strings.xml @@ -34,6 +34,7 @@ "Մանրամասն" "Թույլատրել բոլորը" "Միշտ թույլատրել բոլորը" + "Տրամադրել սահմանափակ հասանելիություն" "Կոնկրետ լուսանկարներ և տեսանյութեր" "Ընտրել այլ տարրեր" "Չընտրել այլ լուսանկարներ" @@ -60,6 +61,7 @@ "Հավելվածներ" "Հավելվածների թույլտվություններ" "Չօգտագործվող հավելվածներ" + "Փոխել այս հավելվածի համար ընտրված լուսանկարները" "Չօգտագործվող հավելվածներ չկան" "Չօգտագործվող հավելվածներ չկան" "Թույլտվության որոշումներ" @@ -455,48 +457,75 @@ "Ցույց տալ ձայնային օգնականի ակտիվացման պատկերակը" "Ցույց տալ պատկերակը կարգավիճակի գոտում, երբ ձայնային օգնականի ակտիվացման համար օգտագործվում է խոսափողը" "Թույլատրե՞լ <b>%1$s</b> հավելվածին օգտագործել սարքի լուսանկարներն ու մուլտիմեդիա ֆայլերը" + "Թույլատրե՞լ <b>%1$s</b>-ին օգտագործել <b>%2$sի</b> լուսանկարներն ու մեդիա ֆայլերը։" "Թույլատրե՞լ <b>%1$s</b> հավելվածին օգտագործել ձեր կոնտակտները" + "Թույլատրե՞լ <b>%1$s</b>-ին օգտագործել ձեր կոնտակտները <b>%2$sում</b>։" "Թույլ տա՞լ <b>%1$s</b> հավելվածին օգտագործել այս սարքի տեղադրության տվյալները" + "Թույլատրե՞լ <b>%1$s</b>-ին օգտագործել ձեր <b>%2$sի</b> տեղադրության տվյալները։" "Տեղադրության տվյալները հասանելի կլինեն հավելվածին, միայն երբ այն օգտագործելիս լինեք" "Թույլ տա՞լ <b>%1$s</b> հավելվածին օգտագործել այս սարքի տեղադրության տվյալները" + "Թույլատրե՞լ <b>%1$s</b>-ին օգտագործել ձեր <b>%2$sի</b> տեղադրության մասին տվյալները։" "Հավելվածին անհրաժեշտ է ձեր գտնվելու վայրը հետագծելու թույլտվություն, նույնիսկ երբ դուք չեք օգտվում դրանից։ ""Թույլտվությունը տրամադրեք այստեղ""։" "Փոխե՞լ տեղադրության մասին տվյալների հասանելիությունը <b>%1$s</b> հավելվածի համար։" + "Փոխե՞լ տեղորոշման թույլտվությունը <b>%1$s</b>-ի համար ձեր <b>%2$sում</b>։" "Հավելվածին անհրաժեշտ է ձեր գտնվելու վայրը հետագծելու թույլտվություն, նույնիսկ երբ դուք չեք օգտվում դրանից։ ""Թույլտվությունը տրամադրեք այստեղ""։" "Թույլատրե՞լ <b>%1$s</b> հավելվածին գտնել մոտակա սարքերը, միանալ դրանց և որոշել դրանց հարաբերական դիրքավորումը։" + "Թույլատրե՞լ <b>%1$s</b>-ին գտնել մոտակա սարքերը, միանալ դրանց և որոշել դրանց հարաբերական դիրքը <b>%2$sում</b>։" "Թույլատրե՞լ <b>%1$s</b> հավելվածին գտնել մոտակա սարքերը, միանալ դրանց և որոշել դրանց հարաբերական դիրքավորումը։ Թույլատրելու համար անցեք ""կարգավորումներ։" <b>%1$s</b>» հավելվածի տեղորոշումը փոխե՞լ մոտավորից ճգշրիտի" + "Թույլատրե՞լ <b>%1$s</b>-ին օգտագործել ձեր <b>%2$sի</b> ճշգրիտ տեղադրությունը՝ մոտավորի փոխարեն։" "Թույլ տա՞լ <b>%1$s</b> հավելվածին օգտագործել այս սարքի մոտավոր տեղադրությունը" + "Թույլատրե՞լ <b>%1$s</b>-ին օգտագործել ձեր <b>%2$sի</b> մոտավոր տեղադրությունը։" "Ճշգրիտ" "Մոտավոր" "Թույլատրե՞լ <b>%1$s</b> հավելվածին օգտագործել ձեր օրացույցը:" + "Թույլատրե՞լ <b>%1$s</b>-ին օգտագործել ձեր օրացույցը <b>%2$sում</b>։" "Թույլատրե՞լ <b>%1$s</b> հավելվածին ուղարկել և դիտել SMS հաղորդագրություններ:" + "Թույլատրե՞լ <b>%1$s</b>-ին SMS-ներ ուղարկել և դիտել <b>%2$sում</b>։" "Թույլատրե՞լ <b>%1$s</b> հավելվածին օգտագործել սարքում պահված լուսանկարները, մուլտիմեդիան և ֆայլերը" + "Թույլատրե՞լ <b>%1$s</b>-ին օգտագործել <b>%2$sի</b> լուսանկարները, մեդիա նյութերը և ֆայլերը։" "Թույլ տա՞լ <b>%1$s</b> հավելվածին օգտագործել այս սարքի <b>լուսանկարները, տեսանյութերը, երաժշտությունը և աուդիո ֆայլերը</b>" "Թույլ տա՞լ <b>%1$s</b> հավելվածին օգտագործել այս սարքի <b>նկարները, երգերը, տեսանյութերը, աուդիո ֆայլերը և մյուս ֆայլերը</b>" "Թույլ տա՞լ <b>%1$s</b> հավելվածին օգտագործել այս սարքի երաժշտությունը և մյուս աուդիո ֆայլերը" + "Թույլատրե՞լ <b>%1$s</b>-ին օգտագործել <b>%2$sի</b> երաժշտությունը և մյուս աուդիո ֆայլերը։" "Թույլ տա՞լ <b>%1$s</b> հավելվածին օգտագործել այս սարքի լուսանկարներն ու տեսանյութերը" + "Թույլատրե՞լ <b>%1$s</b>-ին օգտագործել <b>%2$sի</b> լուսանկարներն ու տեսանյութերը։" "Թույլ տա՞լ <b>%1$s</b> հավելվածին օգտագործել այս սարքի լուսանկարներն ու տեսանյութերը" + "Թույլատրե՞լ <b>%1$s</b>-ին օգտագործել այլ լուսանկարներ և տեսանյութեր <b>%2$sում</b>։" "Թույլատրե՞լ <b>%1$s</b> հավելվածին ձայնագրել" + "Թույլատրե՞լ <b>%1$s</b>-ին ձայնագրություններ անել ձեր <b>%2$sում</b>։" "Այս հավելվածը կկարողանա ձայնագրություններ անել միայն, երբ այն օգտագործելիս լինեք" "Թույլատրե՞լ <b>%1$s</b> հավելվածին ձայնագրություններ անել։" + "Թույլատրե՞լ <b>%1$s</b>-ին ձայնագրություններ անել ձեր <b>%2$sում</b>։" "Այս հավելվածը հավանաբար կուզենա ձայնագրություններ անել նույնիսկ այն ժամանակ, երբ չեք օգտվում դրանից։ ""Թույլտվությունը տրամադրեք այստեղ։" "Փոխե՞լ խոսափողի հասանելիության կարգավորումները <b>%1$s</b> հավելվածի համար։" + "Փոխե՞լ խոսափողի հասանելիության կարգավորումները <b>%1$s</b>-ի համար ձեր <b>%2$sում</b>։" "Այս հավելվածն ուզւոմ է ձայնագրություններ անել նույնիսկ այն ժամանակ, երբ չեք օգտվում դրանից։ ""Թույլտվությունը տրամադրեք այստեղ։" "Թույլ տա՞լ <b>%1$s</b> հավելվածին օգտագործել ձեր ֆիզիկական ակտիվության տվյալները" + "Թույլատրե՞լ <b>%1$s</b>-ին օգտագործել ձեր ֆիզիկական ակտիվության տվյալները <b>%2$sում</b>։" "Թույլատրե՞լ <b>%1$s</b> հավելվածին լուսանկարել և տեսագրել" + "Թույլատրե՞լ <b>%1$s</b>-ին լուսանկարել և տեսագրել ձեր <b>%2$sում</b>։" "Այս հավելվածը կկարողանա լուսանկարել և տեսագրել միայն, երբ այն օգտագործելիս լինեք" "Թույլատրե՞լ <b>%1$s</b> հավելվածին լուսանկարել և տեսագրել։" + "Թույլատրե՞լ <b>%1$s</b>-ին լուսանկարել և տեսագրել ձեր <b>%2$sում</b>։" "Այս հավելվածը հավանաբար կուզենա լուսանկարել և տեսագրել նույնիսկ այն ժամանակ, երբ չեք օգտվում դրանից։ ""Թույլտվությունը տրամադրեք այստեղ։" "Փոխե՞լ տեսախցիկի հասանելիության կարգավորումները <b>%1$s</b> հավելվածի համար։" + "Փոխե՞լ տեսախցիկի հասանելիության կարգավորումները <b>%1$s</b>-ի համար ձեր <b>%2$sում</b>։" "Այս հավելվածն ուզում է լուսանկարել և տեսագրել նույնիսկ այն ժամանակ, երբ չեք օգտվում դրանից։ ""Թույլտվությունը տրամադրեք այստեղ։" "Թույլատրե՞լ <b>%1$s</b> հավելվածին օգտագործել ձեր հեռախոսազանգերի մատյանները" + "Թույլատրե՞լ <b>%1$s</b>-ին օգտագործել ձեր հեռախոսի զանգերի մատյանները <b>%2$sում</b>։" "Թույլատրե՞լ <b>%1$s</b> հավելվածին կատարել հեռախոսազանգեր և կառավարել դրանք" + "Թույլատրե՞լ <b>%1$s</b>-ին հեռախոսազանգեր կատարել և կառավարել դրանք <b>%2$sում</b>։" "Թույլատրե՞լ <b>%1$s</b> հավելվածին սենսորից ստանալ ձեր կենսագործունեության հիմնական տվյալները:" + "Թույլատրե՞լ <b>%1$s</b>-ին օգտագործել ձեր մարմնի սենսորների տվյալները <b>%2$sում</b>։" "Հավելվածին անհրաժեշտ է մարմնի սենսորների տվյալների հասանելիություն, նույնիսկ երբ չեք օգտվում դրանից։ Այս փոփոխությունը կատարելու համար ""անցեք կարգավորումներ""։" "Թույլ տա՞լ <b>%1$s</b> հավելվածին ձեր կենսագործունեության տվյալները ստանալ սենսորներից" + "Թույլատրե՞լ <b>%1$s</b>-ին օգտագործել ձեր մարմնի սենսորների տվյալները <b>%2$sում</b>։" "Եթե ուզում եք, որ այս հավելվածին հասանելի լինեն մարմնի սենսորների տվյալները, նույնիսկ երբ չեք օգտվում հավելվածից, ""փոխեք կարգավորումները""։" "Մարմնի սենսորների տվյալները հասանելի դարձնե՞լ <b>%1$s</b> հավելվածին, միայն երբ այն օգտագործվում է" + "Թույլատրե՞լ <b>%1$s</b>-ին աշխատանքի ընթացքում օգտագործել մարմնի սենսորների տվյալները <b>%2$sում</b>։" "Թույլատրե՞լ <b>%1$s</b> հավելվածին ծանուցումներ ուղարկել ձեզ" + "Թույլատրե՞լ <b>%1$s</b>-ին ծանուցումներ ուղարկել ձեզ <b>%2$sում</b>։" "Կառավարվող թույլտվություններ" "%1$s հավելվածն ունի տեղորոշման թույլտվություն" "Ձեր կազմակերպությունը հասանելի է դարձրել ձեր տեղադրությունը %1$s հավելվածին" diff --git a/PermissionController/res/values-in/strings.xml b/PermissionController/res/values-in/strings.xml index 456ce7b8299424654d4f74b493ede29cdeb0ae0e..37df6c3266bf4b4e0027287e5df7ee02c1c5adb4 100644 --- a/PermissionController/res/values-in/strings.xml +++ b/PermissionController/res/values-in/strings.xml @@ -34,6 +34,7 @@ "Info lengkap" "Izinkan semua" "Selalu izinkan semua" + "Izinkan akses terbatas" "Pilih foto dan video" "Pilih lainnya" "Jangan pilih lainnya" @@ -60,6 +61,7 @@ "Aplikasi" "Izin aplikasi" "Aplikasi tidak digunakan" + "Edit foto yang dipilih untuk aplikasi ini" "Tak ada aplikasi tidak dipakai" "0 aplikasi tidak digunakan" "Keputusan izin terbaru" @@ -455,48 +457,75 @@ "Tampilkan deteksi pemicu asisten" "Tampilkan ikon di status bar saat mikrofon digunakan untuk mengaktifkan asisten suara" "Izinkan <b>%1$s</b> mengakses foto dan media di perangkat?" + "Izinkan <b>%1$s</b> mengakses foto dan media di <b>%2$s</b>?" "Izinkan <b>%1$s</b> mengakses kontak?" + "Izinkan <b>%1$s</b> mengakses kontak di <b>%2$s</b>?" "Izinkan <b>%1$s</b> mengakses lokasi perangkat ini?" + "Izinkan <b>%1$s</b> mengakses lokasi <b>%2$s</b>?" "Aplikasi ini hanya akan memiliki akses ke lokasi selagi Anda menggunakan aplikasi" "Izinkan <b>%1$s</b> mengakses lokasi perangkat ini?" + "Izinkan <b>%1$s</b> mengakses lokasi <b>%2$s</b>?" "Aplikasi ini mungkin ingin selalu mengakses lokasi, meski tidak sedang digunakan. ""Izinkan di setelan." "Ubah akses lokasi untuk <b>%1$s</b>?" + "Ubah akses lokasi untuk <b>%1$s</b> di <b>%2$s</b>?" "Aplikasi ini mungkin ingin selalu mengakses lokasi, meski tidak sedang digunakan. ""Izinkan di setelan." "Izinkan <b>%1$s</b> menemukan, terhubung ke, dan menentukan posisi relatif perangkat di sekitar?" + "Izinkan <b>%1$s</b> menemukan, menghubungkan, dan menentukan posisi relatif perangkat di sekitar di <b>%2$s</b>?" "Izinkan <b>%1$s</b> menemukan, terhubung ke, dan menentukan posisi relatif perangkat di sekitar? ""Izinkan di setelan." "Ubah akses lokasi <b>%1$s</b> dari perkiraan ke lokasi presisi?" + "Ubah akses lokasi <b>%1$s</b> di <b>%2$s</b> dari perkiraan menjadi presisi?" "Izinkan <b>%1$s</b> mengakses perkiraan lokasi perangkat ini?" + "Izinkan <b>%1$s</b> mengakses perkiraan lokasi <b>%2$s</b>?" "Presisi" "Perkiraan" "Izinkan <b>%1$s</b> mengakses kalender?" + "Izinkan <b>%1$s</b> mengakses kalender di <b>%2$s</b>?" "Izinkan <b>%1$s</b> mengirim dan melihat SMS?" + "Izinkan <b>%1$s</b> mengirim dan melihat pesan SMS di <b>%2$s</b>?" "Izinkan <b>%1$s</b> mengakses foto, media, dan file di perangkat?" + "Izinkan <b>%1$s</b> mengakses foto, media, dan file di <b>%2$s</b>?" "Izinkan <b>%1$s</b> mengakses <b>foto, video, musik, dan audio</b> di perangkat ini?" "Izinkan <b>%1$s</b> mengakses <b>foto, video, musik, audio, dan file lainnya</b> di perangkat ini?" "Izinkan <b>%1$s</b> mengakses musik dan audio di perangkat ini?" + "Izinkan <b>%1$s</b> mengakses musik dan audio di <b>%2$s</b>?" "Izinkan <b>%1$s</b> mengakses foto dan video di perangkat ini?" + "Izinkan <b>%1$s</b> mengakses foto dan video di <b>%2$s</b>?" "Izinkan <b>%1$s</b> mengakses foto dan video lainnya di perangkat ini?" + "Izinkan <b>%1$s</b> mengakses foto dan video lainnya di <b>%2$s</b>?" "Izinkan <b>%1$s</b> merekam audio?" + "Izinkan <b>%1$s</b> merekam audio di <b>%2$s</b>?" "Aplikasi hanya dapat merekam audio saat aplikasi sedang digunakan" "Izinkan <b>%1$s</b> merekam audio?" + "Izinkan <b>%1$s</b> merekam audio di <b>%2$s</b>?" "Aplikasi ini mungkin ingin selalu merekam audio, meski aplikasi tidak sedang digunakan. ""Izinkan di setelan""." "Ubah akses mikrofon untuk <b>%1$s</b>?" + "Ubah akses mikrofon untuk <b>%1$s</b> di <b>%2$s</b>?" "Aplikasi ini ingin selalu merekam audio, meski aplikasi tidak sedang digunakan. ""Izinkan di setelan""." "Izinkan <b>%1$s</b> mengakses aktivitas fisik Anda?" + "Izinkan <b>%1$s</b> mengakses aktivitas fisik di <b>%2$s</b>?" "Izinkan <b>%1$s</b> mengambil gambar dan merekam video?" + "Izinkan <b>%1$s</b> mengambil gambar dan merekam video di <b>%2$s</b>?" "Aplikasi hanya dapat mengambil gambar dan merekam video saat aplikasi sedang digunakan" "Izinkan <b>%1$s</b> mengambil gambar dan merekam video?" + "Izinkan <b>%1$s</b> mengambil gambar dan merekam video di <b>%2$s</b>?" "Aplikasi ini mungkin ingin selalu mengambil gambar dan merekam video, meski aplikasi tidak sedang digunakan. ""Izinkan di setelan""." "Ubah akses kamera untuk <b>%1$s</b>?" + "Ubah akses kamera untuk <b>%1$s</b> di <b>%2$s</b>?" "Aplikasi ini ingin selalu mengambil gambar dan merekam video, meski aplikasi tidak sedang digunakan. ""Izinkan di setelan""." "Izinkan <b>%1$s</b> mengakses log panggilan telepon?" + "Izinkan <b>%1$s</b> mengakses log panggilan telepon di <b>%2$s</b>?" "Izinkan <b>%1$s</b> melakukan dan mengelola panggilan telepon?" + "Izinkan <b>%1$s</b> melakukan dan mengelola panggilan telepon di <b>%2$s</b>?" "Izinkan <b>%1$s</b> mengakses data sensor tentang tanda-tanda vital Anda?" + "Izinkan <b>%1$s</b> mengakses data sensor terkait tanda-tanda vital Anda di <b>%2$s</b>?" "Aplikasi ini ingin selalu mengakses data sensor tentang tanda-tanda vital Anda, meski aplikasi tidak sedang digunakan. Untuk melakukan perubahan ini, ""buka setelan""." "Izinkan </b>%1$s</b> mengakses data sensor tentang tanda-tanda vital Anda?" + "Izinkan <b>%1$s</b> mengakses data sensor terkait tanda-tanda vital Anda di <b>%2$s</b>?" "Untuk selalu mengizinkan aplikasi ini mengakses data sensor tubuh, meski saat aplikasi tidak sedang digunakan, ""buka setelan." "Terus izinkan <b>%1$s</b> mengakses data sensor tubuh saat aplikasi sedang digunakan?" + "Terus izinkan <b>%1$s</b> mengakses data sensor tubuh di <b>%2$s</b> saat apl sedang digunakan?" "Izinkan <b>%1$s</b> mengirim notifikasi kepada Anda?" + "Izinkan <b>%1$s</b> mengirimi Anda notifikasi di <b>%2$s</b>?" "Izin terkontrol" "%1$s memiliki akses lokasi" "Organisasi Anda mengizinkan %1$s mengakses lokasi Anda" diff --git a/PermissionController/res/values-is/strings.xml b/PermissionController/res/values-is/strings.xml index ab698d6ab9210c2ce1f2fa25531029976ef9bea3..4a472afa09d8e9452a9f50abd21f4f50a4beb9ff 100644 --- a/PermissionController/res/values-is/strings.xml +++ b/PermissionController/res/values-is/strings.xml @@ -34,6 +34,7 @@ "Upplýsingar" "Leyfa allt" "Alltaf leyfa allt" + "Leyfa takmarkaðan aðgang" "Velja myndir og myndskeið" "Velja meira" "Ekki velja fleiri" @@ -60,6 +61,7 @@ "Forrit" "Heimildir forrits" "Ónotuð forrit" + "Breyttu myndavali fyrir þetta forrit" "Engin ónotuð forrit" "0 ónotuð forrit" "Nýlegar heimildaákvarðanir" @@ -455,48 +457,75 @@ "Sýna virkjunarkennsl hjálpara" "Sýna tákn á stöðustiku þegar hljóðnemi er notaður til að ræsa raddaðstoð" "Veita <b>%1$s</b> aðgang að myndum og efni í tækinu?" + "Veita <b>%1$s</b> aðgang að myndum og efni í: <b>%2$s</b>?" "Viltu veita <b>%1$s</b> aðgang að tengiliðunum þínum?" + "Veita <b>%1$s</b> aðgang að tengiliðunum þínum í: <b>%2$s</b>?" "Viltu veita <b>%1$s</b> aðgang að staðsetningu þessa tækis?" + "Veita <b>%1$s</b> aðgang að staðsetningu fyrir: <b>%2$s</b>?" "Forritið hefur aðeins aðgang að staðsetningunni á meðan þú notar forritið" "Viltu veita <b>%1$s</b> aðgang að staðsetningu þessa tækis?" + "Veita <b>%1$s</b> aðgang að staðsetningu: <b>%2$s?" "Þetta forrit gæti beðið um aðgang að staðsetningu þinni öllum stundum, jafnvel þegar þú ert ekki að nota forritið. ""Þú getur leyft það í stillingum." "Viltu breyta aðgangi að staðsetningu fyrir <b>%1$s</b>?" + "Breyta staðsetningaraðgangi fyrir <b>%1$s</b> í: <b>%2$s</b>?" "Þetta forrit vill fá aðgang að staðsetningu þinni öllum stundum, jafnvel þegar þú ert ekki að nota forritið. ""Þú getur leyft það í stillingum." "Leyfa <b>%1$s</b> að finna, tengjast við og ákvarða fjarlægð milli nálægra tækja?" + "Leyfa <b>%1$s</b> að finna, tengjast og greina áætlaða staðsetningu nálægra tækja í: <b>%2$s</b>?" "Leyfa <b>%1$s</b> að finna, tengjast við og ákvarða fjarlægð milli nálægra tækja? ""Þú getur leyft það í stillingunum." "Breyta aðgangi <b>%1$s</b> að staðsetningu úr áætlaðri í nákvæma?" + "Breyta staðsetningaraðgangi <b>%1$s</b> úr áætluðum í nákvæman í: <b>%2$s</b>?" "Viltu veita <b>%1$s</b> aðgang að áætlaðri staðsetningu þessa tækis?" + "Veita <b>%1$s</b> aðgang að áætlaðri staðsetningu fyrir: <b>%2$s</b>?" "Nákvæm" "Áætluð" "Viltu veita <b>%1$s</b> aðgang að dagatalinu þínu?" + "Veita <b>%1$s</b> aðgang að dagatalinu þínu í: <b>%2$s</b>?" "Viltu leyfa <b>%1$s</b> að senda og skoða SMS-skilaboð?" + "Leyfa <b>%1$s</b> að senda og skoða SMS-skilaboð í: <b>%2$s</b>?" "Viltu veita <b>%1$s</b> aðgang að myndum, efni og skrám í tækinu?" + "Veita <b>%1$s</b> aðgang að myndum, efni og skrám í: <b>%2$s</b>?" "Veita <b>%1$s</b> aðgang að <b>myndum, myndskeiðum, tónlist og hljóði</b> í þessu tæki?" "Veita <b>%1$s</b> aðgang að <b>myndum, myndskeiðum, tónlist, hljóði og öðrum skrám</b> í þessu tæki?" "Veita <b>%1$s</b> aðgang að tónlist og hljóði í þessu tæki?" + "Veita <b>%1$s</b> aðgang að tónlist og hljóði í: <b>%2$s</b>?" "Veita <b>%1$s</b> aðgang að myndum og myndskeiðum í þessu tæki?" + "Veita <b>%1$s</b> aðgang að myndum og vídeóum í: <b>%2$s</b>?" "Veita <b>%1$s</b> aðgang að fleiri myndum og myndskeiðum í þessu tæki?" + "Veita <b>%1$s</b> aðgang að fleiri myndum og vídeóum í: <b>%2$s</b>?" "Leyfa <b>%1$s</b> að taka upp hljóð?" + "Leyfa <b>%1$s</b> að taka upp hljóð í: <b>%2$s</b>?" "Forritið mun aðeins geta tekið upp hljóð þegar þú ert að nota forritið" "Viltu leyfa <b>%1$s</b> að taka upp hljóð?" + "Leyfa <b>%1$s</b> að taka upp hljóð í: <b>%2$s</b>?" "Þetta forrit gæti viljað taka upp hljóð hvenær sem er, jafnvel þegar þú ert ekki að nota forritið. ""Þú getur leyft það í stillingum." "Viltu breyta aðgangi að hljóðnema fyrir <b>%1$s</b>?" + "Breyta hljóðnemaaðgangi fyrir <b>%1$s</b> í: <b>%2$s</b>?" "Þetta forrit vill taka upp hljóð hvenær sem er, jafnvel þegar þú ert ekki að nota forritið. ""Þú getur leyft það í stillingum." "Viltu leyfa <b>%1$s</b> að fá aðgang að hreyfingu þinni?" + "Veita <b>%1$s</b> aðgang að gögnum um hreyfingu í: <b>%2$s</b>?" "Viltu leyfa <b>%1$s</b> að taka myndir og myndskeið?" + "Leyfa <b>%1$s</b> að taka myndir og taka upp vídeó í: <b>%2$s</b>?" "Forritið mun aðeins geta tekið myndir og tekið upp myndskeið þegar þú ert að nota forritið" "Viltu leyfa <b>%1$s</b> að taka myndir og myndskeið?" + "Leyfa <b>%1$s</b> að taka myndir og taka upp vídeó í: <b>%2$s</b>?" "Þetta forrit gæti viljað taka myndir og taka upp myndskeið hvenær sem er, jafnvel þegar þú ert ekki að nota forritið. ""Þú getur leyft það í stillingum." "Viltu breyta aðgangi að myndavél fyrir <b>%1$s</b>?" + "Breyta myndavélaraðgangi fyrir <b>%1$s</b> í: <b>%2$s</b>?" "Þetta forrit vill taka myndir og taka upp myndskeið hvenær sem er, jafnvel þegar þú ert ekki að nota forritið. ""Þú getur leyft það í stillingum." "Viltu veita <b>%1$s</b> aðgang að símtalaskrám símans?" + "Veita <b>%1$s</b> aðgang að símtalaskránum þínum í: <b>%2$s</b>?" "Viltu leyfa <b>%1$s</b> að hringja og stjórna símtölum?" + "Leyfa <b>%1$s</b> að hringja og stjórna símtölum í: <b>%2$s</b>?" "Viltu veita <b>%1$s</b> aðgang að skynjaragögnum um lífsmörk þín?" + "Veita <b>%1$s</b> aðgang að skynjaragögnum um lífsmörk þín í: <b>%2$s</b>?" "Þetta forrit vill fá stöðugan aðgang að skynjaragögnum um lífsmörk þín, líka þegar þú ert ekki að nota forritið. Ef þú vilt gera þessa breytingu skaltu ""opna stillingar." "Viltu veita <b>%1$s</b> aðgang að skynjaragögnum um lífsmörk þín?" + "Veita <b>%1$s</b> aðgang að skynjaragögnum um lífsmörk þín í: <b>%2$s</b>?" "Til að veita þessu forriti samfelldan aðgang að gögnum líkamsskynjara skaltu ""opna stillingarnar." "Veita <b>%1$s</b> áfram aðgang að gögnum líkamsskynjara á meðan forritið er í notkun?" + "Veita <b>%1$s</b> áfram aðgang að líkamsskynjaragögnum á meðan forritið er í notkun í: <b>%2$s</b>?" "Leyfa <b>%1$s</b> að senda þér tilkynningar?" + "Leyfa <b>%1$s</b> að senda þér tilkynningar í: <b>%2$s</b>?" "Stýrðar heimildir" "%1$s er með staðsetningaraðgang" "Fyrirtækið þitt veitir %1$s aðgang að staðsetningu þinni" diff --git a/PermissionController/res/values-it/strings.xml b/PermissionController/res/values-it/strings.xml index 4d653a87448e4befb37cff0659e3140ea8d9dfef..27a1ec703a0ef8fa621ec1595a3e0c2c4e06bbb3 100644 --- a/PermissionController/res/values-it/strings.xml +++ b/PermissionController/res/values-it/strings.xml @@ -34,6 +34,7 @@ "Altre info" "Consenti tutto" "Consenti sempre tutto" + "Consenti accesso limitato" "Seleziona foto e video" "Seleziona più messaggi" "Non selezionare altro" @@ -60,6 +61,7 @@ "App" "Autorizzazioni app" "App inutilizzate" + "Modifica le foto selezionate per questa app" "Nessuna app inutilizzata" "0 app inutilizzate" "Decisioni recenti per le autorizzazioni" @@ -455,48 +457,75 @@ "Mostra il rilevamento dell\'attivazione dell\'assistente" "Mostra l\'icona nella barra di stato quando viene usato il microfono per attivare l\'assistente vocale" "Consentire all\'app <b>%1$s</b> di accedere alle foto e ai contenuti multimediali sul tuo dispositivo?" + "Consentire all\'app <b>%1$s</b> di accedere a foto e contenuti multimediali sul tuo <b>%2$s</b>?" "Consentire all\'app <b>%1$s</b> di accedere ai tuoi contatti?" + "Consentire all\'app <b>%1$s</b> di accedere ai contatti sul tuo <b>%2$s</b>?" "Consentire all\'app <b>%1$s</b> di accedere alla posizione di questo dispositivo?" + "Consentire all\'app <b>%1$s</b> di accedere alla posizione del tuo <b>%2$s’s</b>?" "L\'app avrà accesso alla posizione soltanto quando la usi" "Consentire all\'app <b>%1$s</b> di accedere alla posizione di questo dispositivo?" + "Consentire all\'app <b>%1$s</b> di accedere alla posizione del tuo <b>%2$s</b>?" "Questa app potrebbe voler accedere sempre alla tua posizione, anche quando non la usi. ""Consenti l\'accesso nelle impostazioni""." "Vuoi cambiare l\'accesso alla posizione per l\'app <b>%1$s</b>?" + "Cambiare l\'accesso alla posizione per l\'app <b>%1$s</b> sul tuo <b>%2$s</b>?" "Questa app vorrebbe accedere sempre alla tua posizione, anche quando non la usi. ""Consenti l\'accesso nelle impostazioni""." "Consentire a <b>%1$s</b> di trovare e connettersi ai dispositivi vicini, e di stabilirne la posizione relativa?" + "Consentire a <b>%1$s</b> di connettersi a dispositivi vicini e stabilirne la posizione relativa su <b>%2$s</b>?" "Consentire a <b>%1$s</b> di trovare e connettersi ai dispositivi vicini, e di stabilirne la posizione relativa? ""Consenti nelle impostazioni." "Modificare l\'accesso alla posizione di <b>%1$s</b> da approssimativa a esatta?" + "Modificare l\'accesso alla posizione dell\'app <b>%1$s</b> sul tuo <b>%2$s</b> da approssimativa a esatta?" "Consentire a <b>%1$s</b> di accedere alla posizione approssimativa di questo dispositivo?" + "Consentire all\'app <b>%1$s</b> di accedere alla posizione approssimativa del tuo <b>%2$s</b>’?" "Esatta" "Approssimativa" "Consentire all\'app <b>%1$s</b> di accedere al tuo calendario?" + "Consentire all\'app <b>%1$s</b> di accedere al tuo calendario sul tuo <b>%2$s</b>?" "Consentire all\'app <b>%1$s</b> di inviare e visualizzare SMS?" + "Consentire all\'app <b>%1$s</b> di inviare e visualizzare SMS sul tuo <b>%2$s</b>?" "Consentire all\'app <b>%1$s</b> di accedere a foto, contenuti multimediali e file memorizzati sul dispositivo?" + "Consentire all\'app <b>%1$s</b> di accedere a foto, contenuti multimediali e file sul tuo <b>%2$s</b>?" "Consentire all\'app <b>%1$s</b> di accedere a <b>foto, video, musica e audio</b> sul dispositivo?" "Consentire all\'app <b>%1$s</b> di accedere a <b>foto, video, musica, audio e altri file</b> sul dispositivo?" "Consentire all\'app <b>%1$s</b> di accedere a musica e audio sul dispositivo?" + "Consentire all\'app <b>%1$s</b> di accedere a musica e audio sul tuo <b>%2$s</b>?" "Consentire all\'app <b>%1$s</b> di accedere a foto e video sul dispositivo?" + "Consentire all\'app <b>%1$s</b> di accedere a foto e video sul tuo <b>%2$s</b>?" "Consentire all\'app <b>%1$s</b> di accedere ad altri video e foto sul dispositivo?" + "Consentire all\'app <b>%1$s</b> di accedere ad altri video e foto sul tuo <b>%2$s</b>?" "Consentire all\'app <b>%1$s</b> di registrare audio?" + "Consentire all\'app <b>%1$s</b> di registrare audio sul tuo <b>%2$s</b>?" "L\'app potrà registrare audio soltanto quando la usi" "Vuoi consentire all\'app <b>%1$s</b> di registrare audio?" + "Consentire all\'app <b>%1$s</b> di registrare audio sul tuo <b>%2$s</b>?" "Questa app potrebbe voler registrare sempre audio, anche quando non la usi. ""Consenti l\'accesso nelle impostazioni." "Vuoi cambiare l\'accesso al microfono per l\'app <b>%1$s</b>?" + "Cambiare l\'accesso al microfono per l\'app <b>%1$s</b> sul tuo <b>%2$s</b>?" "Questa app vorrebbe registrare sempre audio, anche quando non la usi. ""Consenti l\'accesso nelle impostazioni." "Consentire a <b>%1$s</b> di accedere alla tua attività fisica?" + "Consentire all\'app <b>%1$s</b> di accedere alla tua attività fisica sul tuo <b>%2$s</b>?" "Consentire all\'app <b>%1$s</b> di scattare foto e registrare video?" + "Consentire all\'app <b>%1$s</b> di scattare foto e registrare video sul tuo <b>%2$s</b>?" "L\'app potrà scattare foto e registrare video soltanto quando la usi" "Vuoi consentire all\'app <b>%1$s</b> di scattare foto e registrare video?" + "Consentire all\'app <b>%1$s</b> di scattare foto e registrare video sul tuo <b>%2$s</b>?" "Questa app potrebbe voler scattare foto e registrare video sempre, anche quando non la usi. ""Consenti l\'accesso nelle impostazioni." "Vuoi cambiare l\'accesso alla fotocamera per l\'app <b>%1$s</b>?" + "Cambiare l\'accesso alla fotocamera per l\'app <b>%1$s</b> sul tuo <b>%2$s</b>?" "Questa app vorrebbe scattare foto e registrare video sempre, anche quando non la usi. ""Consenti l\'accesso nelle impostazioni." "Consentire all\'app <b>%1$s</b> di accedere ai registri chiamate del tuo telefono?" + "Consentire all\'app <b>%1$s</b> di accedere ai registri chiamate dello smartphone sul tuo <b>%2$s</b>?" "Consentire all\'app <b>%1$s</b> di effettuare e gestire telefonate?" + "Consentire all\'app <b>%1$s</b> di effettuare e gestire telefonate sul tuo <b>%2$s</b>?" "Consentire a <b>%1$s</b> di accedere ai dati dei sensori relativi ai parametri vitali?" + "Consentire a <b>%1$s</b> di accedere ai dati dei sensori sui parametri vitali del tuo <b>%2$s</b>?" "Questa app vuole accedere sempre ai dati dei sensori relativi ai tuoi parametri vitali, anche quando non la usi. Per apportare questa modifica, ""vai alle impostazioni." "Consentire all\'app <b>%1$s</b> di accedere ai dati dei sensori relativi ai parametri vitali?" + "Consentire a <b>%1$s</b> di accedere ai dati dei sensori sui parametri vitali del tuo <b>%2$s</b>?" "Per consentire a questa app di accedere sempre ai dati dei sensori del corpo, anche quando non la usi, ""vai alle impostazioni""." "Continuare a consentire a <b>%1$s</b> di accedere ai dati dei sensori del corpo mentre l\'app è in uso?" + "Consentire a <b>%1$s</b> ad accedere ai dati dei sensori del corpo mentre è in uso sul tuo <b>%2$s</b>?" "Consentire all\'app <b>%1$s</b> di inviarti notifiche?" + "Consentire all\'app <b>%1$s</b> di inviarti notifiche sul tuo <b>%2$s</b>?" "Autorizzazioni controllate" "L\'app %1$s ha accesso alla posizione" "La tua organizzazione consente all\'app %1$s di accedere alla tua posizione" diff --git a/PermissionController/res/values-iw/strings.xml b/PermissionController/res/values-iw/strings.xml index f261a0552273bc542ea6da54075bf02e843b182c..3ab567cb31b20e002e2d08ddb358b48ad531fbaa 100644 --- a/PermissionController/res/values-iw/strings.xml +++ b/PermissionController/res/values-iw/strings.xml @@ -34,6 +34,7 @@ "מידע נוסף" "אישור של הכול" "אישור של הכול תמיד" + "הרשאה לגישה מוגבלת" "בחירת תמונות וסרטונים" "בחירת תמונות נוספות" "לא לבחור עוד" @@ -60,6 +61,7 @@ "אפליקציות" "הרשאות לאפליקציות" "אפליקציות שמזמן לא השתמשת בהן" + "עריכת הרשימה של התמונות שנבחרו לאפליקציה הזו" "אין אפליקציות שאינן בשימוש" "אין אפליקציות שאינן בשימוש" "ההחלטות האחרונות לגבי הרשאות" @@ -455,48 +457,75 @@ "הצגת הזיהוי של הפעלת האסיסטנט" "הצגת הסמל בשורת הסטטוס כשהמיקרופון בשימוש, לצורך הפעלת האסיסטנט" "‏לתת לאפליקציה <b>%1$s</b> גישה לתמונות ולמדיה במכשיר שלך?" + "‏לתת לאפליקציה <b>%1$s</b> הרשאת גישה לתמונות ולמדיה במכשיר <b>%2$s</b>?" "‏לתת לאפליקציה <b>%1$s</b> הרשאת גישה לאנשי הקשר שלך?" + "‏לתת לאפליקציה <b>%1$s</b> הרשאת גישה לאנשי הקשר במכשיר <b>%2$s</b>?" "‏לתת לאפליקציה <b>%1$s</b> הרשאת גישה למיקום המכשיר?" + "‏לתת לאפליקציה <b>%1$s</b> הרשאת גישה למיקום של מכשיר <b>%2$s</b>?" "לאפליקציה תהיה גישה אל נתוני המיקום רק בזמן השימוש בה" "‏לתת לאפליקציה <b>%1$s</b> הרשאת גישה למיקום המכשיר?" + "‏לתת לאפליקציה <b>%1$s</b> הרשאת גישה למיקום של מכשיר <b>%2$s</b>?" "ייתכן שהאפליקציה הזו תרצה לקבל גישה לנתוני המיקום שלך כל הזמן, גם כשהיא לא בשימוש. ""ניתן לאשר זאת בהגדרות." "‏לשנות את הרשאת הגישה למיקום של <b>%1$s</b>?" + "‏לשנות את הרשאת הגישה של האפליקציה <b>%1$s</b> למיקום במכשיר <b>%2$s</b>?" "האפליקציה הזו רוצה לקבל גישה לנתוני המיקום שלך כל הזמן, גם כשהיא לא בשימוש. ""ניתן לאשר זאת בהגדרות." "‏לאשר לאפליקציה <b>%1$s</b> לאתר מכשירים קרובים, להתחבר אליהם ולזהות את מיקומם היחסי?" + "‏לתת לאפליקציה <b>%1$s</b> לאתר מכשירים קרובים, להתחבר אליהם ולזהות את מיקומם היחסי במכשיר <b>%2$s</b>?" "‏לאשר לאפליקציה <b>%1$s</b> לאתר מכשירים קרובים, להתחבר אליהם ולזהות את מיקומם היחסי? ""יש לתת הרשאה בהגדרות" "לשנות את הרשאת הגישה של <b>%1$s</b> ממיקום משוער למיקום מדויק?" + "‏לשנות את הרשאת הגישה של האפליקציה <b>%1$s</b> למיקום במכשיר <b>%2$s‏</b> מ\'מיקום משוער\' ל\'מיקום מדויק\'?" "‏לתת לאפליקציה <b>%1$s</b> הרשאת גישה למיקום המשוער של המכשיר?" + "‏לתת לאפליקציה <b>%1$s</b> הרשאת גישה למיקום המשוער של מכשיר <b>%2$s</b>’s?" "מדויק" "משוער" "‏לתת לאפליקציה <b>%1$s</b> הרשאת גישה ליומן?" + "‏לתת לאפליקציה <b>%1$s</b> הרשאת גישה ליומן במכשיר <b>%2$s‏</b>?" "‏לתת לאפליקציה <b>%1$s</b> הרשאה לשלוח הודעות SMS ולהציג אותן?" + "‏לתת לאפליקציה <b>%1$s</b> הרשאה לשלוח הודעות SMS ולראות אותן במכשיר <b>%2$s</b>?" "‏לתת לאפליקציה <b>%1$s</b> הרשאת גישה לתמונות, למדיה ולקבצים במכשיר?" + "‏לתת לאפליקציה <b>%1$s</b> הרשאת גישה לתמונות, למדיה ולקבצים במכשיר <b>%2$s</b>?" "‏לתת לאפליקציה ‎<b>%1$s</b>‎‏ הרשאת גישה ‎<b>‎‏לתמונות, לסרטונים, למוזיקה ולאודיו‎</b>‎‏ במכשיר?" "‏לתת לאפליקציה ‎<b>%1$s</b>‎‏ הרשאת גישה ‎<b>‎‏לתמונות, לסרטונים, למוזיקה, לאודיו ולקבצים אחרים‎</b>‎‏ במכשיר?" "‏לתת לאפליקציה ‎<b>%1$s</b>‎‏ הרשאת גישה למוזיקה ולקובצי אודיו במכשיר?" + "‏לתת לאפליקציה <b>%1$s</b> הרשאת גישה למוזיקה ולאודיו במכשיר <b>%2$s</b>?" "‏לתת לאפליקציה ‎<b>%1$s</b>‎‏ הרשאת גישה לתמונות ולסרטונים במכשיר?" + "‏לתת לאפליקציה <b>%1$s</b> הרשאת גישה לתמונות ולסרטונים במכשיר <b>%2$s</b>?" "‏לתת לאפליקציה ‎<b>%1$s</b>‎‏ הרשאת גישה לתמונות ולסרטונים נוספים במכשיר?" + "‏לתת לאפליקציה <b>%1$s</b> הרשאת גישה לתמונות ולסרטונים נוספים במכשיר <b>%2$s</b>?" "‏לאשר לאפליקציה <b>%1$s</b> להקליט אודיו?" + "‏לתת לאפליקציה <b>%1$s</b> הרשאה להקליט אודיו במכשיר <b>%2$s</b>?" "האפליקציה תוכל להקליט אודיו רק כאשר היא בשימוש" "‏לתת לאפליקציה <b>%1$s</b> הרשאה להקליט אודיו?" + "‏לתת לאפליקציה <b>%1$s</b> הרשאה להקליט אודיו במכשיר <b>%2$s</b>?" "ייתכן שהאפליקציה הזו תרצה להקליט אודיו כל הזמן, גם כשהיא לא בשימוש. ""ניתן לאשר זאת בהגדרות." "‏לשנות את הרשאת הגישה אל המיקרופון עבור <b>%1$s</b>?" + "‏לשנות את הרשאת הגישה של האפליקציה <b>%1$s</b> למיקרופון במכשיר <b>%2$s</b>?" "האפליקציה הזו רוצה להקליט אודיו כל הזמן, גם כשהיא לא בשימוש. ""ניתן לאשר זאת בהגדרות." "‏האם לאפשר לאפליקציה <b>%1$s</b> גישה לפעילות הגופנית שלך?" + "‏לתת לאפליקציה <b>%1$s</b> הרשאת גישה לנתונים של הפעילות הגופנית במכשיר <b>%2$s</b>?" "‏לאשר לאפליקציה <b>%1$s</b> לצלם תמונות וסרטונים?" + "‏לתת לאפליקציה <b>%1$s</b> הרשאה לצלם תמונות וסרטונים במכשיר <b>%2$s</b>?" "האפליקציה תוכל לצלם תמונות וסרטונים רק כאשר היא בשימוש" "‏לתת לאפליקציה <b>%1$s</b> הרשאה לצלם תמונות וסרטונים?" + "‏לתת לאפליקציה <b>%1$s</b> הרשאה לצלם תמונות וסרטונים במכשיר <b>%2$s</b>?" "ייתכן שהאפליקציה הזו תרצה לצלם תמונות וסרטונים כל הזמן, גם כשהיא לא בשימוש. ""ניתן לאשר זאת בהגדרות." "‏לשנות את הרשאת הגישה למצלמה של <b>%1$s</b>?" + "‏לשנות את הרשאת הגישה למצלמה של האפליקציה <b>%1$s</b> במכשיר <b>%2$s</b>?" "האפליקציה זו רוצה לצלם תמונות ולהקליט סרטונים כל הזמן, גם כשהיא לא בשימוש. ""ניתן לאשר זאת בהגדרות." "‏לתת לאפליקציה <b>%1$s</b> הרשאת גישה ליומני השיחות של הטלפון?" + "‏לתת לאפליקציה <b>%1$s</b> הרשאת גישה ליומני השיחות של הטלפון במכשיר <b>%2$s</b>?" "‏לתת לאפליקציה <b>%1$s</b> הרשאה לבצע ולנהל שיחות טלפון?" + "‏לתת לאפליקציה <b>%1$s</b> הרשאה לבצע התקשרות ולנהל את שיחות הטלפון במכשיר <b>%2$s</b>?" "‏לתת לאפליקציה <b>%1$s</b> הרשאת גישה לנתוני חיישנים העוקבים אחר הסימנים החיוניים שלך?" + "‏לתת לאפליקציה <b>%1$s</b> הרשאת גישה לנתוני החיישנים שמודדים את הסימנים החיוניים במכשיר <b>%2$s</b>?" "האפליקציה הזו מבקשת הרשאת גישה לנתוני החיישנים שמודדים את הסימנים החיוניים שלך כל הזמן, גם כשלא נעשה בה שימוש. כדי לשנות את ההגדרה הזו, ""צריך לעבור להגדרות""." "‏להעניק לאפליקציה <b‏/>‏%1$s‏<b> הרשאת גישה לנתוני החיישנים שמודדים את הסימנים החיוניים שלך?" + "‏לתת לאפליקציה <b>%1$s</b> הרשאת גישה לנתוני החיישנים שמודדים את הסימנים החיוניים במכשיר <b>%2$s</b>?" "כדי לאפשר לאפליקציה הזו לגשת לנתונים של החיישנים הגופניים כל הזמן, גם כשהיא לא בשימוש, ""צריך להיכנס להגדרות." "‏להמשיך לאפשר לאפליקציה <b>%1$s</b> לגשת לנתונים של חיישני גוף כשהיא נמצאת בשימוש?" + "‏להמשיך לאפשר לאפליקציה <b>%1$s</b> לגשת לנתונים של חיישנים גופניים במכשיר <b>%2$s</b> כשהיא בשימוש?" "‏לתת לאפליקציה <b>%1$s</b> הרשאה לשלוח לך התראות?" + "‏לתת לאפליקציה <b>%1$s</b> הרשאה לשלוח לך התראות במכשיר <b>%2$s</b>?" "הרשאות בבקרה" "לאפליקציה %1$s יש הרשאת גישה למיקום" "הארגון שלך מאפשר לאפליקציה %1$s לגשת למיקום שלך" diff --git a/PermissionController/res/values-ja/strings.xml b/PermissionController/res/values-ja/strings.xml index 06ee27a95cdefe1657891bc4ab265dda1d21bd84..b861cbf0df8ac9eecf43dcc8b4835748d910ee12 100644 --- a/PermissionController/res/values-ja/strings.xml +++ b/PermissionController/res/values-ja/strings.xml @@ -34,6 +34,7 @@ "詳細" "すべて許可" "常にすべて許可" + "アクセス制限を許可する" "写真と動画を選択" "さらに選択" "他を選択しない" @@ -60,6 +61,7 @@ "アプリ" "アプリの権限" "使用されていないアプリ" + "このアプリがアクセスできる写真を変更します" "使用されていないアプリはありません" "使用していないアプリ: 0 個" "最近の権限の許可 / 拒否" @@ -455,48 +457,75 @@ "アシスタントのトリガー検出を表示" "マイクを使って音声アシスタントを有効にする場合にステータスバーにアイコンを表示する" "デバイス内の写真やメディアへのアクセスを「<b>%1$s</b>」に許可しますか?" + "<b>%2$s</b> 内の写真とメディアへのアクセスを <b>%1$s</b> に許可しますか?" "連絡先へのアクセスを「<b>%1$s</b>」に許可しますか?" + "<b>%2$s</b> 内の連絡先へのアクセスを <b>%1$s</b> に許可しますか?" "このデバイスの位置情報へのアクセスを「<b>%1$s</b>」に許可しますか?" + "<b>%2$s</b> の位置情報へのアクセスを <b>%1$s</b> に許可しますか?" "このアプリは、ユーザーがアプリを使用している間のみ位置情報にアクセスできます" "このデバイスの位置情報へのアクセスを「<b>%1$s</b>」に許可しますか?" + "<b>%2$s</b> の位置情報へのアクセスを <b>%1$s</b> に許可しますか?" "このアプリは、未使用時も含め、常に位置情報にアクセスする可能性があります。""[設定] で許可してください。" "「<b>%1$s</b>」に対する位置情報へのアクセス許可を変更しますか?" + "<b>%2$s</b> の位置情報に対する <b>%1$s</b> のアクセス権を変更しますか?" "このアプリは、未使用時も含め、常に位置情報へのアクセスを試みます。""[設定] で許可してください。" "付近のデバイスの検出、接続、相対位置の特定を <b>%1$s</b> に許可しますか?" + "<b>%2$s</b> の <b>%1$s</b> に、付近のデバイスの検出、接続、相対位置の特定を許可しますか?" "付近のデバイスの検出、接続、相対位置の特定を <b>%1$s</b> に許可しますか?""設定で許可してください。" "<b>%1$s</b> の位置情報へのアクセスを「おおよそ」から「正確」に変更しますか?" + "<b>%2$s</b> での <b><b>%1$s</b></b> の位置情報へのアクセス権を「おおよそ」から「正確」に変更しますか?" "このデバイスのおおよその位置情報へのアクセスを <b>%1$s</b> に許可しますか?" + "<b>%2$s</b> のおおよその位置情報へのアクセスを <b>%1$s</b> に許可しますか?" "正確" "おおよそ" "カレンダーへのアクセスを「<b>%1$s</b>」に許可しますか?" + "<b>%2$s</b> 内のカレンダーへのアクセスを <b>%1$s</b> に許可しますか?" "SMS メッセージの送信と表示を「<b>%1$s</b>」に許可しますか?" + "<b>%2$s</b> での SMS メッセージの送信と表示を <b>%1$s</b> に許可しますか?" "デバイス内の写真、メディア、ファイルへのアクセスを「<b>%1$s</b>」に許可しますか?" + "<b>%2$s</b> 内の写真、メディア、ファイルへのアクセスを <b>%1$s</b> に許可しますか?" "このデバイス内の<b>写真、動画、音楽、音声</b>へのアクセスを <b>%1$s</b> に許可しますか?" "このデバイス内の<b>写真、動画、音楽、音声など</b>へのアクセスを <b>%1$s</b> に許可しますか?" "このデバイス内の音楽と音声へのアクセスを <b>%1$s</b> に許可しますか?" + "<b>%2$s</b> 内の音楽と音声へのアクセスを <b>%1$s</b> に許可しますか?" "このデバイス内の写真と動画へのアクセスを <b>%1$s</b> に許可しますか?" + "<b>%2$s</b> 内の写真と動画へのアクセスを <b>%1$s</b> に許可しますか?" "このデバイス内の他の写真や動画へのアクセスを <b>%1$s</b> に許可しますか?" + "<b>%2$s</b> 内の他の写真や動画へのアクセスを <b>%1$s</b> に許可しますか?" "音声の録音を「<b>%1$s</b>」に許可しますか?" + "<b>%2$s</b> での音声の録音を <b>%1$s</b> に許可しますか?" "アプリは、ユーザーがアプリを使用している場合のみ音声を録音できます" "音声の録音を <b>%1$s</b> に許可しますか?" + "<b>%2$s</b> での音声の録音を <b>%1$s</b> に許可しますか?" "このアプリは、いつでも(ユーザーがアプリを使用していない場合でも)音声を録音する可能性があります。""[設定] で許可してください。" "<b>%1$s</b> に対するマイクへのアクセス許可を変更しますか?" + "<b>%2$s</b> のマイクに対する <b>%1$s</b> のアクセス権を変更しますか?" "このアプリは、いつでも(ユーザーがアプリを使用していない場合でも)音声を録音できる権限を求めています。""[設定] で許可してください。" "身体活動データへのアクセスを「<b>%1$s</b>」に許可しますか?" + "<b>%2$s</b> 内の身体活動データへのアクセスを <b>%1$s</b> に許可しますか?" "写真と動画の撮影を「<b>%1$s</b>」に許可しますか?" + "<b>%2$s</b> での写真と動画の撮影を <b>%1$s</b> に許可しますか?" "アプリは、ユーザーがアプリを使用している場合のみ写真や動画を撮影できます" "写真と動画の撮影を <b>%1$s</b> に許可しますか?" + "<b>%2$s</b> での写真と動画の撮影を <b>%1$s</b> に許可しますか?" "このアプリは、いつでも(ユーザーがアプリを使用していない場合でも)写真や動画を撮影する可能性があります。""[設定] で許可してください。" "<b>%1$s</b> に対するカメラへのアクセス許可を変更しますか?" + "<b>%2$s</b> のカメラに対する <b>%1$s</b> のアクセス権を変更しますか?" "このアプリは、いつでも(ユーザーがアプリを使用していない場合でも)写真や動画を撮影できる権限を求めています。""[設定] で許可してください。" "通話履歴へのアクセスを「<b>%1$s</b>」に許可しますか?" + "<b>%2$s</b> 内の通話履歴へのアクセスを <b>%1$s</b> に許可しますか?" "電話の発信と管理を「<b>%1$s</b>」に許可しますか?" + "<b>%2$s</b> での電話の発信と管理を <b>%1$s</b> に許可しますか?" "バイタルサインに関するセンサーデータへのアクセスを「<b>%1$s</b>」に許可しますか?" + "<b>%2$s</b> 内のバイタルサインに関するセンサーデータへのアクセスを <b>%1$s</b> に許可しますか?" "このアプリは、未使用時も含め、常にバイタルサインに関するセンサーデータへのアクセスを試みます。これを変更するには、""設定に移動""してください。" "バイタルサインに関するセンサーデータへのアクセスを <b>%1$s</b> に許可しますか?" + "<b>%2$s</b> 内のバイタルサインに関するセンサーデータへのアクセスを <b>%1$s</b> に許可しますか?" "アプリの未使用時も、常にボディセンサー データにアクセスすることをこのアプリに許可するには、""設定に移動""してください。" "ボディセンサー データへのアクセスを、引き続きアプリの使用時のみ <b>%1$s</b> に許可しますか?" + "<b>%2$s</b> 内のボディセンサー データへのアクセスを、引き続きアプリの使用時のみ <b>%1$s</b> に許可しますか?" "通知の送信を <b>%1$s</b> に許可しますか?" + "<b>%2$s</b> での通知の送信を <b>%1$s</b> に許可しますか?" "権限は管理されています" "%1$s は位置情報にアクセスできます" "%1$s が位置情報にアクセスすることを組織が許可します" diff --git a/PermissionController/res/values-ka/strings.xml b/PermissionController/res/values-ka/strings.xml index 15f434a3384b70cdb5f1671d413f091064649960..b8bc6fd957dfce429daab08f6d0c8f48e99484b1 100644 --- a/PermissionController/res/values-ka/strings.xml +++ b/PermissionController/res/values-ka/strings.xml @@ -34,6 +34,7 @@ "მეტი ინფორმაცია" "ყველას დაშვება" "ყოველთვის ყველას დაშვება" + "შეზღუდული წვდომის დაშვება" "ფოტოებისა და ვიდეოების არჩევა" "მეტის არჩევა" "მეტის აღარ არჩევა" @@ -60,6 +61,7 @@ "აპები" "აპის ნებართვები" "გამოუყენებელი აპები" + "დაარედაქტირეთ არჩეული ფოტოები ამ აპისთვის" "გამოუყენებელი აპები არ არის" "0 გამოუყენებელი აპი" "ნებართვის შეს. უახ. გადაწყვეტ." @@ -455,48 +457,75 @@ "ასისტენტის გაშვების ხატულის ჩვენება" "მიკროფონის მეშვეობით ხმოვანი ასისტენტის გააქტიურებისას სტატუსის ზოლში ხატულის ჩვენება" "გსურთ, მიანიჭოთ <b>%1$s</b>-ს თქვენს მოწყობილობაზე არსებულ ფოტოებსა და მედია-კონტენტზე წვდომის ნებართვა?" + "ნებას დართავთ <b>%1$s</b> აპს, ჰქონდეს წვდომა ფოტოებსა და მედიაზე თქვენს <b>%2$s</b>-ზე?" "გსურთ, მიანიჭოთ <b>%1$s-ს</b> თქვენს კონტაქტებზე წვდომის ნებართვა?" + "ნებას დართავთ <b>%1$s</b> აპს, ჰქონდეს წვდომა თქვენს კონტაქტებზე თქვენს <b>%2$s</b>-ზე?" "გსურთ, მიანიჭოთ <b>%1$s-ს</b> ამ მოწყობილობის მდებარეობაზე წვდომის ნებართვა?" + "ნებას დართავთ <b>%1$s</b> აპს, ჰქონდეს წვდომა თქვენი <b>%2$s-ის</b> მდებარეობაზე?" "ამ აპს მდებარეობაზე წვდომა მხოლოდ მაშინ ექნება, როცა თქვენ მას გამოიყენებთ" "გსურთ, მიანიჭოთ <b>%1$s-ს</b> ამ მოწყობილობის მდებარეობაზე წვდომის ნებართვა?" + "ნებას დართავთ <b>%1$s</b> აპს, ჰქონდეს წვდომა თქვენი <b>%2$s-ის მდებარეობაზე?" "აპი ითხოვს თქვენს მდებარეობაზე წვდომას ნებისმიერ დროს, მაშინაც კი, როცა მას არ იყენებთ. ""დაუშვით პარამეტრებიდან." "გსურთ <b>%1$s-ისთვის</b> მდებარეობაზე წვდომის შეცვლა?" + "შეცვლით მდებარეობაზე წვდომას <b>%1$s</b> აპისთვის თქვენს <b>%2$s</b>-ზე?" "აპი ითხოვს თქვენს მდებარეობაზე წვდომას ნებისმიერ დროს, მაშინაც კი, როცა მას არ იყენებთ. ""დაუშვით პარამეტრებიდან." "მიეცეს საშუალება <b>%1$s</b>-ს იპოვოს ახლომახლო მოწყობილობები, დაუკავშირდეს მათ და დაადგინოს პოზიცია მათ მიმართ?" + "ნებას დართავთ <b>%1$s</b> აპს, იპოვოს, დაუკავშირდეს და დაადგინოს ახლომახლო მოწყობილობების შედარებითი პოზიცია თქვენს <b>%2$s</b>-ზე?" "მიეცეს საშუალება <b>%1$s</b>-ს იპოვოს ახლომახლო მოწყობილობები, დაუკავშირდეს მათ და დაადგინოს პოზიცია მათ მიმართ? ""დაუშვით პარამეტრებიდან." "შეიცვალოს <b>%1$s</b>-ის მდებარეობაზე წვდომა მიახლოებითის მაგიერ ზუსტით?" + "შეცვლით <b>%1$s</b>-ის მდებარეობის (მიახლოებითს ზუსტით) წვდომას თქვენს <b>%2$s</b>-ზე?" "გსურთ, მიანიჭოთ <b>%1$s-ს</b> ამ მოწყობილობის მიახლოებით მდებარეობაზე წვდომის ნებართვა?" + "ნებას დართავთ <b>%1$s</b> აპს, ჰქონდეს წვდომა თქვენი <b>%2$s</b>-ის მიახლოებით მდებარეობაზე?" "ზუსტი" "მიახლოებითი" "გსურთ, მიანიჭოთ <b>%1$s-ს</b> თქვენს კალენდარზე წვდომის ნებართვა?" + "ნებას დართავთ <b>%1$s</b> აპს, ჰქონდეს წვდომა თქვენს კალენდარზე თქვენს <b>%2$s</b>-ზე?" "გსურთ, მიანიჭოთ <b>%1$s-ს</b> SMS-შეტყობინებათა გაგზავნის და ნახვის ნებართვა?" + "ნებას დართავთ <b>%1$s</b> აპს, გაგზავნოს და ნახოს SMS შეტყობინებები თქვენს <b>%2$s</b>-ზე?" "გსურთ, მიანიჭოთ <b>%1$s-ს</b> თქვენს მოწყობილობაზე არსებულ ფოტოებზე, მედია-კონტენტზე და ფაილებზე წვდომის ნებართვა?" + "ნებას დართავთ <b>%1$s</b> აპს, ჰქონდეს წვდომა ფოტოებზე, მედიასა და ფაილებზე თქვენს <b>%2$s</b>-ზე?" "მიანიჭებთ <b>%1$s</b>-ს წვდომას ამ მოწყ. <b>ფოტოებზე, ვიდეოებზე, მუსიკასა და აუდიოფაილებზე</b>?" "მიანიჭებთ <b>%1$s</b>-ის წვდომას თქვენი მოწყ. <b>ფოტოებზე, ვიდეოებზე, მუსიკაზე, აუდიო და სხვა </b>?" "მიანიჭებთ <b>%1$s</b>-ს წვდომას თქვენი მოწყობილობის მუსიკასა და აუდიოფაილებზე?" + "ნებას დართავთ <b>%1$s</b> აპს, ჰქონდეს წვდომა მუსიკასა და აუდიოზე თქვენს <b>%2$s</b>-ზე?" "მიანიჭებთ <b>%1$s</b>-ს წვდომას თქვენი მოწყობილობის ფოტოებსა და ვიდეოებზე?" + "ნებას დართავთ <b>%1$s</b> აპს, ჰქონდეს წვდომა ფოტოებსა და ვიდეოებზე თქვენს <b>%2$s</b>-ზე?" "მიენიჭოს <b>%1$s</b>-ს წვდომა თქვენი მოწყობილობის ფოტოებსა და ვიდეოებზე?" + "ნებას დართავთ <b>%1$s</b> აპს, ჰქონდეს წვდომა მეტ ფოტოსა და ვიდეოზე თქვენს <b>%2$s</b>-ზე?" "გსურთ, მიანიჭოთ <b>%1$s-ს</b> აუდიოს ჩაწერის ნებართვა?" + "ნებას დართავთ <b>%1$s</b> აპს, ჩაწეროს აუდიო თქვენს <b>%2$s</b>-ზე?" "ეს აპი აუდიოს ჩაწერას მხოლოდ მაშინ შეძლებს, როცა მას იყენებთ" "გსურთ, მიანიჭოთ <b>%1$s-ს</b> აუდიოს ჩაწერის ნებართვა?" + "ნებას დართავთ <b>%1$s</b> აპს, ჩაწეროს აუდიო თქვენს <b>%2$s</b>-ზე?" "ამ აპს შეუძლია აუდიოს ჩაწერა ნებისმიერ დროს, მაშინაც კი, როცა აპს არ იყენებთ. ""დაუშვით პარამეტრებიდან." "გსურთ <b>%1$s-ისთვის</b> მიკროფონის წვდომის შეცვლა?" + "შეცვლით მიკროფონზე წვდომას <b>%1$s</b> აპისთვის თქვენს <b>%2$s</b>-ზე?" "ეს აპი აუდიოს ჩაწერს ნებისმიერ დროს, მაშინაც კი, როცა აპს არ იყენებთ. ""Allow in settings." "გსურთ, მიანიჭოთ <b>%1$s</b>-ს თქვენს ფიზიკურ აქტივობაზე წვდომის ნებართვა?" + "ნებას დართავთ <b>%1$s</b> აპს, ჰქონდეს წვდომა თქვენს ფიზიკურ აქტივობაზე თქვენს <b>%2$s</b>-ზე?" "გსურთ, მიანიჭოთ <b>%1$s-ს</b> სურათების გადაღების და ვიდეოების ჩაწერის ნებართვა?" + "ნებას დართავთ <b>%1$s</b> აპს, გადაიღოს სურათები და ჩაწეროს ვიდეო თქვენს <b>%2$s</b>-ზე?" "ეს აპი სურათების გადაღებას და ვიდეოს ჩაწერას მხოლოდ მაშინ შეძლებს, როცა მას იყენებთ" "გსურთ, მიანიჭოთ <b>%1$s-ს</b> სურათების გადაღების და ვიდეოების ჩაწერის ნებართვა?" + "ნებას დართავთ <b>%1$s</b> აპს, გადაიღოს სურათები და ჩაწეროს ვიდეო თქვენს <b>%2$s</b>-ზე?" "ამ აპს შეუძლია სურათების გადაღება და ვიდეოს ჩაწერა ნებისმიერ დროს, მაშინაც კი, როცა აპს არ იყენებთ. ""დაუშვით პარამეტრებიდან." "გსურთ <b>%1$s-ისთვის</b> კამერის წვდომის შეცვლა?" + "შეცვლით კამერაზე წვდომას <b>%1$s</b> აპისთვის თქვენს <b>%2$s</b>-ზე?" "ეს აპი სურათების გადაიღებს და ვიდეოს ჩაწერს ნებისმიერ დროს, მაშინაც კი, როცა აპს არ იყენებთ. ""დაუშვით პარამეტრებიდან." "გსურთ, მიანიჭოთ <b>%1$s</b>-ს თქვენს ზარების ჟურნალებზე წვდომის ნებართვა?" + "ნებას დართავთ <b>%1$s</b> აპს, ჰქონდეს წვდომა თქვენი ტელ-ის ზარების ჟურნალზე <b>%2$s</b>-ზე?" "გსურთ, მიანიჭოთ <b>%1$s-ს</b> სატელეფონო ზარების განხორციელების და მართვის ნებართვა?" + "ნებას დართავთ <b>%1$s</b> აპს, განახორციელოს და მართოს სატელეფ. ზარები თქვენს <b>%2$s</b>-ზე?" "გსურთ, მიანიჭოთ <b>%1$s-ს</b> თქვენი სასიცოცხლო ფუნქციების შესახებ სენსორის მონაცემებზე წვდომის ნებართვა?" + "ნებას დართავთ <b>%1$s</b> აპს, ჰქონდეს წვდომა სენსორის მონაცემებზე (სასიცოცხლო მაჩვენებლები) <b>%2$s</b>-ზე?" "ეს აპი ითხოვს თქვენი სასიცოცხლო ფუნქციების შესახებ სენსორის მონაცემებზე წვდომას ნებისმიერ დროს, მაშინაც კი, როცა აპს არ იყენებთ. ამ ცვლილებისთვის ""გადადით პარამეტრებზე." "გსურთ, მიანიჭოთ <b>%1$s</b>-ს თქვენი სასიცოცხლო ფუნქციების შესახებ სენსორის მონაცემებზე წვდომის ნებართვა?" + "ნებას დართავთ <b>%1$s</b> აპს, ჰქონდეს წვდომა სენსორის მონაცემებზე (სასიცოცხლო მაჩვენებლები) <b>%2$s</b>-ზე?" "ამ აპისთვის სხეულის სენსორების მონაცემებზე მუდმივი წვდომის მისანიჭებლად (მაშინაც კი, როცა აპს არ იყენებთ), ""გადადით პარამეტრებზე." "გსურთ გამოყენებისას <b>%1$s</b>-ს მიანიჭოთ სხეულის სენსორების მონაცემებზე წვდომა?" + "ნებას დართავთ <b>%1$s</b> აპს, გამოყენებისას ჰქონდეს წვდომა სხეულის სენსორების მონაცემებზე თქვენს <b>%2$s</b>-ზე?" "მისცემთ უფლებას <b>%1$s</b>-ს, გამოგიგზავნოთ შეტყობინებები?" + "ნებას დართავთ <b>%1$s</b> აპს, გამოგიგზავნოთ შეტყობინებები თქვენს <b>%2$s</b>-ზე?" "კონტროლირებული ნებართვები" "%1$s-ს მდებარეობაზე წვდომა აქვს" "თქვენი ორგანიზაცია ნებას რთავს %1$s-ს, წვდომა ჰქონდეს თქვენ მდებარეობაზე" diff --git a/PermissionController/res/values-kk/strings.xml b/PermissionController/res/values-kk/strings.xml index 72320b1d07a47b5c10fa6b83aad7da9d87200816..b39b229c38b60dfdc461f697fc0562c9feef76ef 100644 --- a/PermissionController/res/values-kk/strings.xml +++ b/PermissionController/res/values-kk/strings.xml @@ -34,6 +34,7 @@ "Толығырақ" "Бәріне рұқсат беру" "Әрдайым бәріне рұқсат беру" + "Шектеулі рұқсат беру" "Фотосуреттер мен бейнелерді таңдау" "Тағы таңдау" "Тағы басқасын таңдамау" @@ -60,6 +61,7 @@ "Қолданбалар" "Қолданба рұқсаттары" "Пайдаланылмайтын қолданбалар" + "Осы қолданба пайдалана алатын фотосуреттер тізімін өзгертеді." "Пайдаланылмайтын қолданбалар жоқ" "0 пайдаланылмайтын қолданба бар" "Рұқсат беру әрекеттері" @@ -455,48 +457,75 @@ "Көмекшінің іске қосылғанын анықтауды көрсету" "Микрофон арқылы дауыс көмекшісін іске қосқанда, күй жолағында белгішені көрсету" "<b>%1$s</b> қолданбасына құрылғыдағы суреттерді, медиафайлдарды пайдалануға рұқсат берілсін бе?" + "<b>%1$s</b> қолданбасына <b>%2$s</b> құрылғысындағы фотосуреттер мен медианы пайдалану рұқсаты берілсін бе?" "<b>%1$s</b> қолданбасына контактілерді пайдалануға рұқсат берілсін бе?" + "<b>%1$s</b> қолданбасына <b>%2$s</b> құрылғысында контактілерді пайдалану рұқсаты берілсін бе?" "<b>%1$s</b> қолданбасына осы құрылғының локациясын пайдалануға рұқсат берілсін бе?" + "<b>%1$s</b> қолданбасына <b>%2$s’s</b> құрылғысының локациясын пайдалану рұқсаты берілсін бе?" "Қолданбаны пайдалану кезінде ғана оған геодеректеріңізді көруге рұқсат етіледі." "<b>%1$s</b> қолданбасына осы құрылғының локациясын пайдалануға рұқсат берілсін бе?" + "<b>%1$s</b> қолданбасына <b>%2$s құрылғысының локациясын пайдалану рұқсаты берілсін бе?" "Қолданбаны пайдаланбасаңыз да, ол үнемі геодеректеріңізді пайдаланғысы келуі мүмкін. ""Параметрлерден рұқсат беріңіз." "<b>%1$s</b> қолданбасына геодеректі пайдалануға рұқсат етілсін бе?" + "<b>%1$s</b> қолданбасы үшін <b>%2$s</b> құрылғысында локацияны пайдалану рұқсатын өзгерту керек пе?" "Қолданбаны пайдаланбасаңыз да, ол үнемі геодеректеріңізді пайдаланғысы келеді. ""Параметрлерден рұқсат беріңіз." "<b>%1$s</b> қолданбасына маңайдағы құрылғыларды табуға, олармен байланысуға және олардың орналасуын анықтауға рұқсат берілсін бе?" + "<b>%1$s</b> қолданбасына <b>%2$s</b> құрылғысында маңайдағы құрылғыларды табу, олармен байланысу және қатысты локациясын анықтау рұқсаты берілсін бе?" "<b>%1$s</b> қолданбасына маңайдағы құрылғыларды табуға, олармен байланысуға және олардың орналасуын анықтауға рұқсат берілсін бе? ""Параметрлерден рұқсат бере аласыз." "<b>%1$s</b> қолданбасының болжалды емес, нақты локацияны пайдалануына рұқсат беру керек пе?" + "<b>%1$s</b> қолданбасының <b>%2$s</b> құрылғысында локацияны пайдалану рұқсатын болжалдыдан нақты локацияға өзгертесіз бе?" "<b>%1$s</b> қолданбасына осы құрылғының болжалды орнын пайдалануға рұқсат берілсін бе?" + "<b>%1$s</b> қолданбасына <b>%2$s</b> құрылғысының болжалды локациясын пайдалану рұқсаты берілсін бе?" "Нақты" "Болжалды" "<b>%1$s</b> қолданбасына күнтізбеге кіруге рұқсат берілсін бе?" + "<b>%1$s</b> қолданбасына <b>%2$s</b> құрылғысында күнтізбені пайдалану рұқсаты берілсін бе?" "<b>%1$s</b> қолданбасына SMS хабарларын жіберуге және көруге рұқсат берілсін бе?" + "<b>%1$s</b> қолданбасына <b>%2$s</b> құрылғысында SMS хабарларын жіберу және көру рұқсаты берілсін бе?" "<b>%1$s</b> қолданбасына құрылғыдағы суреттерге, медиафайлдарға және басқа файлдарға кіруге рұқсат берілсін бе?" + "<b>%1$s</b> қолданбасына <b>%2$s</b> құрылғысындағы фотосуреттерді, медиа және файлдарды пайдалану рұқсаты берілсін бе?" "<b>%1$s</b> қолданбасына осы құрылғыдағы <b>фотосурет, бейне, музыка мен аудионы</b> пайдалану рұқсаты берілсін бе?" "<b>%1$s</b> қолданбасына осы құрылғыдағы <b>фотосурет, бейне, музыка, аудио мен басқа файлдарды</b> пайдалану рұқсаты берілсін бе?" "<b>%1$s</b> қолданбасына осы құрылғыдағы музыка мен аудионы пайдалану рұқсаты берілсін бе?" + "<b>%1$s</b> қолданбасына <b>%2$s</b> құрылғысындағы музыка мен аудионы пайдалану рұқсаты берілсін бе?" "<b>%1$s</b> қолданбасына осы құрылғыдағы фотосурет пен бейнені пайдалану рұқсаты берілсін бе?" + "<b>%1$s</b> қолданбасына <b>%2$s</b> құрылғысындағы фотосуреттер мен бейнелерді пайдалану рұқсаты берілсін бе?" "<b>%1$s</b> қолданбасы осы құрылғыдағы басқа фотосуреттер мен бейнелерді пайдалансын ба?" + "<b>%1$s</b> қолданбасына <b>%2$s</b> құрылғысында басқа фотосуреттер мен бейнелерді пайдалану рұқсаты берілсін бе?" "<b>%1$s</b> қолданбасына дыбыс жазуға рұқсат берілсін бе?" + "<b>%1$s</b> қолданбасына <b>%2$s</b> құрылғысында аудио жазу рұқсаты берілсін бе?" "Қолданба тек жұмыс кезінде ғана аудиомазмұн жаза алады." "<b>%1$s</b> қолданбасына аудиомазмұн жазуға рұқсат берілсін бе?" + "<b>%1$s</b> қолданбасына <b>%2$s</b> құрылғысында аудио жазу рұқсаты берілсін бе?" "Қолданбаны пайдаланбасаңыз да, ол кез келген уақытта бейнелерді жаза алады. ""Параметрлерден рұқсат беріңіз." "<b>%1$s</b> қолданбасына микрофонды пайдалануға рұқсат етілсін бе?" + "<b>%1$s</b> қолданбасы үшін <b>%2$s</b> құрылғысында микрофонды пайдалану рұқсатын өзгерту керек пе?" "Қолданбаны пайдаланбасаңыз да, ол кез келген уақытта аудиомазмұн жазғысы келеді. ""Параметрлерден рұқсат беріңіз." "<b>%1$s</b> қолданбасына қимыл-қозғалыс дерегін алуға рұқсат етілсін бе?" + "<b>%1$s</b> қолданбасына <b>%2$s</b> құрылғысында қимыл-қозғалыс деректерін пайдалану рұқсаты берілсін бе?" "<b>%1$s</b> қолданбасына суретке түсіруге және бейне жазуға рұқсат берілсін бе?" + "<b>%1$s</b> қолданбасына <b>%2$s</b> құрылғысында суретке түсіру және бейне жазу рұқсаты берілсін бе?" "Қолданба тек жұмыс кезінде ғана суретке түсіріп, бейне жаза алады." "<b>%1$s</b> қолданбасына суретке түсіруге және бейне жазуға рұқсат берілсін бе?" + "<b>%1$s</b> қолданбасына <b>%2$s</b> құрылғысында суретке түсіру және бейне жазу рұқсаты берілсін бе?" "Қолданбаны пайдаланбасаңыз да, ол кез келген уақытта суретке түсіріп, бейнелер жаза алады. ""Параметрлерден рұқсат беріңіз." "<b>%1$s</b> қолданбасына камераны пайдалануға рұқсат етілсін бе?" + "<b>%1$s</b> қолданбасы үшін <b>%2$s</b> құрылғысындағы камераны пайдалану рұқсатын өзгерту керек пе?" "Қолданбаны пайдаланбасаңыз да, ол кез келген уақытта суретке түсіріп, бейне жазғысы келеді. ""Параметрлерден рұқсат беріңіз." "<b>%1$s</b> қолданбасына телефонның қоңыраулар журналына кіруге рұқсат берілсін бе?" + "<b>%1$s</b> қолданбасына <b>%2$s</b> құрылғысында қоңырау журналдарын пайдалану рұқсаты берілсін бе?" "<b>%1$s</b> қолданбасына қоңырау шалуға және қоңырауларды басқаруға рұқсат берілсін бе?" + "<b>%1$s</b> қолданбасына <b>%2$s</b> құрылғысында қоңыраулар шалу және басқару рұқсаты берілсін бе?" "<b>%1$s</b> қолданбасына негізгі физиологиялық көрсеткіштерді көрсететін сенсорлық деректерді пайдалануға рұқсат берілсін бе?" + "<b>%1$s</b> қолданбасына <b>%2$s</b> құрылғысында тіршілік көрсеткіштеріне қатысты датчик деректерін пайдалану рұқсаты берілсін бе?" "Қолданбаны пайдаланбасаңыз да, ол әрдайым тіршілік көрсеткіштері туралы датчик дерегін пайдалануға рұқсат сұрайды. Мұны өзгерту үшін ""параметрлерге өтіңіз." "<b>%1$s</b> қолданбасына тіршілік көрсеткіштеріне қатысты датчик деректерін пайдалануға рұқсат берілсін бе?" + "<b>%1$s</b> қолданбасына <b>%2$s</b> құрылғысында тіршілік көрсеткіштеріңіз туралы датчик деректерін пайдалану рұқсаты берілсін бе?" "Бұл қолданбаға кез келген уақытта (ол пайдаланылмаған кезде де) дене датчигінен алынған деректі пайдалануға рұқсат беру үшін ""параметрлерге өтіңіз." "Жұмыс кезінде <b>%1$s</b> қолданбасы дене датчигінен алынған деректі одан әрі пайдалана берсін бе?" + "Жұмыс кезінде <b>%1$s</b> қолданбасы <b>%2$s</b> құрылғысында дене датчигінен алынған деректі одан әрі пайдалана берсін бе?" "<b>%1$s</b> қолданбасы хабарландыру жіберсін бе?" + "<b>%1$s</b> қолданбасына <b>%2$s</b> құрылғысында хабарландыру жіберу рұқсаты берілсін бе?" "Басқарылатын рұқсаттар" "%1$s қолданбасы локацияны пайдаланады" "Ұйымыңыз %1$s қолданбасына локацияңызды пайдалануға рұқсат береді." diff --git a/PermissionController/res/values-km/strings.xml b/PermissionController/res/values-km/strings.xml index a50189176e903b16e097b82cecce35f4c0cd56fd..d1b60ad11c93adf440ae29d5feee4a76809a550c 100644 --- a/PermissionController/res/values-km/strings.xml +++ b/PermissionController/res/values-km/strings.xml @@ -34,6 +34,7 @@ "ព័ត៌មាន​បន្ថែម" "អនុញ្ញាតទាំងអស់" "អនុញ្ញាតទាំងអស់ជានិច្ច" + "អនុញ្ញាតឱ្យចូលប្រើដោយមានកម្រិត" "ជ្រើសរើស​រូបថត និង​វីដេអូ" "ជ្រើសរើស​ច្រើន​ទៀត" "កុំជ្រើសរើសទៀត" @@ -60,6 +61,7 @@ "កម្មវិធី" "ការអនុញ្ញាតកម្មវិធី" "កម្មវិធី​ដែលមិន​ប្រើ" + "កែរូបថតដែលបានជ្រើសរើសសម្រាប់កម្មវិធីនេះ" "មិនមានកម្មវិធីដែលមិនបានប្រើទេ" "កម្មវិធី​ដែលមិន​ប្រើ 0" "ការសម្រេចថ្មីៗលើការអនុញ្ញាត" @@ -455,48 +457,75 @@ "បង្ហាញការ​ចាប់សញ្ញា​របស់ជំនួយការ" "បង្ហាញ​រូបតំណាង​នៅក្នុង​របារស្ថានភាព នៅពេលប្រើប្រាស់​មីក្រូហ្វូន​ ដើម្បី​បើកដំណើរការ​ជំនួយការសំឡេង" "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើ​រូបថត និង​មេឌៀ​នៅលើ​ឧបករណ៍​របស់អ្នក?" + "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើរូបថត និងមេឌៀនៅលើ <b>%2$s</b> របស់អ្នកឬ?" "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើ​ទំនាក់ទំនង​របស់អ្នក?" + "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើទំនាក់ទំនងរបស់អ្នកនៅលើ <b>%2$s</b> របស់អ្នកឬ?" "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើ​ទីតាំងរបស់​ឧបករណ៍នេះ​ដែរទេ?" + "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើទីតាំងនៃ <b>%2$s’s</b> របស់អ្នកឬ?" "កម្មវិធីនេះ​នឹងមាន​សិទ្ធិ​ចូលប្រើ​ទីតាំង នៅពេល​អ្នកកំពុង​ប្រើ​កម្មវិធីនេះ​តែ​ប៉ុណ្ណោះ" "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើ​ទីតាំងរបស់​ឧបករណ៍នេះ​ដែរទេ?" + "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើទីតាំង <b>%2$s របស់អ្នកឬ?" "កម្មវិធីនេះ​ប្រហែលជា​ចង់ចូលប្រើ​ទីតាំង​របស់អ្នក​គ្រប់ពេល ទោះបីជា​អ្នកមិនកំពុងប្រើ​កម្មវិធីនេះ​ក៏ដោយ។ ""អនុញ្ញាត​នៅក្នុងការកំណត់។" "ប្ដូរសិទ្ធិ​ចូលប្រើ​ទីតាំង​សម្រាប់ <b>%1$s</b> ដែរទេ?" + "ប្ដូរសិទ្ធិចូលប្រើទីតាំងសម្រាប់ <b>%1$s</b> នៅលើ <b>%2$s</b> របស់អ្នកឬ?" "កម្មវិធីនេះ​ចង់ចូលប្រើ​ទីតាំង​របស់អ្នក​គ្រប់ពេល ទោះបីជា​អ្នកមិនកំពុងប្រើ​កម្មវិធីនេះ​ក៏ដោយ។ ""អនុញ្ញាត​នៅក្នុងការកំណត់។" "អនុញ្ញាតឱ្យ <b>%1$s</b> ស្វែងរក ភ្ជាប់ទៅ និងកំណត់ទីតាំង​ដែលពាក់ព័ន្ធនៃ​ឧបករណ៍ដែលនៅជិតឬ?" + "អនុញ្ញាតឱ្យ <b>%1$s</b> ស្វែងរក ភ្ជាប់ទៅ និងកំណត់ទីតាំងដែលពាក់ព័ន្ធនៃឧបករណ៍នៅជិតនៅលើ <b>%2$s</b> របស់អ្នកឬ?" "អនុញ្ញាតឱ្យ <b>%1$s</b> ស្វែងរក ភ្ជាប់ទៅ និងកំណត់ទីតាំង​ដែលពាក់ព័ន្ធនៃ​ឧបករណ៍ដែលនៅជិតឬ? ""អនុញ្ញាតនៅក្នុងការកំណត់។" "ផ្លាស់ប្ដូរ​ការចូលប្រើ​ទីតាំងរបស់ <b>%1$s</b> ពីទីតាំងប្រហាក់ប្រហែល​ទៅជាក់លាក់ឬ?" + "ប្ដូរសិទ្ធិចូលប្រើទីតាំងរបស់ <b>%1$s</b> នៅលើ <b>%2$s</b> របស់អ្នកពីប្រហាក់ប្រហែលទៅជាក់លាក់ឬ?" "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើ​ទីតាំងប្រហាក់ប្រហែលរបស់​ឧបករណ៍នេះ​ឬ?" + "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើទីតាំងប្រហាក់ប្រហែលនៃ <b>%2$s</b> របស់អ្នកឬ?" "ជាក់លាក់" "ប្រហាក់ប្រហែល" "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើ​ប្រតិទិនរបស់អ្នក?" + "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើប្រតិទិនរបស់អ្នកនៅលើ <b>%2$s</b> របស់អ្នកឬ?" "អនុញ្ញាតឱ្យ <b>%1$s</b> ផ្ញើ និង​មើលសារ SMS ?" + "អនុញ្ញាតឱ្យ <b>%1$s</b> ផ្ញើ និងមើលសារ SMS នៅលើ <b>%2$s</b> របស់អ្នកឬ?" "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើ​រូបថត មេឌៀ និងឯកសារនៅលើ​ឧបករណ៍របស់អ្នក?" + "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើរូបថត មេឌៀ និងឯកសារនៅលើ <b>%2$s</b> របស់អ្នកឬ?" "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើប្រាស់<b>រូបថត វីដេអូ តន្ត្រី និងសំឡេង</b>នៅលើឧបករណ៍នេះទេ?" "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើ <b>រូបថត វីដេអូ តន្ត្រី សំឡេង និងឯកសារផ្សេងទៀត</b>នៅលើឧបករណ៍នេះទេ?" "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើប្រាស់តន្ត្រី និងសំឡេងនៅលើឧបករណ៍នេះទេ?" + "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើតន្ត្រី និងសំឡេងនៅលើ <b>%2$s</b> របស់អ្នកឬ?" "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើប្រាស់រូបថត និងវីដេអូនៅលើឧបករណ៍នេះទេ?" + "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើរូបថត និងវីដេអូនៅលើ <b>%2$s</b> របស់អ្នកឬ?" "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើប្រាស់រូបថត និងវីដេអូច្រើនទៀតនៅលើឧបករណ៍នេះឬ?" + "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើរូបថត និងវីដេអូច្រើនទៀតនៅលើ <b>%2$s</b> របស់អ្នកឬ?" "អនុញ្ញាតឱ្យ <b>%1$s</b> ថតសំឡេង?" + "អនុញ្ញាតឱ្យ <b>%1$s</b> ថតសំឡេងនៅលើ <b>%2$s</b> របស់អ្នកឬ?" "កម្មវិធីនេះនឹងអាចថតសំឡេង នៅពេលអ្នកកំពុងប្រើប្រាស់កម្មវិធីតែប៉ុណ្ណោះ" "អនុញ្ញាតឱ្យ <b>%1$s</b> ថតសំឡេងឬ?" + "អនុញ្ញាតឱ្យ <b>%1$s</b> ថតសំឡេងនៅលើ <b>%2$s</b> របស់អ្នកឬ?" "កម្មវិធីនេះអាចចង់ថតសំឡេងគ្រប់ពេល ទោះបីជានៅពេលអ្នកមិនកំពុងប្រើប្រាស់កម្មវិធីក៏ដោយ។ ""អនុញ្ញាតនៅក្នុងការកំណត់។" "ប្ដូរសិទ្ធិ​ចូលប្រើ​មីក្រូហ្វូន​សម្រាប់ <b>%1$s</b> ឬ?" + "ប្ដូរសិទ្ធិចូលប្រើមីក្រូហ្វូនសម្រាប់ <b>%1$s</b> នៅលើ <b>%2$s</b> របស់អ្នកឬ?" "កម្មវិធីនេះចង់ថតសំឡេងគ្រប់ពេល ទោះបីជានៅពេលអ្នកមិនកំពុងប្រើប្រាស់កម្មវិធីក៏ដោយ។ ""អនុញ្ញាតនៅក្នុងការកំណត់។" "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើ​សកម្មភាព​រាងកាយ​របស់អ្នក?" + "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើសកម្មភាព​រាងកាយរបស់អ្នកនៅលើ <b>%2$s</b> របស់អ្នកឬ?" "អនុញ្ញាតឱ្យ <b>%1$s</b> ថតរូប និងថត​វីដេអូ?" + "អនុញ្ញាតឱ្យ <b>%1$s</b> ថតរូបភាព និងថតវីដេអូនៅលើ <b>%2$s</b> របស់អ្នកឬ?" "កម្មវិធីនេះនឹងអាចថតរូប និងវីដេអូ នៅពេលអ្នកកំពុងប្រើប្រាស់កម្មវិធីតែប៉ុណ្ណោះ" "អនុញ្ញាតឱ្យ <b>%1$s</b> ថតរូប និងថត​វីដេអូឬ?" + "អនុញ្ញាតឱ្យ <b>%1$s</b> ថតរូបភាព និងថតវីដេអូនៅលើ <b>%2$s</b> របស់អ្នកឬ?" "កម្មវិធីនេះអាចចង់ថតរូប និងវីដេអូគ្រប់ពេល ទោះបីជានៅពេលអ្នកមិនកំពុងប្រើប្រាស់កម្មវិធីក៏ដោយ។ ""អនុញ្ញាតនៅក្នុងការកំណត់។" "ប្ដូរសិទ្ធិ​ចូលប្រើ​កាមេរ៉ាសម្រាប់ <b>%1$s</b> ឬ?" + "ប្ដូរសិទ្ធិចូលប្រើកាមេរ៉ាសម្រាប់ <b>%1$s</b> នៅលើ <b>%2$s</b> របស់អ្នកឬ?" "កម្មវិធីនេះចង់ថតរូប និងវីដេអូគ្រប់ពេល ទោះបីជានៅពេលអ្នកមិនកំពុងប្រើប្រាស់កម្មវិធីក៏ដោយ។ ""អនុញ្ញាតនៅក្នុងការកំណត់។" "អនុញ្ញាត​ឱ្យ <b>%1$s</b> ចូល​ប្រើ​កំណត់ហេតុ​ហៅទូរសព្ទ​របស់អ្នក?" + "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើកំណត់​ហេតុ​ហៅ​ទូរសព្ទរបស់អ្នកនៅលើ <b>%2$s</b> របស់អ្នកឬ?" "អនុញ្ញាតឱ្យ <b>%1$s</b> គ្រប់គ្រង និង​ធ្វើការហៅទូរសព្ទ?" + "អនុញ្ញាតឱ្យ <b>%1$s</b> គ្រប់គ្រង និងធ្វើការហៅទូរសព្ទនៅលើ <b>%2$s</b> របស់អ្នកឬ?" "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើ​ទិន្នន័យឧបករណ៍ចាប់សញ្ញាអំពីស្ថានភាពសុខភាពរបស់អ្នក?" + "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើទិន្នន័យសេនស័រអំពីសញ្ញាសរីរាង្គសំខាន់ៗរបស់អ្នកនៅលើ <b>%2$s</b> របស់អ្នកឬ?" "កម្មវិធីនេះចង់ចូលប្រើទិន្នន័យឧបករណ៍ចាប់សញ្ញាអំពីស្ថានភាពសុខភាពរបស់អ្នកគ្រប់ពេល ទោះបីជានៅពេលអ្នកមិនកំពុងប្រើកម្មវិធីនេះក៏ដោយ។ ដើម្បីធ្វើការផ្លាស់ប្ដូរនេះ សូម""ចូលទៅកាន់ការកំណត់។" "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើទិន្នន័យ​ឧបករណ៍ចាប់សញ្ញា​អំពីស្ថានភាពសុខភាព​របស់អ្នកឬ?" + "អនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើទិន្នន័យសេនស័រអំពីសញ្ញាសរីរាង្គសំខាន់ៗរបស់អ្នកនៅលើ <b>%2$s</b> របស់អ្នកឬ?" "ដើម្បីអនុញ្ញាតឱ្យកម្មវិធីនេះចូលប្រើទិន្នន័យឧបករណ៍ចាប់សញ្ញារាងកាយគ្រប់ពេល ទោះបីជានៅពេលអ្នកមិនកំពុងប្រើកម្មវិធីនេះក៏ដោយ ""សូមចូលទៅកាន់ការកំណត់។" "បន្តអនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើទិន្នន័យឧបករណ៍ចាប់សញ្ញារាងកាយ ខណៈពេលកំពុងប្រើកម្មវិធីឬ?" + "បន្តអនុញ្ញាតឱ្យ <b>%1$s</b> ចូលប្រើទិន្នន័យសេនស័ររាងកាយនៅលើ <b>%2$s</b> របស់អ្នក ពេលកំពុងប្រើកម្មវិធីឬ?" "អនុញ្ញាតឱ្យ <b>%1$s</b> ផ្ញើ​ការជូនដំណឹង​ឱ្យអ្នកឬ?" + "អនុញ្ញាតឱ្យ <b>%1$s</b> ផ្ញើការជូនដំណឹងដល់អ្នកនៅលើ <b>%2$s</b> របស់អ្នកឬ?" "ការអនុញ្ញាត​ដែលស្ថិតក្រោម​ការគ្រប់គ្រង" "%1$s មានសិទ្ធិចូលប្រើទីតាំង" "ស្ថាប័នរបស់អ្នកអនុញ្ញាតឱ្យ %1$s ចូលប្រើទីតាំងរបស់អ្នក" diff --git a/PermissionController/res/values-kn/strings.xml b/PermissionController/res/values-kn/strings.xml index 62868d4f93ddd70e3a66d911f93ed7e324d88e45..5471162646e95c756612bc096d3241adff8661f1 100644 --- a/PermissionController/res/values-kn/strings.xml +++ b/PermissionController/res/values-kn/strings.xml @@ -34,6 +34,7 @@ "ಹೆಚ್ಚಿನ ಮಾಹಿತಿ" "ಎಲ್ಲವನ್ನೂ ಅನುಮತಿಸಿ" "ಯಾವಾಗಲೂ ಎಲ್ಲವನ್ನೂ ಅನುಮತಿಸಿ" + "ಸೀಮಿತ ಆ್ಯಕ್ಸೆಸ್ ಅನ್ನು ಅನುಮತಿಸಿ" "ಫೋಟೋಗಳು ಮತ್ತು ವೀಡಿಯೊಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ" "ಇನ್ನಷ್ಟು ಆಯ್ಕೆಮಾಡಿ" "ಹೆಚ್ಚಿನ ಫೋಟೋಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಬೇಡಿ" @@ -60,6 +61,7 @@ "ಆ್ಯಪ್‌ಗಳು" "ಆ್ಯಪ್ ಅನುಮತಿಗಳು" "ಬಳಕೆಯಾಗದ ಆ್ಯಪ್‌ಗಳು" + "ಈ ಆ್ಯಪ್‌ಗಾಗಿ ಆಯ್ಕೆಮಾಡಲಾದ ಫೋಟೋಗಳನ್ನು ಎಡಿಟ್ ಮಾಡಿ" "ಯಾವುದೇ ಬಳಕೆಯಾಗದ ಆ್ಯಪ್‌ಗಳಿಲ್ಲ" "0 ಬಳಕೆಯಾಗದ ಆ್ಯಪ್‌ಗಳು" "ಇತ್ತೀಚಿನ ಅನುಮತಿ ನಿರ್ಧಾರಗಳು" @@ -455,48 +457,75 @@ "ಅಸಿಸ್ಟೆಂಟ್ ಮೈಕ್ರೋಫೋನ್ ಸಕ್ರಿಯವಾಗಿದೆ ಅಥವಾ ಇಲ್ಲವೇ ಎಂದು ತೋರಿಸಿ" "ಧ್ವನಿ ಅಸಿಸ್ಟೆಂಟ್ ಸಕ್ರಿಯಗೊಳಿಸಲು ಮೈಕ್ರೊಫೋನ್ ಬಳಸಿದಾಗ ಸ್ಥಿತಿ ಬಾರ್‌ನಲ್ಲಿ ಐಕಾನ್ ಅನ್ನು ತೋರಿಸಿ" "ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿರುವ ಫೋಟೋಗಳು ಮತ್ತು ಮೀಡಿಯಾ ಫೈಲ್‌ಗಳನ್ನು ಪ್ರವೇಶಿಸಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೇ?" + "ನಿಮ್ಮ <b>%2$s</b> ನಲ್ಲಿ ಫೋಟೋಗಳು ಮತ್ತು ಮೀಡಿಯಾವನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "ನಿಮ್ಮ ಸಂಪರ್ಕಗಳನ್ನು ಪ್ರವೇಶಿಸಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೇ?" + "ನಿಮ್ಮ <b>%2$s</b> ನಲ್ಲಿ ನಿಮ್ಮ ಸಂಪರ್ಕಗಳನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "ಈ ಸಾಧನದ ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಲು <b>%1$s</b> ಆ್ಯಪ್‌ಗೆ ಅನುಮತಿಸಬೇಕೆ?" + "ನಿಮ್ಮ <b>%2$s</b> ನ ಸ್ಥಳವನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "ನೀವು ಆ್ಯಪ್ ಅನ್ನು ಬಳಸುವಾಗ, ಆ್ಯಪ್ ಮಾತ್ರ ಸ್ಥಳಕ್ಕೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿರುತ್ತದೆ" "ಈ ಸಾಧನದ ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಲು <b>%1$s</b> ಆ್ಯಪ್‌ಗೆ ಅನುಮತಿಸಬೇಕೆ?" + "ನಿಮ್ಮ <b>%2$s ನ ಸ್ಥಳವನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "ನೀವು ಈ ಆ್ಯಪ್ ಅನ್ನು ಬಳಸದಿರುವಾಗಲೂ ಸಹ, ಯಾವಾಗಲೂ ನಿಮ್ಮ ಸ್ಥಳಕ್ಕೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಲು ಆ್ಯಪ್ ಬಯಸಬಹುದು. ""ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಅನುಮತಿಸಿ." "<b>%1$s</b> ಆ್ಯಪ್‌ಗಾಗಿ ಸ್ಥಳ ಪ್ರವೇಶವನ್ನು ಬದಲಾಯಿಸಬೇಕೆ?" + "ನಿಮ್ಮ <b>%2$s</b> ನಲ್ಲಿ <b>%1$s</b> ನ ಸ್ಥಳ ಆ್ಯಕ್ಸೆಸ್ ಅನ್ನು ಬದಲಾಯಿಸಬೇಕೆ?" "ನೀವು ಈ ಆ್ಯಪ್ ಅನ್ನು ಬಳಸದಿರುವಾಗಲೂ ಸಹ, ಯಾವಾಗಲೂ ನಿಮ್ಮ ಸ್ಥಳಕ್ಕೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಲು ಆ್ಯಪ್ ಬಯಸುತ್ತದೆ. ""ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಅನುಮತಿಸಿ." "ಸಮೀಪದ ಸಾಧನಗಳನ್ನು ಹುಡುಕಲು, ಅವುಗಳಿಗೆ ಕನೆಕ್ಟ್ ಮಾಡಲು ಮತ್ತು ಅವುಗಳ ಸಂಬಂಧಿತ ಸ್ಥಾನವನ್ನು ನಿರ್ಧರಿಸಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೇ?" + "<b>%2$s</b> ನಲ್ಲಿ ಸಮೀಪದ ಸಾಧನ ಹುಡುಕಲು, ಕನೆಕ್ಟ್ ಆಗಲು, ಸಂಬಂಧಿತ ಸ್ಥಾನ ನಿರ್ಧರಿಸಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "ಸಮೀಪದ ಸಾಧನಗಳನ್ನು ಹುಡುಕಲು, ಅವುಗಳಿಗೆ ಕನೆಕ್ಟ್ ಮಾಡಲು ಮತ್ತು ಅವುಗಳ ಸಂಬಂಧಿತ ಸ್ಥಾನವನ್ನು ನಿರ್ಧರಿಸಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೇ? ""ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಅನುಮತಿಸಿ." "<b>%1$s</b> ನ ಸ್ಥಳ ಪ್ರವೇಶವನ್ನು ಅಂದಾಜಿನಿಂದ ನಿಖರತೆಗೆ ಬದಲಾಯಿಸಬೇಕೇ?" + "ನಿಮ್ಮ <b>%2$s</b> ನಲ್ಲಿ <b>%1$s</b> ನ ಸ್ಥಳ ಆ್ಯಕ್ಸೆಸ್ ಅನ್ನು \'ಅಂದಾಜು\' ಎಂಬುದರಿಂದ \'ನಿಖರ\' ಎಂಬುದಕ್ಕೆ ಬದಲಾಯಿಸಬೇಕೆ?" "ಈ ಸಾಧನದ ಅಂದಾಜು ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೇ?" + "ನಿಮ್ಮ <b>%2$s</b> ನ ಅಂದಾಜು ಸ್ಥಳವನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "ನಿಖರ" "ಅಂದಾಜು" "ನಿಮ್ಮ ಕ್ಯಾಲೆಂಡರ್ ಪ್ರವೇಶಿಸಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೇ?" + "ನಿಮ್ಮ <b>%2$s</b> ನಲ್ಲಿ ನಿಮ್ಮ ಕ್ಯಾಲೆಂಡರ್ ಅನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "SMS ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸಲು ಮತ್ತು ವೀಕ್ಷಿಸಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೇ?" + "ನಿಮ್ಮ <b>%2$s</b> ನಲ್ಲಿ SMS ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸಲು ಮತ್ತು ಅವುಗಳನ್ನು ನೋಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "ಸಾಧನದಲ್ಲಿ ಫೋಟೋಗಳು, ಮಾಧ್ಯಮ, ಫೈಲ್‌ಗಳನ್ನು ಪ್ರವೇಶಿಸಲು <b>%1$s</b>ಗೆ ಅನುಮತಿಸಬೇಕೇ?" + "ನಿಮ್ಮ <b>%2$s</b> ನಲ್ಲಿ ಫೋಟೋಗಳು, ಮೀಡಿಯಾ ಮತ್ತು ಫೈಲ್‌ಗಳನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "ಈ ಸಾಧನದಲ್ಲಿರುವ <b>ಫೋಟೋಗಳು, ವೀಡಿಯೊಗಳು, ಸಂಗೀತ, ಆಡಿಯೊವನ್ನು</b> ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "ಈ ಸಾಧನದಲ್ಲಿರುವ <b>ಫೋಟೋಗಳು, ವೀಡಿಯೊಗಳು, ಸಂಗೀತ, ಆಡಿಯೋ, ಇತರ ಫೈಲ್‌ಗಳನ್ನು</b> ಪ್ರವೇಶಿಸಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "ಈ ಸಾಧನದಲ್ಲಿರುವ ಸಂಗೀತ ಮತ್ತು ಆಡಿಯೊವನ್ನು ಪ್ರವೇಶಿಸಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" + "ನಿಮ್ಮ <b>%2$s</b> ನಲ್ಲಿ ಸಂಗೀತ ಮತ್ತು ಆಡಿಯೊವನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "ಈ ಸಾಧನದಲ್ಲಿರುವ ಫೋಟೋಗಳು ಮತ್ತು ವೀಡಿಯೊಗಳನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" + "ನಿಮ್ಮ <b>%2$s</b> ನಲ್ಲಿ ಫೋಟೋಗಳು ಮತ್ತು ವೀಡಿಯೊಗಳನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "ಈ ಸಾಧನದಲ್ಲಿರುವ ಇನ್ನಷ್ಟು ಫೋಟೋಗಳು ಮತ್ತು ವೀಡಿಯೊಗಳನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೇ?" + "ನಿಮ್ಮ <b>%2$s</b> ನಲ್ಲಿ ಇನ್ನಷ್ಟು ಫೋಟೋಗಳು ಮತ್ತು ವೀಡಿಯೊಗಳನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "ಆಡಿಯೋ ರೆಕಾರ್ಡ್‌ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೇ?" + "ನಿಮ್ಮ <b>%2$s</b> ನಲ್ಲಿ ಆಡಿಯೊವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "ನೀವು ಆ್ಯಪ್ ಬಳಸುತ್ತಿರುವಾಗ ಮಾತ್ರ ಆ್ಯಪ್‌ಗೆ ಆಡಿಯೋ ರೆಕಾರ್ಡ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ" "ಆಡಿಯೋ ರೆಕಾರ್ಡ್‌ ಮಾಡಲು <b>%1$s</b> ಆ್ಯಪ್‌ಗೆ ಅನುಮತಿಸಬೇಕೇ?" + "ನಿಮ್ಮ <b>%2$s</b> ನಲ್ಲಿ ಆಡಿಯೊವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "ನೀವು ಈ ಆ್ಯಪ್ ಅನ್ನು ಬಳಸದಿರುವಾಗಲೂ ಸಹ, ಈ ಆ್ಯಪ್ ಯಾವಾಗಲೂ ಆಡಿಯೊವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಲು ಬಯಸಬಹುದು. ""ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಅನುಮತಿಸಿ." "<b>%1$s</b> ಆ್ಯಪ್‌ಗಾಗಿ ಮೈಕ್ರೋಫೋನ್ ಪ್ರವೇಶವನ್ನು ಬದಲಾಯಿಸಬೇಕೆ?" + "ನಿಮ್ಮ <b>%2$s</b> ನಲ್ಲಿ <b>%1$s</b> ನ ಮೈಕ್ರೊಫೋನ್‌ ಆ್ಯಕ್ಸೆಸ್ ಅನ್ನು ಬದಲಾಯಿಸಬೇಕೆ?" "ನೀವು ಈ ಆ್ಯಪ್ ಅನ್ನು ಬಳಸದಿರುವಾಗಲೂ ಸಹ, ಈ ಆ್ಯಪ್ ಯಾವಾಗಲೂ ಆಡಿಯೊವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಲು ಬಯಸುತ್ತದೆ. ""ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಅನುಮತಿಸಿ." "ನಿಮ್ಮ ದೈಹಿಕ ಚಟುವಟಿಕೆಯನ್ನು ಪ್ರವೇಶಿಸಲು <b>%1$s</b>ಕ್ಕೆ ಅನುಮತಿಸುವುದೇ?" + "ನಿಮ್ಮ <b>%2$s</b> ದಲ್ಲಿನ ದೈಹಿಕ ಚಟುವಟಿಕೆಯನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "ಚಿತ್ರಗಳನ್ನು ಸೆರೆಹಿಡಿಯಲು ಮತ್ತು ವೀಡಿಯೊ ರೆಕಾರ್ಡ್‌ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೇ?" + "ನಿಮ್ಮ <b>%2$s</b> ನಲ್ಲಿ ಚಿತ್ರಗಳನ್ನು ಸೆರೆಹಿಡಿಯಲು ಮತ್ತು ವೀಡಿಯೊ ರೆಕಾರ್ಡ್‌ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "ನೀವು ಆ್ಯಪ್ ಅನ್ನು ಬಳಸುತ್ತಿರುವಾಗ ಮಾತ್ರ ಆ್ಯಪ್‌ಗೆ ಚಿತ್ರಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ಮತ್ತು ವೀಡಿಯೊ ರೆಕಾರ್ಡ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ" "ಚಿತ್ರಗಳನ್ನು ಸೆರೆಹಿಡಿಯಲು ಮತ್ತು ವೀಡಿಯೊ ರೆಕಾರ್ಡ್‌ ಮಾಡಲು <b>%1$s</b> ಆ್ಯಪ್‌ಗೆ ಅನುಮತಿಸಬೇಕೇ?" + "ನಿಮ್ಮ <b>%2$s</b> ನಲ್ಲಿ ಚಿತ್ರಗಳನ್ನು ಸೆರೆಹಿಡಿಯಲು ಮತ್ತು ವೀಡಿಯೊ ರೆಕಾರ್ಡ್‌ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "ನೀವು ಈ ಆ್ಯಪ್ ಬಳಸದಿರುವಾಗಲೂ ಸಹ, ಈ ಆ್ಯಪ್ ಎಲ್ಲಾ ಸಮಯದಲ್ಲೂ ಚಿತ್ರಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ಮತ್ತು ವೀಡಿಯೊವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಲು ಬಯಸಬಹುದು. ""ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಅನುಮತಿಸಿ." "<b>%1$s</b> ಆ್ಯಪ್‌ಗಾಗಿ ಕ್ಯಾಮರಾ ಪ್ರವೇಶವನ್ನು ಬದಲಾಯಿಸಬೇಕೆ?" + "ನಿಮ್ಮ <b>%2$s</b> ನಲ್ಲಿ <b>%1$s</b> ನ ಕ್ಯಾಮರಾ ಆ್ಯಕ್ಸೆಸ್ ಅನ್ನು ಬದಲಾಯಿಸಬೇಕೆ?" "ನೀವು ಈ ಆ್ಯಪ್ ಬಳಸದಿರುವಾಗಲೂ ಸಹ, ಈ ಆ್ಯಪ್ ಎಲ್ಲಾ ಸಮಯದಲ್ಲೂ ಚಿತ್ರಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ಮತ್ತು ವೀಡಿಯೊವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಲು ಬಯಸುತ್ತದೆ. ""ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಅನುಮತಿಸಿ." "ನಿಮ್ಮ ಫೋನ್‌ ಕರೆಯ ಲಾಗ್‌ಗಳಿಗೆ ಆ್ಯಕ್ಸೆಸ್ ಪಡೆಯಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೇ?" + "ನಿಮ್ಮ <b>%2$s</b> ನಲ್ಲಿ ನಿಮ್ಮ ಫೋನ್ ಕರೆಯ ಲಾಗ್‌ಗಳನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "ಫೋನ್ ಕರೆಗಳನ್ನು ಮಾಡಲು ಮತ್ತು ನಿರ್ವಹಿಸಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೇ?" + "ನಿಮ್ಮ <b>%2$s</b> ನಲ್ಲಿ ಫೋನ್ ಕರೆಗಳನ್ನು ಮಾಡಲು ಮತ್ತು ನಿರ್ವಹಿಸಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "ನಿಮ್ಮ ಮುಖ್ಯ ಲಕ್ಷಣಗಳ ಕುರಿತು ಸೆನ್ಸರ್ ಡೇಟಾವನ್ನು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೇ?" + "<b>%2$s</b> ನಲ್ಲಿ ನಿಮ್ಮ ಮುಖ್ಯ ಲಕ್ಷಣಗಳ ಕುರಿತ ಸೆನ್ಸಾರ್ ಡೇಟಾ ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "ನೀವು ಆ್ಯಪ್ ಬಳಸದಿರುವಾಗಲೂ ಸಹ, ನಿಮ್ಮ ಆರೋಗ್ಯ ಮಾಪನಗಳ ಕುರಿತು ಎಲ್ಲಾ ಸಮಯದಲ್ಲೂ ಸೆನ್ಸರ್ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸಲು ಈ ಆ್ಯಪ್ ಬಯಸುತ್ತದೆ. ಈ ಬದಲಾವಣೆಯನ್ನು ಮಾಡಲು, ""ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ ಹೋಗಿ." "ನಿಮ್ಮ ಜೀವನಾಧಾರವಾಗಿರುವ ಲಕ್ಷಣಗಳ ಕುರಿತ ಸೆನ್ಸರ್ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೇ?" + "<b>%2$s</b> ನಲ್ಲಿ ನಿಮ್ಮ ಮುಖ್ಯ ಲಕ್ಷಣಗಳ ಕುರಿತ ಸೆನ್ಸಾರ್ ಡೇಟಾ ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "ನೀವು ಆ್ಯಪ್ ಅನ್ನು ಬಳಸದಿರುವಾಗಲೂ ಸಹ, ಎಲ್ಲಾ ಸಮಯದಲ್ಲೂ ದೇಹದ ಸೆನ್ಸರ್‌ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸಲು ಈ ಆ್ಯಪ್ ಅನ್ನು ಅನುಮತಿಸಲು, ""ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ ಹೋಗಿ." "ಆ್ಯಪ್ ಬಳಕೆಯಲ್ಲಿರುವಾಗ ದೇಹದ ಸೆನ್ಸರ್‌ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸುತ್ತಿರಬೇಕೇ?" + "<b>%2$s</b> ನಲ್ಲಿ ಆ್ಯಪ್ ಬಳಸುವಾಗ ದೇಹದ ಸೆನ್ಸಾರ್ ಡೇಟಾ ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸುತ್ತಿರಬೇಕೇ?" "ನಿಮಗೆ ನೋಟಿಫಿಕೇಶನ್‌ಗಳನ್ನು ಕಳುಹಿಸಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೇ?" + "ನಿಮ್ಮ <b>%2$s</b> ನಲ್ಲಿ ನಿಮಗೆ ನೋಟಿಫಿಕೇಶನ್‌ಗಳನ್ನು ಕಳುಹಿಸಲು <b>%1$s</b> ಗೆ ಅನುಮತಿಸಬೇಕೆ?" "ನಿಯಂತ್ರಿತ ಅನುಮತಿಗಳು" "%1$s ಸ್ಥಳ ಆ್ಯಕ್ಸೆಸ್ ಅನ್ನು ಹೊಂದಿದೆ" "ನಿಮ್ಮ ಸಂಸ್ಥೆಯು ನಿಮ್ಮ ಸ್ಥಳವನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು %1$s ಗೆ ಅನುಮತಿಸುತ್ತದೆ" diff --git a/PermissionController/res/values-ko/strings.xml b/PermissionController/res/values-ko/strings.xml index 15256ebec51aa210fe3f7c254c9fea37f23c911c..cc06d56d7341cb256eb74b73c60961d9341789e6 100644 --- a/PermissionController/res/values-ko/strings.xml +++ b/PermissionController/res/values-ko/strings.xml @@ -34,6 +34,7 @@ "추가 정보" "모두 허용" "항상 모두 허용" + "제한된 액세스 허용" "사진 및 동영상 선택" "더보기 선택" "추가 선택 안함" @@ -60,6 +61,7 @@ "앱" "앱 권한" "사용하지 않는 앱" + "이 앱에서 액세스할 수 있는 사진 변경" "사용하지 않는 앱 없음" "사용하지 않는 앱 0개" "최근 권한 결정" @@ -455,48 +457,75 @@ "지원 앱 트리거 감지 표시" "음성 어시스턴트 활성화를 위해 마이크가 사용되면 상태 표시줄에 아이콘 표시" "<b>%1$s</b>에서 기기의 사진 및 미디어에 액세스하도록 허용하시겠습니까?" + "<b>%1$s</b> 앱이 <b>%2$s</b>에서 사진과 미디어에 액세스하도록 허용하시겠습니까?" "<b>%1$s</b>에서 내 연락처에 액세스하도록 허용하시겠습니까?" + "<b>%1$s</b> 앱이 <b>%2$s</b>에서 연락처에 액세스하도록 허용하시겠습니까?" "<b>%1$s</b>에서 이 기기의 위치 정보에 액세스하도록 허용하시겠습니까?" + "<b>%1$s</b> 앱이 <b>%2$s</b>의 위치에 액세스하도록 허용하시겠습니까?" "앱을 사용할 때만 앱에서 위치에 액세스합니다." "<b>%1$s</b>에서 내 기기의 위치 정보에 액세스하도록 허용하시겠습니까?" + "<b>%1$s</b> 앱이 <b>%2$s의 위치에 액세스하도록 허용하시겠습니까?" "앱을 사용하고 있지 않을 때도 앱에서 내 위치에 항상 액세스하려고 할 수 있습니다. ""설정에서 액세스를 허용""하세요." "<b>%1$s</b>의 위치 액세스 권한을 변경하시겠습니까?" + "<b>%2$s</b>에서 <b>%1$s</b> 앱의 위치 액세스 권한을 변경하시겠습니까?" "앱을 사용하고 있지 않을 때도 앱에서 내 위치에 항상 액세스하려고 합니다. ""설정에서 액세스를 허용""하세요." "<b>%1$s</b>에서 근처에 있는 기기를 찾아 연결하고 기기 간 상대적 위치를 파악하도록 허용하시겠습니까?" + "<b>%1$s</b> 앱이 <b>%2$s</b>에서 근처 기기의 상대 위치를 찾고, 연결하고, 확인하도록 허용하시겠습니까?" "<b>%1$s</b>에서 근처 기기를 찾아 연결하고 기기 간 상대적 위치를 파악하도록 허용하시겠습니까? ""설정에서 허용하세요." "<b>%1$s</b>의 위치 정보 액세스 권한을 대략적인 위치에서 정확한 위치로 변경하시겠습니까?" + "<b>%2$s</b>에서 <b>%1$s</b> 앱의 위치 액세스를 대략적인 위치에서 정확한 위치로 변경하시겠습니까?" "<b>%1$s</b>에서 기기의 대략적인 위치에 액세스하도록 허용하시겠습니까?" + "<b>%1$s</b> 앱이 <b>%2$s</b>의 대략적인 위치에 액세스하도록 허용하시겠습니까?" "정확한 위치" "대략적인 위치" "<b>%1$s</b>에서 내 캘린더에 액세스하도록 허용하시겠습니까?" + "<b>%1$s</b> 앱이 <b>%2$s</b>에서 캘린더에 액세스하도록 허용하시겠습니까?" "<b>%1$s</b>에서 SMS 메시지를 전송하고 보도록 허용하시겠습니까?" + "<b>%1$s</b> 앱이 <b>%2$s</b>에서 SMS 메시지를 전송하고 확인하도록 허용하시겠습니까?" "<b>%1$s</b>에서 기기의 사진, 미디어, 파일에 액세스하도록 허용하시겠습니까?" + "<b>%1$s</b> 앱이 <b>%2$s</b>에서 사진, 미디어, 파일에 액세스하도록 허용하시겠습니까?" "<b>%1$s</b>에서 기기의 <b>사진, 동영상, 음악, 오디오</b>에 액세스하도록 허용하시겠습니까?" "<b>%1$s</b>에서 기기의 <b>사진, 동영상, 음악, 오디오, 기타 파일</b>에 액세스하도록 허용하시겠습니까?" "<b>%1$s</b>에서 기기의 음악과 오디오에 액세스하도록 허용하시겠습니까?" + "<b>%1$s</b> 앱이 <b>%2$s</b>에서 음악과 오디오에 액세스하도록 허용하시겠습니까?" "<b>%1$s</b>에서 기기의 사진과 동영상에 액세스하도록 허용하시겠습니까?" + "<b>%1$s</b> 앱이 <b>%2$s</b>에서 사진 및 동영상에 액세스하도록 허용하시겠습니까?" "<b>%1$s</b>에서 기기에 있는 더 많은 사진과 동영상에 액세스하도록 허용하시겠습니까?" + "<b>%1$s</b> 앱이 <b>%2$s</b>에서 더 많은 사진 및 동영상에 액세스하도록 허용하시겠습니까?" "<b>%1$s</b>에서 오디오를 녹음하도록 허용하시겠습니까?" + "<b>%1$s</b> 앱이 <b>%2$s</b>에서 오디오를 녹음하도록 허용하시겠습니까?" "앱을 사용하고 있는 동안에만 앱에서 오디오를 녹음할 수 있습니다." "<b>%1$s</b>에서 오디오를 녹음하도록 허용하시겠습니까?" + "<b>%1$s</b> 앱이 <b>%2$s</b>에서 오디오를 녹음하도록 허용하시겠습니까?" "앱을 사용하고 있지 않을 때도 앱에서 항상 오디오를 녹음하고자 할 수 있습니다. ""설정에서 액세스를 허용하세요""." "<b>%1$s</b>의 마이크 액세스 권한을 변경하시겠습니까?" + "<b>%2$s</b>에서 <b>%1$s</b> 앱의 마이크 액세스 권한을 변경하시겠습니까?" "앱을 사용하고 있지 않을 때도 앱에서 항상 오디오를 녹음하려고 합니다. ""설정에서 액세스를 허용하세요""." "<b>%1$s</b>에서 내 신체 활동 정보에 액세스하도록 허용하시겠습니까?" + "<b>%1$s</b> 앱이 <b>%2$s</b>에서 신체 활동에 액세스하도록 허용하시겠습니까?" "<b>%1$s</b>에서 사진을 촬영하고 동영상을 녹화하도록 허용하시겠습니까?" + "<b>%1$s</b> 앱이 <b>%2$s</b>에서 사진을 찍고 동영상을 녹화하도록 허용하시겠습니까?" "앱을 사용하고 있는 동안에만 앱에서 사진을 촬영하고 동영상을 녹화할 수 있습니다." "<b>%1$s</b>에서 사진을 촬영하고 동영상을 녹화하도록 허용하시겠습니까?" + "<b>%1$s</b> 앱이 <b>%2$s</b>에서 사진을 찍고 동영상을 녹화하도록 허용하시겠습니까?" "앱을 사용하고 있지 않을 때도 앱에서 항상 사진을 촬영하고 동영상을 녹화하고자 할 수 있습니다. ""설정에서 액세스를 허용하세요""." "<b>%1$s</b>의 카메라 액세스 권한을 변경하시겠습니까?" + "<b>%2$s</b>에서 <b>%1$s</b> 앱의 카메라 액세스 권한을 변경하시겠습니까?" "앱을 사용하고 있지 않을 때도 앱에서 항상 사진을 촬영하고 동영상을 녹화하려고 합니다. ""설정에서 액세스를 허용하세요""." "<b>%1$s</b>에서 통화 기록에 액세스하도록 허용하시겠습니까?" + "<b>%1$s</b> 앱이 <b>%2$s</b>에서 통화 기록에 액세스하도록 허용하시겠습니까?" "<b>%1$s</b>에서 전화를 걸고 관리하도록 허용하시겠습니까?" + "<b>%1$s</b> 앱이 <b>%2$s</b>에서 전화를 걸고 관리하도록 허용하시겠습니까?" "<b>%1$s</b>에서 생체 신호에 관한 센서 데이터에 액세스하도록 허용하시겠습니까?" + "<b>%1$s</b> 앱이 <b>%2$s</b>에서 생체 신호에 관한 센서 데이터에 액세스하도록 허용하시겠습니까?" "앱이 사용되고 있지 않을 때도 항상 생체 신호 센서 데이터에 액세스하고자 합니다. 권한을 변경하려면 ""설정으로 이동""하세요." "<b>%1$s</b>에서 생체 신호에 관한 센서 데이터에 액세스하도록 허용하시겠습니까?" + "<b>%1$s</b> 앱이 <b>%2$s</b>에서 생체 신호에 관한 센서 데이터에 액세스하도록 허용하시겠습니까?" "앱을 사용하지 않을 때도 앱이 항상 생체 신호 센서 데이터에 액세스하도록 허용하려면 ""설정으로 이동""하세요" "<b>%1$s</b> 앱을 사용하는 중에만 생체 신호 센서 데이터에 액세스하도록 허용하는 설정을 유지하시겠습니까?" + "<b>%1$s</b> 앱이 사용 중일 때 <b>%2$s</b>의 생체 신호 센서에 액세스하도록 계속 허용하시겠습니까?" "<b>%1$s</b>에서 알림을 보내도록 허용하시겠습니까?" + "<b>%1$s</b> 앱이 <b>%2$s</b>에서 알림을 보내도록 허용하시겠습니까?" "관리 대상 권한" "%1$s 앱이 위치 액세스 권한을 보유함" "조직에서 %1$s 앱이 내 위치에 액세스하도록 허용했습니다." diff --git a/PermissionController/res/values-ky/strings.xml b/PermissionController/res/values-ky/strings.xml index e8816f7fd90033f38d6fbcb1ae53715c56b6ff41..1f1ee13a15da99eb195ed549533fb88a38112f36 100644 --- a/PermissionController/res/values-ky/strings.xml +++ b/PermissionController/res/values-ky/strings.xml @@ -34,6 +34,7 @@ "Дагы маалымат" "Баарына уруксат берүү" "Ар дайым баарына уруксат берүү" + "Чектелген мүмкүнчүлүк берүү" "Сүрөттөрдү жана видеолорду тандаңыз" "Дагы тандоо" "Башка тандалбасын" @@ -60,6 +61,7 @@ "Колдонмолор" "Колдонмонун уруксаттары" "Колдонулбаган колдонмолор" + "Бул колдонмого жеткиликтүү сүрөттөрдүн тизмесин өзгөртүү" "Бардык колдонмолор колдонулууда" "Колдонулбаган колдонмолор: 0" "Уруксаттарга байланыштуу аракеттер" @@ -455,48 +457,75 @@ "Үн жардамчысынын иштегенин чагылдырган сүрөтчөнү көрсөтүү" "Үн жардамчысын иштетүү үчүн микрофон колдонулганда, абал тилкесинде сүрөтчө көрүнөт" "<b>%1$s</b> колдонмосу үчүн түзмөгүңүздөгү сүрөттөр менен мультимедиа файлдарын иштетесизби?" + "<b>%1$s</b> <b>%2$s</b> түзмөгүңүздөгү сүрөттөр менен мультимедиага мүмкүнчүлүк алсынбы?" "<b>%1$s</b> колдонмосуна байланыштарыңызды жеткиликтүү кыласызбы?" + "<b>%1$s</b> колдонмосуна <b>%2$s</b> түзмөгүңүздө байланыштарыңызды көрүүгө уруксат бересизби?" "<b>%1$s</b> колдонмосуна бул түзмөктүн жайгашкан жерин көрүүгө уруксат бересизби?" + "<b>%1$s</b> колдонмосуна <b>%2$s</b> түзмөгүңүздүн турган жерин көрүүгө уруксат бересизби?" "Колдонмону колдонуп жаткан маалда гана, ал сиздин кайда жүргөнүңүздү билип турат." "<b>%1$s</b> колдонмосуна бул түзмөктүн жайгашкан жерин көрүүгө уруксат бересизби?" + "<b>%1$s</b> колдонмосуна <b>%2$s түзмөгүңүздүн турган жерин көрүүгө уруксат бересизби?" "Бул колдонмо кайда жүргөнүңүздү ар дайым, колдонмону пайдаланбай турганда да, көрүүгө уруксат сурашы мүмкүн. ""Параметрлерден уруксат бериңиз." "<b>%1$s</b> колдонмосу үчүн түзмөктүн жайгашкан жерин пайдалануу мүмкүнчүлүгү өзгөртүлсүнбү?" + "<b>%1$s</b> үчүн <b>%2$s</b> түзмөгүңүздүн турган жерин көрүү мүмкүнчүлүгүн өзгөртөсүзбү?" "Бул колдонмо кайда жүргөнүңүздү ар дайым, колдонмону пайдаланбай турганда да, көрүүгө уруксат сурап жатат. ""Параметрлерден уруксат бериңиз." "<b>%1$s</b> жакын жердеги түзмөктөрдү таап, аларга туташып жана абалын аныктай берсинби?" + "<b>%1$s</b> <b>%2$s</b> түзмөгүңүздө жакын жердеги түзмөктөрдү таап, туташып, абалын аныктай алсынбы?" "<b>%1$s</b> жакын жердеги түзмөктөрдү таап, аларга туташып жана абалын аныктай алсынбы? ""Параметрлерден уруксат берүү." "<b>%1$s</b> колдонмосунда жайгашкан жер болжолдуу эмес, так аныкталсынбы?" + "<b>%1$s</b> колдонмосуна <b>%2$s</b> түзмөгүңүздүн болжолдуу эмес, так жайгашкан жерин көрүүгө уруксат бересизби?" "<b>%1$s</b> колдонмосуна бул түзмөктүн болжолдуу жайгашкан жерин пайдаланууга уруксат берилсинби?" + "<b>%1$s</b> колдонмосуна <b>%2$s</b> түзмөгүңүздүн болжолдуу турган жерин көрүүгө уруксат бересизби?" "Так" "Болжолдуу" "<b>%1$s</b> колдонмосуна жылнаамаңызды пайдаланууга уруксат бересизби?" + "<b>%1$s</b> колдонмосуна <b>%2$s</b> түзмөгүңүздө жылнаамаңызга кирүүгө уруксат бересизби?" "<b>%1$s</b> колдонмосуна SMS билдирүүлөрдү жөнөтүүгө жана окууга уруксат берилсинби?" + "<b>%1$s</b> <b>%2$s</b> түзмөгүңүздө SMS билдирүүлөрдү көрүп жана жөнөтүүгө мүмкүнчүлүк алсынбы?" "<b>%1$s</b> колдонмосуна түзмөгүңүздөгү сүрөттөрдү жана башка мультимедиа файлдарын пайдаланууга уруксат бересизби?" + "<b>%1$s</b> <b>%2$s</b> түзмөгүңүздөгү сүрөттөр, мультимедиа жана файлдарга мүмкүнчүлүк алсынбы?" "<b>%1$s</b> колдонмосуна ушул түзмөктөгү <b>сүрөттөрдү, видеолорду, ырларды жана аудио файлдарды</b> жеткиликтүү кыласызбы?" "<b>%1$s</b> колдонмосуна ушул түзмөктөгү <b>сүрөттөрдү, видеолорду, ырларды, аудио файлдарды жана башка нерселерди</b> жеткиликтүү кыласызбы?" "<b>%1$s</b> колдонмосуна ушул түзмөктөгү ырлар менен аудио файлдарды жеткиликтүү кыласызбы?" + "<b>%1$s</b> <b>%2$s</b> түзмөгүңүздөгү ырлар менен аудио файлдарга мүмкүнчүлүк алсынбы?" "<b>%1$s</b> колдонмосуна ушул түзмөктөгү сүрөттөр менен видеолорду жеткиликтүү кыласызбы?" + "<b>%1$s</b> <b>%2$s</b> түзмөгүңүздөгү сүрөттөр менен видеолорго мүмкүнчүлүк алсынбы?" "<b>%1$s</b> колдонмосуна ушул түзмөктөгү дагы башка сүрөттөр менен видеолорду жеткиликтүү кыласызбы?" + "<b>%1$s</b> колдонмосуна <b>%2$s</b> түзмөгүңүздө башка сүрөт жана видеолорду көрүүгө уруксат бересизби?" "<b>%1$s</b> колдонмосуна аудио файлдарды жаздырганга уруксат бересизби?" + "<b>%1$s</b> колдонмосуна <b>%2$s</b> түзмөгүңүздө аудио жаздырууга уруксат бересизби?" "Колдонмону колдонуп жатканда гана, ал аудио жаздыра алат" "<b>%1$s</b> колдонмосуна аудио файлдарды жаздырууга уруксат бересизби?" + "<b>%1$s</b> колдонмосуна <b>%2$s</b> түзмөгүңүздө аудио жаздырууга уруксат бересизби?" "Бул колдонмону колдонбой турсаңыз деле, ал такай аудио жаздыра берет. ""Ага жөндөөлөрдөн уруксат бериңиз." "<b>%1$s</b> колдонмосу үчүн микрофонду пайдалануу мүмкүнчүлүгүн өзгөртөсүзбү?" + "<b>%1$s</b> үчүн <b>%2$s</b> түзмөгүңүздө микрофонду пайдалануу мүмкүнчүлүгүн өзгөртөсүзбү?" "Бул колдонмону колдонбой турсаңыз деле, ал такай аудио жаздыра берет. ""Ага жөндөөлөрдөн уруксат бериңиз." "<b>%1$s</b> колдонмосуна кыймыл-аракеттериңизге көз салып турганга мүмкүнчүлүк бересизби?" + "<b>%1$s</b> колдонмосуна <b>%2$s</b> түзмөгүңүздө кыймыл-аракеттериңизди көрүүгө уруксат бересизби?" "<b>%1$s</b> колдонмосуна сүрөттөр менен видеолорду тартканга уруксат бересизби?" + "<b>%1$s</b> колдонмосуна <b>%2$s</b> түзмөгүңүздө сүрөт менен видео тартууга уруксат бересизби?" "Колдонмону колдонуп жатканда гана, ал сүрөт жана видео тарта алат" "<b>%1$s</b> колдонмосуна сүрөт менен видео тартууга уруксат бересизби?" + "<b>%1$s</b> колдонмосуна <b>%2$s</b> түзмөгүңүздө сүрөт менен видео тартууга уруксат бересизби?" "Бул колдонмону колдонбой турсаңыз деле, ал такай сүрөт жана видео тарта берет. ""Ага жөндөөлөрдөн уруксат бериңиз." "<b>%1$s</b> колдонмосу үчүн камераны пайдалануу мүмкүнчүлүгүн өзгөртөсүзбү?" + "<b>%1$s</b> үчүн <b>%2$s</b> түзмөгүңүздө камераны пайдалануу мүмкүнчүлүгүн өзгөртөсүзбү?" "Бул колдонмону колдонбой турсаңыз деле, ал такай сүрөт жана видео тарта берет. ""Ага жөндөөлөрдөн уруксат бериңиз." "<b>%1$s</b> колдонмосуна телефондогу чалуулар тизмесин пайдаланууга уруксат бересизби?" + "<b>%1$s</b> <b>%2$s</b> түзмөгүңүздө телефон чалуулардын тизмесин көрүүгө мүмкүнчүлүк алсынбы?" "<b>%1$s</b> колдонмосуна телефон чалууга жана чалууларды башкарууга уруксат бересизби?" + "<b>%1$s</b> <b>%2$s</b> түзмөгүңүздө телефон чалып жана чалууларды башкара алсынбы?" "<b>%1$s</b> колдонмосуна организмдин абалына көз салган сенсордун көрсөткүчтөрүн көрүүгө уруксат бересизби?" + "<b>%1$s</b> <b>%2$s</b> түзмөгүңүздөгү дене-бой сенсорлорунун маалыматына мүмкүнчүлүк алсынбы?" "Бул колдонмону иштетпей турсаңыз деле, ал такай организмдин негизги көрсөткүчтөрү тууралуу cенсордун дайындарын жаздыра алат. Муну өзгөртүү үчүн ""параметрлерге өтүңүз." "<b>%1$s</b> колдонмосуна дене-бой сенсорлорунун көрсөткүчтөрүн көрүүгө уруксат бересизби?" + "<b>%1$s</b> <b>%2$s</b> түзмөгүңүздө дене-бой сенсорлорунун маалыматын көрүүгө мүмкүнчүлүк алсынбы?" "Бул колдонмого дене сенсорлорунун көрсөткүчтөрүн көрүү мүмкүнчүлүгүн берүү үчүн (колдонмо колдонулбай турганда да) ""параметрлерди өзгөртүңүз." "<b>%1$s</b> колдонмосу колдонулуп жатканда дене бой сенсорлорунун көрсөткүчтөрүн көрүү мүмкүнчүлүгүн бересизби?" + "Колдонулуп жатканда <b>%1$s</b> <b>%2$s</b> дене сенсорлорунун маалыматына кире берсинби?" "<b>%1$s</b> колдонмосуна сизге билдирмелерди жөнөтүүгө уруксат бересизби?" + "<b>%1$s</b> колдонмосуна <b>%2$s</b> түзмөгүңүздө сизге билдирмелерди жөнөтүүгө уруксат бересизби?" "Көзөмөлдөнгөн уруксаттар" "%1$s жүргөн жериңизди аныктай алат" "Уюмуңуз %1$s колдонмосуна жүргөн жериңизди аныктоого уруксат берет" diff --git a/PermissionController/res/values-lo/strings.xml b/PermissionController/res/values-lo/strings.xml index be8cf294743c00b6a890cbd0c906d3dd928f6e2a..b78db29c8b3b9c3f7d95da42e5cbd87619d0bcc7 100644 --- a/PermissionController/res/values-lo/strings.xml +++ b/PermissionController/res/values-lo/strings.xml @@ -34,6 +34,7 @@ "ຂໍ້ມູນເພີ່ມເຕີມ" "ອະນຸຍາດທັງໝົດ" "ອະນຸຍາດທັງໝົດຕະຫຼອດ" + "ອະນຸຍາດສິດເຂົ້າເຖິງແບບຈຳກັດ" "ເລືອກຮູບພາບ ແລະ ວິດີໂອ" "ເລືອກເພີ່ມເຕີມ" "ຢ່າເລືອກເພີ່ມເຕີມ" @@ -60,6 +61,7 @@ "ແອັບ" "ສິດອະນຸຍາດແອັບ" "ແອັບທີ່ບໍ່ໄດ້ໃຊ້" + "ແກ້ໄຂຮູບພາບທີ່ເລືອກໄວ້ສຳລັບແອັບນີ້" "ບໍ່ມີແອັບທີ່ບໍ່ໄດ້ໃຊ້" "0 ແອັບທີ່ບໍ່ໄດ້ໃຊ້" "ການຕັດສິນໃຈການອະນຸຍາດຫຼ້າສຸດ" @@ -455,48 +457,75 @@ "ສະແດງການກວດຫາຕົວເປີດຜູ້ຊ່ວຍ" "ສະແດງໄອຄອນໃນແຖບສະຖານະເມື່ອໃຊ້ໄມໂຄຣໂຟນເພື່ອເປີດໃຊ້ຜູ້ຊ່ວຍແບບສຽງ" "ອະນຸຍາດ <b>%1$s</b> ໃຫ້ເຂົ້າເຖິງຮູບພາບ ແລະ ມີເດຍຢູ່ອຸປະກອນຂອງທ່ານບໍ?" + "ອະນຸຍາດໃຫ້ <b>%1$s</b> ເຂົ້າເຖິງຮູບພາບ ແລະ ສື່ຢູ່ <b>%2$s</b> ຂອງທ່ານບໍ?" "ອະນຸຍາດ <b>%1$s</b> ໃຫ້ເຂົ້າເຖິງລາຍຊື່ຜູ້ຕິດຕໍ່ຂອງທ່ານບໍ?" + "ອະນຸຍາດໃຫ້ <b>%1$s</b> ເຂົ້າເຖິງລາຍຊື່ຜູ້ຕິດຕໍ່ຂອງທ່ານຢູ່ <b>%2$s</b> ຂອງທ່ານບໍ?" "ອະນຸຍາດ <b>%1$s</b> ໃຫ້ເຂົ້າເຖິງສະຖານທີ່ຂອງອຸປະກອນບໍ?" + "ອະນຸຍາດໃຫ້ <b>%1$s</b> ເຂົ້າເຖິງສະຖານທີ່ຂອງ <b>%2$s</b> ຂອງທ່ານບໍ?" "ແອັບຈະມີສິດເຂົ້າເຖິງສະຖານທີ່ໃນເວລາທີ່ທ່ານກຳລັງໃຊ້ແອັບຢູ່ເທົ່ານັ້ນ" "ອະນຸຍາດ <b>%1$s</b> ໃຫ້ເຂົ້າເຖິງສະຖານທີ່ຂອງອຸປະກອນບໍ?" + "ອະນຸຍາດໃຫ້ <b>%1$s</b> ເຂົ້າເຖິງສະຖານທີ່ຂອງ <b>%2$s ຂອງທ່ານບໍ?" "ແອັບນີ້ອາດຕ້ອງການເຂົ້າເຖິງສະຖານທີ່ຂອງທ່ານຕະຫຼອດເວລາ, ເຖິງແມ່ນວ່າທ່ານຈະບໍ່ໄດ້ໃຊ້ແອັບຢູ່ກໍຕາມ. ""ອະນຸຍາດໃນການຕັ້ງຄ່າ." "ປ່ຽນສິດອະນຸຍາດເຂົ້າເຖິງສຳລັບ <b>%1$s</b> ບໍ?" + "ປ່ຽນແປງສິດເຂົ້າເຖິງສະຖານທີ່ຂອງ <b>%1$s</b> ຢູ່ <b>%2$s</b> ຂອງທ່ານບໍ?" "ແອັບນີ້ຕ້ອງການເຂົ້າເຖິງສະຖານທີ່ຂອງທ່ານຕະຫຼອດເວລາ, ເຖິງແມ່ນວ່າທ່ານຈະບໍ່ໄດ້ໃຊ້ແອັບຢູ່ກໍຕາມ. ""ອະນຸຍາດໃນການຕັ້ງຄ່າ." "ອະນຸຍາດໃຫ້ <b>%1$s</b> ຊອກຫາ, ເຊື່ອມຕໍ່ຫາ ແລະ ກຳນົດຕຳແໜ່ງທີ່ກ່ຽວຂ້ອງກັນຂອງອຸປະກອນທີ່ຢູ່ໃກ້ຄຽງບໍ?" + "ອະນຸຍາດໃຫ້ <b>%1$s</b> ຊອກຫາ, ເຊື່ອມຕໍ່ ແລະ ລະບຸສະຖານທີ່ທີ່ກ່ຽວຂ້ອງກັນຂອງອຸປະກອນທີ່ຢູ່ໃກ້ຄຽງຢູ່ <b>%2$s</b> ຂອງທ່ານບໍ?" "ອະນຸຍາດໃຫ້ <b>%1$s</b> ຊອກຫາ, ເຊື່ອມຕໍ່ຫາ ແລະ ກຳນົດຕຳແໜ່ງທີ່ກ່ຽວຂ້ອງກັນຂອງອຸປະກອນທີ່ຢູ່ໃກ້ຄຽງບໍ? ""ອະນຸຍາດໃນການຕັ້ງຄ່າ." "ປ່ຽນການເຂົ້າເຖິງສະຖານທີ່ຂອງ <b>%1$s</b> ຈາກໂດຍປະມານເປັນແບບລະອຽດບໍ?" + "ປ່ຽນສິດເຂົ້າເຖິງສະຖານທີ່ຂອງ <b>%1$s</b> ຢູ່ <b>%2$s</b> ຂອງທ່ານຈາກສະຖານທີ່ໂດຍປະມານເປັນສະຖານທີ່ແບບລະອຽດບໍ?" "ອະນຸຍາດໃຫ້ <b>%1$s</b> ເຂົ້າເຖິງສະຖານທີ່ໂດຍປະມານຂອງອຸປະກອນນີ້ບໍ?" + "ອະນຸຍາດໃຫ້ <b>%1$s</b> ເຂົ້າເຖິງສະຖານທີ່ໂດຍປະມານຂອງ <b>%2$s</b> ຂອງທ່ານບໍ?" "ແບບລະອຽດ" "ໂດຍປະມານ" "ອະນຸຍາດ <b>%1$s</b> ໃຫ້ເຂົ້າເຖິງປະຕິທິນຂອງທ່ານບໍ?" + "ອະນຸຍາດໃຫ້ <b>%1$s</b> ເຂົ້າເຖິງປະຕິທິນຂອງທ່ານຢູ່ <b>%2$s</b> ຂອງທ່ານບໍ?" "ອະນຸຍາດ <b>%1$s</b> ໃຫ້ສົ່ງ ແລະ ອ່ານຂໍ້ຄວາມ SMS ບໍ?" + "ອະນຸຍາດໃຫ້ <b>%1$s</b> ສົ່ງ ແລະ ເບິ່ງຂໍ້ຄວາມ SMS ຢູ່ <b>%2$s</b> ຂອງທ່ານບໍ?" "ອະນຸຍາດ <b>%1$s</b> ໃຫ້ເຂົ້າເຖິງຮູບພາບ, ມີເດຍ ແລະ ໄຟລ໌ຢູ່ອຸປະກອນຂອງທ່ານບໍ?" + "ອະນຸຍາດໃຫ້ <b>%1$s</b> ເຂົ້າເຖິງຮູບພາບ, ສື່ ແລະ ໄຟລ໌ຢູ່ <b>%2$s</b> ຂອງທ່ານບໍ?" "ອະນຸຍາດໃຫ້ <b>%1$s</b> ເຂົ້າເຖິງ <b>ຮູບພາບ, ວິດີໂອ, ເພງ ແລະ ສຽງ</b> ຢູ່ອຸປະກອນນີ້ບໍ?" "ອະນຸຍາດໃຫ້ <b>%1$s</b> ເຂົ້າເຖິງ <b>ຮູບພາບ, ວິດີໂອ, ເພງ, ສຽງ ແລະ ໄຟລ໌ອື່ນໆ</b> ຢູ່ອຸປະກອນນີ້ບໍ?" "ອະນຸຍາດໃຫ້ <b>%1$s</b> ເຂົ້າເຖິງເພງ ແລະ ສຽງຢູ່ອຸປະກອນນີ້ບໍ?" + "ອະນຸຍາດໃຫ້ <b>%1$s</b> ເຂົ້າເຖິງເພງ ແລະ ສຽງຢູ່ <b>%2$s</b> ຂອງທ່ານບໍ?" "ອະນຸຍາດໃຫ້ <b>%1$s</b> ເຂົ້າເຖິງຮູບພາບ ແລະ ວິດີໂອຢູ່ອຸປະກອນນີ້ບໍ?" + "ອະນຸຍາດໃຫ້ <b>%1$s</b> ເຂົ້າເຖິງຮູບພາບ ແລະ ວິດີໂອຢູ່ <b>%2$s</b> ຂອງທ່ານບໍ?" "ອະນຸຍາດໃຫ້ <b>%1$s</b> ເຂົ້າເຖິງຮູບພາບ ແລະ ວິດີໂອເພີ່ມເຕີມຢູ່ອຸປະກອນນີ້ບໍ?" + "ອະນຸຍາດໃຫ້ <b>%1$s</b> ເຂົ້າເຖິງຮູບພາບ ແລະ ວິດີໂອເພີ່ມເຕີມຢູ່ <b>%2$s</b> ຂອງທ່ານບໍ?" "ອະນຸຍາດ <b>%1$s</b> ໃຫ້ບັນທຶກສຽງບໍ?" + "ອະນຸຍາດໃຫ້ <b>%1$s</b> ບັນທຶກສຽງຢູ່ <b>%2$s</b> ຂອງທ່ານບໍ?" "ແອັບນີ້ສາມາດບັນທຶກສຽງໃນຂະນະທີ່ທ່ານກຳລັງໃຊ້ແອັບເທົ່ານັ້ນ" "ອະນຸຍາດ <b>%1$s</b> ໃຫ້ບັນທຶກສຽງບໍ?" + "ອະນຸຍາດໃຫ້ <b>%1$s</b> ບັນທຶກສຽງຢູ່ <b>%2$s</b> ຂອງທ່ານບໍ?" "ແອັບນີ້ອາດຕ້ອງການບັນທຶກສຽງຕະຫຼອດເວລາ, ເຖິງແມ່ນວ່າທ່ານຈະບໍ່ໄດ້ໃຊ້ແອັບຢູ່ກໍຕາມ. ""ອະນຸຍາດໃນການຕັ້ງຄ່າ." "ປ່ຽນສິດເຂົ້າເຖິງໄມໂຄຣໂຟນສຳລັບ <b>%1$s</b> ບໍ?" + "ປ່ຽນແປງສິດເຂົ້າເຖິງໄມໂຄຣໂຟນຂອງ <b>%1$s</b> ຢູ່ <b>%2$s</b> ຂອງທ່ານບໍ?" "ແອັບນີ້ຕ້ອງການບັນທຶກສຽງຕະຫຼອດເວລາ, ເຖິງແມ່ນວ່າທ່ານຈະບໍ່ໄດ້ໃຊ້ແອັບຢູ່ກໍຕາມ. ""ອະນຸຍາດໃນການຕັ້ງຄ່າ." "ອະນຸຍາດໃຫ້ <b>%1$s</b> ເຂົ້າເຖິງກິດຈະກຳທາງກາຍະພາບຂອງທ່ານບໍ?" + "ອະນຸຍາດໃຫ້ <b>%1$s</b> ເຂົ້າເຖິງກິດຈະກຳທາງກາຍະພາບຂອງທ່ານຢູ່ <b>%2$s</b> ຂອງທ່ານບໍ?" "ອະນຸຍາດ <b>%1$s</b> ໃຫ້ຖ່າຍຮູບ ແລະ ບັນທຶກວິດີໂອບໍ?" + "ອະນຸຍາດໃຫ້ <b>%1$s</b> ຖ່າຍຮູບ ແລະ ບັນທຶກວິດີໂອຢູ່ <b>%2$s</b> ຂອງທ່ານບໍ?" "ແອັບຈະສາມາດຖ່າຍຮູບ ແລະ ບັນທຶກວິດີໂອໄດ້ສະເພາະໃນເວລາທີ່ທ່ານກຳລັງໃຊ້ແອັບເທົ່ານັ້ນ" "ອະນຸຍາດ <b>%1$s</b> ໃຫ້ຖ່າຍຮູບ ແລະ ບັນທຶກວິດີໂອບໍ?" + "ອະນຸຍາດໃຫ້ <b>%1$s</b> ຖ່າຍຮູບ ແລະ ບັນທຶກວິດີໂອຢູ່ <b>%2$s</b> ຂອງທ່ານບໍ?" "ແອັບນີ້ອາດຕ້ອງການຖ່າຍຮູບ ແລະ ບັນທຶກວິດີໂອຕະຫຼອດເວລາ, ເຖິງແມ່ນວ່າທ່ານຈະບໍ່ໄດ້ໃຊ້ແອັບຢູ່ກໍຕາມ. ""ອະນຸຍາດໃນການຕັ້ງຄ່າ." "ປ່ຽນສິດເຂົ້າເຖິງກ້ອງສຳລັບ <b>%1$s</b> ບໍ?" + "ປ່ຽນແປງສິດເຂົ້າເຖິງກ້ອງຂອງ <b>%1$s</b> ຢູ່ <b>%2$s</b> ຂອງທ່ານບໍ?" "ແອັບອາດຕ້ອງການຖ່າຍຮູບ ແລະ ບັນທຶກວິດີໂອຕະຫຼອດເວລາ, ເຖິງແມ່ນວ່າທ່ານຈະບໍ່ໄດ້ໃຊ້ແອັບຢູ່ກໍຕາມ. ""ອະນຸຍາດໃນການຕັ້ງຄ່າ." "ອະນຸຍາດໃຫ້ <b>%1$s</b> ເຂົ້າເຖິງບັນທຶກການໂທທັງໝົດຂອງທ່ານໄດ້ບໍ?" + "ອະນຸຍາດໃຫ້ <b>%1$s</b> ເຂົ້າເຖິງບັນທຶກການໂທໃນໂທລະສັບຂອງທ່ານຢູ່ <b>%2$s</b> ຂອງທ່ານບໍ?" "ອະນຸຍາດ <b>%1$s</b> ໃຫ້ໂທ ແລະ ຈັດການການໂທບໍ?" + "ອະນຸຍາດໃຫ້ <b>%1$s</b> ໂທ ແລະ ຈັດການການໂທຢູ່ <b>%2$s</b> ຂອງທ່ານບໍ?" "ອະນຸຍາດ <b>%1$s</b> ໃຫ້ເຂົ້າເຖິງຂໍ້ມູນເຊັນເຊີກ່ຽວກັບສັນຍານຊີບຂອງທ່ານບໍ?" + "ອະນຸຍາດໃຫ້ <b>%1$s</b> ເຂົ້າເຖິງຂໍ້ມູນເຊັນເຊີກ່ຽວກັບສັນຍານຊີບຂອງທ່ານຢູ່ <b>%2$s</b> ຂອງທ່ານບໍ?" "ແອັບນີ້ຕ້ອງການເຂົ້າເຖິງຂໍ້ມູນເຊັນເຊີກ່ຽວກັບສັນຍານຊີບຂອງທ່ານຕະຫຼອດເວລາ, ເຖິງແມ່ນວ່າທ່ານຈະບໍ່ໄດ້ກຳລັງໃຊ້ແອັບຢູ່ກໍຕາມ. ເພື່ອປ່ຽນແປງສິ່ງນີ້, ""ໃຫ້ເຂົ້າໄປການຕັ້ງຄ່າ." "ອະນຸຍາດ <b>%1$s</b> ໃຫ້ເຂົ້າເຖິງຂໍ້ມູນເຊັນເຊີກ່ຽວກັບສັນຍານຊີບຂອງທ່ານບໍ?" + "ອະນຸຍາດໃຫ້ <b>%1$s</b> ເຂົ້າເຖິງຂໍ້ມູນເຊັນເຊີກ່ຽວກັບສັນຍານຊີບຂອງທ່ານຢູ່ <b>%2$s</b> ຂອງທ່ານບໍ?" "ເພື່ອເຮັດໃຫ້ແອັບນີ້ເຂົ້າເຖິງຂໍ້ມູນເຊັນເຊີຮ່າງກາຍໄດ້ຕະຫຼອດເວລາ, ເຖິງແມ່ນວ່າທ່ານຈະບໍ່ໄດ້ກຳລັງໃຊ້ແອັບຢູ່ກໍຕາມ, ""ໃຫ້ເຂົ້າໄປການຕັ້ງຄ່າ." "ສືບຕໍ່ອະນຸຍາດ <b>%1$s</b> ໃຫ້ເຂົ້າເຖິງຂໍ້ມູນເຊັນເຊີຮ່າງກາຍໃນຂະນະທີ່ກຳລັງໃຊ້ແອັບຢູ່ບໍ?" + "ສືບຕໍ່ອະນຸຍາດໃຫ້ <b>%1$s</b> ເຂົ້າເຖິງຂໍ້ມູນເຊັນເຊີຮ່າງກາຍຢູ່ <b>%2$s</b> ຂອງທ່ານໃນລະຫວ່າງທີ່ໃຊ້ແອັບບໍ?" "ອະນຸຍາດໃຫ້ <b>%1$s</b> ສົ່ງການແຈ້ງເຕືອນຫາທ່ານບໍ?" + "ອະນຸຍາດໃຫ້ <b>%1$s</b> ສົ່ງການແຈ້ງເຕືອນຫາທ່ານຢູ່ <b>%2$s</b> ຂອງທ່ານບໍ?" "ສິດອະນຸຍາດທີ່ມີການຄວບຄຸມ" "%1$s ມີສິດເຂົ້າເຖິງສະຖານທີ່" "ອົງກອນຂອງທ່ານອະນຸຍາດ %1$s ໃຫ້ເຂົ້າເຖິງສະຖານທີ່ຂອງທ່ານ" diff --git a/PermissionController/res/values-lt/strings.xml b/PermissionController/res/values-lt/strings.xml index 1c179457d42e047c1c2d18b8c502cb4126046e1a..d7fbc6af81c679cc85d3f6d9d2abcac5282cfdec 100644 --- a/PermissionController/res/values-lt/strings.xml +++ b/PermissionController/res/values-lt/strings.xml @@ -34,6 +34,7 @@ "Daugiau inform." "Leisti viską" "Visada leisti viską" + "Suteikti ribotą prieigą" "Pasirinkti nuotraukas ir vaizdo įrašus" "Pasirinkti daugiau" "Nesirinkti daugiau" @@ -60,6 +61,7 @@ "Programos" "Programų leidimai" "Nenaudojamos programos" + "Redaguoti pasirinktas šios programos nuotraukas" "Nėra nenaudojamų programų" "Nenaudojamų programų: 0" "Nauj. sprendimai dėl leidimų" @@ -455,48 +457,75 @@ "Rodyti padėjėjo aktyviklio aptikimą" "Rodyti piktogramą būsenos juostoje, kai naudojant mikrofoną aktyvinama pagalba balsu" "Suteikti <b>%1$s</b> galimybę pasiekti įrenginio nuotraukas ir mediją?" + "Leisti <b>%1$s</b> pasiekti įrenginio nuotraukas ir mediją jūsų <b>%2$s</b>?" "Leisti <b>%1$s</b> pasiekti kontaktus?" + "Leisti <b>%1$s</b> pasiekti kontaktus jūsų <b>%2$s</b>?" "Leisti programai <b>%1$s</b> pasiekti įrenginio vietovę?" + "Leisti <b>%1$s</b> pasiekti jūsų <b>%2$s</b> vietovės informaciją?" "Programa galės pasiekti vietovę, tik kai ją naudosite" "Leisti programai <b>%1$s</b> pasiekti įrenginio vietovę?" + "Leisti <b>%1$s</b> pasiekti jūsų <b>%2$s vietovės informaciją?" "Ši programa gali norėti pasiekti jūsų vietovę visą laiką, net kai programos nenaudojate. ""Leiskite skiltyje „Nustatymai“." "Pakeisti <b>%1$s</b> prieigą prie vietovės duomenų?" + "Keisti <b>%1$s</b> prieigą prie vietovės jūsų <b>%2$s</b>?" "Ši programa nori pasiekti jūsų vietovę visą laiką, net kai programos nenaudojate. ""Leiskite skiltyje „Nustatymai“." "Leisti <b>%1$s</b> rasti netoliese esančius įrenginius, prisijungti prie jų ir nustatyti apytikslį atstumą?" + "Leisti <b>%1$s</b> rasti apytikslę įrenginių netoliese poziciją, aptikti juos ir prisijungti jūsų <b>%2$s</b>?" "Leisti <b>%1$s</b> rasti netoliese esančius įrenginius, prisijungti prie jų ir nustatyti apytikslį atstumą? ""Leiskite nustatymuose." "Pakeisti <b>%1$s</b> vietovės pasiekiamumą iš apytikslės į tikslią?" + "Leisti „<b>%1$s</b>“ prieigą prie vietovės informacijos jūsų <b>%2$s</b> iš apytikslės į tikslią?" "Leisti <b>%1$s</b> pasiekti apytikslę šio įrenginio vietovę?" + "Leisti <b>%1$s</b> pasiekti jūsų <b>%2$s</b> apytikslę vietovę?" "Tiksli" "Apytikslė" "Suteikti <b>%1$s</b> galimybę pasiekti kalendorių?" + "Leisti <b>%1$s</b> pasiekti kalendorių jūsų <b>%2$s</b>?" "Leisti <b>%1$s</b> siųsti ir peržiūrėti SMS pranešimus?" + "Leisti <b>%1$s</b> siųsti ir peržiūrėti SMS pranešimus jūsų <b>%2$s</b>?" "Suteikti <b>%1$s</b> galimybę pasiekti įrenginio nuotraukas, mediją ir failus?" + "Leisti <b>%1$s</b> pasiekti nuotraukas, mediją ir failus jūsų <b>%2$s</b>?" "Leisti <b>%1$s</b> pasiekti <b>nuotraukas, vaizdo, garso įrašus ir muziką</b> šiame įrenginyje?" "Leisti <b>%1$s</b> pasiekti <b>nuotrauk., vaizdo, garso įrašus, muziką, kitus failus</b> įrenginyje?" "Leisti <b>%1$s</b> pasiekti muziką ir garso failus šiame įrenginyje?" + "Leisti <b>%1$s</b> pasiekti muziką ir garso failus jūsų <b>%2$s</b>?" "Leisti <b>%1$s</b> pasiekti nuotraukas ir vaizdo įrašus šiame įrenginyje?" + "Leisti <b>%1$s</b> pasiekti nuotraukas ir vaizdo įrašus jūsų <b>%2$s</b>?" "Leisti programai <b>%1$s</b> pasiekti nuotraukas ir vaizdo įrašus šiame įrenginyje?" + "Leisti <b>%1$s</b> pasiekti daugiau nuotraukų ir vaizdo įrašų jūsų <b>%2$s</b>?" "Leisti <b>%1$s</b> įrašyti garsą?" + "Leisti <b>%1$s</b> įrašyti garsą jūsų <b>%2$s</b>?" "Programa galės įrašyti garsą, tik kai ją naudosite" "Leisti <b>%1$s</b> įrašyti garsą?" + "Leisti <b>%1$s</b> įrašyti garsą jūsų <b>%2$s</b>?" "Ši programa gali norėti įrašyti garsą visą laiką, net kai programos nenaudojate. ""Leiskite skiltyje „Nustatymai“." "Pakeisti <b>%1$s</b> prieigą prie mikrofono?" + "Keisti <b>%1$s</b> prieigą prie mikrofono jūsų <b>%2$s</b>?" "Ši programa nori įrašyti garsą visą laiką, net kai programos nenaudojate. ""Leiskite skiltyje „Nustatymai“." "Leisti programai <b>%1$s</b> pasiekti fizinės veiklos duomenis?" + "Leisti <b>%1$s</b> pasiekti fizinės veiklos duomenis jūsų <b>%2$s</b>?" "Leisti <b>%1$s</b> fotografuoti ir įrašyti vaizdo įrašus?" + "Leisti <b>%1$s</b> fotografuoti ir įrašyti vaizdo įrašus jūsų <b>%2$s</b>?" "Programa galės fotografuoti ir įrašyti vaizdo įrašų, tik kai ją naudosite" "Leisti <b>%1$s</b> fotografuoti ir įrašyti vaizdo įrašus?" + "Leisti <b>%1$s</b> fotografuoti ir įrašyti vaizdo įrašus jūsų <b>%2$s</b>?" "Ši programa gali norėti fotografuoti ir įrašyti vaizdo įrašų visą laiką, net kai programos nenaudojate. ""Leiskite skiltyje „Nustatymai“." "Pakeisti <b>%1$s</b> prieigą prie fotoaparato?" + "Keisti <b>%1$s</b> prieigą prie fotoaparato jūsų <b>%2$s</b>?" "Ši programa nori fotografuoti ir įrašyti vaizdo įrašų visą laiką, net kai programos nenaudojate. ""Leiskite skiltyje „Nustatymai“." "Leisti <b>%1$s</b> pasiekti jūsų telefono skambučių žurnalus?" + "Leisti <b>%1$s</b> pasiekti telefonų skambučių žurnalus jūsų <b>%2$s</b>?" "Leisti <b>%1$s</b> skambinti ir tvarkyti telefono skambučius?" + "Leisti <b>%1$s</b> skambinti ir tvarkyti telefonų skambučius jūsų <b>%2$s</b>?" "Suteikti <b>%1$s</b> galimybę pasiekti jutiklių duomenis apie gyvybinius ženklus?" + "Leisti <b>%1$s</b> pasiekti jutiklių duomenis apie gyvybinių funkcijų rodiklius jūsų <b>%2$s</b>?" "Ši programa nori pasiekti jutiklių duomenis apie jūsų gyvybinių funkcijų rodiklius visą laiką, net kai programos nenaudojate. Kad atliktumėte šį pakeitimą, ""eikite į skiltį „Nustatymai“." "Suteikti <b>%1$s</b> galimybę pasiekti jutiklių duomenis apie gyvybinių funkcijų rodiklius?" + "Leisti <b>%1$s</b> pasiekti jutiklių duomenis apie gyvybinių funkcijų rodiklius jūsų <b>%2$s</b>?" "Jei norite leisti šiai programai pasiekti kūno jutiklių duomenis visą laiką, net kai nenaudojate programos, ""eikite į „Nustatymų“ skiltį""." "Toliau leisti programai <b>%1$s</b> pasiekti kūno jutiklių duomenis, kai programa naudojama?" + "Toliau leisti <b>%1$s</b> pasiekti kūno jutiklių duomenis jūsų <b>%2$s</b>, kai programa naudojama?" "Leisti <b>%1$s</b> siųsti jums pranešimus?" + "Leisti <b>%1$s</b> siųsti jums pranešimus jūsų <b>%2$s</b>?" "Valdomi leidimai" "„%1$s“ gali pasiekti vietovę" "Jūsų organizacija leidžia programai „%1$s“ pasiekti jūsų vietovę" diff --git a/PermissionController/res/values-lv/strings.xml b/PermissionController/res/values-lv/strings.xml index 530e2cc6c6b22dfd18afe8124400db57d5e30742..10b79f45db81b8139afb614b5873dc48305e3c7b 100644 --- a/PermissionController/res/values-lv/strings.xml +++ b/PermissionController/res/values-lv/strings.xml @@ -34,6 +34,7 @@ "Informācija" "Atļaut visu" "Vienmēr atļaut visu" + "Atļaut ierobežotu piekļuvi" "Atlasīt fotoattēlus un video" "Atlasīt citus" "Neatlasīt vairāk" @@ -60,6 +61,7 @@ "Lietotnes" "Lietotņu atļaujas" "Neizmantotās lietotnes" + "Rediģēt fotoattēlu atlasi šai lietotnei" "Nav neizmantotu lietotņu" "0 neizmantotu lietotņu" "Nesenās darbības ar atļaujām" @@ -455,48 +457,75 @@ "Rādīt asistenta aktivizētāja noteikšanu" "Rādīt ikonu statusa joslā, kad mikrofons tiek izmantots balss palīga aktivizēšanai" "Vai atļaut lietotnei <b>%1$s</b> piekļūt fotoattēliem un multivides saturam jūsu ierīcē?" + "Vai atļaut lietotnei <b>%1$s</b> piekļūt fotoattēliem un multivides saturam jūsu ierīcē (<b>%2$s</b>)?" "Vai atļaut lietotnei <b>%1$s</b> piekļūt jūsu kontaktpersonām?" + "Vai atļaut lietotnei <b>%1$s</b> piekļūt kontaktpersonām jūsu ierīcē (<b>%2$s</b>)?" "Vai atļaut lietotnei <b>%1$s</b> piekļūt šīs ierīces atrašanās vietai?" + "Vai atļaut lietotnei <b>%1$s</b> piekļūt jūsu ierīces (<b>%2$s</b>) atrašanās vietai?" "Lietotne varēs piekļūt atrašanās vietai tikai tad, kad izmantosiet šo lietotni" "Vai atļaut lietotnei <b>%1$s</b> piekļūt šīs ierīces atrašanās vietai?" + "Vai atļaut lietotnei <b>%1$s</b> piekļūt jūsu ierīces (<b>%2$s) atrašanās vietai?" "Iespējams, šī lietotne vēlēsies piekļūt jūsu atrašanās vietai vienmēr, pat ja neizmantojat lietotni. ""Atļauju varat piešķirt iestatījumos""." "Vai mainīt lietotnei <b>%1$s</b> piekļuvi atrašanās vietai?" + "Vai mainīt atrašanās vietas piekļuves atļauju lietotnei <b>%1$s</b> jūsu ierīcē (<b>%2$s</b>)?" "Šī lietotne vēlas piekļūt jūsu atrašanās vietai vienmēr, pat ja neizmantojat lietotni. ""Atļauju varat piešķirt iestatījumos""." "Vai atļaut <b>%1$s</b> atrast tuvumā esošas ierīces, veidot savienojumus ar tām un noteikt to relatīvo atrašanās vietu?" + "Vai atļaut lietotnei <b>%1$s</b> jūsu ierīcē (<b>%2$s</b>) atrast tuvumā esošas ierīces, veidot savienojumus ar tām un noteikt to relatīvo atrašanās vietu?" "Vai atļaut <b>%1$s</b> atrast tuvumā esošas ierīces, veidot savienojumus ar tām un noteikt to relatīvo atrašanās vietu? ""Varat to atļaut iestatījumos." "Vai mainīt lietotnes <b>%1$s</b> piekļuvi atrašanās vietai no aptuvenās uz precīzo?" + "Vai mainīt lietotnes <b>%1$s</b> atrašanās vietas piekļuves atļauju jūsu ierīcē (<b>%2$s</b>) no aptuvenas uz precīzu?" "Vai atļaut lietotnei <b>%1$s</b> piekļūt aptuvenai šīs ierīces atrašanās vietai?" + "Vai atļaut lietotnei <b>%1$s</b> piekļūt jūsu ierīces (<b>%2$s</b>) aptuvenajai atrašanās vietai?" "Precīza" "Aptuvena" "Vai atļaut lietotnei <b>%1$s</b> piekļūt jūsu kalendāram?" + "Vai atļaut lietotnei <b>%1$s</b> piekļūt kalendāram jūsu ierīcē (<b>%2$s</b>)?" "Vai atļaut lietotnei <b>%1$s</b> sūtīt un skatīt īsziņas?" + "Vai atļaut lietotnei <b>%1$s</b> sūtīt un skatīt īsziņas jūsu ierīcē (<b>%2$s</b>)?" "Vai atļaut lietotnei <b>%1$s</b> piekļūt fotoattēliem, multivides saturam un failiem jūsu ierīcē?" + "Vai atļaut lietotnei <b>%1$s</b> piekļūt fotoattēliem, multivides saturam un failiem jūsu ierīcē (<b>%2$s</b>)?" "Vai atļaut lietotnei <b>%1$s</b> piekļūt <b>foto, video, mūzikai un audio failiem</b> šajā ierīcē?" "Vai atļaut lietotnei <b>%1$s</b> piekļūt <b>foto, video, mūzikai, audio u.c. failiem</b> ierīcē?" "Vai atļaut lietotnei <b>%1$s</b> piekļūt mūzikai un audio failiem šajā ierīcē?" + "Vai atļaut lietotnei <b>%1$s</b> piekļūt mūzikai un audio jūsu ierīcē (<b>%2$s</b>)?" "Vai atļaut lietotnei <b>%1$s</b> piekļūt fotoattēliem un video šajā ierīcē?" + "Vai atļaut lietotnei <b>%1$s</b> piekļūt fotoattēliem un video jūsu ierīcē (<b>%2$s</b>)?" "Vai atļaut lietotnei <b>%1$s</b> piekļūt citiem fotoattēliem un video šajā ierīcē?" + "Vai atļaut lietotnei <b>%1$s</b> piekļūt citiem fotoattēliem un video jūsu ierīcē (<b>%2$s</b>)?" "Vai atļaut lietotnei <b>%1$s</b> ierakstīt audio?" + "Vai atļaut lietotnei <b>%1$s</b> ierakstīt audio jūsu ierīcē (<b>%2$s</b>)?" "Lietotne varēs ierakstīt audio tikai tad, kad izmantosiet lietotni." "Vai atļaut lietotnei <b>%1$s</b> ierakstīt audio?" + "Vai atļaut lietotnei <b>%1$s</b> ierakstīt audio jūsu ierīcē (<b>%2$s</b>)?" "Iespējams, šī lietotne vēlēsies ierakstīt audio vienmēr, pat ja neizmantojat lietotni. ""Atļauju varat piešķirt iestatījumos." "Vai mainīt lietotnei <b>%1$s</b> piekļuvi mikrofonam?" + "Vai mainīt mikrofona piekļuves atļauju lietotnei <b>%1$s</b> jūsu ierīcē (<b>%2$s</b>)?" "Šī lietotne vēlas ierakstīt audio vienmēr, pat ja neizmantojat lietotni. ""Atļauju varat piešķirt iestatījumos." "Vai atļaut lietotnei <b>%1$s</b> piekļūt jūsu fiziskajām aktivitātēm?" + "Vai atļaut lietotnei <b>%1$s</b> piekļūt fizisko aktivitāšu datiem jūsu ierīcē (<b>%2$s</b>)?" "Vai atļaut lietotnei <b>%1$s</b> uzņemt fotoattēlus un ierakstīt videoklipus?" + "Vai atļaut lietotnei <b>%1$s</b> uzņemt attēlus un ierakstīt video jūsu ierīcē (<b>%2$s</b>)?" "Lietotne varēs uzņemt attēlus un ierakstīt videoklipus tikai tad, kad izmantosiet lietotni." "Vai atļaut lietotnei <b>%1$s</b> uzņemt fotoattēlus un ierakstīt videoklipus?" + "Vai atļaut lietotnei <b>%1$s</b> uzņemt attēlus un ierakstīt video jūsu ierīcē (<b>%2$s</b>)?" "Iespējams, šī lietotne vēlēsies uzņemt attēlus un ierakstīt videoklipus vienmēr, pat ja neizmantojat lietotni. ""Atļauju varat piešķirt iestatījumos." "Vai mainīt lietotnei <b>%1$s</b> piekļuvi kamerai?" + "Vai mainīt kameras piekļuves atļauju lietotnei <b>%1$s</b> jūsu ierīcē (<b>%2$s</b>)?" "Šī lietotne vēlas uzņemt attēlus un ierakstīt videoklipus vienmēr, pat ja neizmantojat lietotni. ""Atļauju varat piešķirt iestatījumos." "Vai atļaut lietotnei <b>%1$s</b> piekļūt jūsu tālruņa zvanu žurnāliem?" + "Vai atļaut lietotnei <b>%1$s</b> piekļūt tālruņa zvanu žurnāliem jūsu ierīcē (<b>%2$s</b>)?" "Vai atļaut lietotnei <b>%1$s</b> veikt un pārvaldīt tālruņa zvanus?" + "Vai atļaut lietotnei <b>%1$s</b> veikt un pārvaldīt tālruņa zvanus jūsu ierīcē (<b>%2$s</b>)?" "Vai atļaut lietotnei <b>%1$s</b> piekļūt sensoru uztvertajiem veselības rādījumiem?" + "Vai atļaut lietotnei <b>%1$s</b> piekļūt sensoru datiem par veselības rādījumiem jūsu ierīcē (<b>%2$s</b>)?" "Lietotne pieprasa atļauju piekļūt veselības rādījumu sensoru datiem vienmēr, pat ja neizmantojat lietotni. Lai veiktu šīs izmaiņas, ""pārejiet uz iestatījumiem""." "Vai atļaut lietotnei <b>%1$s</b> piekļūt veselības rādītāju sensoru datiem?" + "Vai atļaut lietotnei <b>%1$s</b> piekļūt sensoru datiem par veselības rādījumiem jūsu ierīcē (<b>%2$s</b>)?" "Lai atļautu šai lietotnei piekļūt ķermeņa sensoru datiem vienmēr (pat tad, kad neizmantojat lietotni), ""pārejiet uz iestatījumiem""." "Vai joprojām atļaut lietotnei <b>%1$s</b> piekļūt ķermeņa sensoru datiem, kad izmantojat lietotni?" + "Vai joprojām atļaut lietotnei <b>%1$s</b> piekļūt ķermeņa sensoru datiem jūsu ierīcē (<b>%2$s</b>), kad izmantojat lietotni?" "Vai atļaut lietotnei <b>%1$s</b> sūtīt jums paziņojumus?" + "Vai atļaut lietotnei <b>%1$s</b> nosūtīt jums paziņojumus jūsu ierīcē (<b>%2$s</b>)?" "Kontrolētās atļaujas" "Lietotnei %1$s ir piekļuve atrašanās vietai" "Jūsu organizācija ļauj lietotnei %1$s piekļūt jūsu atrašanās vietai." diff --git a/PermissionController/res/values-mk/strings.xml b/PermissionController/res/values-mk/strings.xml index d8c542b763df0d5e6c5a3d90fabeb3403dd4c178..3270a4ea6df13fbba3dab9d05dfcc621d6a4fbef 100644 --- a/PermissionController/res/values-mk/strings.xml +++ b/PermissionController/res/values-mk/strings.xml @@ -34,6 +34,7 @@ "Уште информации" "Дозволи за сите" "Секогаш дозволувај ги сите" + "Дозволи ограничен пристап" "Одредени фотографии и видеа" "Изберете повеќе" "Не избирајте повеќе" @@ -60,6 +61,7 @@ "Апликации" "Дозволи за апликации" "Некористени апликации" + "Изберете ги фотографиите до кои ќе има пристап апликацијава" "Нема некористени апликации" "0 некористени апликации" "Неодамнешни одлуки за дозволи" @@ -455,48 +457,75 @@ "Прикажувај го откривањето за активирање на помошникот" "Прикажувај икона во статусната лента кога микрофонот се користи за активирање на гласовниот помошник" "Да се дозволи <b>%1$s</b> да пристапува до фотографии и аудиовизуелни содржини на уредот?" + "Да се дозволи <b>%1$s</b> да пристапува до фотогр. и аудиовизуелните содржини на вашиот <b>%2$s</b>?" "Да се дозволи <b>%1$s</b> да пристапува до контактите?" + "Да се дозволи <b>%1$s</b> да пристапува до контактите на вашиот <b>%2$s</b>?" "Да се дозволи <b>%1$s</b> да пристапува до локацијата на уредов?" + "Да се дозволи <b>%1$s</b> да пристапува до локацијата на вашиот <b>%2$s</b>?" "Апликацијата ќе има пристап до локацијата само додека ја користите" "Да се дозволи <b>%1$s</b> да пристапува до локацијата на уредов?" + "Да се дозволи <b>%1$s</b> да пристапува до локацијата на вашиот <b>%2$s?" "Апликацијава можеби ќе сака да пристапува до вашата локација цело време, дури и кога не ја користите. ""Дозволете во поставките." "Да се промени пристапот до локацијата за <b>%1$s</b>?" + "Да се промени пристапот до локацијата за <b>%1$s</b> на вашиот <b>%2$s</b>?" "Апликацијава сака да пристапува до вашата локација цело време, дури и кога не ја користите. ""Дозволете во поставките." "Да се дозволи <b>%1$s</b> да наоѓа и да се поврзува со уреди во близина и да ја утврдува нивната релативна положба?" + "Да се доз. <b>%1$s</b> да ги наоѓа, да се поврзува со и да ја утврдува рел. позиција на уредите во близ. на <b>%2$s</b>?" "Да се дозволи <b>%1$s</b> да наоѓа и да се поврзува со уреди во близина и да ја утврдува нивната релативна положба? ""Дозволете во „Поставки“." "Да се промени пристапот до локацијата на <b>%1$s</b> од приближна на прецизна?" + "Да се промени пристапот до локацијата на <b>%1$s</b> на вашиот <b>%2$s</b> од приближна на прецизна?" "Да се дозволи <b>%1$s</b> да пристапува до приближната локација на уредов?" + "Да се дозволи <b>%1$s</b> да пристапува до приближната локација на вашиот <b>%2$s</b>?" "Прецизна" "Приближна" "Да се дозволи <b>%1$s</b> да пристапува до календарот?" + "Да се дозволи <b>%1$s</b> да пристапува до календарот на вашиот <b>%2$s</b>?" "Да се дозволи <b>%1$s</b> да испраќа и прегледува SMS-пораки?" + "Да се дозволи <b>%1$s</b> да испраќа и прегледува SMS-пораки на вашиот <b>%2$s</b>?" "Да се дозволи <b>%1$s</b> да пристапува до фотографиите, аудиовизуелните содржини и датотеките на уредот?" + "Да се дозволи <b>%1$s</b> да пристапува до фотогр., аудиовизуел. содржини и датотеките на lt;b>%2$s</b>?" "Да се дозволи <b>%1$s</b> да пристапува до <b>фотографии, видеа, музика и аудио</b> на уредов?" "Да се дозволи <b>%1$s</b> да пристапува до <b>фотографии, видеа, музика, аудио и други датотеки</b> на уредов?" "Да се дозволи <b>%1$s</b> да пристапува до музика и аудиодатотеки на уредов?" + "Да се дозволи <b>%1$s</b> да пристапува до музиката и аудиото на вашиот <b>%2$s</b>?" "Да се дозволи <b>%1$s</b> да пристапува до фотографии и видеа на уредов?" + "Да се дозволи <b>%1$s</b> да пристапува до фотографиите и видеата на вашиот <b>%2$s</b>?" "Да се дозволи <b>%1$s</b> да пристапува до повеќе фотографии и видеа на уредов?" + "Да се дозволи <b>%1$s</b> да пристапува до повеќе фотографии и видеа на вашиот <b>%2$s</b>?" "Да се дозволи <b>%1$s</b> да снима аудио?" + "Да се дозволи <b>%1$s</b> да снима аудио на вашиот <b>%2$s</b>?" "Апликацијава ќе може да снима аудио само додека ја користите" "Да се дозволи <b>%1$s</b> да снима аудио?" + "Да се дозволи <b>%1$s</b> да снима аудио на вашиот <b>%2$s</b>?" "Апликацијава можеби ќе сака да снима аудио цело време, дури и кога не ја користите. ""Дозволете во „Поставки“." "Да се промени пристапот до микрофонот за <b>%1$s</b>?" + "Да се промени пристапот до микрофонот за <b>%1$s</b> на вашиот <b>%2$s</b>?" "Апликацијава сака да снима аудио цело време, дури и кога не ја користите. ""Дозволете во „Поставки“." "Дозволувате ли <b>%1$s</b> да пристапува до вашата физичка активност?" + "Да се дозволи <b>%1$s</b> да пристапува до физичката активност на вашиот <b>%2$s</b>?" "Да се дозволи <b>%1$s</b> да фотографира и да снима видео?" + "Да се дозволи <b>%1$s</b> да фотографира и да снима видео на вашиот <b>%2$s</b>?" "Апликацијава ќе може да снима слики и видеа само додека ја користите" "Да се дозволи <b>%1$s</b> да фотографира и да снима видео?" + "Да се дозволи <b>%1$s</b> да фотографира и да снима видео на вашиот <b>%2$s</b>?" "Апликацијава можеби ќе сака да снима слики и видеа цело време, дури и кога не ја користите. ""Дозволете во „Поставки“." "Да се промени пристапот до камерата за <b>%1$s</b>?" + "Да се промени пристапот за <b>%1$s</b> на вашиот <b>%2$s</b>?" "Апликацијава сака да снима слики и видеа цело време, дури и кога не ја користите. ""Дозволете во „Поставки“." "Да се дозволи <b>%1$s</b> да пристапува до евиденцијата на повици?" + "Да се дозволи <b>%1$s</b> да пристапува до евиденцијата на повици на телефонот на вашиот <b>%2$s</b>?" "Да се дозволи <b>%1$s</b> да упатува телефонски повици и да управува со нив?" + "Да се дозволи <b>%1$s</b> да упатува и да управува со телефонските повици на вашиот <b>%2$s</b>?" "Да се дозволи <b>%1$s</b> да пристапува до податоците на сензорот за витални знаци?" + "Да се дозволи <b>%1$s</b> да пристапува до податоците од сензорите за виталните знаци на <b>%2$s</b>?" "Апликацијава сака да пристапува до податоците од сензорите за вашите витални знаци цело време, дури и кога не се користи. За да го промените ова, ""одете во „Поставки“." "Дали да се дозволи <b>%1$s</b> да пристапува до податоците од сензорите за витални знаци?" + "Да се дозволи <b>%1$s</b> да пристапува до податоците од сензорите за виталните знаци на <b>%2$s</b>?" "За да дозволите апликацијава да пристапува до податоци од телесните сензори цело време, дури и кога не ја користите, ""одете во „Поставки“." "И понатаму да се дозволи пристап на <b>%1$s</b> до податоци од телесните сензори додека се користи апликацијата?" + "Да се продолжи со дозв. прис. на <b>%1$s</b> до под. од тел. сенз. на <b>%2$s</b> дури се користи апл.?" "Да се дозволи <b>%1$s</b> да ви испраќа известувања?" + "Да се дозволи <b>%1$s</b> да ви испраќа известувања на вашиот <b>%2$s</b>?" "Контролирани дозволи" "%1$s има пристап до локацијата" "Вашата организација дозволува %1$s да пристапува до вашата локација" diff --git a/PermissionController/res/values-ml/strings.xml b/PermissionController/res/values-ml/strings.xml index 81cf39cf5d405ad6679ddba80549a40ba5f51c71..2403dc6d31def5799714f170e90b2af03ab9f5dd 100644 --- a/PermissionController/res/values-ml/strings.xml +++ b/PermissionController/res/values-ml/strings.xml @@ -34,6 +34,7 @@ "കൂടുതൽ വിവരങ്ങൾ" "എല്ലാം അനുവദിക്കുക" "എപ്പോഴും എല്ലാം അനുവദിക്കുക" + "പരിമിതമായ ആക്‌സസ് അനുവദിക്കുക" "ഫോട്ടോകളും വീഡിയോകളും തിരഞ്ഞെടുക്കുക" "കൂടുതൽ തിരഞ്ഞെടുക്കുക" "കൂടുതൽ തിരഞ്ഞെടുക്കരുത്" @@ -60,6 +61,7 @@ "ആപ്പുകൾ" "ആപ്പ് അനുമതികൾ" "ഉപയോഗിക്കാത്ത ആപ്പുകൾ" + "ഈ ആപ്പിനായി തിരഞ്ഞെടുത്ത ഫോട്ടോകൾ എഡിറ്റ് ചെയ്യുക" "ഉപയോഗിക്കാത്ത ആപ്പുകൾ ഇല്ല" "ഉപയോഗിക്കാത്ത 0 ആപ്പുകൾ" "സമീപകാല അനുമതി തീരുമാനങ്ങൾ" @@ -455,48 +457,75 @@ "അസിസ്‌റ്റന്റ് ട്രിഗർ കണ്ടെത്തൽ കാണിക്കുക" "ശബ്‌ദ സഹായം സജീവമാക്കാൻ മൈക്രോഫോൺ ഉപയോഗിക്കുമ്പോൾ സ്റ്റാറ്റസ് ബാറിൽ ഐക്കൺ കാണിക്കുക" "നിങ്ങളുടെ ഉപകരണത്തിലെ ഫോട്ടോകളും മീഡിയയും ഫയലുകളും ആക്‌സസ് ചെയ്യാൻ <b> %1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" + "<b>%2$s</b> എന്നതിലെ ഫോട്ടോകളും മീഡിയയും ആക്‌സസ് ചെയ്യാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" "നിങ്ങളുടെ കോണ്‍ടാക്റ്റുകള്‍ ആക്‌സസ് ചെയ്യാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" + "<b>%2$s</b> എന്നതിൽ നിങ്ങളുടെ കോൺടാക്‌റ്റുകൾ ആക്‌സസ് ചെയ്യാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" "ഈ ഉപകരണത്തിന്റെ ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യാൻ <b>%1$s</b> എന്നതിനെ അനുവദിക്കണോ?" + "നിങ്ങളുടെ <b>%2$s</b> എന്നതിന്റെ ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" "നിങ്ങൾ ആപ്പ് ഉപയോഗിക്കുമ്പോൾ മാത്രമേ അതിന് ലൊക്കേഷൻ ആക്‌സസ് ലഭിക്കൂ." "ഈ ഉപകരണത്തിന്റെ ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യാൻ <b>%1$s</b> എന്നതിനെ അനുവദിക്കണോ?" + "നിങ്ങളുടെ <b>%2$s എന്നതിന്റെ ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" "ആപ്പ് ഉപയോഗിക്കാത്തപ്പോൾ പോലും, എല്ലാ സമയത്തും ഈ ആപ്പിന് നിങ്ങളുടെ ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യേണ്ടതുണ്ട്. ""ക്രമീകരണത്തിൽ"" അനുവദിക്കുക." "<b>%1$s</b> എന്നതിന്റെ ലൊക്കേഷൻ ആക്സസ് മാറ്റണോ?" + "നിങ്ങളുടെ <b>%2$s</b> എന്നതിൽ <b>%1$s</b> ആപ്പിനുള്ള ലൊക്കേഷൻ ആക്‌സസ് മാറ്റണോ?" "ആപ്പ് നിങ്ങൾ ഉപയോഗിക്കാത്തപ്പോഴടക്കം, എല്ലാ സമയത്തും ഈ ആപ്പ് നിങ്ങളുടെ ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യാൻ ആഗ്രഹിക്കുന്നു. ""ക്രമീകരണത്തിൽ അനുവദിക്കുക." "സമീപത്തെ ഉപകരണങ്ങൾ കണ്ടെത്താനും കണക്റ്റ് ചെയ്യാനും ആപേക്ഷിക സ്ഥാനം നിർണ്ണയിക്കാനും <b>%1$s</b> എന്നതിനെ അനുവദിക്കണോ?" + "<b>%2$s</b> എന്നതിൽ സമീപ ഉപകരണം കണ്ടെത്താനും കണക്റ്റ് ചെയ്യാനും ആപേക്ഷിക സ്ഥാനം നിർണ്ണയിക്കാനും <b>%1$s</b> -നെ അനുവദിക്കണോ?" "സമീപത്തെ ഉപകരണങ്ങൾ കണ്ടെത്തി കണക്റ്റ് ചെയ്ത് ആപേക്ഷിക സ്ഥാനം നിർണ്ണയിക്കാൻ <b>%1$s</b> എന്നതിനെ അനുവദിക്കണോ? ""ക്രമീകരണത്തിൽ അനുവദിക്കുക." "<b>%1$s</b> എന്നതിന്റെ ലൊക്കേഷൻ ആക്‌സസ് \'ഏകദേശം\' എന്നതിൽ നിന്ന് \'കൃത്യമായത്\' എന്നതിലേക്ക് മാറ്റണോ?" + "നിങ്ങളുടെ <b>%2$s</b> എന്നതിൽ <b>%1$s</b> ആപ്പിന്റെ ലൊക്കേഷൻ ആക്‌സസ്, ഏകദേശം എന്നതിൽ നിന്ന് കൃത്യം എന്നതായി മാറ്റണോ?" "ഈ ഉപകരണത്തിന്റെ ഏകദേശ ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യാൻ <b>%1$s</b> എന്നതിനെ അനുവദിക്കണോ?" + "<b>%2$s</b> എന്നതിന്റെ ഏകദേശ ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" "കൃത്യമായത്" "ഏകദേശം" "നിങ്ങളുടെ കലണ്ടർ ആക്‌സസ് ചെയ്യാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" + "<b>%2$s</b> എന്നതിൽ നിങ്ങളുടെ കലണ്ടർ ആക്‌സസ് ചെയ്യാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" "SMS സന്ദേശങ്ങൾ അയയ്ക്കാനും കാണാനും <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" + "നിങ്ങളുടെ <b>%2$s</b> എന്നതിൽ SMS സന്ദേശങ്ങൾ അയയ്ക്കാനും കാണാനും <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" "നിങ്ങളുടെ ഉപകരണത്തിലെ ഫോട്ടോകളും മീഡിയയും ഫയലുകളും ആക്‌സസ് ചെയ്യാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" + "<b>%2$s</b> എന്നതിലെ ഫോട്ടോകളും മീഡിയയും ഫയലുകളും ആക്‌സസ് ചെയ്യാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" "ഇതിലെ </b>ഫോട്ടോകൾ, വീഡിയോ, സംഗീതം, ഓഡിയോ</b> എന്നിവ ആക്സസ് ചെയ്യാൻ <b>%1$s</b> എന്നതിനെ അനുവദിക്കണോ?" "<b>ഫോട്ടോ, വീഡിയോ, സംഗീതം, ഓഡിയോ, മറ്റ് ഫയലുകൾ</b> എന്നിവയിലേക്ക് <b>%1$s</b> എന്നതിന് ആക്സസ് നൽകണോ?" "ഈ ഉപകരണത്തിലെ സംഗീതവും ഓഡിയോയും ആക്സസ് ചെയ്യാൻ <b>%1$s</b> എന്നതിനെ അനുവദിക്കണോ?" + "നിങ്ങളുടെ <b>%2$s</b> എന്നതിൽ സംഗീതവും ഓഡിയോയും ആക്സസ് ചെയ്യാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" "ഈ ഉപകരണത്തിലെ ഫോട്ടോകളും വീഡിയോകളും ആക്‌സസ് ചെയ്യാൻ <b> %1$s</b> എന്നതിനെ അനുവദിക്കണോ?" + "<b>%2$s</b> എന്നതിൽ ഫോട്ടോകളും വീഡിയോകളും ആക്‌സസ് ചെയ്യാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" "ഈ ഉപകരണത്തിലെ കൂടുതൽ ഫോട്ടോകളും വീഡിയോകളും ആക്‌സസ് ചെയ്യാൻ <b>%1$s</b> എന്നതിനെ അനുവദിക്കണോ?" + "<b>%2$s</b> എന്നതിൽ കൂടുതൽ ഫോട്ടോകളും വീഡിയോകളും ആക്‌സസ് ചെയ്യാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" "ഓഡിയോ റെക്കോർഡ് ചെയ്യാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" + "നിങ്ങളുടെ <b>%2$s</b> എന്നതിൽ ഓഡിയോ റെക്കോർഡ് ചെയ്യാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" "നിങ്ങൾ ആപ്പ് ഉപയോഗിക്കുമ്പോൾ മാത്രമേ അതിന് ഓഡിയോ റെക്കോർഡ് ചെയ്യാൻ കഴിയൂ" "ഓഡിയോ റെക്കോർഡ് ചെയ്യാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" + "നിങ്ങളുടെ <b>%2$s</b> എന്നതിൽ ഓഡിയോ റെക്കോർഡ് ചെയ്യാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" "നിങ്ങൾ ആപ്പ് ഉപയോഗിക്കാത്തപ്പോൾ പോലും ഈ ആപ്പിന് എപ്പോഴും ഓഡിയോ റെക്കോർഡ് ചെയ്യേണ്ടതുണ്ട്. ""ക്രമീകരണത്തിൽ അനുവദിക്കുക." "<b>%1$s</b> എന്നതിനുള്ള മൈക്രോഫോൺ ആക്സസ് മാറ്റണോ?" + "നിങ്ങളുടെ <b>%2$s</b> എന്നതിൽ <b>%1$s</b> ആപ്പിനുള്ള മൈക്രോഫോൺ ആക്‌സസ് മാറ്റണോ?" "നിങ്ങൾ ആപ്പ് ഉപയോഗിക്കാത്തപ്പോൾ പോലും ഈ ആപ്പിന് എപ്പോഴും ഓഡിയോ റെക്കോർഡ് ചെയ്യണം. ""ക്രമീകരണത്തിൽ അനുവദിക്കുക." "<b>%1$s</b> എന്നതിനെ നിങ്ങളുടെ കായിക പ്രവർത്തനം ആക്‌സസ് ചെയ്യാൻ അനുവദിക്കണോ?" + "<b>%2$s</b> എന്നതിൽ നിങ്ങളുടെ ശാരീരിക ആക്റ്റിവിറ്റി ആക്സസ് ചെയ്യാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" "ചിത്രം എടുക്കാനും വീഡിയോ റെക്കോർഡ് ചെയ്യാനും <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" + "<b>%2$s</b> എന്നതിൽ ചിത്രമെടുക്കാനും വീഡിയോ റെക്കോർഡ് ചെയ്യാനും <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" "നിങ്ങൾ ആപ്പ് ഉപയോഗിക്കുമ്പോൾ മാത്രമേ അതിന് ചിത്രങ്ങളെടുക്കാനും വീഡിയോ റെക്കോർഡ് ചെയ്യാൻ കഴിയൂ" "ചിത്രം എടുക്കാനും വീഡിയോ റെക്കോർഡ് ചെയ്യാനും <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" + "<b>%2$s</b> എന്നതിൽ ചിത്രമെടുക്കാനും വീഡിയോ റെക്കോർഡ് ചെയ്യാനും <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" "നിങ്ങൾ ആപ്പ് ഉപയോഗിക്കാത്തപ്പോൾ പോലും, ഈ ആപ്പിന് വീഡിയോ റെക്കോർഡ് ചെയ്യുക, ചിത്രമെടുക്കുക എന്നിവ ചെയ്യേണ്ടതുണ്ട്. ""ക്രമീകരണത്തിൽ അനുവദിക്കുക." "<b>%1$s</b> എന്നതിനുള്ള ക്യാമറാ ആക്സസ് മാറ്റണോ?" + "നിങ്ങളുടെ <b>%2$s</b> എന്നതിൽ <b>%1$s</b> ആപ്പിനുള്ള ക്യാമറ ആക്‌സസ് മാറ്റണോ?" "നിങ്ങൾ ആപ്പ് ഉപയോഗിക്കാത്തപ്പോൾ പോലും, ഈ ആപ്പിന് വീഡിയോ റെക്കോർഡ് ചെയ്യുക, ചിത്രമെടുക്കുക എന്നിവ ചെയ്യണം. ""ക്രമീകരണത്തിൽ അനുവദിക്കുക." "നിങ്ങളുടെ ഫോൺ കോൾ ലോഗുകൾ ആക്സസ് ചെയ്യാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" + "<b>%2$s</b> എന്നതിൽ നിങ്ങളുടെ ഫോൺ കോൾ ചരിത്രം ആക്‌സസ് ചെയ്യാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" "ഫോൺ കോളുകൾ ചെയ്യാനും അവ മാനേജ് ചെയ്യാനും <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" + "നിങ്ങളുടെ <b>%2$s</b> എന്നതിൽ ഫോൺ കോളുകൾ ചെയ്യാനും അവ മാനേജ് ചെയ്യാനും %1$s ആപ്പിനെ അനുവദിക്കണോ?" "നിങ്ങളുടെ പ്രധാന ആരോഗ്യ വിവരങ്ങളുടെ സെൻസർ ഡാറ്റ ആക്‌സസ് ചെയ്യാൻ <b>%1$s</b> എന്നതിനെ അനുവദിക്കണോ?" + "<b>%2$s</b> എന്നതിൽ പ്രധാന ആരോഗ്യ വിവര സെൻസർ ഡാറ്റ ആക്സസ് ചെയ്യാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" "ആപ്പ് ഉപയോഗിക്കാത്തപ്പോൾ പോലും, നിങ്ങളുടെ പ്രധാന ആരോഗ്യ വിവര സൂചനകൾ സംബന്ധിച്ച സെൻസർ ഡാറ്റ ഈ ആപ്പിന് എപ്പോഴും ആക്‌സസ് ചെയ്യേണ്ടി വന്നേക്കാം. ഇത് മാറ്റാൻ, ""ക്രമീകരണത്തിലേക്ക് പോകുക""." "നിങ്ങളുടെ പ്രധാന ആരോഗ്യ വിവരങ്ങളുടെ സെൻസർ ഡാറ്റ ആക്സസ് ചെയ്യാൻ <b>%1$s</b> എന്നതിനെ അനുവദിക്കണോ?" + "<b>%2$s</b> എന്നതിൽ പ്രധാന ആരോഗ്യ വിവര സെൻസർ ഡാറ്റ ആക്സസ് ചെയ്യാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" "നിങ്ങൾ ആപ്പ് ഉപയോഗിക്കാത്ത സമയത്ത് ഉൾപ്പെടെ, എല്ലായ്‌പ്പോഴും ബോഡി സെൻസർ ഡാറ്റ ആക്‌സസ് ചെയ്യാൻ ഈ ആപ്പിനെ അനുവദിക്കുന്നതിന് ""ക്രമീകരണത്തിലേക്ക് പോകുക." "ആപ്പ് ഉപയോഗിക്കുമ്പോഴും ബോഡി സെൻസർ ഡാറ്റ ആക്‌സസ് ചെയ്യാൻ <b>%1$s</b> എന്നതിനെ അനുവദിക്കുന്നത് തുടരണോ?" + "<b>%2$s</b> എന്നതിൽ ബോഡി സെൻസർ ഡാറ്റ ആക്‌സസ് ചെയ്യാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കുന്നത് ആപ്പ് ഉപയോഗിക്കുമ്പോഴും തുടരണോ?" "നിങ്ങൾക്ക് അറിയിപ്പുകൾ അയയ്ക്കാൻ <b>%1$s</b> എന്നതിനെ അനുവദിക്കണോ?" + "<b>%2$s</b> എന്നതിൽ നിങ്ങൾക്ക് അറിയിപ്പുകൾ അയയ്ക്കാൻ <b>%1$s</b> ആപ്പിനെ അനുവദിക്കണോ?" "നിയന്ത്രിത അനുമതികൾ" "%1$s എന്നതിന് ലൊക്കേഷൻ ആക്‌സസ് ഉണ്ട്" "നിങ്ങളുടെ ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യാൻ നിങ്ങളുടെ സ്ഥാപനം %1$s എന്നതിനെ അനുവദിക്കുന്നു" diff --git a/PermissionController/res/values-mn/strings.xml b/PermissionController/res/values-mn/strings.xml index 3332fe45086097d1086319e1ee9bcc34123928a8..8896ef931da353fd6fe0aac81ddd111c8434e0e8 100644 --- a/PermissionController/res/values-mn/strings.xml +++ b/PermissionController/res/values-mn/strings.xml @@ -34,6 +34,7 @@ "Дэлгэрэнгүй мэдээлэл" "Бүгдийг зөвшөөрөх" "Бүгдийг үргэлж зөвшөөрөх" + "Хязгаарлагдмал хандалтыг зөвшөөрөх" "Зураг болон видеонуудыг сонгох" "Илүү ихийг сонгох" "Нэмж өгөгдөл сонгохгүй" @@ -60,6 +61,7 @@ "Аппууд" "Аппын зөвшөөрөл" "Ашиглаагүй аппууд" + "Энэ аппад сонгосон зургуудыг засна уу" "Ашиглаагүй апп байхгүй байна" "0 ашиглаагүй апп" "Саяхны зөвшөөрлийн шийдвэр" @@ -455,48 +457,75 @@ "Туслахын өдөөгч илрүүлэлтийг харуулах" "Дуут туслахыг идэвхжүүлэхийн тулд микрофоныг ашиглах үед статус самбарт дүрс тэмдэг харуулах" "<b>%1$s</b>-д төхөөрөмжийнхөө зураг болон медиад хандахыг зөвшөөрөх үү?" + "<b>%1$s</b>-д таны <b>%2$s</b> дээрх зураг болон медиад хандахыг зөвшөөрөх үү?" "<b>%1$s</b>-д таны харилцагчид хандахыг зөвшөөрөх үү?" + "<b>%1$s</b>-д таны <b>%2$s</b> дээрх харилцагчдад хандахыг зөвшөөрөх үү?" "<b>%1$s</b>-д энэ төхөөрөмжийн байршилд хандахыг зөвшөөрөх үү?" + "<b>%1$s</b>-д таны <b>%2$s’s</b>-н байршилд хандахыг зөвшөөрөх үү?" "Та тухайн аппыг ашиглаж байгаа үед энэ нь зөвхөн байршилд хандах эрхтэй болно" "<b>%1$s</b>-д энэ төхөөрөмжийн байршилд хандахыг зөвшөөрөх үү?" + "<b>%1$s</b>-д таны <b>%2$s-н байршилд хандахыг зөвшөөрөх үү?" "Энэ апп нь таныг апп ашиглаагүй байх үед ч таны байршилд үргэлж хандах хүcэлтэй байж болзошгүй. ""Тохиргоо хэсгээс зөвшөөрнө үү." "<b>%1$s</b>-д зориулж байршлын хандалтыг өөрчлөх үү?" + "<b>%1$s</b>-н таны <b>%2$s</b> дээрх байршлын хандалтыг өөрчлөх үү?" "Энэ апп нь таныг апп ашиглаагүй байх үед ч таны байршилд үргэлж хандах хүcэлтэй байна. ""Тохиргоо хэсгээс зөвшөөрнө үү." "<b>%1$s</b>-д ойр төхөөрөмжүүдийг илрүүлж, тэдгээрт холбогдож, харгалзах байршлыг нь тодорхойлохыг зөвшөөрөх үү?" + "<b>%1$s</b>-д таны <b>%2$s</b> дээрх ойролцоох төхөөрөмжүүдийн хамааралтай байршлыг олох, үүнд холбогдох болон үүнийг тодорхойлохыг зөвшөөрөх үү?" "<b>%1$s</b>-д ойр төхөөрөмжүүдийг илрүүлж, тэдгээрт холбогдож, харгалзах байршлыг нь тодорхойлохыг зөвшөөрөх үү? ""Тохиргоо хэсэгт зөвшөөрнө үү." "<b>%1$s</b>-н байршлын хандалтыг барагцаалснаас нарийвчилсан болгож өөрчлөх үү?" + "<b>%1$s</b>-н таны <b>%2$s</b> дээрх байршлын хандалтыг барагцаалснаас нарийвчилсан болгож өөрчлөх үү?" "<b>%1$s</b>-д энэ төхөөрөмжийн барагцаалсан байршилд хандахыг зөвшөөрөх үү?" + "<b>%1$s</b>-д таны <b>%2$s</b>-н барагцаалсан байршилд хандахыг зөвшөөрөх үү?" "Нарийвчилсан" "Барагцаалсан" "<b>%1$s</b>-д таны календарьт хандахыг зөвшөөрөх үү?" + "<b>%1$s</b>-д таны <b>%2$s</b> дээрх календарьт хандахыг зөвшөөрөх үү?" "<b>%1$s</b>-д SMS мессеж илгээх болон харахыг зөвшөөрөх үү?" + "<b>%1$s</b>-д таны <b>%2$s</b> дээр SMS мессеж илгээх болон харахыг зөвшөөрөх үү?" "<b>%1$s</b>-д таны төхөөрөмжийн зураг, медиа болон файлд хандахыг зөвшөөрөх үү?" + "<b>%1$s</b>-д таны <b>%2$s</b> дээрх зураг, медиа болон файлд хандахыг зөвшөөрөх үү?" "<b>%1$s</b>-д энэ төхөөрөмж дээрх <b>зураг, видео, хөгжим болон аудионд</b> хандахыг зөвшөөрөх үү?" "<b>%1$s</b>-д энэ төхөөрөмжийн <b>зураг, видео, хөгжим, аудио, бусад файлд</b> хандахыг зөвшөөрөх үү?" "<b>%1$s</b>-д энэ төхөөрөмж дээрх хөгжим болон аудионд хандахыг зөвшөөрөх үү?" + "<b>%1$s</b>-д таны <b>%2$s</b> дээрх хөгжим болон аудионд хандахыг зөвшөөрөх үү?" "<b>%1$s</b>-д энэ төхөөрөмж дээрх зураг болон видеонд хандахыг зөвшөөрөх үү?" + "<b>%1$s</b>-д таны <b>%2$s</b> дээрх зураг болон видеонд хандахыг зөвшөөрөх үү?" "<b>%1$s</b>-д энэ төхөөрөмж дээрх бусад зураг болон видеонд хандахыг зөвшөөрөх үү?" + "<b>%1$s</b>-д таны <b>%2$s</b> дээрх бусад зураг, видеонд хандахыг зөвшөөрөх үү?" "<b>%1$s</b>-д аудио бичихийг зөвшөөрөх үү?" + "<b>%1$s</b>-д таны <b>%2$s</b> дээр аудио бичихийг зөвшөөрөх үү?" "Энэ апп зөвхөн таныг ашиглаж байх үед л аудио бичих боломжтой болно" "<b>%1$s</b>-д аудио бичихийг зөвшөөрөх үү?" + "<b>%1$s</b>-д таны <b>%2$s</b> дээр аудио бичихийг зөвшөөрөх үү?" "Та аппыг ашиглаагүй үед ч энэ апп үргэлж аудио бичихийг хүсэж болзошгүй. ""Тохиргоонд зөвшөөрнө үү." "<b>%1$s</b>-н микрофоны хандалтыг өөрчлөх үү?" + "<b>%1$s</b>-н таны <b>%2$s</b> дээрх микрофоны хандалтыг өөрчлөх үү?" "Та аппыг ашиглаагүй үед ч энэ апп үргэлж аудио бичихийг хүснэ. ""Тохиргоонд зөвшөөрнө үү." "<b>%1$s</b>-д таны биеийн дасгал хөдөлгөөнд хандахыг зөвшөөрөх үү?" + "<b>%1$s</b>-д таны <b>%2$s</b> дээрх биеийн дасгал, хөдөлгөөнд хандахыг зөвшөөрөх үү?" "<b>%1$s</b>-д зураг авах, видео бичихийг зөвшөөрөх үү?" + "<b>%1$s</b>-д таны <b>%2$s</b> дээр зураг авч, видео бичихийг зөвшөөрөх үү?" "Энэ апп зөвхөн таныг ашиглаж байх үед л зураг авж, видео бичих боломжтой болно" "<b>%1$s</b>-д зураг авах, видео бичихийг зөвшөөрөх үү?" + "<b>%1$s</b>-д таны <b>%2$s</b> дээр зураг авч, видео бичихийг зөвшөөрөх үү?" "Та аппыг ашиглаагүй үед ч энэ апп үргэлж зураг авж, видео бичихийг хүсэж болзошгүй. ""Тохиргоонд зөвшөөрнө үү." "<b>%1$s</b>-н камерын хандалтыг өөрчлөх үү?" + "<b>%1$s</b>-н таны <b>%2$s</b> дээрх камерын хандалтыг өөрчлөх үү?" "Та аппыг ашиглаагүй үед ч энэ апп үргэлж зураг авж, видео бичихийг хүснэ. ""Тохиргоонд зөвшөөрнө үү." "<b>%1$s</b>-д таны утасны дуудлагын жагсаалтад хандахыг зөвшөөрөх үү?" + "<b>%1$s</b>-д таны <b>%2$s</b> дээрх утасны дуудлагын жагсаалтад хандахыг зөвшөөрөх үү?" "<b>%1$s</b>-д утасны дуудлага хийх, дуудлага удирдахыг зөвшөөрөх үү?" + "<b>%1$s</b>-д таны <b>%2$s</b> дээр утасны дуудлага хийх болон дуудлагыг удирдахыг зөвшөөрөх үү?" "<b>%1$s</b>-д таны биеийн ерөнхий байдлын үзүүлэлтүүдийн мэдрэгчийн өгөгдөлд хандахыг зөвшөөрөх үү?" + "<b>%1$s</b>-д таны <b>%2$s</b> дээрх биеийн ерөнхий үзүүлэлтийн мэдрэгчийн өгөгдөлд хандахыг зөвшөөрөх үү?" "Аппыг ашиглаагүй үед ч энэ нь таны биеийн ерөнхий байдлын үзүүлэлтүүдийн талаарх мэдрэгчийн өгөгдөлд үргэлж хандахыг хүсэж байна. Энэ өөрчлөлтийг хийхийн тулд ""тохиргоо руу очно уу." "<b>%1$s</b>-д таны биеийн ерөнхий байдлын үзүүлэлтүүдийн талаарх мэдрэгчийн өгөгдөлд хандахыг зөвшөөрөх үү?" + "<b>%1$s</b>-д таны <b>%2$s</b> дээрх биеийн ерөнхий үзүүлэлтийн мэдрэгчийн өгөгдөлд хандахыг зөвшөөрөх үү?" "Та аппыг ашиглаагүй байсан ч ямар ч үед энэ аппын биеийн мэдрэгчийн өгөгдөлд хандахыг зөвшөөрөх бол ""тохиргоо руу очно уу." "Аппыг ашиглаж байх үедээ <b>%1$s</b>-г биеийн мэдрэгчийн өгөгдөлд хандахыг үргэлжлүүлэн зөвшөөрөх үү?" + "Аппыг ашиглаж байх үед <b>%1$s</b>-д таны <b>%2$s</b> дээрх биеийн мэдрэгчийн өгөгдөлд хандахыг үргэлжлүүлэн зөвшөөрөх үү?" "<b>%1$s-</b>-д танд мэдэгдэл илгээхийг зөвшөөрөх үү?" + "<b>%1$s</b>-д таны <b>%2$s</b> дээр мэдэгдэл илгээхийг зөвшөөрөх үү?" "Хяналттай зөвшөөрөл" "%1$s байршилд хандах эрхтэй байна" "Танай байгууллага %1$s-д байршилд тань хандахыг зөвшөөрдөг" diff --git a/PermissionController/res/values-mr/strings.xml b/PermissionController/res/values-mr/strings.xml index 18eccb6a77cffd52faea26b0b1cb245a9dac7b4c..f8757e5cf60072c245c0e874d6921be6e92cfa9a 100644 --- a/PermissionController/res/values-mr/strings.xml +++ b/PermissionController/res/values-mr/strings.xml @@ -34,6 +34,7 @@ "अधिक माहिती" "सर्वांना अनुमती द्या" "नेहमी सर्वांना अनुमती द्या" + "मर्यादित अ‍ॅक्सेसची अनुमती द्या" "फोटो आणि व्हिडिओ निवडा" "आणखी निवडा" "आणखी निवडू नका" @@ -60,6 +61,7 @@ "अ‍ॅप्स" "अ‍ॅप परवानग्या" "न वापरलेली अ‍ॅप्स" + "या अ‍ॅपसाठी निवडलेले फोटो संपादित करा" "न वापरलेली कोणतीही ॲप्स नाहीत" "न वापरलेली शून्य अ‍ॅप्स" "अलीकडील परवानगीसंबंधित निर्णय" @@ -455,48 +457,75 @@ "असिस्टंट ट्रिगर डिटेक्शन दाखवा" "व्हॉइस असिस्टंट अ‍ॅक्टिव्हेट करण्यासाठी मायक्रोफोन वापरला जाईल तेव्हा स्टेटस बारमध्ये आयकन दाखवा" "<b>%1$s</b> ला तुमच्या डिव्हाइसवरील फोटो आणि मीडिया अ‍ॅक्सेस करू द्यायचा?" + "<b>%1$s</b> ला तुमच्या <b>%2$s</b> वर फोटो आणि मीडिया अ‍ॅक्सेस करण्याची अनुमती द्यायची आहे का?" "<b>%1$s</b> ला तुमचे संपर्क अ‍ॅक्सेस करू द्यायचे?" + "<b>%1$s</b> ला तुमच्या <b>%2$s</b> वर तुमचे संपर्क अ‍ॅक्सेस करण्याची अनुमती द्यायची आहे का?" "<b>%1$s</b> ला या डिव्हाइसचे स्थान ॲक्सेस करू द्यायचे आहे का?" + "<b>%1$s</b> ला तुमच्या <b>%2$s</b> चे स्थान अ‍ॅक्सेस करण्याची अनुमती द्यायची आहे का?" "तुम्ही अ‍ॅप वापरत असताना अ‍ॅपला फक्त स्थानाचा अ‍ॅक्सेस असेल" "<b>%1$s</b> ला या डिव्हाइसचे स्थान ॲक्सेस करू द्यायचे आहे का?" + "<b>%1$s</b> ला <b>%2$s चे स्थान अ‍ॅक्सेस करण्याची अनुमती द्यायची आहे का?" "तुम्ही अ‍ॅप वापरत नसतानादेखील कदाचित या ॲपला नेहमी तुमचे स्थान ॲक्सेस करायचे आहे.""सेटिंग्जमधून अनुमती द्या." "<b>%1$s</b> चा स्थान ॲक्सेस बदलायचा आहे का?" + "तुमच्या <b>%2$s</b> वर <b>%1$s</b> चा स्थान अ‍ॅक्सेस बदलायचा आहे का?" "तुम्ही अ‍ॅप वापरत नसतानादेखील या ॲपला नेहमी तुमचे स्थान ॲक्सेस करायचे आहे. ""सेटिंग्जमधून अनुमती द्या." "<b>%1$s</b> ला जवळील डिव्हाइस शोधण्याची, त्यांच्याशी कनेक्ट व त्यांचे संबंधित स्थान निर्धारित करण्याची अनुमती द्यायची का?" + "<b>%1$s</b> ला तुमच्या <b>%2$s</b> वर जवळची डिव्हाइस शोधू, त्यांच्याशी कनेक्ट करू व त्यांचे संबंधित स्थान ठरवू द्यायचे?" "<b>%1$s</b> ला जवळील डिव्हाइस शोधण्याची, त्यांच्याशी कनेक्ट व त्यांचे संबंधित स्थान निर्धारित करण्याची अनुमती द्यायची का? ""सेटिंग्जमध्ये अनुमती द्या." "<b>%1$s</b> च्या स्थानाचा अ‍ॅक्सेस अंदाजेवरून अचूकवर बदलायचा आहे का?" + "तुमच्या <b>%2$s</b> वर <b>%1$s</b> च्या स्थानाचा अ‍ॅक्सेस अंदाजे यावरून अचूक यावर बदलायचा आहे का?" "<b>%1$s</b> ला या डिव्हाइसचे अंदाजे स्थान ॲक्सेस करू द्यायचे आहे का?" + "<b>%1$s</b> ला तुमच्या <b>%2$s</b> चे अंदाजे स्थान अ‍ॅक्सेस करण्याची अनुमती द्यायची आहे का?" "अचूक" "अंदाजे" "<b>%1$s</b> ला तुमचे कॅलेंडर अ‍ॅक्सेस करू द्यायचे?" + "<b>%1$s</b> ला तुमच्या <b>%2$s</b> वर तुमचे कॅलेंडर अ‍ॅक्सेस करण्याची अनुमती द्यायची आहे का?" "<b>%1$s</b> ला एसएमएस पाठवू आणि पाहू द्यायचे?" + "<b>%1$s</b> ला तुमच्या <b>%2$s</b> वर एसएमएस मेसेज पाठवण्याची आणि पाहण्याची अनुमती द्यायची आहे का?" "<b>%1$s</b> ला तुमच्या डिव्हाइसवरील फोटो, मीडिया आणि फाइल अ‍ॅक्सेस करू द्यायच्या?" + "<b>%1$s</b> ला तुमच्या <b>%2$s</b> वर फोटो, मीडिया आणि व्हिडिओ अ‍ॅक्सेस करण्याची अनुमती द्यायची आहे का?" "<b>%1$s</b> ला या डिव्हाइसवरील <b>फोटो, व्हिडिओ, संगीत आणि ऑडिओ</b> अ‍ॅक्सेस करू द्यायचा आहे का?" "<b>%1$s</b> ला या डिव्हाइसवरील <b>फोटो, व्हिडिओ, संगीत, ऑडिओ व इतर फाइल</b> अ‍ॅक्सेस करू द्यायच्या?" "<b>%1$s</b> ला या डिव्हाइसवरील संगीत आणि ऑडिओ अ‍ॅक्सेस करण्याची अनुमती द्यायची आहे का?" + "<b>%1$s</b> ला तुमच्या <b>%2$s</b> वर संगीत आणि ऑडिओ अ‍ॅक्सेस करण्याची अनुमती द्यायची आहे का?" "<b>%1$s</b> ला या डिव्हाइसवरील फोटो आणि व्हिडिओ अ‍ॅक्सेस करण्याची अनुमती द्यायची आहे का?" + "<b>%1$s</b> ला तुमच्या <b>%2$s</b> वर फोटो आणि व्हिडिओ अ‍ॅक्सेस करण्याची अनुमती द्यायची आहे का?" "<b>%1$s</b> ला या डिव्हाइसवरील अधिक फोटो आणि व्हिडिओ अ‍ॅक्सेस करण्याची अनुमती द्यायची आहे का?" + "<b>%1$s</b> ला तुमच्या <b>%2$s</b> वर आणखी फोटो आणि व्हिडिओ अ‍ॅक्सेस करण्याची अनुमती द्यायची आहे का?" "<b>%1$s</b> ला ऑडिओ रेकॉर्ड करू द्यायचा?" + "<b>%1$s</b> ला तुमच्या <b>%2$s</b> वर ऑडिओ रेकॉर्ड करण्याची अनुमती द्यायची आहे का?" "ॲप फक्त तुम्ही ॲप वापरत असतानाच ऑडिओ रेकॉर्ड करू शकते" "<b>%1$s</b> ला ऑडिओ रेकॉर्ड करायची अनुमती द्यायची?" + "<b>%1$s</b> ला तुमच्या <b>%2$s</b> वर ऑडिओ रेकॉर्ड करण्याची अनुमती द्यायची आहे का?" "हे ॲप तुम्ही ॲप वापरत नसतानादेखील ऑडिओ नेहमी रेकॉर्ड करू शकते. ""सेटिंग्जमध्ये अनुमती द्या." "<b>%1$s</b> चा मायक्रोफोनचा ॲक्सेस बदलायचा?" + "तुमच्या <b>%2$s</b> वर <b>%1$s</b> चा मायक्रोफोन अ‍ॅक्सेस बदलायचा आहे का?" "हे ॲप तुम्ही ॲप वापरत नसतानादेखील नेहमी ऑडिओ रेकॉर्ड करू शकते. ""सेटिंग्जमध्ये अनुमती द्या." "<b>%1$s</b> ला तुमची शारीरिक अ‍ॅक्टिव्हिटी अ‍ॅक्सेस करण्याची अनुमती द्यायची का?" + "<b>%1$s</b> ला तुमच्या <b>%2$s</b> वर तुमची शारीरिक अ‍ॅक्टिव्हिटी अ‍ॅक्सेस करू द्यायची आहे का?" "<b>%1$s</b> ला फोटो काढू आणि व्हिडिओ रेकॉर्ड करू द्यायचे?" + "<b>%1$s</b> ला तुमच्या <b>%2$s</b> वर फोटो घेण्याची आणि व्हिडिओ रेकॉर्ड करण्याची अनुमती द्यायची आहे का?" "ॲप फक्त तुम्ही ॲप वापरत असतानाच फोटो काढू शकते आणि व्हिडिओ रेकॉर्ड करू शकते" "<b>%1$s</b> ला फोटो काढायची आणि व्हिडिओ रेकॉर्ड करायची अनुमती द्यायची?" + "<b>%1$s</b> ला तुमच्या <b>%2$s</b> वर फोटो घेण्याची आणि व्हिडिओ रेकॉर्ड करण्याची अनुमती द्यायची आहे का?" "हे ॲप तुम्ही ॲप वापरत नसतानादेखील नेहमी फोटो काढू शकते आणि व्हिडिओ रेकॉर्ड करू शकते.""सेटिंग्जमध्ये अनुमती द्या." "<b>%1$s</b> चा कॅमेऱ्याचा अ‍ॅक्सेस बदलायचा?" + "तुमच्या <b>%2$s</b> वर <b>%1$s</b> चा कॅमेरा अ‍ॅक्सेस बदलायचा आहे का?" "हे ॲप तुम्ही ॲप वापरत नसतानादेखील नेहमी फोटो काढू शकते आणि व्हिडिओ रेकॉर्ड करू शकते. ""सेटिंग्जमध्ये अनुमती द्या." "<b>%1$s</b> ला तुमचे फोन कॉल लॉग अ‍ॅक्सेस करण्याची अनुमती द्यायची का?" + "<b>%1$s</b> ला तुमच्या <b>%2$s</b> वर तुमच्या फोनचा कॉल लॉग अ‍ॅक्सेस करण्याची अनुमती द्यायची आहे का?" "<b>%1$s</b> ला फोन कॉल करू आणि ते व्यवस्थापित करू द्यायचे?" + "<b>%1$s</b> ला तुमच्या <b>%2$s</b> वर फोन कॉल करू आणि ते व्यवस्थापित करू द्यायचे आहेत का?" "<b>%1$s</b> ला तुमच्या महत्त्वाच्या लक्षणांविषयीचा सेन्सर डेटा अ‍ॅक्सेस करू द्यायचे?" + "<b>%1$s</b> ला तुमच्या <b>%2$s</b> वर महत्त्वाच्या परिमाणांचा सेन्सर डेटा अ‍ॅक्सेस करू द्यायचा आहे का?" "तुम्ही अ‍ॅप वापरत नसतानादेखील या ॲपला तुमच्या महत्त्वाच्या परिमाणांबद्दलचा सेन्सर डेटा पूर्णवेळ ॲक्सेस करायचा आहे. हा बदल करण्यासाठी, "" सेटिंग्जवर जा." "<b>%1$s</b> ला तुमच्या महत्त्वाच्या परिमाणांसंबंधित सेन्सर डेटा अ‍ॅक्सेस करण्याची अनुमती द्यायची आहे का?" + "<b>%1$s</b> ला तुमच्या <b>%2$s</b> वर महत्त्वाच्या परिमाणांचा सेन्सर डेटा अ‍ॅक्सेस करू द्यायचा आहे का?" "तुम्ही ॲप वापरत नसतानादेखील या ॲपला शरीर सेन्सर डेटा नेहमी अ‍ॅक्सेस करू देण्यासाठी, ""सेटिंग्जवर जा." "ॲप वापरात असताना <b>%1$s</b> ला शरीर सेन्सर डेटा अ‍ॅक्सेस करण्याची अनुमती देणे सुरू ठेवायचे आहे का?" + "ॲप वापरात असताना <b>%1$s</b> ला तुमच्या <b>%2$s</b> वर महत्त्वाच्या परिमाणांचा सेन्सर डेटा अ‍ॅक्सेस करू देणे सुरू ठेवायचे?" "<b>%1$s</b> ला तुम्हाला सूचना पाठवू द्यायचे का?" + "<b>%1$s</b> ला तुमच्या <b>%2$s</b> वर सूचना पाठवण्याची अनुमती द्यायची आहे का?" "नियंत्रित परवानग्या" "%1$s कडे स्थान अ‍ॅक्सेस आहे" "तुमची संस्था %1$s ला तुमचे स्थान अ‍ॅक्सेस करण्याची अनुमती देते" diff --git a/PermissionController/res/values-ms/strings.xml b/PermissionController/res/values-ms/strings.xml index 7e560fa739981dea9616a9f7fd00e9d54db51487..a2e48b2bdadbee08122d5e8f91555fb5ab808a56 100644 --- a/PermissionController/res/values-ms/strings.xml +++ b/PermissionController/res/values-ms/strings.xml @@ -34,6 +34,7 @@ "Lagi maklumat" "Benarkan semua" "Sentiasa benarkan semua" + "Benarkan akses terhad" "Pilih foto dan video" "Pilih lagi" "Jangan pilih lagi" @@ -60,6 +61,7 @@ "Apl" "Kebenaran apl" "Apl yang tidak digunakan" + "Edit foto yang dipilih untuk apl ini" "Tiada apl yang tidak digunakan" "0 apl yang tidak digunakan" "Keputusan kebenaran terbaharu" @@ -455,48 +457,75 @@ "Tunjukkan pengesanan cetusan pembantu" "Tunjukkan ikon dalam bar status apabila mikrofon digunakan untuk mengaktifkan pembantu suara" "Benarkan <b>%1$s</b> mengakses foto dan media pada peranti anda?" + "Benarkan <b>%1$s</b> mengakses foto dan media pada <b>%2$s</b> anda?" "Benarkan <b>%1$s</b> mengakses kenalan anda?" + "Benarkan <b>%1$s</b> mengakses kenalan anda pada <b>%2$s</b> anda?" "Benarkan <b>%1$s</b> mengakses lokasi peranti ini?" + "Benarkan <b>%1$s</b> mengakses lokasi <b>%2$ss</b> anda?" "Apl ini hanya dapat mengakses lokasi semasa anda menggunakan apl tersebut" "Benarkan <b>%1$s</b> mengakses lokasi peranti ini?" + "Benarkan <b>%1$s</b> mengakses lokasi <b>%2$s anda?" "Apl ini mungkin mahu mengakses lokasi anda pada sepanjang masa, meskipun apabila anda tidak menggunakan apl itu. ""Benarkan dalam tetapan." "Tukar akses lokasi untuk <b>%1$s</b>?" + "Tukar akses lokasi untuk <b>%1$s</b> pada <b>%2$s</b> anda?" "Apl ini mahu mengakses lokasi anda pada sepanjang masa, meskipun apabila anda tidak menggunakan apl itu. ""Benarkan dalam tetapan." "Benarkan <b>%1$s</b> untuk mencari, menyambung kepada dan menentukan penempatan relatif peranti berdekatan?" + "Benarkan <b>%1$s</b> mencari, menyambung & menentukan kedudukan relatif peranti berdekatan pada <b>%2$s</b> anda?" "Benarkan <b>%1$s</b> untuk mencari, menyambung kepada dan menentukan penempatan relatif peranti berdekatan? ""Benarkan dalam tetapan." "Tukar akses lokasi <b>%1$s</b> daripada anggaran kepada tepat?" + "Tukar akses lokasi <b>%1$s</b> pada <b>%2$s</b> anda daripada lokasi anggaran kepada lokasi tepat?" "Benarkan <b>%1$s</b> mengakses lokasi anggaran peranti ini?" + "Benarkan <b>%1$s</b> mengakses lokasi anggaran <b>%2$s</b> anda?" "Tepat" "Anggaran" "Benarkan <b>%1$s</b> mengakses kalendar anda?" + "Benarkan <b>%1$s</b> mengakses kalendar anda pada <b>%2$s</b> anda?" "Benarkan <b>%1$s</b> menghantar dan melihat mesej SMS?" + "Benarkan <b>%1$s</b> menghantar dan melihat mesej SMS pada <b>%2$s</b> anda?" "Benarkan <b>%1$s</b> mengakses foto, media dan fail pada peranti anda?" + "Benarkan <b>%1$s</b> mengakses foto, media dan fail pada <b>%2$s</b> anda?" "Benarkan <b>%1$s</b> mengakses <b>foto, video, muzik dan audio</b> pada peranti ini?" "Benarkan <b>%1$s</b> mengakses <b>foto, video, muzik, audio dan fail lain</b> pada peranti ini?" "Benarkan <b>%1$s</b> mengakses muzik dan audio pada peranti ini?" + "Benarkan <b>%1$s</b> mengakses muzik dan audio pada <b>%2$s</b> anda?" "Benarkan <b>%1$s</b> mengakses foto dan video pada peranti ini?" + "Benarkan <b>%1$s</b> mengakses foto dan video pada <b>%2$s</b> anda?" "Benarkan <b>%1$s</b> mengakses lebih banyak foto dan video pada peranti ini?" + "Benarkan <b>%1$s</b> mengakses lebih banyak foto dan video pada <b>%2$s</b> anda?" "Benarkan <b>%1$s</b> merakam audio?" + "Benarkan <b>%1$s</b> merakam audio pada <b>%2$s</b> anda?" "Apl hanya boleh merakam audio semasa anda menggunakan apl tersebut" "Benarkan <b>%1$s</b> merakam audio?" + "Benarkan <b>%1$s</b> merakam audio pada <b>%2$s</b> anda?" "Apl ini mungkin mahu merakam audio pada sepanjang masa, meskipun apabila anda tidak menggunakan apl itu. ""Benarkan dalam tetapan." "Tukar akses mikrofon untuk <b>%1$s</b>?" + "Tukar akses mikrofon untuk <b>%1$s</b> pada <b>%2$s</b> anda?" "Apl ini mahu merakam audio pada sepanjang masa, meskipun apabila anda tidak menggunakan apl itu. ""Benarkan dalam tetapan." "Benarkan <b>%1$s</b> mengakses aktiviti fizikal anda?" + "Benarkan <b>%1$s</b> mengakses aktiviti fizikal anda pada <b>%2$s</b> anda?" "Benarkan <b>%1$s</b> mengambil gambar dan merakam video?" + "Benarkan <b>%1$s</b> mengambil gambar dan merakam video pada <b>%2$s</b> anda?" "Apl hanya boleh mengambil gambar dan merakam video semasa anda menggunakan apl tersebut" "Benarkan <b>%1$s</b> mengambil gambar dan merakam video?" + "Benarkan <b>%1$s</b> mengambil gambar dan merakam video pada <b>%2$s</b> anda?" "Apl ini mungkin mahu mengambil gambar dan merakam video pada sepanjang masa, meskipun apabila anda tidak menggunakan apl itu. ""Benarkan dalam tetapan." "Tukar akses kamera untuk <b>%1$s</b>?" + "Tukar akses kamera untuk <b>%1$s</b> pada <b>%2$s</b> anda?" "Apl ini mahu mengambil gambar dan merakam video pada sepanjang masa, meskipun apabila anda tidak menggunakan apl itu. ""Benarkan dalam tetapan." "Benarkan <b>%1$s</b> mengakses log panggilan telefon anda?" + "Benarkan <b>%1$s</b> mengakses log panggilan telefon anda pada <b>%2$s</b> anda?" "Benarkan <b>%1$s</b> membuat dan mengurus panggilan telefon?" + "Benarkan <b>%1$s</b> membuat dan mengurus panggilan telefon pada <b>%2$s</b> anda?" "Benarkan <b>%1$s</b> mengakses data penderia tentang tanda vital anda?" + "Benarkan <b>%1$s</b> mengakses data penderia tentang tanda vital pada <b>%2$s</b> anda?" "Apl ini mahu mengakses data penderia tentang tanda vital anda pada setiap masa, meskipun apabila anda tidak menggunakan apl. Untuk membuat perubahan ini, ""pergi ke tetapan." "Benarkan <b>%1$s</b> mengakses data penderia tentang tanda vital anda?" + "Benarkan <b>%1$s</b> mengakses data penderia tentang tanda vital pada <b>%2$s</b> anda?" "Untuk membenarkan apl ini mengakses data penderia tubuh pada setiap masa, termasuk apabila anda tidak menggunakan apl, ""pergi ke tetapan." "Terus membenarkan <b>%1$s</b> mengakses data penderia tubuh semasa apl digunakan?" + "Terus membenarkan <b>%1$s</b> mengakses data penderia tubuh pada <b>%2$s</b> anda semasa apl digunakan?" "Benarkan <b>%1$s</b> menghantar pemberitahuan kepada anda?" + "Benarkan <b>%1$s</b> menghantar pemberitahuan kepada anda pada <b>%2$s</b> anda?" "Kebenaran terkawal" "%1$s memiliki akses lokasi" "Organisasi anda membenarkan %1$s untuk mengakses lokasi anda" diff --git a/PermissionController/res/values-my/strings.xml b/PermissionController/res/values-my/strings.xml index f836578387748874dcbad8952aad0fc13cac40b2..cd68ad6e1467f465fca412c80569c9b1131936ec 100644 --- a/PermissionController/res/values-my/strings.xml +++ b/PermissionController/res/values-my/strings.xml @@ -34,6 +34,7 @@ "နောက်ထပ်" "အားလုံး ခွင့်ပြုရန်" "အားလုံး အမြဲခွင့်ပြုရန်" + "ကန့်သတ်သုံးခြင်းကို ခွင့်ပြုရန်" "ရွေးထားသော ဓာတ်ပုံနှင့်ဗီဒီယိုများ" "နောက်ထပ် ရွေးရန်" "နောက်ထပ်မရွေးပါနှင့်" @@ -60,6 +61,7 @@ "အက်ပ်များ" "အက်ပ်ခွင့်ပြုချက်များ" "အသုံးမပြုသော အက်ပ်များ" + "ဤအက်ပ်အတွက် ရွေးထားသောဓာတ်ပုံများကို ပြင်ရန်" "အသုံးမပြုသောအက်ပ်များ မရှိပါ" "အသုံးမပြုသောအက်ပ် 0 ခု" "လတ်တလောခွင့်ပြုသည့် ဆုံးဖြတ်ချက်များ" @@ -455,48 +457,75 @@ "အကူအညီစတင်ရန် သိရှိမှုစနစ်ကို ပြပါ" "အသံအကူအညီ စတင်ရန် မိုက်ခရိုဖုန်းအသုံးပြုသည့်အခါ သင်္ကေတကို အခြေအနေဘားတွင် ပြပါ" "<b>%1$s</b> အား သင့်စက်ပေါ်ရှိ ဓာတ်ပုံနှင့် မီဒီယာဖိုင်များ ဝင်သုံးခွင့်ပေးလိုပါသလား။" + "<b>%1$s</b> အား သင်၏ <b>%2$s</b> ရှိ ဓာတ်ပုံနှင့် မီဒီယာများကို သုံးခွင့်ပြုမလား။" "<b>%1$s</b> အား သင်၏အဆက်အသွယ်များကို သုံးခွင့်ပေးလိုပါသလား။" + "<b>%1$s</b> အား သင်၏ <b>%2$s</b> တွင် သင့်အဆက်အသွယ်များ သုံးခွင့်ပြုမလား။" "<b>%1$s</b> အား ဤစက်ပစ္စည်း၏တည်နေရာကို သုံးခွင့်ပေးလိုပါသလား။" + "<b>%1$s</b> အား သင့် <b>%2$s ၏ </b> တည်နေရာ သုံးခွင့်ပြုမလား။" "အက်ပ်ကိုအသုံးပြုသည့် အချိန်တွင်သာ ၎င်းကတည်နေရာကို အသုံးပြုခွင့်ရပါမည်" "<b>%1$s</b> အား ဤစက်ပစ္စည်း၏တည်နေရာကို သုံးခွင့်ပေးလိုပါသလား။" + "<b>%1$s</b> အား သင့် <b>%2$s ၏ တည်နေရာသုံးခွင့်ပြုမလား။" "သင် အသုံးမပြုနေလျှင်တောင်မှ ဤအက်ပ်က သင့်တည်နေရာကို သုံးခွင့်ရနေပါမည်။ ""ဆက်တင်များတွင် ခွင့်ပြုပါ။" "<b>%1$s</b&gt တို့အတွက် တည်နေရာ ဝင်ခွင့် ပြောင်းပေးမလား။" + "သင်၏ <b>%2$s</b> တွင် <b>%1$s</b> အတွက် တည်နေရာ သုံးခွင့်ပြောင်းမလား။" "သင် အသုံးမပြုနေလျှင်တောင်မှ ဤအက်ပ်က သင့်တည်နေရာကို သုံးခွင့်ရလိုသည်။ ""ဆက်တင်များတွင် ခွင့်ပြုပါ။" "အနီးရှိ စက်များ၏ မှန်းခြေနေရာ ရှာရန်၊ ချိတ်ဆက်ရန်နှင့် သတ်မှတ်ရန် <b>%1$s</b> ကို ခွင့်ပြုမလား။" + "<b>%1$s</b> အား သင့် <b>%2$s</b> တွင် အနီးတစ်ဝိုက်ရှိ စက်များ၏ ဆက်စပ်နေရာကို ရှာရန်၊ ချိတ်ဆက်ရန်နှင့် သတ်မှတ်ရန် ခွင့်ပြုမလား။" "အနီးရှိ စက်များ၏မှန်းခြေနေရာကို ရှာရန်၊ ချိတ်ဆက်ရန်နှင့် သတ်မှတ်ရန် <b>%1$s</b> အား ခွင့်ပြုမလား။ ""ဆက်တင်များတွင် ခွင့်ပြုပါ။" "<b>%1$s</b> ၏ တည်နေရာသုံးခွင့်ကို ခန့်မှန်းခြေမှ အတိအကျသို့ ပြောင်းမလား။" + "သင်၏ <b>%2$s</b> တွင် <b>%1$s</b> ၏ တည်နေရာသုံးခွင့်ကို ခန့်မှန်းခြေမှ အတိအကျသို့ ပြောင်းမလား။" "<b>%1$s</b> အား ဤစက်၏ တည်နေရာခန့်မှန်းခြေကို သုံးခွင့်ပေးလိုပါသလား။" + "<b>%1$s</b> အား သင့် <b>%2$s</b> ၏ ခန့်မှန်းခြေတည်နေရာ သုံးခွင့်ပြုမလား။" "နေရာအတိအကျ" "ခန့်မှန်းခြေ" "<b>%1$s</b> အား သင်၏ပြက္ခဒိန်ကို သုံးခွင့်ပေးလိုပါသလား။" + "<b>%1$s</b> အား သင်၏ <b>%2$s</b> တွင် သင့်ပြက္ခဒိန် သုံးခွင့်ပြုမလား။" "<b>%1$s</b> အား SMS မက်ဆေ့ဂျ်များ ကြည့်ရှုခွင့်နှင့် ပို့ခွင့်ပေးလိုပါသလား။" + "<b>%1$s</b> အား သင်၏ <b>%2$s</b> ရှိ SMS မက်ဆေ့ဂျ်များကို ပို့ခွင့်နှင့် ကြည့်ရှုခွင့်ပေးမလား။" "<b>%1$s</b> အား သင့်ဖုန်းရှိ ဓာတ်ပုံများ၊ မီဒီယာနှင့် ဖိုင်များ ဝင်သုံးခွင့်ပေးလိုပါသလား။" + "<b>%1$s</b> အား သင်၏ <b>%2$s</b> ရှိ ဓာတ်ပုံ၊ မီဒီယာနှင့် ဖိုင်များကို သုံးခွင့်ပြုမလား။" "ဤစက်ရှိ <b>ဓာတ်ပုံ၊ ဗီဒီယို၊ တေးဂီတနှင့် အသံများ</b> ကို <b>%1$s</b> အား သုံးခွင့်ပေးမလား။" "စက်ရှိ <b>ဓာတ်ပုံ၊ ဗီဒီယို၊ တေးဂီတ၊ အသံနှင့်အခြားဖိုင်များ</b> ကို <b>%1$s</b> အား သုံးခွင့်ပေးမလား။" "ဤစက်ရှိ တေးဂီတနှင့် အသံဖိုင်ကို <b>%1$s</b> အား သုံးခွင့်ပေးမလား။" + "<b>%1$s</b> အား သင်၏ <b>%2$s</b> ရှိ တေးဂီတနှင့် အသံဖိုင်ကို သုံးခွင့်ပြုမလား။" "ဤစက်ရှိ ဓာတ်ပုံနှင့် ဗီဒီယိုများကို <b>%1$s</b> အား သုံးခွင့်ပေးမလား။" + "<b>%1$s</b> အား သင်၏ <b>%2$s</b> တွင် ဓာတ်ပုံနှင့် ဗီဒီယိုများကို သုံးခွင့်ပြုမလား။" "ဤစက်ရှိ နောက်ထပ်ဓာတ်ပုံနှင့် ဗီဒီယိုများကို <b>%1$s</b> အား သုံးခွင့်ပေးမလား။" + "<b>%1$s</b> အား သင်၏ <b>%2$s</b> တွင် နောက်ထပ်ဓာတ်ပုံနှင့် ဗီဒီယိုများ သုံးခွင့်ပြုမလား။" "<b>%1$s</b> ကို အသံဖမ်းယူခွင့် ပေးလိုပါသလား။" + "<b>%1$s</b> အား သင့် <b>%2$s</b> တွင် အသံဖမ်းယူခွင့်ပြုမလား။" "ဤအက်ပ်ကို အသုံးပြုနေသည့် အချိန်တွင်သာ ၎င်းက အသံဖမ်းနိုင်သည်။" "<b>%1$s</b> ကို အသံဖမ်းခွင့် ပေးလိုပါသလား။" + "<b>%1$s</b> အား သင့် <b>%2$s</b> တွင် အသံဖမ်းယူခွင့်ပြုမလား။" "ဤအက်ပ်ကို သင်အသုံးမပြုနေလျှင်ပင် ၎င်းက တစ်ချိန်လုံး အသံဖမ်းယူလိုသည်။ ""ဆက်တင်များတွင် ခွင့်ပြုပါ။" "<b>%1$s</b&gt အတွက် မိုက်ခရိုဖုန်း အသုံးပြုခွင့် ပြောင်းမလား။" + "သင်၏ <b>%2$s</b> တွင် <b>%1$s</b> အတွက် မိုက်ခရိုဖုန်း သုံးခွင့်ပြောင်းမလား။" "ဤအက်ပ်ကို သင်အသုံးမပြုနေလျှင်ပင် ၎င်းက တစ်ချိန်လုံး အသံဖမ်းလိုသည်။ ""ဆက်တင်များတွင် ခွင့်ပြုပါ။" "<b>%1$s</b> အား သင့်ကိုယ်ခန္ဓာလှုပ်ရှားမှုကို ဝင်ကြည့်ခွင့် ပေးလိုပါသလား။" + "<b>%1$s</b> အား သင်၏ <b>%2$s</b> တွင် သင့်ကိုယ်ခန္ဓာလှုပ်ရှားမှု သုံးခွင့်ပြုမလား။" "<b>%1$s</b> အား ဓာတ်ပုံနှင့် ဗီဒီယိုရိုက်ကူးခွင့် ပေးလိုပါသလား။" + "<b>%1$s</b> အား သင်၏ <b>%2$s</b> တွင် ဓာတ်ပုံနှင့် ဗီဒီယိုရိုက်ကူးခွင့်ပြုမလား။" "ဤအက်ပ်ကို အသုံးပြုနေသည့် အချိန်တွင်သာ ၎င်းက ဓာတ်ပုံနှင့် ဗီဒီယိုများကို ရိုက်ကူးနိုင်သည်။" "<b>%1$s</b> ကို ဓာတ်ပုံနှင့် ဗီဒီယိုရိုက်ကူးခွင့် ပေးလိုပါသလား။" + "<b>%1$s</b> အား သင်၏ <b>%2$s</b> တွင် ဓာတ်ပုံနှင့် ဗီဒီယိုရိုက်ကူးခွင့်ပြုမလား။" "ဤအက်ပ်ကို သင်အသုံးမပြုနေလျှင်ပင် ၎င်းက ဓာတ်ပုံနှင့် ဗီဒီယိုများကို တစ်ချိန်လုံး ရိုက်ကူးလိုသည်။ ""ဆက်တင်များတွင် ခွင့်ပြုပါ။" "<b>%1$s</b&gt အတွက် ကင်မရာအသုံးပြုခွင့် ပြောင်းမလား။" + "သင်၏ <b>%2$s</b> တွင် <b>%1$s</b> အတွက် ကင်မရာ သုံးခွင့်ပြောင်းမလား။" "ဤအက်ပ်ကို သင်အသုံးမပြုနေလျှင်ပင် ၎င်းက ဓာတ်ပုံနှင့် ဗီဒီယိုများကို တစ်ချိန်လုံး ရိုက်ကူးလိုသည်။ ""ဆက်တင်များတွင် ခွင့်ပြုပါ။" "<b>%1$s</b> အား သင်၏ခေါ်ဆိုထားသော မှတ်တမ်းများကို သုံးခွင့်ပေးလိုပါသလား။" + "<b>%1$s</b> အား သင်၏ <b>%2$s</b> တွင် သင့်ဖုန်းခေါ်ဆိုမှတ်တမ်း သုံးခွင့်ပြုမလား။" "<b>%1$s</b> ကို ဖုန်းခေါ်ဆိုမှုများ ပြုလုပ်ခွင့်နှင့် စီမံခွင့်ပေးလိုပါသလား။" + "<b>%1$s</b> အား သင်၏ <b>%2$s</b> တွင် ဖုန်းခေါ်ဆိုခွင့်နှင့် စီမံခွင့်ပေးမလား။" "<b>%1$s</b> အား သင်၏ အရေးကြီးသော ကျန်းမာရေးလက္ခဏာဆိုင်ရာ အာရုံခံကိရိယာဒေတာ သုံးခွင့်ပေးလိုပါသလား။" + "<b>%1$s</b> အား <b>%2$s</b> တွင် သင့်အဓိကကိုယ်တွင်းအင်္ဂါအခြေအနေ လက္ခဏာများနှင့်ပတ်သက်သည့် အာရုံခံစနစ်ဒေတာ သုံးခွင့်ပြုမလား။" "အက်ပ်သုံးမနေသော်လည်း ဤအက်ပ်က သင်၏အရေးကြီးသည့် ကျန်းမာရေးလက္ခဏာဆိုင်ရာ အာရုံခံစနစ်ဒေတာကို အမြဲသုံးခွင့် ရယူလိုသည်။ ဤအပြောင်းအလဲကို ပြုလုပ်ရန် ""ဆက်တင်များသို့ သွားပါ။" "<b>%1$s</b> အား သင်၏ အရေးကြီးသော ကျန်းမာရေးလက္ခဏာဆိုင်ရာ အာရုံခံစနစ်ဒေတာကို သုံးခွင့်ပေးလိုပါသလား။" + "<b>%1$s</b> အား <b>%2$s</b> တွင် သင့်အဓိကကိုယ်တွင်းအင်္ဂါအခြေအနေ လက္ခဏာများနှင့်ပတ်သက်သည့် အာရုံခံစနစ်ဒေတာ သုံးခွင့်ပြုမလား။" "အက်ပ်သုံးမနေသော်လည်း ဤအက်ပ်ကို ခန္ဓာကိုယ်အာရုံခံစနစ် ဒေတာများ အမြဲသုံးခွင့်ပြုရန် ""ဆက်တင်များသို့ သွားပါ။" "အက်ပ်သုံးစဉ် <b>%1$s</b> ကို ခန္ဓာကိုယ်အာရုံခံစနစ် ဒေတာ ဆက်သုံးခွင့်ပြုမလား။" + "အက်ပ်သုံးစဉ် <b>%1$s</b> ကို သင်၏ <b>%2$s</b> တွင် ခန္ဓာကိုယ် အာရုံခံကိရိယာ ဒေတာ ဆက်သုံးခွင့်ပြုမလား။" "<b>%1$s</b> ကို သင့်ထံ အကြောင်းကြားချက်များ ပို့ခွင့်ပြုမလား။" + "<b>%1$s</b> ကို သင်၏ <b>%2$s</b> တွင် သင့်ထံ အကြောင်းကြားချက်များ ပို့ခွင့်ပြုမလား။" "ထိန်းချုပ်ထားသော ခွင့်ပြုချက်များ" "%1$s တွင် တည်နေရာသုံးခွင့်ရှိသည်" "သင်၏အဖွဲ့အစည်းက %1$s အား သင့်တည်နေရာကို သုံးခွင့်ပြုသည်" diff --git a/PermissionController/res/values-nb/strings.xml b/PermissionController/res/values-nb/strings.xml index 1e5f58453ba32888d38b082b5ed25bfab82848b3..fc86eb79d758de0f11c2fbf48ab0007ab6e0b443 100644 --- a/PermissionController/res/values-nb/strings.xml +++ b/PermissionController/res/values-nb/strings.xml @@ -34,6 +34,7 @@ "Mer info" "Tillat alle" "Tillat alltid alle" + "Gi begrenset tilgang" "Velg bilder og videoer" "Velg flere" "Ikke velg flere" @@ -60,6 +61,7 @@ "Apper" "Apptillatelser" "Ubrukte apper" + "Endre bilder som er valgt for denne appen" "Ingen ubrukte apper" "0 ubrukte apper" "Nylige tillatelsesavgjørelser" @@ -455,48 +457,75 @@ "Vis aktivering av assistenten" "Vis ikon i statusfeltet når mikrofonen brukes til å aktivere taleassistent" "Vil du gi <b>%1$s</b> tilgang til bilder og medier på enheten din?" + "Vil du la <b>%1$s</b> bruke bilder og medier på <b>%2$s</b>?" "Vil du gi <b>%1$s</b> tilgang til kontaktene dine?" + "Vil du la <b>%1$s</b> bruke kontakter på <b>%2$s</b>?" "Vil du gi <b>%1$s</b> tilgang til denne enhetens posisjon?" + "Vil du la <b>%1$s</b> se posisjonen til <b>%2$s</b>?" "Appen får bare tilgang til posisjonen når du bruker appen" "Vil du gi <b>%1$s</b> tilgang til denne enhetens posisjon?" + "Vil du la <b>%1$s</b> se posisjonen til <b>%2$s</b>?" "Denne appen vil kanskje ha tilgang til posisjonen din hele tiden, selv når du ikke bruker appen. ""Gi tillatelse i innstillingene." "Vil du endre posisjonstilgang for <b>%1$s</b>?" + "Vil du endre posisjonstilgangen for <b>%1$s</b> på <b>%2$s</b>?" "Denne appen vil ha tilgang til posisjonen din hele tiden, selv når du ikke bruker appen. ""Gi tillatelse i innstillingene." "Vil du gi <b>%1$s</b> tillatelse til å finne, koble til og fastslå den relative posisjonen til enheter i nærheten?" + "Vil du la <b>%1$s</b> finne, koble til og fastslå den relative posisjonen til enheter i nærheten på <b>%2$s</b>?" "Vil du gi <b>%1$s</b> tillatelse til å finne, koble til og fastslå den relative posisjonen til enheter i nærheten? ""Tillat i innstillingene." "Vil du endre posisjontilgangen til <b>%1$s</b> fra omtrentlig til nøyaktig?" + "Vil du endre tilgangen <b>%1$s</b> har til posisjon på <b>%2$s</b> fra omtrentlig til nøyaktig?" "Vil du gi <b>%1$s</b> tilgang til denne enhetens omtrentlige posisjon?" + "Vil du la <b>%1$s</b> se den omtrentlige posisjonen til <b>%2$s</b>?" "Nøyaktig" "Omtrentlig" "Vil du gi <b>%1$s</b> tilgang til kalenderen din?" + "Vil du la <b>%1$s</b> bruke kalenderen på <b>%2$s</b>?" "Vil du la <b>%1$s</b> sende og se tekstmeldinger?" + "Vil du la <b>%1$s</b> sende og se SMS-meldinger på <b>%2$s</b>?" "Vil du gi <b>%1$s</b> tilgang til bilder, medier og filer på enheten din?" + "Vil du la <b>%1$s</b> bruke bilder, medier og filer på <b>%2$s</b>?" "Vil du la <b>%1$s</b> bruke <b>bilder, videoer, musikk og lyd</b> på denne enheten?" "Vil du la <b>%1$s</b> bruke <b>bilder, videoer, musikk, lyd og andre filer</b> på denne enheten?" "Vil du la <b>%1$s</b> bruke musikk og lyd på denne enheten?" + "Vil du la <b>%1$s</b> bruke musikk og lyd på <b>%2$s</b>?" "Vil du la <b>%1$s</b> bruke bilder og videoer på denne enheten?" + "Vil du la <b>%1$s</b> bruke bilder og videoer på <b>%2$s</b>?" "Vil du la <b>%1$s</b> bruke flere bilder og videoer på denne enheten?" + "Vil du la <b>%1$s</b> bruke flere bilder og videoer på <b>%2$s</b>?" "Vil du la <b>%1$s</b> ta opp lyd?" + "Vil du la <b>%1$s</b> ta opp lyd på <b>%2$s</b>?" "Appen kan bare ta opp lyd mens du bruker den." "Vil du la <b>%1$s</b> ta opp lyd?" + "Vil du la <b>%1$s</b> ta opp lyd på <b>%2$s</b>?" "Denne appen vil kanskje ta opp lyd hele tiden, selv når du ikke bruker den. ""Gi tillatelse i innstillingene." "Vil du endre mikrofontilgang for <b>%1$s</b>?" + "Vil du endre mikrofontilgangen for <b>%1$s</b> på <b>%2$s</b>?" "Denne appen vil ta opp lyd hele tiden, selv når du ikke bruker den. ""Gi tillatelse i innstillingene." "Vil du gi <b>%1$s</b> tilgang til den fysiske aktiviteten din?" + "Vil du la <b>%1$s</b> se fysisk aktivitet på <b>%2$s</b>?" "Vil du la <b>%1$s</b> ta bilder og spille inn video?" + "Vil du la <b>%1$s</b> ta bilder og spille inn videoer på <b>%2$s</b>?" "Appen kan bare ta bilder og spille inn videoer mens du bruker den" "Vil du la <b>%1$s</b> ta bilder og spille inn videoer?" + "Vil du la <b>%1$s</b> ta bilder og spille inn videoer på <b>%2$s</b>?" "Denne appen vil kanskje ta bilder og spille inn videoer hele tiden, selv når du ikke bruker den. ""Gi tillatelse i innstillingene." "Vil du endre kameratilgang for <b>%1$s</b>?" + "Vil du endre kameratilgangen for <b>%1$s</b> på <b>%2$s</b>?" "Denne appen vil ta bilder og spille inn videoer hele tiden, selv når du ikke bruker den. ""Gi tillatelse i innstillingene." "Vil du gi <b>%1$s</b> tilgang til samtaleloggene dine?" + "Vil du la <b>%1$s</b> se samtaleloggene på <b>%2$s</b>?" "Vil du la <b>%1$s</b> ringe og administrere telefonsamtaler?" + "Vil du la <b>%1$s</b> ringe og administrere telefonsamtaler på <b>%2$s</b>?" "Vil du gi <b>%1$s</b> tilgang til sensordata om de vitale tegnene dine?" + "Vil du la <b>%1$s</b> se sensordata om de vitale tegnene dine på <b>%2$s</b>?" "Denne appen vil ha tilgang til sensordata om de vitale tegnene dine hele tiden, selv når du ikke bruker den. For å gjøre denne endringen, ""gå til innstillingene." "Vil du gi <b>%1$s</b> tilgang til sensordataene om de vitale tegnene dine?" + "Vil du la <b>%1$s</b> se sensordataene om de vitale tegnene dine på <b>%2$s</b>?" "For å gi denne appen tilgang til data fra kroppssensorer til enhver tid, selv når du ikke bruker den, ""gå til innstillingene." "Vil du fortsette å gi <b>%1$s</b> tilgang til data fra kroppssensorer mens appen er i bruk?" + "Vil du fortsette å la <b>%1$s</b> se data fra kroppssensorer på <b>%2$s</b> mens appen er i bruk?" "Vil du la <b>%1$s</b> sende deg varsler?" + "Vil du la <b>%1$s</b> sende deg varsler på <b>%2$s</b>?" "Kontrollerte tillatelser" "%1$s har posisjonstilgang" "Organisasjonen din lar %1$s se hvor du er" diff --git a/PermissionController/res/values-ne/strings.xml b/PermissionController/res/values-ne/strings.xml index c418348bd310db7b10c7638f4d9bce575cd2c817..c934729fd5d9bb7b0cd8e05224366a99c6793a6e 100644 --- a/PermissionController/res/values-ne/strings.xml +++ b/PermissionController/res/values-ne/strings.xml @@ -34,6 +34,7 @@ "थप जानकारी" "सबै डेटा प्रयोग गर्ने अनुमति दिनुहोस्" "सधैँ सबै अनुमति दिइयोस्" + "सीमित एक्सेस दिनुहोस्" "फोटो र भिडियोहरू चयन गर्नुहोस्" "अझ धेरै फोटो चयन गर्नुहोस्" "थप डेटा चयन नगर्नुहोस्" @@ -60,6 +61,7 @@ "एपहरू" "एपसम्बन्धी अनुमति" "प्रयोग नगरिएका एपहरू" + "यो एपका लागि चयन गरिएका फोटोहरू सम्पादन गर्नुहोस्" "सबै एप चलाइएका छन्" "प्रयोग नगरिएका एउटा पनि एप छैन" "हालै दिइएका अनुमतिसम्बन्धी निर्णयहरू" @@ -455,48 +457,75 @@ "सहायक ट्रिगर भएको पत्ता लागेमा देखाउनुहोस्" "आवाज सहायक सक्रिय गर्न माइक्रोफोनको प्रयोग गरिँदा स्टाटस बारमा आइकन देखाउनुहोस्" "<b>%1$s</b> लाई आफ्नो डिभाइसका फोटो र मिडियामाथि पहुँच राख्न दिने हो?" + "<b>%1$s</b> लाई तपाईंको <b>%2$s</b> मा भएका फोटो तथा मिडिया एक्सेस गर्ने अनुमति दिने हो?" "<b>%1$s</b> लाई कन्ट्याक्ट प्रयोग गर्न दिने हो?" + "<b>%1$s</b> लाई <b>%2$s</b> मा भएका तपाईंका कन्ट्याक्टहरू एक्सेस गर्ने अनुमति दिने हो?" "<b>%1$s</b> लाई यो डिभाइसको लोकेसन प्रयोग दिने हो?" + "<b>%1$s</b> लाई तपाईंको <b>%2$s’s</b> को लोकेसन एक्सेस गर्ने अनुमति दिने हो?" "तपाईंले एप प्रयोग गरिरहेका बेला मात्र उक्त एपले स्थानमाथि पहुँच राख्न सक्ने छ" "<b>%1$s</b> लाई यो डिभाइसको लोकेसन प्रयोग दिने हो?" + "<b>%1$s</b> लाई तपाईंको <b>%2$s को लोकेसन एक्सेस गर्ने अनुमति दिने हो?" "तपाईं उक्त एप प्रयोग नगरिरहेका बेलामा लगायत जुनसुकै समयमा यो एपले तपाईंको स्थानमाथि पहुँच राख्न सक्छ। ""सेटिङमा गई अनुमति दिनुहोस्।" "<b>%1$s</b> का लागि स्थानसम्बन्धी पहुँच परिवर्तन गर्ने हो?" + "<b>%1$s</b> लाई तपाईंको <b>%2$s</b> को लोकेसन एक्सेस गर्न दिइएको अनुमति परिवर्तन गर्ने हो?" "तपाईं उक्त एप प्रयोग नगरिरहेका बेलामा लगायत जुनसुकै समयमा यो एपले तपाईंको स्थानमाथि पहुँच राख्न खोज्छ। ""सेटिङमा गई अनुमति दिनुहोस्।" "<b>%1$s</b> लाई नजिकै रहेका डिभाइसहरू भेट्टाउने, ती डिभाइससँग कनेक्ट गर्ने र तिनको सापेक्ष स्थिति निर्धारण गर्ने अनुमति दिने हो?" + "<b>%1$s</b> लाई तपाईंको <b>%2$s</b> मा नजिकैका डिभाइसहरू भेट्टाउने, ती डिभाइससँग कनेक्ट गर्ने र तिनको सापेक्ष स्थिति निर्धारण गर्ने अनुमति दिने हो?" "<b>%1$s</b> लाई नजिकै रहेका डिभाइसहरू भेट्टाउने, ती डिभाइससँग कनेक्ट गर्ने र तिनको सापेक्ष स्थिति निर्धारण गर्ने अनुमति दिने हो? ""सेटिङमा गई अनुमति दिनुहोस्।" "<b>%1$s</b> लाई अनुमानित लोकेसनको साटो सटीक लोकेसन प्रयोग गर्न दिने हो?" + "<b>%1$s</b> लाई तपाईंको <b>%2$s</b> को अनुमानित लोकेसनको साटो सटीक लोकेसन एक्सेस गर्ने अनुमति दिने हो?" "<b>%1$s</b> लाई यो डिभाइसको अनुमानित लोकेसन प्रयोग गर्न दिने हो?" + "<b>%1$s</b> लाई तपाईंको <b>%2$s</b> को अनुमानित लोकेसन एक्सेस गर्ने अनुमति दिने हो?" "सटीक" "अनुमानित" "<b>%1$s</b> लाई आफ्नो पात्रोमाथि पहुँच राख्न दिने हो?" + "<b>%1$s</b> लाई <b>%2$s</b> मा भएको तपाईंको पात्रो एक्सेस गर्ने अनुमति दिने हो?" "<b>%1$s</b> SMS म्यासेज पठाउन र हेर्न दिने हो?" + "<b>%1$s</b> लाई तपाईंको <b>%2$s</b> मा SMS म्यासेज पठाउने र हेर्ने अनुमति दिने हो?" "<b>%1$s</b> लाई आफ्नो डिभाइसमा रहेका फोटो, मिडिया र फाइलहरू प्रयोग गर्न दिने हो?" + "<b>%1$s</b> लाई तपाईंको <b>%2$s</b> मा भएका फोटो, मिडिया तथा फाइलहरू एक्सेस गर्ने अनुमति दिने हो?" "<b>%1$s</b> लाई यो डिभाइसमा रहेका <b>फोटो, भिडियो, सङ्गीत र अडियो</b> प्रयोग गर्न दिने हो?" "<b>%1$s</b> लाई यो डिभाइसमा रहेका <b>फोटो, भिडियो, सङ्गीत, अडियो तथा अन्य फाइलहरू</b> प्रयोग गर्न दिने हो?" "<b>%1$s</b> लाई यस डिभाइसमा रहेका सङ्गीत तथा अन्य अडियो फाइलहरू प्रयोग गर्न दिने हो?" + "<b>%1$s</b> लाई तपाईंको <b>%2$s</b> मा भएका सङ्गीत तथा अडियो एक्सेस गर्ने अनुमति दिने हो?" "<b>%1$s</b> लाई यस डिभाइसमा रहेका फोटो र भिडियोहरू प्रयोग गर्न दिने हो?" + "<b>%1$s</b> लाई तपाईंको <b>%2$s</b> मा भएका फोटो तथा भिडियोहरू एक्सेस गर्ने अनुमति दिने हो?" "<b>%1$s</b> लाई यो डिभाइसमा भएका थप फोटो तथा भिडियोहरू प्रयोग गर्न दिने हो?" + "<b>%1$s</b> लाई तपाईंको <b>%2$s</b> मा भएका थप फोटो तथा भिडियोहरू एक्सेस गर्ने अनुमति दिने हो?" "<b>%1$s</b> लाई अडियो रेकर्ड गर्न दिने हो?" + "<b>%1$s</b> लाई तपाईंको <b>%2$s</b> मा अडियो रेकर्ड गर्ने अनुमति दिने हो?" "तपाईंले यो एप प्रयोग गरिरहेका बेलामा मात्र यसले अडियो रेकर्ड गर्न सक्ने छ" "<b>%1$s</b> लाई अडियो रेकर्ड गर्न दिने हो?" + "<b>%1$s</b> लाई तपाईंको <b>%2$s</b> मा अडियो रेकर्ड गर्ने अनुमति दिने हो?" "तपाईंले यो एप प्रयोग नगरेका बेलामा पनि यसले अडियो रेकर्ड गर्न सक्छ। ""सेटिङमा गई यो अनुमति दिनुहोस्।" "<b>%1$s</b> लाई माइक्रोफोन प्रयोग गर्न दिइएको अनुमति परिवर्तन गर्ने हो?" + "<b>%1$s</b> लाई तपाईंको <b>%2$s</b> को माइक्रोफोन एक्सेस गर्न दिइएको अनुमति परिवर्तन गर्ने हो?" "तपाईंले यो एप प्रयोग नगरेका बेलामा पनि यसले अडियो रेकर्ड गर्न चाहन्छ। ""सेटिङमा गई यो अनुमति दिनुहोस्।" "<b>%1$s</b> लाई आफ्नो शारीरिक क्रियाकलाप प्रयोग गर्न दिने हो?" + "<b>%1$s</b> लाई <b>%2$s</b> मा भएको तपाईंको शारीरिक गतिविधिसम्बन्धी डेटा एक्सेस गर्ने अनुमति दिने हो?" "<b>%1$s</b> लाई फोटो खिच्न र भिडियो रेकर्ड गर्न दिने हो?" + "<b>%1$s</b> लाई तपाईंको <b>%2$s</b> मा फोटो खिच्ने र भिडियो रेकर्ड गर्ने अनुमति दिने हो?" "तपाईंले यो एप प्रयोग गरिरहेका बेलामा मात्र यसले फोटो खिच्न र भिडियो रेकर्ड गर्न सक्ने छ" "<b>%1$s</b> लाई फोटो खिच्न र भिडियो रेकर्ड गर्न दिने हो?" + "<b>%1$s</b> लाई तपाईंको <b>%2$s</b> मा फोटो खिच्ने र भिडियो रेकर्ड गर्ने अनुमति दिने हो?" "तपाईंले यो एप प्रयोग नगरेका बेलामा पनि यसले फोटो खिच्न तथा भिडियो रेकर्ड गर्न सक्छ। ""सेटिङमा गई यो अनुमति दिनुहोस्।" "<b>%1$s</b> लाई क्यामेरा प्रयोग गर्न दिइएको अनुमति परिवर्तन गर्ने हो?" + "<b>%1$s</b> लाई तपाईंको <b>%2$s</b> को क्यामेरा एक्सेस गर्न दिइएको अनुमति परिवर्तन गर्ने हो?" "तपाईंले यो एप प्रयोग नगरेका बेलामा पनि यसले फोटो खिच्न तथा भिडियो रेकर्ड गर्न चाहन्छ। ""सेटिङमा गई यो अनुमति दिनुहोस्।" "<b>%1$s</b> लाई आफ्ना कल लग प्रयोग गर्ने अनुमति दिने हो?" + "<b>%1$s</b> लाई <b>%2$s</b> मा भएका तपाईंका फोन कल लगहरू एक्सेस गर्ने अनुमति दिने हो?" "<b>%1$s</b> लाई फोन कल गर्न र ती कलको व्यवस्थापन गर्न दिने हो?" + "<b>%1$s</b> लाई तपाईंको <b>%2$s</b> मा फोन कल गर्ने र फोन कलहरू व्यवस्थापन गर्ने अनुमति दिने हो?" "<b>%1$s</b> लाई नाडी आदि जस्ता महत्त्वपूर्ण संकेतसम्बन्धी सेन्सर डेटा हेर्ने अनुमति दिने हो?" + "<b>%1$s</b> लाई <b>%2$s</b> मा भएको तपाईंको स्वास्थ्यसम्बन्धी आधारभूत विवरण उपलब्ध गराउने सेन्सरसम्बन्धी डेटा एक्सेस गर्ने अनुमति दिने हो?" "यो एप जुनसुकै बेला (तपाईंले एप प्रयोग नगरेका बेलासमेत) तपाईंका नाडी, धड्कज जस्ता सेन्सर डेटा हेर्न र प्रयोग गर्न चाहन्छ।। यस्तो परिवर्तन गर्न ""सेटिङमा जानुहोस्।" "<b>%1$s</b> लाई नाडी, धड्कन जस्ता सेन्सर डेटा प्रयोग गर्न र हेर्न दिने हो?" + "<b>%1$s</b> लाई <b>%2$s</b> मा भएको तपाईंको स्वास्थ्यसम्बन्धी आधारभूत विवरण उपलब्ध गराउने सेन्सरसम्बन्धी डेटा एक्सेस गर्ने अनुमति दिने हो?" "यो एपलाई जुनसुकै बेला (तपाईंले एप नचलाएका बेलासमेत) बडी सेन्सरसम्बन्धी डेटा हेर्न र प्रयोग गर्न दिन ""सेटिङमा जानुहोस्।" "यो एप प्रयोग गरिँदै गरेका बेला यसलाई <b>%1$s</b> बडी सेन्सरसम्बन्धी डेटा हेर्ने र प्रयोग गर्ने अनुमति दिइरहने हो?" + "<b>%1$s</b> लाई यो एप प्रयोग गरिँदै गरेका बेला तपाईंको <b>%2$s</b> मा भएको बडी सेन्सरसम्बन्धी डेटा एक्सेस गर्ने अनुमति दिइरहने हो?" "<b>%1$s</b> लाई तपाईंलाई सूचना पठाउन दिने हो?" + "<b>%1$s</b> लाई तपाईंको <b>%2$s</b> मा सूचना पठाउने अनुमति दिने हो?" "नियन्त्रित अनुमतिहरू" "%1$s लाई लोकेसन प्रयोग गर्ने अनुमति दिइएको छ" "तपाईंको सङ्गठनले %1$s लाई तपाईंको लोकेसन प्रयोग गर्ने अनुमति दिएको छ" diff --git a/PermissionController/res/values-night-v33/themes.xml b/PermissionController/res/values-night-v33/themes.xml index 6374ee0888c91d2bca54b636de8fd6d0da223727..9b6f638a626d2ee31c3e5b9cfa73737db9185a50 100644 --- a/PermissionController/res/values-night-v33/themes.xml +++ b/PermissionController/res/values-night-v33/themes.xml @@ -16,10 +16,6 @@ --> - - - - diff --git a/PermissionController/res/values-nl/strings.xml b/PermissionController/res/values-nl/strings.xml index f845b1de45c14b5e304db4fb40029b351a2eba37..22be451af543b6d1e43e9dfa06ff29036d0fc24e 100644 --- a/PermissionController/res/values-nl/strings.xml +++ b/PermissionController/res/values-nl/strings.xml @@ -34,6 +34,7 @@ "Meer informatie" "Alles toestaan" "Altijd alles toestaan" + "Beperkte toegang toestaan" "Foto\'s en video\'s selecteren" "Meer selecteren" "Niet meer selecteren" @@ -60,6 +61,7 @@ "Apps" "App-rechten" "Niet-gebruikte apps" + "Bewerk geselecteerde foto\'s voor deze app" "Geen niet-gebruikte apps" "0 niet-gebruikte apps" "Recente rechtenbeslissingen" @@ -455,48 +457,75 @@ "Activeringsdetectie van de assistent tonen" "Icoon op statusbalk tonen als microfoon wordt gebruikt om de Spraakassistent te activeren" "<b>%1$s</b> toegang geven tot foto\'s en media op je apparaat?" + "<b>%1$s</b> toegang geven tot foto\'s en media op je <b>%2$s</b>?" "<b>%1$s</b> toegang geven tot je contacten?" + "<b>%1$s</b> toegang geven tot de contacten op je <b>%2$s</b>?" "<b>%1$s</b> toegang geven tot de locatie van dit apparaat?" + "<b>%1$s</b> toegang geven tot de locatie van je <b>%2$s</b>?" "De app heeft alleen toegang tot de locatie wanneer je de app gebruikt" "<b>%1$s</b> toegang geven tot de locatie van dit apparaat?" + "<b>%1$s</b> toegang geven tot de locatie van je <b>%2$s?" "Deze app wil mogelijk altijd toegang tot je locatie, ook als je de app niet gebruikt. ""Je kunt dit toestaan via de instellingen." "Toegang tot locatie wijzigen voor <b>%1$s</b>?" + "Toegang tot locatie wijzigen voor <b>%1$s</b> op je <b>%2$s</b>?" "Deze app wil altijd toegang tot je locatie, ook als je de app niet gebruikt. ""Je kunt dit toestaan via de instellingen." "Toestaan dat <b>%1$s</b> apparaten in de buurt vindt, er verbinding mee maakt en de relatieve positie bepaalt?" + "Toestaan dat <b>%1$s</b> apparaten in de buurt vindt, ermee verbinding maakt en de relatieve positie ervan bepaalt op je <b>%2$s</b>?" "Toestaan dat <b>%1$s</b> apparaten in de buurt vindt, er verbinding mee maakt en de relatieve positie bepaalt? ""Toestaan in Instellingen" "Locatietoegang van <b>%1$s</b> wijzigen van geschatte in exacte locatie?" + "Locatietoegang van <b>%1$s</b> op je <b>%2$s</b> wijzigen van geschat in exact?" "<b>%1$s</b> toegang geven tot de geschatte locatie van dit apparaat?" + "<b>%1$s</b> toegang geven tot de geschatte locatie van je <b>%2$s</b>?" "Exact" "Geschat" "<b>%1$s</b> toegang geven tot je agenda?" + "<b>%1$s</b> toegang geven tot de agenda op je <b>%2$s</b>?" "<b>%1$s</b> toestaan om sms\'jes te verzenden en te bekijken?" + "<b>%1$s</b> toestaan om sms-berichten te sturen en te bekijken op je <b>%2$s</b>?" "<b>%1$s</b> toegang geven tot foto\'s, media en bestanden op je apparaat?" + "<b>%1$s</b> toegang geven tot foto\'s, media en bestanden op je <b>%2$s</b>?" "<b>%1$s</b> toegang geven tot <b>foto\'s, video\'s, muziek en audio</b> op dit apparaat?" "<b>%1$s</b> toegang geven tot <b>foto\'s, video\'s, muziek, audio en andere bestanden</b> op dit apparaat?" "<b>%1$s</b> toegang geven tot muziek en audio op dit apparaat?" + "<b>%1$s</b> toegang geven tot muziek en audio op je <b>%2$s</b>?" "<b>%1$s</b> toegang geven tot foto\'s en video\'s op dit apparaat?" + "<b>%1$s</b> toegang geven tot foto\'s en video\'s op je <b>%2$s</b>?" "<b>%1$s</b> toegang geven tot meer foto\'s en video\'s op dit apparaat?" + "<b>%1$s</b> toegang geven tot meer foto\'s en video\'s op je <b>%2$s</b>?" "<b>%1$s</b> toestaan om audio op te nemen?" + "<b>%1$s</b> toestaan om audio op te nemen op je <b>%2$s</b>?" "Deze app kan alleen audio opnemen als je de app gebruikt" "<b>%1$s</b> toestaan om audio op te nemen?" + "<b>%1$s</b> toestaan om audio op te nemen op je <b>%2$s</b>?" "Deze app wil mogelijk altijd audio opnemen, ook als je de app niet gebruikt. ""Toestaan in instellingen." "Toegang tot microfoon wijzigen voor <b>%1$s</b>?" + "Toegang tot microfoon wijzigen voor <b>%1$s</b> op je <b>%2$s</b>?" "Deze app wil altijd audio opnemen, ook als je de app niet gebruikt. ""Toestaan in instellingen." "<b>%1$s</b> toegang geven tot je fysieke activiteit?" + "<b>%1$s</b> toegang geven tot je fysieke activiteit op je <b>%2$s</b>?" "<b>%1$s</b> toestaan om foto\'s te maken en video\'s op te nemen?" + "<b>%1$s</b> toestaan om foto\'s te maken en video\'s op te nemen op je <b>%2$s</b>?" "Deze app kan alleen foto\'s maken en video\'s opnemen als je de app gebruikt" "<b>%1$s</b> toestaan om foto\'s te maken en video\'s op te nemen?" + "<b>%1$s</b> toestaan om foto\'s te maken en video\'s op te nemen op je <b>%2$s</b>?" "Deze app wil mogelijk altijd foto\'s maken en video\'s opnemen, ook als je de app niet gebruikt. ""Toestaan in Instellingen." "Toegang tot camera wijzigen voor <b>%1$s</b>?" + "Toegang tot camera wijzigen voor <b>%1$s</b> op je <b>%2$s</b>?" "Deze app wil altijd foto\'s maken en video\'s opnemen, ook als je de app niet gebruikt. ""Toestaan in Instellingen." "<b>%1$s</b> toegang geven tot je gesprekslijsten?" + "<b>%1$s</b> toegang geven tot de gesprekslijsten op je <b>%2$s</b>?" "<b>%1$s</b> toestaan om telefoongesprekken te starten en te beheren?" + "<b>%1$s</b> toestaan om telefoongesprekken te starten en te beheren op je <b>%2$s</b>?" "<b>%1$s</b> toegang geven tot sensorgegevens over je vitale functies?" + "<b>%1$s</b> toegang geven tot sensorgegevens over je vitale functies op je <b>%2$s</b>?" "Deze app wil altijd toegang tot gegevens van lichaamssensoren over je vitale functies, ook als je de app niet gebruikt. ""Ga naar Instellingen"" als je deze wijziging wilt doorvoeren." "<b>%1$s</b> toegang geven tot sensorgegevens over je vitale functies?" + "<b>%1$s</b> toegang geven tot sensorgegevens over je vitale functies op je <b>%2$s</b>?" "Als je deze app altijd toegang tot gegevens van lichaamssensoren wilt geven, ook als je de app niet gebruikt, ""ga je naar Instellingen""." "Instelling behouden dat <b>%1$s</b> toegang tot gegevens van lichaamssensoren heeft als de app wordt gebruikt?" + "Blijven toestaan dat <b>%1$s</b> toegang tot gegevens van lichaamssensoren op je <b>%2$s</b> heeft als de app wordt gebruikt?" "Toestaan dat <b>%1$s</b> je meldingen stuurt?" + "<b>%1$s</b> toestaan om je meldingen te sturen op je <b>%2$s</b>?" "Beheerde rechten" "%1$s heeft toegang tot je locatie" "Je organisatie geeft %1$s toegang tot je locatie" diff --git a/PermissionController/res/values-or/strings.xml b/PermissionController/res/values-or/strings.xml index 840eae10f4e781ce696cc03b9d8a7b3919e5f6bc..beb7572bae5ce31a397ed4a48fdc3b73f478201d 100644 --- a/PermissionController/res/values-or/strings.xml +++ b/PermissionController/res/values-or/strings.xml @@ -34,6 +34,7 @@ "ଅଧିକ ସୂଚନା" "ସବୁକୁ ଅନୁମତି ଦିଅନ୍ତୁ" "ସର୍ବଦା ସବୁକୁ ଅନୁମତି ଦିଅନ୍ତୁ" + "ସୀମିତ ଆକ୍ସେସକୁ ଅନୁମତି ଦିଅନ୍ତୁ" "ଫଟୋ ଏବଂ ଭିଡିଓଗୁଡ଼ିକୁ ଚୟନ କରନ୍ତୁ" "ଅଧିକ ଚୟନ କରନ୍ତୁ" "ଅଧିକ ଚୟନ କରନ୍ତୁ ନାହିଁ" @@ -60,6 +61,7 @@ "ଆପ୍ସ" "ଆପ ଅନୁମତିଗୁଡ଼ିକ" "ଅବ୍ୟବହୃତ ଆପ୍ସ" + "ଏହି ଆପ ପାଇଁ ଚୟନିତ ଫଟୋଗୁଡ଼ିକୁ ଏଡିଟ କରନ୍ତୁ" "କୌଣସି ଅବ୍ୟବହୃତ ଆପ୍ ନାହିଁ" "0ଟି ଅବ୍ୟବହୃତ ଆପ୍" "ବର୍ତ୍ତମାନର ଅନୁମତି ନିଷ୍ପତ୍ତି" @@ -455,48 +457,75 @@ "ଆସିଷ୍ଟାଣ୍ଟ ଟ୍ରିଗର୍ ଚିହ୍ନଟକରଣ ଦେଖାନ୍ତୁ" "ଭଏସ୍ ଆସିଷ୍ଟାଣ୍ଟ୍ ସକ୍ରିୟ କରିବା ପାଇଁ ମାଇକ୍ରୋଫାନ୍ ବ୍ୟବହାର କରୁଥିବା ସମୟରେ ସ୍ଥିତି ବାର୍‌ରେ ଆଇକନ୍ ଦେଖାନ୍ତୁ" "ଆପଣଙ୍କ ଡିଭାଇସ୍‌ରେ ଥିବା ଫଟୋ ଓ ମିଡିଆ ଆକ୍‌ସେସ୍ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" + "ଆପଣଙ୍କ <b>%2$s</b>ରେ ଥିବା ଫଟୋ ଏବଂ ମିଡିଆକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "<b>%1$s</b>କୁ ଆପଣଙ୍କ କଣ୍ଟାକ୍ଟଗୁଡ଼ିକୁ ଆକ୍ସେସ କରିବା ପାଇଁ ଅନୁମତି ଦେବେ?" + "ଆପଣଙ୍କ <b>%2$s</b>ରେ ଥିବା କଣ୍ଟାକ୍ଟଗୁଡ଼ିକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "ଏହି ଡିଭାଇସର ଲୋକେସନ ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" + "ଆପଣଙ୍କ <b>%2$sର</b> ଲୋକେସନକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "ଆପଣ ଆପ୍ ବ୍ୟବହାର କରୁଥିବା ବେଳେ କେବଳ ଲୋକେସନ୍‍କୁ ଆପ୍‍ର ଆକ୍ସେସ୍‍ ରହିବ।" "ଏହି ଡିଭାଇସ୍‌ର ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" + "ଆପଣଙ୍କ <b>%2$sର ଲୋକେସନକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "ଆପଣ ଆପ୍ ବ୍ୟବହାର କରୁନଥିଲେ ମଧ୍ୟ, ଏହି ଆପ୍ ସବୁ ସମୟରେ ଆପଣଙ୍କର ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରିବାକୁ ଚାହିଁପାରେ। ""ସେଟିଂସରେ ଅନୁମତି ଦିଅନ୍ତୁ।" "<b>%1$s</b> ପାଇଁ ଲୋକେସନ୍ ଆକ୍ସେସ୍ ବଦଳାଇବେ କି?" + "ଆପଣଙ୍କ <b>%2$s</b>ରେ <b>%1$s</b> ପାଇଁ ଲୋକେସନ ଆକ୍ସେସକୁ ପରିବର୍ତ୍ତନ କରିବେ?" "ଆପଣ ଆପ୍ ବ୍ୟବହାର କରୁନଥିଲେ ମଧ୍ୟ, ଏହି ଆପ୍ ସବୁ ସମୟରେ ଆପଣଙ୍କର ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରିବାକୁ ଚାହେଁ। ""ସେଟିଂସରେ ଅନୁମତି ଦିଅନ୍ତୁ।" "ଆଖପାଖର ଡିଭାଇସଗୁଡ଼ିକର ଆପେକ୍ଷିକ ଅବସ୍ଥିତିକୁ ଖୋଜିବା, କନେକ୍ଟ ଏବଂ ନିର୍ଦ୍ଧାରଣ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" + "<b>%2$s</b>ରେ ଆଖପାଖର ଡିଭାଇସର ଆପେକ୍ଷିକ ସ୍ଥିତିକୁ ଖୋଜିବା, କନେକ୍ଟ ଓ ସ୍ଥିର କରିବାକୁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "ଆଖପାଖର ଡିଭାଇସଗୁଡ଼ିକର ଆପେକ୍ଷିକ ଅବସ୍ଥିତିକୁ ଖୋଜିବା, ସଂଯୋଗ ଏବଂ ନିର୍ଦ୍ଧାରଣ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ? ""ସେଟିଂସରେ ଅନୁମତି ଦିଅନ୍ତୁ।" "<b>%1$s</b>ର ଲୋକେସନ୍ ଆକ୍ସେସକୁ ଆନୁମାନିକରୁ ସଠିକକୁ ବଦଳାଇବେ?" + "ଆପଣଙ୍କ <b>%2$s</b>ରେ <b>%1$s</b>ର ଲୋକେସନ ଆକ୍ସେସକୁ ଆନୁମାନିକରୁ ସଠିକକୁ ପରିବର୍ତ୍ତନ କରିବେ?" "ଏହି ଡିଭାଇସର ଆନୁମାନିକ ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" + "ଆପଣଙ୍କ <b>%2$s</b>ର ଆନୁମାନିକ ଲୋକେସନକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "ସଠିକ୍" "(ଆନୁମାନିକ)" "<b>%1$s</b>କୁ ଆପଣଙ୍କ କ୍ୟାଲେଣ୍ଡର୍‌କୁ ଆକ୍ସେସ୍‍ କରିବା ପାଇଁ ଅନୁମତି ଦେବେ କି?" + "ଆପଣଙ୍କ <b>%2$s</b>ରେ ଆପଣଙ୍କର କେଲେଣ୍ଡରକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "<b>%1$s</b>କୁ SMS ମେସେଜ୍‍ ପଠାଇବା ଓ ଦେଖିବା ପାଇଁ ଅନୁମତି ଦେବେ କି?" + "ଆପଣଙ୍କ <b>%2$s</b>ରେ SMS ମେସେଜ ପଠାଇବା ଏବଂ ଭ୍ୟୁ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "<b>%1$s</b>କୁ ଆପଣଙ୍କ ଡିଭାଇସରେ ଥିବା ଫଟୋ, ମିଡିଆ ଓ ଫାଇଲ୍‍ ଆକ୍ସେସ୍‍ କରିବାକୁ ଅନୁମତି ଦେବେ କି?" + "ଆପଣଙ୍କ <b>%2$s</b>ରେ ଥିବା ଫଟୋ, ମିଡିଆ ଏବଂ ଫାଇଲକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "ଏହି ଡିଭାଇସରେ ଥିବା <b>ଫଟୋ, ଭିଡିଓ, ମ୍ୟୁଜିକ ଓ ଅଡିଓ</b>କୁ ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "ଏହି ଡିଭାଇସରେ ଥିବା<b>ଫଟୋ, ଭିଡିଓ, ମ୍ୟୁଜିକ, ଅଡିଓ ଓ ଅନ୍ୟ ଫାଇଲ</b> ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "ଏହି ଡିଭାଇସରେ ଥିବା ମ୍ୟୁଜିକ ଏବଂ ଅଡିଓକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" + "ଆପଣଙ୍କ <b>%2$s</b>ରେ ଥିବା ମ୍ୟୁଜିକ ଏବଂ ଅଡିଓକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "ଏହି ଡିଭାଇସରେ ଥିବା ଫଟୋ ଏବଂ ଭିଡିଓଗୁଡ଼ିକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" + "ଆପଣଙ୍କ <b>%2$s</b>ରେ ଥିବା ଫଟୋ ଏବଂ ଭିଡିଓକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "ଏହି ଡିଭାଇସରେ ଥିବା ଅଧିକ ଫଟୋ ଏବଂ ଭିଡିଓକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" + "ଆପଣଙ୍କ <b>%2$s</b>ରେ ଥିବା ଅଧିକ ଫଟୋ ଏବଂ ଭିଡିଓକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "<b>%1$s</b>କୁ ଅଡିଓ ରେକର୍ଡ କରିବା ପାଇଁ ଅନୁମତି ଦେବେ?" + "ଆପଣଙ୍କ <b>%2$s</b>ରେ ଅଡିଓ ରେକର୍ଡ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "ଆପଣ ଆପକୁ ବ୍ୟବହାର କରୁଥିବା ସମୟରେ କେବଳ ଏହା ଅଡିଓ ରେକର୍ଡ କରିବାକୁ ସକ୍ଷମ ହେବ" "<b>%1$s</b>କୁ ଅଡିଓ ରେକର୍ଡ କରିବାକୁ ଅନୁମତି ଦେବେ?" + "ଆପଣଙ୍କ <b>%2$s</b>ରେ ଅଡିଓ ରେକର୍ଡ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "ଆପଣ ଆପକୁ ବ୍ୟବହାର କରୁନଥିଲେ ମଧ୍ୟ, ଏହା ସବୁ ସମୟରେ ଅଡିଓ ରେକର୍ଡ କରିବାକୁ ଚାହିଁ ପାରେ। ""ସେଟିଂସରେ ଅନୁମତି ଦିଅନ୍ତୁ।" "<b>%1$s</b> ପାଇଁ ମାଇକ୍ରୋଫୋନର ଆକ୍ସେସ୍ ବଦଳାଇବେ କି?" + "ଆପଣଙ୍କ <b>%2$s</b>ରେ <b>%1$s</b> ପାଇଁ ମାଇକ୍ରୋଫୋନ ଆକ୍ସେସକୁ ପରିବର୍ତ୍ତନ କରିବେ?" "ଆପଣ ଆପକୁ ବ୍ୟବହାର କରୁନଥିଲେ ମଧ୍ୟ, ଏହା ସବୁ ସମୟରେ ଅଡିଓ ରେକର୍ଡ କରିବାକୁ ଚାହେଁ। ""ସେଟିଂସରେ ଅନୁମତି ଦିଅନ୍ତୁ।" "ଆପଣ <b>%1$s</b>କୁ ଆପଣଙ୍କର ଶାରୀରିକ କାର୍ଯ୍ୟକଳାପକୁ ଆକ୍ସେସ୍ କରିବାକୁ ଅନୁମତି ଦେବେ କି?" + "ଆପଣଙ୍କ <b>%2$s</b>ରେ ଆପଣଙ୍କର ଶାରୀରିକ କାର୍ଯ୍ୟକଳାପକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "<b>%1$s</b>କୁ ଫଟୋ ଉଠାଇବାକୁ ଏବଂ ଭିଡିଓ ରେକର୍ଡ କରିବାକୁ ଅନୁମତି ଦେବେ?" + "ଆପଣଙ୍କ <b>%2$s</b>ରେ ଫଟୋ ଉଠାଇବା ଏବଂ ଭିଡିଓ ରେକର୍ଡ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "ଆପଣ ଆପକୁ ବ୍ୟବହାର କରୁଥିବା ସମୟରେ କେବଳ ଏହା ଛବି ନେବାକୁ ଏବଂ ଭିଡିଓ ରେକର୍ଡ କରିବାକୁ ସକ୍ଷମ ହେବ" "<b>%1$s</b>କୁ ଫଟୋ ଉଠାଇବାକୁ ଏବଂ ଭିଡିଓ ରେକର୍ଡ କରିବାକୁ ଅନୁମତି ଦେବେ?" + "ଆପଣଙ୍କ <b>%2$s</b>ରେ ଫଟୋ ଉଠାଇବା ଏବଂ ଭିଡିଓ ରେକର୍ଡ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "ଆପଣ ଆପକୁ ବ୍ୟବହାର କରୁନଥିଲେ ମଧ୍ୟ, ଏହା ସବୁ ସମୟରେ ଛବି ନେବାକୁ ଏବଂ ଭିଡିଓ ରେକର୍ଡ କରିବାକୁ ଚାହିଁ ପାରେ। ""ସେଟିଂସରେ ଅନୁମତି ଦିଅନ୍ତୁ।" "<b>%1$s</b> ପାଇଁ କ୍ୟାମେରାର ଆକ୍ସେସ୍ ବଦଳାଇବେ କି?" + "ଆପଣଙ୍କ <b>%2$s</b>ରେ <b>%1$s</b> ପାଇଁ କେମେରା ଆକ୍ସେସକୁ ପରିବର୍ତ୍ତନ କରିବେ?" "ଆପଣ ଆପକୁ ବ୍ୟବହାର କରୁନଥିଲେ ମଧ୍ୟ, ଏହା ସବୁ ସମୟରେ ଛବି ନେବାକୁ ଏବଂ ଭିଡିଓ ରେକର୍ଡ କରିବାକୁ ଚାହେଁ। ""ସେଟିଂସରେ ଅନୁମତି ଦିଅନ୍ତୁ।" "ଆପଣଙ୍କ ଫୋନର କଲ ଲଗ ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" + "ଆପଣଙ୍କ <b>%2$s</b>ରେ ଆପଣଙ୍କର ଫୋନ କଲ ଲଗଗୁଡ଼ିକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "<b>%1$s</b>କୁ ଫୋନ କଲ କରିବାକୁ ତଥା ପରିଚାଳନା କରିବାକୁ ଅନୁମତି ଦେବେ?" + "ଆପଣଙ୍କ <b>%2$s</b>ରେ ଫୋନ କଲ କରିବା ଏବଂ ସେଗୁଡ଼ିକୁ ପରିଚାଳନା କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "<b>%1$s</b>କୁ ଆପଣଙ୍କ ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ ଲକ୍ଷଣଗୁଡ଼ିକ ବିଷୟରେ ସେନ୍ସର୍‍ ଡାଟା ଆକ୍ସେସ୍‍ କରିବା ପାଇଁ ଅନୁମତି ଦେବେ କି?" + "<b>%2$s</b>ରେ ମହତ୍ତ୍ୱପୂର୍ଣ୍ଣ ଲକ୍ଷଣ ବିଷୟରେ ସେନ୍ସର ଡାଟାକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "ଆପଣ ଆପ ବ୍ୟବହାର କରୁନଥିଲେ ମଧ୍ୟ, ଏହି ଆପ ସବୁ ସମୟରେ ଆପଣଙ୍କ ମହତ୍ତ୍ୱପୂର୍ଣ୍ଣ ଲକ୍ଷଣଗୁଡ଼ିକ ବିଷୟରେ ସେନ୍ସର ଡାଟାକୁ ଆକ୍ସେସ କରିବା ପାଇଁ ଚାହେଁ। ଏହି ପରିବର୍ତ୍ତନ କରିବାକୁ, ""ସେଟିଂସକୁ ଯାଆନ୍ତୁ।" "ଆପଣଙ୍କ ମହତ୍ତ୍ୱପୂର୍ଣ୍ଣ ଲକ୍ଷଣଗୁଡ଼ିକ ବିଷୟରେ ସେନ୍ସର ଡାଟାକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ କି?" + "<b>%2$s</b>ରେ ମହତ୍ତ୍ୱପୂର୍ଣ୍ଣ ଲକ୍ଷଣ ବିଷୟରେ ସେନ୍ସର ଡାଟାକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "ଆପଣ ଆପ ବ୍ୟବହାର କରୁନଥିଲେ ମଧ୍ୟ, ବଡି ସେନ୍ସର ଡାଟାକୁ ସର୍ବଦା ଆକ୍ସେସ କରିବା ନିମନ୍ତେ ଏହି ଆପକୁ ଅନୁମତି ଦେବା ପାଇଁ, ""ସେଟିଂସକୁ ଯାଆନ୍ତୁ।" "ଆପ ବ୍ୟବହାରରେ ଥିବା ସମୟରେ ବଡି ସେନ୍ସର ଡାଟାକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବା ଜାରି ରଖିବେ?" + "ଆପକୁ ବ୍ୟବହାର କରାଯାଉଥିବା ବେଳେ <b>%2$s</b>ରେ ବଡି ସେନ୍ସର ଡାଟାକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବା ଜାରି ରଖିବେ?" "ଆପଣଙ୍କୁ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ପଠାଇବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" + "ଆପଣଙ୍କ <b>%2$s</b>ରେ ଆପଣଙ୍କୁ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ପଠାଇବା ପାଇଁ <b>%1$s</b>କୁ ଅନୁମତି ଦେବେ?" "ନିୟନ୍ତ୍ରିତ ଅନୁରୋଧଗୁଡ଼ିକ" "%1$sର ଲୋକେସନ ଆକ୍ସେସ ଅଛି" "ଆପଣଙ୍କ ଲୋକେସନକୁ ଆକ୍ସେସ କରିବା ପାଇଁ ଆପଣଙ୍କ ସଂସ୍ଥା %1$sକୁ ଅନୁମତି ଦିଏ" diff --git a/PermissionController/res/values-pa/strings.xml b/PermissionController/res/values-pa/strings.xml index f4e26680cc961d67cd36558345704e2b10003662..b69db6992687706287d298a3a604df1a271fbb44 100644 --- a/PermissionController/res/values-pa/strings.xml +++ b/PermissionController/res/values-pa/strings.xml @@ -34,6 +34,7 @@ "ਹੋਰ ਜਾਣਕਾਰੀ" "ਸਭ \'ਤੇ ਕਰਨ ਦਿਓ" "ਹਮੇਸ਼ਾਂ ਸਭ ਨੂੰ ਆਗਿਆ ਦਿਓ" + "ਸੀਮਤ ਪਹੁੰਚ ਦੀ ਆਗਿਆ ਦਿਓ" "ਫ਼ੋਟੋਆਂ ਅਤੇ ਵੀਡੀਓ ਚੁਣੋ" "ਹੋਰ ਚੁਣੋ" "ਹੋਰ ਡਾਟਾ ਨਾ ਚੁਣੋ" @@ -60,6 +61,7 @@ "ਐਪਾਂ" "ਐਪ ਇਜਾਜ਼ਤਾਂ" "ਅਣਵਰਤੀਆਂ ਐਪਾਂ" + "ਇਸ ਐਪ ਲਈ ਚੁਣੀਆਂ ਫ਼ੋਟੋਆਂ ਦਾ ਸੰਪਾਦਨ ਕਰੋ" "ਕੋਈ ਅਣਵਰਤੀ ਐਪ ਨਹੀਂ" "0 ਅਣਵਰਤੀਆਂ ਐਪਾਂ" "ਇਜਾਜ਼ਤ ਸੰਬੰਧੀ ਹਾਲੀਆ ਫ਼ੈਸਲੇ" @@ -455,48 +457,75 @@ "ਸਹਾਇਕ ਟ੍ਰਿਗਰ ਦੀ ਸੂਹ ਦਿਖਾਓ" "ਜਦੋਂ ਅਵਾਜ਼ੀ ਸਹਾਇਕ ਨੂੰ ਕਿਰਿਆਸ਼ੀਲ ਕਰਨ ਲਈ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਤਾਂ ਸਥਿਤੀ ਪੱਟੀ ਵਿੱਚ ਪ੍ਰਤੀਕ ਦਿਖਾਓ" "ਕੀ <b>%1$s</b> ਨੂੰ ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਫ਼ੋਟੋਆਂ ਅਤੇ ਮੀਡੀਆ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" + "ਕੀ <b>%1$s</b> ਨੂੰ ਆਪਣੇ <b>%2$s</b> \'ਤੇ ਫ਼ੋਟੋਆਂ ਅਤੇ ਮੀਡੀਆ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" "ਕੀ <b>%1$s</b> ਨੂੰ ਤੁਹਾਡੇ ਸੰਪਰਕਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" + "ਕੀ <b>%1$s</b> ਨੂੰ <b>%2$s</b> \'ਤੇ ਆਪਣੇ ਸੰਪਰਕ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" "ਕੀ <b>%1$s</b> ਨੂੰ ਇਸ ਡੀਵਾਈਸ ਦੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" + "ਕੀ <b>%1$s</b> ਨੂੰ ਆਪਣੇ <b>%2$s</b> ਦੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" "ਤੁਹਾਡੇ ਵੱਲੋਂ ਐਪ ਦੀ ਵਰਤੋਂ ਕਰਨ ਵੇਲੇ ਹੀ ਐਪ ਕੋਲ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਹੋਵੇਗੀ" "ਕੀ <b>%1$s</b> ਨੂੰ ਇਸ ਡੀਵਾਈਸ ਦੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" + "ਕੀ <b>%1$s</b> ਨੂੰ ਆਪਣੇ <b>%2$s ਦਾ ਟਿਕਾਣਾ ਸਾਂਝਾ ਕਰਨ ਦੇਣਾ ਹੈ?" "ਸ਼ਾਇਦ ਇਸ ਐਪ ਨੂੰ ਹਰ ਵੇਲੇ ਤੁਹਾਡੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਹੋਵੇ, ਭਾਵੇਂ ਤੁਸੀਂ ਐਪ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹੋ ਜਾਂ ਨਾ। ""ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਆਗਿਆ ਦਿਓ।" "ਕੀ <b>%1$s</b> ਲਈ ਟਿਕਾਣਾ ਪਹੁੰਚ ਨੂੰ ਬਦਲਣਾ ਹੈ?" + "ਕੀ <b>%1$s</b> ਲਈ ਆਪਣੇ <b>%2$s</b> \'ਤੇ ਟਿਕਾਣਾ ਪਹੁੰਚ ਨੂੰ ਬਦਲਣਾ ਹੈ?" "ਇਸ ਐਪ ਨੂੰ ਹਰ ਵੇਲੇ ਤੁਹਾਡੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਚਾਹੀਦੀ ਹੈ, ਭਾਵੇਂ ਤੁਸੀਂ ਐਪ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹੋ ਜਾਂ ਨਾ। ""ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਆਗਿਆ ਦਿਓ।" "ਕੀ <b>%1$s</b> ਨੂੰ ਨਜ਼ਦੀਕੀ ਡੀਵਾਈਸਾਂ ਲੱਭਣ, ਉਨ੍ਹਾਂ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਅਤੇ ਸੰਬੰਧਿਤ ਸਥਿਤੀ ਨੂੰ ਨਿਰਧਾਰਿਤ ਕਰਨ ਦੇਣਾ ਹੈ?" + "ਕੀ <b>%1$s</b> ਨੂੰ <b>%2$s</b> \'ਤੇ ਨਜ਼ਦੀਕੀ ਡੀਵਾਈਸ ਲੱਭਣ, ਕਨੈਕਟ ਕਰਨ ਅਤੇ ਸਥਿਤੀ ਨਿਰਧਾਰਿਤ ਕਰਨ ਦੇਣੀ ਹੈ?" "ਕੀ <b>%1$s</b> ਨੂੰ ਨਜ਼ਦੀਕੀ ਡੀਵਾਈਸਾਂ ਲੱਭਣ, ਉਨ੍ਹਾਂ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਅਤੇ ਸੰਬੰਧਿਤ ਸਥਿਤੀ ਨੂੰ ਨਿਰਧਾਰਿਤ ਕਰਨ ਦੇਣਾ ਹੈ? ""ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਆਗਿਆ ਦਿਓ।" "ਕੀ <b>%1$s</b> ਦੀ ਟਿਕਾਣਾ ਪਹੁੰਚ ਨੂੰ ਅੰਦਾਜ਼ਨ ਤੋਂ ਸਹੀ ਟਿਕਾਣੇ \'ਤੇ ਬਦਲਣਾ ਹੈ?" + "ਕੀ <b>%1$s</b> ਦੀ ਟਿਕਾਣਾ ਪਹੁੰਚ ਨੂੰ ਆਪਣੇ <b>%2$s</b> \'ਤੇ ਅਨੁਮਾਨਿਤ ਤੋਂ ਸਟੀਕ \'ਤੇ ਬਦਲਣਾ ਹੈ?" "ਕੀ <b>%1$s</b> ਨੂੰ ਇਸ ਡੀਵਾਈਸ ਦੇ ਅੰਦਾਜ਼ਨ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣੀ ਹੈ?" + "ਕੀ <b>%1$s</b> ਨੂੰ ਆਪਣੇ <b>%2$s</b> ਦੇ ਅੰਦਾਜ਼ਨ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" "ਸਹੀ" "ਅੰਦਾਜ਼ਨ" "ਕੀ <b>%1$s</b> ਨੂੰ ਤੁਹਾਡੇ ਕੈਲੰਡਰ ਤੱਕ ਪਹੁੰਚ ਕਰਨੀ ਦੇਣੀ ਹੈ?" + "ਕੀ <b>%1$s</b> ਨੂੰ <b>%2$s</b> \'ਤੇ ਆਪਣੇ ਕੈਲੰਡਰ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" "ਕੀ <b>%1$s</b> ਨੂੰ SMS ਸੁਨੇਹੇ ਭੇਜਣ ਅਤੇ ਦੇਖਣ ਦੇਣੇ ਹਨ?" + "ਕੀ <b>%1$s</b> ਨੂੰ ਆਪਣੇ <b>%2$s</b> \'ਤੇ SMS ਸੁਨੇਹੇ ਭੇਜਣ ਅਤੇ ਦੇਖਣ ਦੇਣੇ ਹਨ?" "ਕੀ <b>%1$s</b> ਨੂੰ ਆਪਣੇ ਡੀਵਾਈਸ \'ਤੇ ਫ਼ੋਟੋਆਂ, ਮੀਡੀਆ ਅਤੇ ਫ਼ਾਈਲਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" + "ਕੀ <b>%1$s</b> ਨੂੰ ਆਪਣੇ <b>%2$s</b> \'ਤੇ ਫ਼ੋਟੋਆਂ, ਮੀਡੀਆ ਅਤੇ ਫ਼ਾਈਲਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" "ਕੀ <b>%1$s</b> ਨੂੰ ਇਸ ਡੀਵਾਈਸ \'ਤੇ <b>ਫ਼ੋਟੋਆਂ, ਵੀਡੀਓ, ਸੰਗੀਤ ਅਤੇ ਆਡੀਓ</b> ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" "ਕੀ <b>%1$s</b> ਨੂੰ ਇਸ ਡੀਵਾਈਸ \'ਤੇ <b>ਫ਼ੋਟੋਆਂ, ਵੀਡੀਓ, ਸੰਗੀਤ, ਆਡੀਓ ਅਤੇ ਹੋਰ ਫ਼ਾਈਲਾਂ</b> ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" "ਕੀ <b>%1$s</b> ਨੂੰ ਇਸ ਡੀਵਾਈਸ \'ਤੇ ਸੰਗੀਤ ਅਤੇ ਆਡੀਓ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" + "ਕੀ <b>%1$s</b> ਨੂੰ ਆਪਣੇ <b>%2$s</b> \'ਤੇ ਸੰਗੀਤ ਅਤੇ ਆਡੀਓ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" "ਕੀ <b>%1$s</b> ਨੂੰ ਇਸ ਡੀਵਾਈਸ \'ਤੇ ਫ਼ੋਟੋਆਂ ਅਤੇ ਵੀਡੀਓ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" + "ਕੀ <b>%1$s</b> ਨੂੰ ਆਪਣੇ <b>%2$s</b> \'ਤੇ ਫ਼ੋਟੋਆਂ ਅਤੇ ਵੀਡੀਓ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" "ਕੀ <b>%1$s</b> ਨੂੰ ਇਸ ਡੀਵਾਈਸ \'ਤੇ ਹੋਰ ਫ਼ੋਟੋਆਂ ਅਤੇ ਵੀਡੀਓ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" + "ਕੀ <b>%1$s</b> ਨੂੰ ਆਪਣੇ <b>%2$s</b> \'ਤੇ ਹੋਰ ਫ਼ੋਟੋਆਂ ਅਤੇ ਵੀਡੀਓ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" "ਕੀ <b>%1$s</b> ਨੂੰ ਆਡੀਓ ਰਿਕਾਰਡ ਕਰਨ ਦੇਣੀ ਹੈ?" + "ਕੀ <b>%1$s</b> ਨੂੰ ਆਪਣੇ <b>%2$s</b> \'ਤੇ ਆਡੀਓ ਰਿਕਾਰਡ ਕਰਨ ਦੇਣੀ ਹੈ?" "ਤੁਹਾਡੇ ਵੱਲੋਂ ਐਪ ਦੀ ਵਰਤੋਂ ਕਰਨ ਵੇਲੇ ਹੀ ਐਪ ਆਡੀਓ ਰਿਕਾਰਡ ਕਰ ਸਕੇਗੀ" "ਕੀ <b>%1$s</b> ਨੂੰ ਆਡੀਓ ਰਿਕਾਰਡ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣੀ ਹੈ?" + "ਕੀ <b>%1$s</b> ਨੂੰ ਆਪਣੇ <b>%2$s</b> \'ਤੇ ਆਡੀਓ ਰਿਕਾਰਡ ਕਰਨ ਦੇਣੀ ਹੈ?" "ਇਹ ਐਪ ਹਰ ਵੇਲੇ ਆਡੀਓ ਰਿਕਾਰਡ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਮੰਗ ਸਕਦੀ ਹੈ, ਉਦੋਂ ਵੀ ਜਦੋਂ ਤੁਸੀਂ ਐਪ ਦੀ ਵਰਤੋਂ ਨਾ ਕਰ ਰਹੇ ਹੋਵੋ। ""ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਇਜਾਜ਼ਤ ਦਿਓ।" "ਕੀ <b>%1$s</b> ਲਈ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਪਹੁੰਚ ਨੂੰ ਬਦਲਣਾ ਹੈ?" + "ਕੀ <b>%1$s</b> ਲਈ ਆਪਣੇ <b>%2$s</b> \'ਤੇ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਪਹੁੰਚ ਨੂੰ ਬਦਲਣਾ ਹੈ?" "ਇਹ ਐਪ ਹਰ ਵੇਲੇ ਆਡੀਓ ਰਿਕਾਰਡ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਮੰਗਦੀ ਹੈ, ਉਦੋਂ ਵੀ ਜਦੋਂ ਤੁਸੀਂ ਐਪ ਦੀ ਵਰਤੋਂ ਨਾ ਕਰ ਰਹੇ ਹੋਵੋ। ""ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਇਜਾਜ਼ਤ ਦਿਓ।" "ਕੀ <b>%1$s</b> ਨੂੰ ਆਪਣੀ ਸਰੀਰਕ ਸਰਗਰਮੀ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" + "ਕੀ <b>%1$s</b> ਨੂੰ <b>%2$s</b> \'ਤੇ ਆਪਣੀ ਸਰੀਰਕ ਸਰਗਰਮੀ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" "ਕੀ <b>%1$s</b> ਨੂੰ ਤਸਵੀਰਾਂ ਖਿੱਚਣ ਅਤੇ ਵੀਡੀਓ ਰਿਕਾਰਡ ਕਰਨ ਦੇਣਾ ਹੈ?" + "ਕੀ <b>%1$s</b> ਨੂੰ ਆਪਣੇ <b>%2$s</b> \'ਤੇ ਤਸਵੀਰਾਂ ਖਿੱਚਣ ਅਤੇ ਵੀਡੀਓ ਰਿਕਾਰਡ ਕਰਨ ਦੇਣੀ ਹੈ?" "ਤੁਹਾਡੇ ਵੱਲੋਂ ਐਪ ਦੀ ਵਰਤੋਂ ਕਰਨ ਵੇਲੇ ਹੀ ਐਪ ਤਸਵੀਰਾਂ ਖਿੱਚ ਸਕੇਗੀ ਅਤੇ ਵੀਡੀਓ ਰਿਕਾਰਡ ਕਰ ਸਕੇਗੀ" "ਕੀ <b>%1$s</b> ਨੂੰ ਤਸਵੀਰਾਂ ਖਿੱਚਣ ਅਤੇ ਵੀਡੀਓ ਰਿਕਾਰਡ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣੀ ਹੈ?" + "ਕੀ <b>%1$s</b> ਨੂੰ ਆਪਣੇ <b>%2$s</b> \'ਤੇ ਤਸਵੀਰਾਂ ਖਿੱਚਣ ਅਤੇ ਵੀਡੀਓ ਰਿਕਾਰਡ ਕਰਨ ਦੇਣੀ ਹੈ?" "ਇਹ ਐਪ ਹਰ ਵੇਲੇ ਤਸਵੀਰਾਂ ਖਿੱਚਣ ਅਤੇ ਵੀਡੀਓ ਰਿਕਾਰਡ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਮੰਗ ਸਕਦੀ ਹੈ, ਉਦੋਂ ਵੀ ਜਦੋਂ ਤੁਸੀਂ ਐਪ ਦੀ ਵਰਤੋਂ ਨਾ ਕਰ ਰਹੇ ਹੋਵੋ। ""ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਇਜਾਜ਼ਤ ਦਿਓ।" "ਕੀ <b>%1$s</b> ਲਈ ਕੈਮਰਾ ਪਹੁੰਚ ਨੂੰ ਬਦਲਣਾ ਹੈ?" + "ਕੀ <b>%1$s</b> ਲਈ ਆਪਣੇ <b>%2$s</b> \'ਤੇ ਕੈਮਰਾ ਪਹੁੰਚ ਨੂੰ ਬਦਲਣਾ ਹੈ?" "ਇਹ ਐਪ ਹਰ ਵੇਲੇ ਤਸਵੀਰਾਂ ਖਿੱਚਣ ਅਤੇ ਵੀਡੀਓ ਰਿਕਾਰਡ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਮੰਗਦੀ ਹੈ, ਉਦੋਂ ਵੀ ਜਦੋਂ ਤੁਸੀਂ ਐਪ ਦੀ ਵਰਤੋਂ ਨਾ ਕਰ ਰਹੇ ਹੋਵੋ। ""ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਇਜਾਜ਼ਤ ਦਿਓ।" "ਕੀ <b>%1$s</b> ਨੂੰ ਤੁਹਾਡੇ ਫ਼ੋਨ ਦੇ ਕਾਲ ਲੌਗਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" + "ਕੀ <b>%1$s</b> ਨੂੰ <b>%2$s</b> \'ਤੇ ਆਪਣੇ ਫ਼ੋਨ ਕਾਲ ਲੌਗਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" "ਕੀ <b>%1$s</b> ਨੂੰ ਫ਼ੋਨ ਕਾਲਾਂ ਕਰਨ ਅਤੇ ਉਨ੍ਹਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਦੇਣਾ ਹੈ?" + "ਕੀ <b>%1$s</b> ਨੂੰ ਆਪਣੇ <b>%2$s</b> \'ਤੇ ਫ਼ੋਨ ਕਾਲਾਂ ਕਰਨ ਅਤੇ ਉਨ੍ਹਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਦੇਣਾ ਹੈ?" "ਕੀ <b>%1$s</b> ਨੂੰ ਤੁਹਾਡੇ ਸਰੀਰ ਦੇ ਅਹਿਮ ਲੱਛਣਾਂ ਸੰਬੰਧੀ ਸੈਂਸਰ ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" + "ਕੀ <b>%1$s</b> ਨੂੰ ਆਪਣੇ <b>%2$s</b> \'ਤੇ ਤੁਹਾਡੇ ਮਹੱਤਵਪੂਰਨ ਲੱਛਣਾਂ ਸੰਬੰਧੀ ਸੈਂਸਰ ਡਾਟਾ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" "ਇਸ ਐਪ ਨੂੰ ਹਰ ਵੇਲੇ ਤੁਹਾਡੇ ਸਰੀਰ ਦੇ ਅਹਿਮ ਲੱਛਣਾਂ ਸੰਬੰਧੀ ਸੈਂਸਰ ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਚਾਹੀਦੀ ਹੈ, ਭਾਵੇਂ ਤੁਸੀਂ ਐਪ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹੋ ਜਾਂ ਨਹੀਂ। ਇਹ ਤਬਦੀਲੀ ਕਰਨ ਲਈ, ""ਸੈਟਿੰਗਾਂ \'ਤੇ ਜਾਓ।" "ਕੀ <b>%1$s</b> ਨੂੰ ਤੁਹਾਡੇ ਸਰੀਰ ਦੇ ਅਹਿਮ ਲੱਛਣਾਂ ਸੰਬੰਧੀ ਸੈਂਸਰ ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" + "ਕੀ <b>%1$s</b> ਨੂੰ ਆਪਣੇ <b>%2$s</b> \'ਤੇ ਤੁਹਾਡੇ ਮਹੱਤਵਪੂਰਨ ਲੱਛਣਾਂ ਸੰਬੰਧੀ ਸੈਂਸਰ ਡਾਟਾ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?" "ਐਪ ਦੀ ਵਰਤੋਂ ਨਾ ਕਰਨ ਵੇਲੇ ਵੀ, ਇਸ ਐਪ ਨੂੰ ਹਰ ਸਮੇਂ ਸਰੀਰ ਸੰਬੰਧੀ ਸੈਂਸਰ ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣ ਲਈ, ""ਸੈਟਿੰਗਾਂ \'ਤੇ ਜਾਓ।" "ਕੀ ਐਪ ਦੇ ਵਰਤੋਂ ਵਿੱਚ ਹੋਣ ਵੇਲੇ ਸਰੀਰ ਸੰਬੰਧੀ ਸੈਂਸਰ ਦੇ ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣ ਲਈ <b>%1$s</b> ਨੂੰ ਆਗਿਆ ਦੇਣਾ ਜਾਰੀ ਰੱਖਣੀ ਹੈ?" + "ਕੀ ਐਪ ਵਰਤੋਂ ਵਿੱਚ ਹੋਣ ਵੇਲੇ ਸਰੀਰ ਸੰਬੰਧੀ ਸੈਂਸਰ ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਦੇਣ ਲਈ <b>%1$s</b> ਨੂੰ <b>%2$s</b> \'ਤੇ ਆਗਿਆ ਦੇ ਕੇ ਰੱਖਣੀ ਹੈ?" "ਕੀ <b>%1$s</b> ਨੂੰ ਤੁਹਾਨੂੰ ਸੂਚਨਾਵਾਂ ਭੇਜਣ ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ?" + "ਕੀ <b>%1$s</b> ਨੂੰ ਆਪਣੇ <b>%2$s</b> \'ਤੇ ਸੂਚਨਾਵਾਂ ਭੇਜਣ ਦੇਣੀਆਂ ਹਨ?" "ਨਿਯੰਤਰਿਤ ਇਜਾਜ਼ਤਾਂ" "%1$s ਦੀ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਹੈ" "ਤੁਹਾਡੀ ਸੰਸਥਾ %1$s ਨੂੰ ਤੁਹਾਡੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ" diff --git a/PermissionController/res/values-pl/strings.xml b/PermissionController/res/values-pl/strings.xml index a41e7459da567fa52721d6df09f7c4379583fd77..9ed891733c6dc59d5ddd30f0c3fec015d2db7a06 100644 --- a/PermissionController/res/values-pl/strings.xml +++ b/PermissionController/res/values-pl/strings.xml @@ -34,6 +34,7 @@ "Więcej" "Zezwalaj na wszystko" "Zawsze zezwalaj na wszystko" + "Zezwól na ograniczony dostęp" "Wybierz zdjęcia i filmy" "Wybierz więcej" "Nie wybieraj więcej" @@ -60,6 +61,7 @@ "Aplikacje" "Uprawnienia aplikacji" "Nieużywane aplikacje" + "Edytuj zdjęcia wybrane dla tej aplikacji" "Brak nieużywanych aplikacji" "0 nieużywanych aplikacji" "Ostatnie decyzje dotyczące uprawnień" @@ -455,48 +457,75 @@ "Pokaż wykrywanie wyzwalacza asystenta" "Pokaż ikonę na pasku stanu, gdy używany jest mikrofon do uruchomienia asystenta głosowego" "Zezwolić aplikacji <b>%1$s</b> na dostęp do zdjęć i multimediów na urządzeniu?" + "Zezwolić aplikacji <b>%1$s</b> na dostęp do zdjęć i multimediów na urządzeniu <b>%2$s</b>?" "Zezwolić aplikacji <b>%1$s</b> na dostęp do kontaktów?" + "Zezwolić aplikacji <b>%1$s</b> na dostęp do kontaktów na urządzeniu <b>%2$s</b>?" "Zezwolić aplikacji <b>%1$s</b> na dostęp do lokalizacji urządzenia?" + "Zezwolić aplikacji <b>%1$s</b> na dostęp do lokalizacji urządzenia <b>%2$s</b>?" "Aplikacja będzie mieć dostęp do lokalizacji tylko wtedy, gdy będzie używana" "Zezwolić aplikacji <b>%1$s</b> na dostęp do lokalizacji urządzenia?" + "Zezwolić aplikacji <b>%1$s</b> na dostęp do lokalizacji urządzenia <b>%2$s</b>?" "Aplikacja chce mieć stały dostęp do Twojej lokalizacji, nawet gdy nie jest używana. ""Zezwól w ustawieniach" "Zmienić uprawnienia dostępu do lokalizacji w przypadku aplikacji „%1$s”?" + "Zmienić dostęp aplikacji <b>%1$s</b> do lokalizacji na urządzeniu <b>%2$s</b>?" "Aplikacja chce mieć stały dostęp do Twojej lokalizacji, nawet gdy nie jest używana. ""Zezwól w ustawieniach" "Zezwolić aplikacji <b>%1$s</b> na znajdowanie urządzeń w pobliżu, ustalanie ich względnego położenia i łączenie się z nimi?" + "Zezwolić aplikacji <b>%1$s</b> na znajdowanie urządzeń w pobliżu, ustalanie ich względnego położenia i łączenie się z nimi na urządzeniu <b>%2$s</b>?" "Zezwolić aplikacji <b>%1$s</b> na znajdowanie urządzeń w pobliżu, ustalanie ich względnego położenia i łączenie się z nimi? ""Zezwól w ustawieniach." "Zmienić dostęp aplikacji <b>%1$s</b> do lokalizacji przybliżonej na dostęp do lokalizacji dokładnej?" + "Zmienić dostęp aplikacji <b>%1$s</b> do lokalizacji urządzenia <b>%2$s</b> z przybliżonej na dokładną?" "Zezwolić aplikacji „%1$s” na dostęp do przybliżonej lokalizacji urządzenia?" + "Zezwolić aplikacji <b>%1$s</b> na dostęp do przybliżonej lokalizacji urządzenia <b>%2$s</b>?" "Dokładna" "Przybliżona" "Zezwolić aplikacji <b>%1$s</b> na dostęp do kalendarza?" + "Zezwolić aplikacji <b>%1$s</b> na dostęp do kalendarza na urządzeniu <b>%2$s</b>?" "Zezwolić aplikacji <b>%1$s</b> na wysyłanie i wyświetlanie SMS-ów?" + "Zezwolić aplikacji <b>%1$s</b> na wysyłanie i wyświetlanie SMS-ów na urządzeniu <b>%2$s</b>?" "Zezwolić aplikacji <b>%1$s</b> na dostęp do zdjęć, multimediów i plików na urządzeniu?" + "Zezwolić aplikacji <b>%1$s</b> na dostęp do zdjęć, multimediów i plików na urządzeniu <b>%2$s</b>?" "Zezwolić aplikacji <b>%1$s</b> na dostęp do zdjęć, filmów, muzyki i dźwięków na tym urządzeniu?" "Zezwolić aplikacji <b>%1$s</b> na dostęp do zdjęć, filmów, muzyki, dźwięków i innych plików na tym urządzeniu?" "Zezwolić aplikacji <b>%1$s</b> na dostęp do muzyki i innych plików audio na tym urządzeniu?" + "Zezwolić aplikacji <b>%1$s</b> na dostęp do muzyki i innych plików audio na urządzeniu <b>%2$s</b>?" "Zezwolić aplikacji <b>%1$s</b> na dostęp do zdjęć i filmów na tym urządzeniu?" + "Zezwolić aplikacji <b>%1$s</b> na dostęp do zdjęć i filmów na urządzeniu <b>%2$s</b>?" "Zezwolić aplikacji <b>%1$s</b> na dostęp do kolejnych zdjęć i filmów na tym urządzeniu?" + "Zezwolić aplikacji <b>%1$s</b> na dostęp do kolejnych zdjęć i filmów na urządzeniu <b>%2$s</b>?" "Zezwolić aplikacji <b>%1$s</b> na nagrywanie dźwięku?" + "Zezwolić aplikacji <b>%1$s</b> na nagrywanie dźwięku na urządzeniu <b>%2$s</b>?" "Aplikacja będzie mogła nagrywać dźwięk tylko wtedy, gdy będzie używana" "Zezwolić aplikacji „%1$s” na nagrywanie dźwięku?" + "Zezwolić aplikacji <b>%1$s</b> na nagrywanie dźwięku na urządzeniu <b>%2$s</b>?" "Ta aplikacja chce móc nagrywać dźwięk przez cały czas, nawet gdy jej nie używasz. ""Zezwól w ustawieniach." "Zmienić uprawnienia dostępu do mikrofonu w przypadku aplikacji „%1$s”?" + "Zmienić dostęp aplikacji <b>%1$s</b> do mikrofonu na urządzeniu <b>%2$s</b>?" "Ta aplikacja chce móc nagrywać dźwięk przez cały czas, nawet gdy jej nie używasz. ""Zezwól w ustawieniach." "Zezwolić aplikacji <b>%1$s</b> na dostęp do aktywności fizycznej?" + "Zezwolić aplikacji <b>%1$s</b> na dostęp do aktywności fizycznej na urządzeniu <b>%2$s</b>?" "Zezwolić aplikacji <b>%1$s</b> na robienie zdjęć i nagrywanie filmów?" + "Zezwolić aplikacji <b>%1$s</b> na robienie zdjęć i nagrywanie filmów na urządzeniu <b>%2$s</b>?" "Aplikacja będzie mogła robić zdjęcia i nagrywać filmy tylko wtedy, gdy będzie używana" "Zezwolić aplikacji „%1$s” na robienie zdjęć i nagrywanie filmów?" + "Zezwolić aplikacji <b>%1$s</b> na robienie zdjęć i nagrywanie filmów na urządzeniu <b>%2$s</b>?" "Ta aplikacja chce móc robić zdjęcia i nagrywać filmy przez cały czas, nawet gdy jej nie używasz. ""Zezwól w ustawieniach." "Zmienić uprawnienia dostępu do aparatu w przypadku aplikacji „%1$s”?" + "Zmienić dostęp aplikacji <b>%1$s</b> do aparatu na urządzeniu <b>%2$s</b>?" "Ta aplikacja chce móc robić zdjęcia i nagrywać filmy przez cały czas, nawet gdy jej nie używasz. ""Zezwól w ustawieniach." "Zezwolić aplikacji <b>%1$s</b> na dostęp do rejestrów połączeń?" + "Zezwolić aplikacji <b>%1$s</b> na dostęp do rejestrów połączeń telefonicznych na urządzeniu <b>%2$s</b>?" "Zezwolić aplikacji <b>%1$s</b> na wykonywanie połączeń telefonicznych i zarządzanie nimi?" + "Zezwolić aplikacji <b>%1$s</b> na wykonywanie połączeń telefonicznych i zarządzanie nimi na urządzeniu <b>%2$s</b>?" "Zezwolić aplikacji <b>%1$s</b> na dostęp do danych z czujnika podstawowych funkcji życiowych?" + "Zezwolić aplikacji <b>%1$s</b> na dostęp do danych z czujnika dotyczących parametrów życiowych na urządzeniu <b>%2$s</b>?" "Ta aplikacja chce mieć dostęp do danych z czujnika dotyczących parametrów życiowych przez cały czas, nawet kiedy jej nie używasz. Aby dokonać tej zmiany, ""otwórz ustawienia." "Zezwolić aplikacji <b>%1$s</b> na dostęp do danych z czujnika podstawowych funkcji życiowych?" + "Zezwolić aplikacji <b>%1$s</b> na dostęp do danych z czujnika dotyczących parametrów życiowych na urządzeniu <b>%2$s</b>?" "Aby zezwolić tej aplikacji na dostęp do danych z czujników na ciele przez cały czas, nawet kiedy jej nie używasz, ""przejdź do ustawień""." "Czy nadal zezwalać aplikacji <b>%1$s</b> na dostęp do czujników na ciele podczas jej używania?" + "Nadal zezwalać aplikacji <b>%1$s</b> na dostęp do danych z czujników na ciele na urządzeniu <b>%2$s</b> podczas jej używania?" "Zezwolić aplikacji <b>%1$s</b> na wysyłanie powiadomień?" + "Zezwolić aplikacji <b>%1$s</b> na wysyłanie powiadomień na urządzeniu <b>%2$s</b>?" "Pozwolenia kontrolowane" "Aplikacja %1$s ma dostęp do lokalizacji" "Organizacja zezwala na dostęp aplikacji %1$s do Twojej lokalizacji" diff --git a/PermissionController/res/values-pt-rBR/strings.xml b/PermissionController/res/values-pt-rBR/strings.xml index 7bb03ff086d49236597808d9d7b75a3b7859db2a..03089b17ca988a488a7578f017aa0dd5befb4ed4 100644 --- a/PermissionController/res/values-pt-rBR/strings.xml +++ b/PermissionController/res/values-pt-rBR/strings.xml @@ -34,6 +34,7 @@ "Mais inform." "Permitir tudo" "Sempre permitir tudo" + "Permitir acesso limitado" "Selecionar fotos e vídeos" "Selecionar mais" "Não selecionar mais" @@ -60,6 +61,7 @@ "Apps" "Permissões do app" "Apps não usados" + "Editar fotos selecionadas para este app" "Nenhum app não usado" "0 app não usado" "Decisões recentes de permissão" @@ -455,48 +457,75 @@ "Mostrar detecção de gatilho do assistente" "Mostrar ícone na barra de status quando o microfone for usado para ativar o assistente por voz" "Permitir que <b>%1$s</b> acesse fotos e mídia no seu dispositivo?" + "Permitir que <b>%1$s</b> acesse fotos e arquivos de mídia no seu <b>%2$s</b>?" "Permitir que o app <b>%1$s</b> acesse seus contatos?" + "Permitir que <b>%1$s</b> acesse os contatos no seu <b>%2$s</b>?" "Permitir que o app <b>%1$s</b> acesse a localização deste dispositivo?" + "Permitir que <b>%1$s</b> acesse o local do seu <b>%2$s</b>?" "O app só terá acesso ao local enquanto estiver sendo usado" "Permitir que o app <b>%1$s</b> acesse a localização deste dispositivo?" + "Permitir que <b>%1$s</b> acesse o local do seu <b>%2$s</b>?" "Este app pode querer acessar sua localização o tempo todo, mesmo quando não estiver em uso. ""Permita o acesso nas configurações""." "Mudar o acesso que o app <b>%1$s</b> tem à localização?" + "Mudar o acesso que <b>%1$s</b> tem ao local no seu <b>%2$s</b>?" "Este app quer acessar sua localização o tempo todo, mesmo quando não estiver em uso. ""Permita o acesso nas configurações""." "Permitir que <b>%1$s</b> encontre, conecte-se e determine a posição relativa de dispositivos por perto?" + "Permitir que <b>%1$s</b> encontre, se conecte e saiba o pos. relativo de dsps. por perto no <b>%2$s</b>?" "Permitir que <b>%1$s</b> encontre, conecte-se e determine a posição relativa de dispositivos por perto? ""Permita nas configurações." "Permitir a troca para que o app <b>%1$s</b> acesse o local exato (em vez do aproximado)?" + "Mudar o acesso ao local do <b>%1$s</b> no seu <b>%2$s</b> de aproximado para exato?" "Permitir que o app <b>%1$s</b> acesse o local aproximado deste dispositivo?" + "Permitir que <b>%1$s</b> acesse o local aproximado do seu <b>%2$s</b>?" "Exata" "Aproximada" "Permitir que <b>%1$s</b> acesse sua agenda?" + "Permitir que <b>%1$s</b> acesse a agenda no seu <b>%2$s</b>?" "Permitir que <b>%1$s</b> acesse e envie mensagens SMS?" + "Permitir que <b>%1$s</b> envie e acesse mensagens SMS no seu <b>%2$s</b>?" "Permitir que o app <b>%1$s</b> acesse fotos, mídia e arquivos no seu dispositivo?" + "Permitir que <b>%1$s</b> acesse fotos, arquivos de mídia e outros arquivos no seu <b>%2$s</b>?" "Permitir que <b>%1$s</b> acesse <b>fotos, vídeos, músicas e áudios</b> neste dispositivo?" "Permitir que <b>%1$s</b> acesse <b>fotos, vídeos, músicas, áudios e outros arquivos</b> neste dispositivo?" "Permitir que <b>%1$s</b> acesse músicas e áudios neste dispositivo?" + "Permitir que <b>%1$s</b> acesse músicas e áudios no seu <b>%2$s</b>?" "Permitir que <b>%1$s</b> acesse fotos e vídeos neste dispositivo?" + "Permitir que <b>%1$s</b> acesse fotos e vídeos no seu <b>%2$s</b>?" "Permitir que <b>%1$s</b> acesse mais fotos e vídeos neste dispositivo?" + "Permitir que <b>%1$s</b> acesse mais fotos e vídeos no seu <b>%2$s</b>?" "Permitir que o app <b>%1$s</b> grave áudio?" + "Permitir que <b>%1$s</b> grave áudio no seu <b>%2$s</b>?" "O app poderá gravar áudio apenas quando estiver em uso" "Permitir que <b>%1$s</b> grave áudio?" + "Permitir que <b>%1$s</b> grave áudio no seu <b>%2$s</b>?" "Este app pode querer gravar áudio a qualquer momento, mesmo quando não estiver em uso. ""Permita nas configurações." "Mudar o acesso que <b>%1$s</b> tem ao microfone?" + "Mudar o acesso que <b>%1$s</b> tem ao microfone no seu <b>%2$s</b>?" "Este app quer gravar áudio a qualquer momento, mesmo quando não estiver em uso. ""Permita nas configurações." "Permitir que o app <b>%1$s</b> acesse sua atividade física?" + "Permitir que <b>%1$s</b> acesse os dados de atividade física no seu <b>%2$s</b>?" "Permitir que o app <b>%1$s</b> tire fotos e grave vídeos?" + "Permitir que <b>%1$s</b> tire fotos e grave vídeos no seu <b>%2$s</b>?" "O app poderá tirar fotos e gravar vídeos apenas quando estiver em uso" "Permitir que <b>%1$s</b> tire fotos e grave vídeos?" + "Permitir que <b>%1$s</b> tire fotos e grave vídeos no seu <b>%2$s</b>?" "Este app pode querer tirar fotos e gravar vídeos a qualquer momento, mesmo quando não estiver em uso. ""Permita nas configurações." "Mudar o acesso que <b>%1$s</b> tem à câmera?" + "Mudar o acesso que <b>%1$s</b> tem à câmera no seu <b>%2$s</b>?" "Este app quer tirar fotos e gravar vídeos a qualquer momento, mesmo quando não estiver em uso. ""Permita nas configurações." "Permitir que o app <b>%1$s</b> acesse seu registro de chamadas telefônicas?" + "Permitir que <b>%1$s</b> acesse os registros de chamadas do smartphone no seu <b>%2$s</b>?" "Permitir que o app <b>%1$s</b> gerencie e faça chamadas telefônicas?" + "Permitir que <b>%1$s</b> faça e gerencie ligações telefônicas no seu <b>%2$s</b>?" "Permitir que <b>%1$s</b> acesse os dados do sensor sobre seus sinais vitais?" + "Permitir que <b>%1$s</b> acesse dados do sensor sobre os sinais vitais do usuário no seu <b>%2$s</b>?" "Este app quer acessar os dados do sensor sobre seus sinais vitais o tempo todo, mesmo quando não estiver em uso. Para fazer essa mudança, ""acesse as configurações""." "Permitir que <b>%1$s</b> acesse os dados do sensor sobre seus sinais vitais?" + "Permitir que <b>%1$s</b> acesse os dados do sensor sobre os sinais vitais do usuário no seu <b>%2$s</b>?" "Para permitir que o app tenha acesso a dados do sensor corporal a qualquer momento, mesmo quando não estiver em uso, ""acesse as configurações""." "Continuar permitindo que o app <b>%1$s</b> acesse dados do sensor corporal enquanto estiver em uso?" + "Continuar permitindo que <b>%1$s</b> acesse dados do sensor corporal durante o uso no <b>%2$s</b>?" "Permitir que o app <b>%1$s</b> envie notificações?" + "Permitir que <b>%1$s</b> envie notificações no seu <b>%2$s</b>?" "Permissões controladas" "O app %1$s tem acesso à localização" "Sua organização permite que o app %1$s tenha acesso à sua localização" diff --git a/PermissionController/res/values-pt-rPT/strings.xml b/PermissionController/res/values-pt-rPT/strings.xml index 012608eeec89c766afdc4b4867908cb8fd331184..437805f95f4145f548be45866977bb5e85e387f7 100644 --- a/PermissionController/res/values-pt-rPT/strings.xml +++ b/PermissionController/res/values-pt-rPT/strings.xml @@ -34,6 +34,7 @@ "Mais informação" "Permitir todos" "Permitir sempre todos" + "Permitir acesso limitado" "Selecionar fotos e vídeos" "Selecionar mais" "Não selecionar mais" @@ -60,6 +61,7 @@ "Apps" "Autorizações da app" "Apps não usadas" + "Edite as fotos selecionadas para esta app" "Nenhuma app não usada" "0 apps não utilizadas" "Decisões de autorização recentes" @@ -455,48 +457,75 @@ "Mostre a deteção do acionador do assistente" "Mostre o ícone na barra de estado quando o microfone é utilizado para ativar o assistente de voz" "Permitir que a app <b>%1$s</b> aceda a fotos e multimédia no dispositivo?" + "Permitir que a app <b>%1$s</b> aceda a fotos e multimédia no <b>%2$s</b>?" "Permitir que a app <b>%1$s</b> aceda aos seus contactos?" + "Permitir que a app <b>%1$s</b> aceda aos contactos no <b>%2$s</b>?" "Permitir que a app <b>%1$s</b> aceda à localização deste dispositivo?" + "Permitir que a app <b>%1$s</b> aceda à localização do <b>%2$s</b>?" "A app tem acesso à localização apenas enquanto a estiver a utilizar" "Permitir que a app <b>%1$s</b> aceda à localização deste dispositivo?" + "Permitir que a app <b>%1$s</b> aceda à localização do <b>%2$s?" "Esta app poderá pretender aceder sempre à sua localização, mesmo quando não a estiver a utilizar. ""Permita-o nas definições." "Quer alterar o acesso à localização para a app <b>%1$s</b>?" + "Alterar o acesso à localização para a app <b>%1$s</b> no <b>%2$s</b>?" "Esta app quer aceder sempre à sua localização, mesmo quando não a estiver a utilizar. ""Permita-o nas definições." "Permitir que <b>%1$s</b> encontre, determine a posição relativa dos dispositivos próximos e se ligue aos mesmos?" + "Permitir que <b>%1$s</b> encontre, ligue e determine a posição de dispositivos próximos no <b>%2$s</b>?" "Permitir que <b>%1$s</b> encontre, determine a posição relativa dos dispositivos próximos e se ligue aos mesmos? ""Permita nas Definições." "Alterar o acesso à localização da app <b>%1$s</b> de aproximada para exata?" + "Alterar o acesso à localização para a app <b>%1$s</b> no <b>%2$s</b> de aproximada para exata?" "Permitir que a app <b>%1$s</b> aceda à localização aproximada deste dispositivo?" + "Permitir que a app <b>%1$s</b> aceda à localização aproximada do <b>%2$s</b>?" "Exata" "Aproximada" "Permitir que a app <b>%1$s</b> aceda ao calendário?" + "Permitir que a app <b>%1$s</b> aceda ao calendário no <b>%2$s</b>?" "Permitir que a app <b>%1$s</b> envie e veja mensagens SMS?" + "Permitir que a app <b>%1$s</b> envie e veja mensagens SMS no <b>%2$s</b>?" "Permitir que a app <b>%1$s</b> aceda a fotos, multimédia e ficheiros no dispositivo?" + "Permitir que a app <b>%1$s</b> aceda a fotos, multimédia e ficheiros no <b>%2$s</b>?" "Permitir que a app <b>%1$s</b> aceda a <b>fotos, vídeos, música e áudio</b> neste dispositivo?" "Permitir que a app <b>%1$s</b> aceda a <b>fotos, vídeos, música, áudio, etc.</b> neste dispositivo?" "Permitir que a app <b>%1$s</b> aceda a música e áudio neste dispositivo?" + "Permitir que a app <b>%1$s</b> aceda a música e áudio no <b>%2$s</b>?" "Permitir que a app <b>%1$s</b> aceda a fotos e vídeos neste dispositivo?" + "Permitir que a app <b>%1$s</b> aceda a fotos e vídeos no <b>%2$s</b>?" "Permitir que a app <b>%1$s</b> aceda a mais fotos e vídeos neste dispositivo?" + "Permitir que a app <b>%1$s</b> aceda a mais fotos e vídeos no <b>%2$s</b>?" "Permitir que a app <b>%1$s</b> grave áudio?" + "Permitir que a app <b>%1$s</b> grave áudio no <b>%2$s</b>?" "A app apenas poderá gravar áudio enquanto a estiver a utilizar." "Permitir que a app <b>%1$s</b> grave áudio?" + "Permitir que a app <b>%1$s</b> grave áudio no <b>%2$s</b>?" "Esta app pode pretender gravar áudio sempre, mesmo quando não a está a utilizar. ""Permita-o nas Definições." "Quer alterar o acesso ao microfone para a app <b>%1$s</b>?" + "Alterar o acesso ao microfone para a app <b>%1$s</b> no <b>%2$s</b>?" "Esta app quer gravar áudio sempre, mesmo quando não a está a utilizar. ""Permita-o nas Definições." "Permitir que a app <b>%1$s</b> aceda à sua atividade física?" + "Permitir que a app <b>%1$s</b> aceda à sua atividade física no <b>%2$s</b>?" "Permitir que a app <b>%1$s</b> tire fotos e grave vídeo?" + "Permitir que a app <b>%1$s</b> capture fotos e vídeos no <b>%2$s</b>?" "A app apenas poderá tirar fotos e gravar vídeos enquanto a estiver a utilizar." "Permitir que a app <b>%1$s</b> tire fotos e grave vídeo?" + "Permitir que a app <b>%1$s</b> capture fotos e vídeos no <b>%2$s</b>?" "Esta app pode pretender tirar fotos e gravar vídeos sempre, mesmo quando não a está a utilizar. ""Permita-o nas Definições." "Quer alterar o acesso à câmara para a app <b>%1$s</b>?" + "Alterar o acesso à câmara para a app <b>%1$s</b> no <b>%2$s</b>?" "Esta app quer tirar fotos e gravar vídeos sempre, mesmo quando não a está a utilizar. ""Permita-o nas Definições." "Permitir que a app <b>%1$s</b> aceda aos registos de chamadas do seu telemóvel?" + "Permitir que a app <b>%1$s</b> aceda aos registos de chamadas telefónicas no <b>%2$s</b>?" "Permitir que a app <b>%1$s</b> faça e gira chamadas telefónicas?" + "Permitir que a app <b>%1$s</b> faça e gira chamadas no <b>%2$s</b>?" "Permitir que a app <b>%1$s</b> aceda aos dados de sensores acerca dos seus sinais vitais?" + "Permitir que a app <b>%1$s</b> aceda aos dados de sensores sobre os seus sinais vitais no <b>%2$s</b>?" "Esta app quer aceder sempre aos dados de sensores sobre os seus sinais vitais, mesmo quando não a estiver a usar. Para fazer esta alteração, ""aceda às definições." "Permitir que a app <b>%1$s</b> aceda aos dados de sensores acerca dos seus sinais vitais?" + "Permitir que a app <b>%1$s</b> aceda aos dados de sensores sobre os seus sinais vitais no <b>%2$s</b>?" "Para permitir que esta app aceda sempre aos dados de sensores de corpo, mesmo quando não está a usá-la, ""aceda às definições." "Continuar a permitir que <b>%1$s</b> aceda aos dados de sensores de corpo enquanto usa a app?" + "Continuar a permitir que <b>%1$s</b> aceda a dados de sensores de corpo no <b>%2$s</b> quando usa a app?" "Permitir que a app <b>%1$s</b> lhe envie notificações?" + "Permitir que a app <b>%1$s</b> lhe envie notificações para o <b>%2$s</b>?" "Autorizações controladas" "A app %1$s tem acesso à localização" "A sua organização permite que a app %1$s aceda à sua localização" diff --git a/PermissionController/res/values-pt/strings.xml b/PermissionController/res/values-pt/strings.xml index 7bb03ff086d49236597808d9d7b75a3b7859db2a..03089b17ca988a488a7578f017aa0dd5befb4ed4 100644 --- a/PermissionController/res/values-pt/strings.xml +++ b/PermissionController/res/values-pt/strings.xml @@ -34,6 +34,7 @@ "Mais inform." "Permitir tudo" "Sempre permitir tudo" + "Permitir acesso limitado" "Selecionar fotos e vídeos" "Selecionar mais" "Não selecionar mais" @@ -60,6 +61,7 @@ "Apps" "Permissões do app" "Apps não usados" + "Editar fotos selecionadas para este app" "Nenhum app não usado" "0 app não usado" "Decisões recentes de permissão" @@ -455,48 +457,75 @@ "Mostrar detecção de gatilho do assistente" "Mostrar ícone na barra de status quando o microfone for usado para ativar o assistente por voz" "Permitir que <b>%1$s</b> acesse fotos e mídia no seu dispositivo?" + "Permitir que <b>%1$s</b> acesse fotos e arquivos de mídia no seu <b>%2$s</b>?" "Permitir que o app <b>%1$s</b> acesse seus contatos?" + "Permitir que <b>%1$s</b> acesse os contatos no seu <b>%2$s</b>?" "Permitir que o app <b>%1$s</b> acesse a localização deste dispositivo?" + "Permitir que <b>%1$s</b> acesse o local do seu <b>%2$s</b>?" "O app só terá acesso ao local enquanto estiver sendo usado" "Permitir que o app <b>%1$s</b> acesse a localização deste dispositivo?" + "Permitir que <b>%1$s</b> acesse o local do seu <b>%2$s</b>?" "Este app pode querer acessar sua localização o tempo todo, mesmo quando não estiver em uso. ""Permita o acesso nas configurações""." "Mudar o acesso que o app <b>%1$s</b> tem à localização?" + "Mudar o acesso que <b>%1$s</b> tem ao local no seu <b>%2$s</b>?" "Este app quer acessar sua localização o tempo todo, mesmo quando não estiver em uso. ""Permita o acesso nas configurações""." "Permitir que <b>%1$s</b> encontre, conecte-se e determine a posição relativa de dispositivos por perto?" + "Permitir que <b>%1$s</b> encontre, se conecte e saiba o pos. relativo de dsps. por perto no <b>%2$s</b>?" "Permitir que <b>%1$s</b> encontre, conecte-se e determine a posição relativa de dispositivos por perto? ""Permita nas configurações." "Permitir a troca para que o app <b>%1$s</b> acesse o local exato (em vez do aproximado)?" + "Mudar o acesso ao local do <b>%1$s</b> no seu <b>%2$s</b> de aproximado para exato?" "Permitir que o app <b>%1$s</b> acesse o local aproximado deste dispositivo?" + "Permitir que <b>%1$s</b> acesse o local aproximado do seu <b>%2$s</b>?" "Exata" "Aproximada" "Permitir que <b>%1$s</b> acesse sua agenda?" + "Permitir que <b>%1$s</b> acesse a agenda no seu <b>%2$s</b>?" "Permitir que <b>%1$s</b> acesse e envie mensagens SMS?" + "Permitir que <b>%1$s</b> envie e acesse mensagens SMS no seu <b>%2$s</b>?" "Permitir que o app <b>%1$s</b> acesse fotos, mídia e arquivos no seu dispositivo?" + "Permitir que <b>%1$s</b> acesse fotos, arquivos de mídia e outros arquivos no seu <b>%2$s</b>?" "Permitir que <b>%1$s</b> acesse <b>fotos, vídeos, músicas e áudios</b> neste dispositivo?" "Permitir que <b>%1$s</b> acesse <b>fotos, vídeos, músicas, áudios e outros arquivos</b> neste dispositivo?" "Permitir que <b>%1$s</b> acesse músicas e áudios neste dispositivo?" + "Permitir que <b>%1$s</b> acesse músicas e áudios no seu <b>%2$s</b>?" "Permitir que <b>%1$s</b> acesse fotos e vídeos neste dispositivo?" + "Permitir que <b>%1$s</b> acesse fotos e vídeos no seu <b>%2$s</b>?" "Permitir que <b>%1$s</b> acesse mais fotos e vídeos neste dispositivo?" + "Permitir que <b>%1$s</b> acesse mais fotos e vídeos no seu <b>%2$s</b>?" "Permitir que o app <b>%1$s</b> grave áudio?" + "Permitir que <b>%1$s</b> grave áudio no seu <b>%2$s</b>?" "O app poderá gravar áudio apenas quando estiver em uso" "Permitir que <b>%1$s</b> grave áudio?" + "Permitir que <b>%1$s</b> grave áudio no seu <b>%2$s</b>?" "Este app pode querer gravar áudio a qualquer momento, mesmo quando não estiver em uso. ""Permita nas configurações." "Mudar o acesso que <b>%1$s</b> tem ao microfone?" + "Mudar o acesso que <b>%1$s</b> tem ao microfone no seu <b>%2$s</b>?" "Este app quer gravar áudio a qualquer momento, mesmo quando não estiver em uso. ""Permita nas configurações." "Permitir que o app <b>%1$s</b> acesse sua atividade física?" + "Permitir que <b>%1$s</b> acesse os dados de atividade física no seu <b>%2$s</b>?" "Permitir que o app <b>%1$s</b> tire fotos e grave vídeos?" + "Permitir que <b>%1$s</b> tire fotos e grave vídeos no seu <b>%2$s</b>?" "O app poderá tirar fotos e gravar vídeos apenas quando estiver em uso" "Permitir que <b>%1$s</b> tire fotos e grave vídeos?" + "Permitir que <b>%1$s</b> tire fotos e grave vídeos no seu <b>%2$s</b>?" "Este app pode querer tirar fotos e gravar vídeos a qualquer momento, mesmo quando não estiver em uso. ""Permita nas configurações." "Mudar o acesso que <b>%1$s</b> tem à câmera?" + "Mudar o acesso que <b>%1$s</b> tem à câmera no seu <b>%2$s</b>?" "Este app quer tirar fotos e gravar vídeos a qualquer momento, mesmo quando não estiver em uso. ""Permita nas configurações." "Permitir que o app <b>%1$s</b> acesse seu registro de chamadas telefônicas?" + "Permitir que <b>%1$s</b> acesse os registros de chamadas do smartphone no seu <b>%2$s</b>?" "Permitir que o app <b>%1$s</b> gerencie e faça chamadas telefônicas?" + "Permitir que <b>%1$s</b> faça e gerencie ligações telefônicas no seu <b>%2$s</b>?" "Permitir que <b>%1$s</b> acesse os dados do sensor sobre seus sinais vitais?" + "Permitir que <b>%1$s</b> acesse dados do sensor sobre os sinais vitais do usuário no seu <b>%2$s</b>?" "Este app quer acessar os dados do sensor sobre seus sinais vitais o tempo todo, mesmo quando não estiver em uso. Para fazer essa mudança, ""acesse as configurações""." "Permitir que <b>%1$s</b> acesse os dados do sensor sobre seus sinais vitais?" + "Permitir que <b>%1$s</b> acesse os dados do sensor sobre os sinais vitais do usuário no seu <b>%2$s</b>?" "Para permitir que o app tenha acesso a dados do sensor corporal a qualquer momento, mesmo quando não estiver em uso, ""acesse as configurações""." "Continuar permitindo que o app <b>%1$s</b> acesse dados do sensor corporal enquanto estiver em uso?" + "Continuar permitindo que <b>%1$s</b> acesse dados do sensor corporal durante o uso no <b>%2$s</b>?" "Permitir que o app <b>%1$s</b> envie notificações?" + "Permitir que <b>%1$s</b> envie notificações no seu <b>%2$s</b>?" "Permissões controladas" "O app %1$s tem acesso à localização" "Sua organização permite que o app %1$s tenha acesso à sua localização" diff --git a/PermissionController/res/values-ro/strings.xml b/PermissionController/res/values-ro/strings.xml index defbf317719e722eabdeb65d732f350c72de7609..b4abb4142e94a9998bc728b4a64b041a3d5a1d5f 100644 --- a/PermissionController/res/values-ro/strings.xml +++ b/PermissionController/res/values-ro/strings.xml @@ -34,6 +34,7 @@ "Mai multe info." "Permite-le pe toate" "Permite-le întotdeauna pe toate" + "Permite cu acces limitat" "Alege fotografii și videoclipuri" "Selectează mai multe" "Nu selecta mai multe" @@ -60,6 +61,7 @@ "Aplicații" "Permisiuni pentru aplicații" "Aplicații nefolosite" + "Editează fotografiile selectate pentru această aplicație" "Nu există aplicații nefolosite" "0 aplicații nefolosite" "Decizii recente privind permisiunile" @@ -455,48 +457,75 @@ "Afișează detectarea declanșării asistentului" "Afișează pictograma în bara de stare când microfonul este folosit pentru a activa asistentul vocal" "Permiți ca <b>%1$s</b> să acceseze fotografiile și conținutul media de pe dispozitiv?" + "Permiți accesul <b>%1$s</b> la fotografiile și conținutul media de pe <b>%2$s</b>?" "Permiți ca <b>%1$s</b> să-ți acceseze agenda?" + "Permiți ca <b>%1$s</b> să acceseze agenda de pe <b>%2$s</b>?" "Permiți ca <b>%1$s</b> să acceseze locația acestui dispozitiv?" + "Permiți accesul <b>%1$s</b> la locația de pe <b>%2$s</b>?" "Aplicația va avea acces la locație doar când o folosești" "Permiți ca <b>%1$s</b> să acceseze locația acestui dispozitiv?" + "Permiți ca <b>%1$s</b> să acceseze locația de pe <b>%2$s?" "E posibil ca aplicația să dorească să-ți acceseze în permanență locația, chiar și când nu o folosești. ""Acordă această permisiune din setări." "Modifici accesul la locație pentru <b>%1$s</b>?" + "Modifici accesul la locație pentru <b>%1$s</b> pe <b>%2$s</b>?" "Aplicația dorește să-ți acceseze în permanență locația, chiar și când nu o folosești. ""Acordă această permisiune din setări." "Permiți ca <b>%1$s</b> să găsească, să se conecteze la și să afle poziția relativă a dispozitivelor apropiate?" + "<b>%1$s</b> poate să găsească, să se conecteze la, să determine poziția relativă a dispozitivelor apropiate pe <b>%2$s</b>?" "Permiți ca <b>%1$s</b> să găsească, să se conecteze la și să determine poziția relativă a dispozitivelor apropiate? ""Permite în setări." "Schimbi permisiunile privind accesul la locație pentru <b>%1$s</b> de la locația aproximativă la cea exactă?" + "Schimbi accesul la locația de pe <b>%2$s</b> pentru <b>%1$s</b> de la aproximativă la exactă?" "Permiți ca <b>%1$s</b> să acceseze locația aproximativă a acestui dispozitiv?" + "Permiți ca <b>%1$s</b> să acceseze locația aproximativă de pe <b>%2$s</b>?" "Exactă" "Aproximativă" "Permiți ca <b>%1$s</b> să acceseze calendarul?" + "Permiți ca <b>%1$s</b> să acceseze calendarul de pe <b>%2$s</b>?" "Permiți ca <b>%1$s</b> să trimită și să vadă mesaje SMS?" + "Permiți ca <b>%1$s</b> să trimită și să vadă mesajele SMS de pe <b>%2$s</b>?" "Permiți ca <b>%1$s</b> să acceseze fotografiile, conținutul media și fișierele de pe dispozitiv?" + "Permiți accesul <b>%1$s</b> la fotografiile, conținutul media și fișierele de pe <b>%2$s</b>?" "Permiți accesul <b>%1$s</b> la <b>fotografii, clipuri, conținut audio și muzică</b> de pe dispozitiv?" "Permiți accesul <b>%1$s</b> la <b>fotografii, clipuri, conținut audio, muzică și alte fișiere</b> de pe dispozitiv?" "Permiți accesul <b>%1$s</b> la muzică și fișiere audio de pe acest dispozitiv?" + "Permiți accesul <b>%1$s</b> la muzică și conținut audio de pe <b>%2$s</b>?" "Permiți ca <b>%1$s</b> să acceseze fotografiile și videoclipurile de pe dispozitiv?" + "Permiți ca <b>%1$s</b> să acceseze fotografii și videoclipuri de pe <b>%2$s</b>?" "Permiți ca <b>%1$s</b> să acceseze mai multe fotografii și videoclipuri de pe dispozitiv?" + "Permiți ca <b>%1$s</b> să acceseze mai multe fotografii și videoclipuri de pe <b>%2$s</b>?" "Permiți ca <b>%1$s</b> să înregistreze audio?" + "Permiți ca <b>%1$s</b> să înregistreze conținut audio pe <b>%2$s</b>?" "Aplicația va putea să înregistreze conținut audio doar când o folosești" "Permiți ca <b>%1$s</b> să înregistreze audio?" + "Permiți ca <b>%1$s</b> să înregistreze conținut audio pe <b>%2$s</b>?" "Aplicația poate dori să înregistreze conținut audio permanent, chiar și când nu o folosești. ""Acordă această permisiune din setări." "Modifici accesul la microfon pentru <b>%1$s</b>?" + "Modifici accesul la microfon pentru <b>%1$s</b> pe <b>%2$s</b>?" "Aplicația dorește să înregistreze conținut audio permanent, chiar și când nu o folosești. ""Acordă această permisiune din setări." "Permiți aplicației <b>%1$s</b> să-ți acceseze activitatea fizică?" + "Permiți ca <b>%1$s</b> să acceseze activitatea fizică de pe <b>%2$s</b>?" "Permiți ca <b>%1$s</b> să fotografieze și să înregistreze video?" + "Permiți ca <b>%1$s</b> să facă fotografii și să înregistreze videoclipuri pe <b>%2$s</b>?" "Aplicația va putea să fotografieze și să înregistreze videoclipuri doar când o folosești" "Permiți ca <b>%1$s</b> să facă fotografii și să înregistreze videoclipuri?" + "Permiți ca <b>%1$s</b> să facă fotografii și să înregistreze videoclipuri pe <b>%2$s</b>?" "Aplicația poate dori să fotografieze și să înregistreze videoclipuri permanent, chiar când nu o folosești. ""Acordă această permisiune din setări." "Modifici accesul la camera foto pentru <b>%1$s</b>?" + "Modifici accesul la camera foto pentru <b>%1$s</b> pe <b>%2$s</b>?" "Aplicația dorește să fotografieze și să înregistreze videoclipuri permanent, chiar și când nu o folosești. ""Acordă această permisiune din setări." "Permiți ca <b>%1$s</b> să-ți acceseze jurnalele de apeluri?" + "Permiți ca <b>%1$s</b> să acceseze jurnalele de apeluri de pe <b>%2$s</b>?" "Permiți ca <b>%1$s</b> să dea și să gestioneze apeluri telefonice?" + "Permiți ca <b>%1$s</b> să inițieze și să gestioneze apeluri telefonice pe <b>%2$s</b>?" "Permiți ca <b>%1$s</b> să acceseze datele de la senzori despre semnele vitale?" + "Permiți ca <b>%1$s</b> să acceseze datele de la senzori despre semnele vitale de pe <b>%2$s</b>?" "Aplicația solicită acces permanent la datele de la senzori despre semnele vitale, chiar și când nu o folosești. Pentru a face această modificare, ""accesează setările""." "Permiți ca <b>%1$s</b> să acceseze datele de la senzori despre semnele vitale?" + "Permiți ca <b>%1$s</b> să acceseze datele de la senzori despre semnele vitale de pe <b>%2$s</b>?" "Pentru a permite accesul permanent al aplicației la datele de la senzorii corporali, chiar și atunci când nu o folosești, ""accesează setările""." "Permiți în continuare accesul <b>%1$s</b> la datele de la senzorii corporali în timpul folosirii aplicației?" + "<b>%1$s</b> poate accesa în continuare date de la senzorii corporali de pe <b>%2$s</b> în timpul folosirii aplicației?" "Permiți ca <b>%1$s</b> să-ți trimită notificări?" + "Permiți ca <b>%1$s</b> să trimită notificări pe <b>%2$s</b>?" "Permisiuni controlate" "%1$s are acces la locație" "Organizația ta permite ca %1$s să-ți acceseze locația" diff --git a/PermissionController/res/values-ru/strings.xml b/PermissionController/res/values-ru/strings.xml index 3c8d4ea58c88093c05d791ae0b9f1a0ee7df80ea..ee9ccfb2b7281efbc0c3bce9a7f41061ca35ad83 100644 --- a/PermissionController/res/values-ru/strings.xml +++ b/PermissionController/res/values-ru/strings.xml @@ -34,6 +34,7 @@ "Подробнее" "Разрешить ко всем" "Постоянный полный доступ" + "Разрешить ограниченный доступ" "Выбрать фотографии и видео" "Выбрать больше" "Не выбирать" @@ -60,6 +61,7 @@ "Приложения" "Разрешения приложений" "Неиспользуемые приложения" + "Изменить список фото для этого приложения" "Неиспользуемых приложений нет" "Нет неиспользуемых приложений" "Действия с разрешениями" @@ -455,48 +457,75 @@ "Показывать значок активации голосового помощника" "Показывать значок в строке состояния, когда для активации голосового помощника используется микрофон" "Разрешить приложению <b>%1$s</b> доступ к фото и мультимедиа на устройстве?" + "Разрешить приложению <b>%1$s</b> доступ к фото и мультимедиа на устройстве <b>%2$s</b>?" "Разрешить приложению <b>%1$s</b> доступ к контактам?" + "Разрешить приложению <b>%1$s</b> доступ к контактам на устройстве <b>%2$s</b>?" "Разрешить приложению <b>%1$s</b> доступ к данным о местоположении устройства?" + "Разрешить приложению <b>%1$s</b> доступ к данным о местоположении устройства <b>%2$s</b>?" "Доступ к местоположению будет открыт, только пока вы пользуетесь приложением." "Разрешить приложению <b>%1$s</b> доступ к данным о местоположении устройства?" + "Разрешить приложению <b>%1$s</b> доступ к данным о местоположении устройства <b>%2$s</b>?" "Этому приложению может потребоваться доступ к вашему местоположению, даже когда вы им не пользуетесь. Предоставьте разрешение в ""настройках""." "Изменить настройки доступа к данным о местоположении для приложения <b>%1$s</b>?" + "Изменить для приложения <b>%1$s</b> доступ к данным о местоположении на устройстве <b>%2$s</b>?" "Этому приложению требуется доступ к вашему местоположению, даже когда вы им не пользуетесь. Предоставьте разрешение в ""настройках""." "Разрешить приложению <b>%1$s</b> находить устройства поблизости, подключаться к ним и определять их относительное положение?" + "Разрешить приложению <b>%1$s</b> находить устройства поблизости, подключаться к ним и определять их относительное местоположение на устройстве <b>%2$s</b>?" "Разрешить приложению <b>%1$s</b> находить устройства поблизости, подключаться к ним и определять их относительное положение? ""Открыть настройки" "Изменить местоположение в приложении \"<b>%1$s</b>\" с приблизительного на точное?" + "Разрешить приложению \"<b>%1$s</b>\" доступ к данным о точном местоположении устройства <b>%2$s</b> вместо приблизительного?" "Разрешить приложению <b>%1$s</b> доступ к данным о приблизительном местоположении устройства?" + "Разрешить приложению <b>%1$s</b> доступ к данным о приблизительном положении устройства <b>%2$s</b>?" "Точно" "Приблизительно" "Разрешить приложению <b>%1$s</b> доступ к календарю?" + "Разрешить приложению <b>%1$s</b> доступ к календарю на устройстве <b>%2$s</b>?" "Разрешить приложению <b>%1$s</b> отправлять и просматривать SMS?" + "Разрешить приложению <b>%1$s</b> отправлять и просматривать SMS на устройстве <b>%2$s</b>?" "Разрешить приложению <b>%1$s</b> доступ к фото, мультимедиа и файлам на устройстве?" + "Разрешить приложению <b>%1$s</b> доступ к фото, мультимедиа и файлам на устройстве <b>%2$s</b>?" "Разрешить приложению <b>%1$s</b> доступ к <b>фото, видео, музыке и аудио</b> на устройстве?" "Разрешить приложению <b>%1$s</b> доступ к <b>фото, видео, аудио и другим файлам</b> на устройстве?" "Разрешить приложению <b>%1$s</b> доступ к музыке и аудио на устройстве?" + "Разрешить приложению <b>%1$s</b> доступ к музыке и аудио на устройстве <b>%2$s</b>?" "Разрешить приложению <b>%1$s</b> доступ к фото и видео на устройстве?" + "Разрешить приложению <b>%1$s</b> доступ к фото и видео на устройстве <b>%2$s</b>?" "Разрешить приложению <b>%1$s</b> доступ к другим фото и видео на этом устройстве?" + "Разрешить приложению <b>%1$s</b> доступ к другим фото и видео на устройстве <b>%2$s</b>?" "Разрешить приложению <b>%1$s</b> записывать аудио?" + "Разрешить приложению <b>%1$s</b> записывать аудио на устройстве <b>%2$s</b>?" "Приложение будет записывать аудио, только когда вы им пользуетесь." "Разрешить приложению <b>%1$s</b> записывать аудио?" + "Разрешить приложению <b>%1$s</b> записывать аудио на устройстве <b>%2$s</b>?" "Это приложение может записывать аудио в любое время, даже когда вы им не пользуетесь. ""Предоставьте разрешение в настройках." "Изменить настройки доступа к микрофону для приложения <b>%1$s</b>?" + "Изменить для приложения <b>%1$s</b> настройки доступа к микрофону на устройстве <b>%2$s</b>?" "Это приложение записывает аудио в любое время, даже когда вы им не пользуетесь. ""Предоставьте разрешение в настройках." "Разрешить приложению <b>%1$s</b> доступ к данным о физической активности?" + "Разрешить приложению <b>%1$s</b> доступ к данным о физической активности на устройстве <b>%2$s</b>?" "Разрешить приложению <b>%1$s</b> снимать фото и видео?" + "Разрешить приложению <b>%1$s</b> снимать фото и видео на устройстве <b>%2$s</b>?" "Приложение будет делать фотографии и снимать видео, только когда вы им пользуетесь." "Разрешить приложению <b>%1$s</b> снимать фото и видео?" + "Разрешить приложению <b>%1$s</b> снимать фото и видео на устройстве <b>%2$s</b>?" "Это приложение может делать фотографии и снимать видео в любое время, даже когда вы им не пользуетесь. ""Предоставьте разрешение в настройках." "Изменить настройки доступа к камере для приложения <b>%1$s</b>?" + "Изменить для приложения <b>%1$s</b> настройки доступа к камере на устройстве <b>%2$s</b>?" "Это приложение делает фотографии и снимает видео в любое время, даже когда вы им не пользуетесь. ""Предоставьте разрешение в настройках." "Разрешить приложению <b>%1$s</b> доступ к списку вызовов?" + "Разрешить приложению <b>%1$s</b> доступ к списку вызовов на устройстве <b>%2$s</b>?" "Разрешить приложению <b>%1$s</b> совершать звонки и управлять ими?" + "Разрешить приложению <b>%1$s</b> совершать звонки и управлять ими на устройстве <b>%2$s</b>?" "Разрешить приложению <b>%1$s</b> доступ к данным датчиков о состоянии организма?" + "Разрешить приложению <b>%1$s</b> доступ к данным нательных датчиков на устройстве <b>%2$s</b>?" "Этому приложению требуется доступ к данным нательных датчиков, даже когда вы им не пользуетесь. Предоставить разрешение можно в ""настройках""." "Разрешить приложению \"%1$s\" доступ к данным датчиков на теле?" + "Разрешить приложению <b>%1$s</b> доступ к данным нательных датчиков на устройстве <b>%2$s</b>?" "Чтобы предоставить приложению доступ к данным нательных датчиков, даже когда вы им не пользуетесь, ""измените настройки""." "Предоставлять приложению <b>%1$s</b> доступ к данным нательных датчиков, только когда оно используется?" + "Разрешить прил. <b>%1$s</b> доступ к данным нат. датчиков на устр. <b>%2$s</b> только при использ.?" "Разрешить %1$s отправлять уведомления?" + "Разрешить приложению <b>%1$s</b> отправлять уведомления на устройстве <b>%2$s</b>?" "Контролируемые разрешения" "У приложения \"%1$s\" есть доступ к геоданным" "В вашей организации приложению \"%1$s\" разрешен доступ к геоданным." diff --git a/PermissionController/res/values-si/strings.xml b/PermissionController/res/values-si/strings.xml index 1899c6e702a436b544e23f5dfcb7a0b747e7e69a..fc722dec747728a934a938cc9b8f66885c595ec5 100644 --- a/PermissionController/res/values-si/strings.xml +++ b/PermissionController/res/values-si/strings.xml @@ -34,6 +34,7 @@ "තවත් තතු" "සියල්ලට ඉඩ දෙන්න" "සැම විටම සියල්ලට ඉඩ දෙන්න" + "සීමිත ප්‍රවේශයට ඉඩ දෙන්න" "ඡායාරූප සහ වීඩියෝ තෝරන්න" "තවත් තෝරන්න" "තවත් තෝරා නොගන්න" @@ -60,6 +61,7 @@ "යෙදුම්" "යෙදුම් අවසර" "භාවිත නොකළ යෙදුම්" + "මෙම යෙදුම සඳහා තෝරන ලද ඡායාරූප සංස්කරණය කරන්න" "භාවිත නොකළ යෙදුම් නැත" "භාවිත නොකළ යෙදුම් 0" "මෑත අවසර තීරණ" @@ -455,48 +457,75 @@ "සහායක ප්‍රේරකය අනාවරණය පෙන්වන්න" "හඬ සහායක සක්‍රිය කිරීමට මයික්‍රෆෝනය භාවිතා කරන විට තත්ත්ව තීරුවේ නිරූපකය පෙන්වන්න" "<b>%1$s<b> වෙත ඔබගේ උපාංගය තුළ ඇති ඡායාරූප, මාධ්‍ය, සහ ගොනු වෙත ප්‍රවේශ වීමට ඉඩ දෙන්නේද?" + "<b>%1$s</b> හට ඔබේ <b>%2$s</b> මත ඡායාරූප සහ මාධ්‍ය වෙත ප්‍රවේශ වීමට ඉඩ දෙන්න ද?" "<b>%1$s<b> වෙත ඔබගේ සබඳතා වෙත ප්‍රවේශ වීමට ඉඩ දෙන්නද?" + "<b>%1$s</b> හට ඔබේ <b>%2$s</b> මත ඔබේ සම්බන්ධතා වෙත ප්‍රවේශ වීමට ඉඩ දෙන්න ද?" "<b>%1$s<b> හට මෙම උපාංගයෙහි ස්ථානය වෙත ප්‍රවේශ වීමට ඉඩ දෙන්නද?" + "<b>%1$s</b> හට ඔබේ <b>%2$sගේ</b> ස්ථානයට ප්‍රවේශ වීමට ඉඩ දෙන්න ද?" "ඔබ යෙදුම භාවිත කරන විට පමණක් යෙදුමට ස්ථානය වෙත ප්‍රවේශය ඇත" "<b>%1$s<b> හට මෙම උපාංගයෙහි ස්ථානය වෙත ප්‍රවේශ වීමට ඉඩ දෙන්නද?" + "<b>%1$s</b> හට ඔබේ <b>%2$sගේ ස්ථානයට ප්‍රවේශ වීමට ඉඩ දෙන්න ද?" "මෙයට ඔබ යෙදුම භාවිත නොකරමින් සිටින විට පවා සියලු අවස්ථාවල ඔබේ ස්ථානය වෙත ප්‍රවේශ වීමට අවශ්‍ය විය හැකිය. ""සැකසීම්වල ඉඩ දෙන්න." "<b>%1$s</b> සඳහා ස්ථාන ප්‍රවේශය වෙනස් කරන්නද?" + "ඔබේ <b>%2$s</b> මත <b>%1$s</b> සඳහා ස්ථාන ප්‍රවේශය වෙනස් කරන්න ද?" "මෙම යෙදුමට ඔබ යෙදුම භාවිත නොකරමින් සිටින විට පවා සියලු අවස්ථාවල ඔබේ ස්ථානය වෙත ප්‍රවේශ වීමට අවශ්‍යයි. ""සැකසීම්වල ඉඩ දෙන්න." "<b>%1$s<b> හට අවට උපාංග සොයා ගැනීමට, සම්බන්ධ වීමට සහ ඒවායේ සාපේක්ෂ ස්ථානය සොයා ගැනීමට ඉඩ දෙන්නද?" + "<b>%1$s</b> හට ඔබේ <b>%2$s</b> මත අවට උපාංගවල සාපේක්ෂ පිහිටීම සොයා ගැනීමට, සම්බන්ධ කිරීමට, සහ තීරණය කිරීමට ඉඩ දෙන්න ද?" "<b>%1$s<b> හට අවට උපාංග සොයා ගැනීමට, සම්බන්ධ වීමට සහ ඒවායේ සාපේක්ෂ ස්ථානය සොයා ගැනීමට ඉඩ දෙන්නද? ""සැකසීම් තුළ ඉඩ දෙන්න." "<b>%1$s</b> හි ස්ථානය ආසන්න සිට නිවැරදි දක්වා වෙනස් කරන්නද?" + "ඔබේ <b>%2$s</b> මත <b>%1$s</b>ගේ ස්ථාන ප්‍රවේශය ආසන්නයේ සිට නිරවද්‍ය ලෙස වෙනස් කරන්න ද?" "<b>%1$s</b> ට මෙම උපාංගයෙහි ස්ථානය වෙත ප්‍රවේශ වීමට ඉඩ දෙන්නද?" + "<b>%1$s</b> හට ඔබේ <b>%2$s</b>ගේ දළ ස්ථානයට ප්‍රවේශ වීමට ඉඩ දෙන්න ද?" "ඉතා නිවැරදි" "ආසන්න" "<b>%1$s<b> වෙත ඔබගේ දින දර්ශනය ප්‍රවේශ කිරීමට ඉඩ දෙන්නද?" + "<b>%1$s</b> හට ඔබේ <b>%2$s</b> මත ඔබේ දින දර්ශනයට ප්‍රවේශ වීමට ඉඩ දෙන්න ද?" "<b>%1$s<b> වෙත SMS පණිවිඩ යැවීමට සහ බැලීමට ඉඩ දෙන්නද?" + "<b>%1$s</b> හට ඔබේ <b>%2$s</b> මත SMS පණිවිඩ යැවීමට සහ බැලීමට ඉඩ දෙන්න ද?" "<b>%1$s<b> වෙත ඔබගේ උපාංගය තුළ ඇති ඡායාරූප, මාධ්‍ය, සහ ගොනු වෙත ප්‍රවේශ වීමට ඉඩ දෙන්නද?" + "<b>%1$s</b> හට ඔබේ <b>%2$s</b> මත ඡායාරූප, මාධ්‍ය, සහ ගොනු වෙත ප්‍රවේශ වීමට ඉඩ දෙන්න ද?" "<b>%1$s<b> හට මෙම උපාංගයේ <b>ඡායාරූප, වීඩියෝ, සංගීතය සහ ශ්‍රව්‍ය<b> වෙත ප්‍රවේශ වීමට ඉඩ දෙන්නද?" "<b>%1$s<b> හට මෙම උපාංගයේ <b>ඡායාරූප, වීඩියෝ, සංගීතය, ශ්‍රව්‍ය සහ වෙනත් ගොනු<b> වෙත ප්‍රවේශ වීමට ඉඩ දෙන්නද?" "<b>%1$s<b> හට මෙම උපාංගයේ සංගීතය සහ ශ්‍රව්‍ය වෙත ප්‍රවේශ වීමට ඉඩ දෙන්නද?" + "<b>%1$s</b> හට ඔබේ <b>%2$s</b> මත සංගීතය සහ ශ්‍රව්‍ය වෙත ප්‍රවේශ වීමට ඉඩ දෙන්න ද?" "<b>%1$s<b> හට මෙම උපාංගයේ ඇති ඡායාරූප සහ වීඩියෝ වෙත ප්‍රවේශ වීමට ඉඩ දෙන්නද?" + "<b>%1$s</b> හට ඔබේ <b>%2$s</b> මත ඡායාරූප සහ වීඩියෝ වෙත ප්‍රවේශ වීමට ඉඩ දෙන්න ද?" "<b>%1$s</b> හට මෙම උපාංගයෙහි ඇති තවත් ඡායාරූප සහ වීඩියෝ වෙත ප්‍රවේශ වීමට ඉඩ දෙන්න ද?" + "<b>%1$s</b> හට ඔබේ <b>%2$s</b> මත තවත් ඡායාරූප සහ වීඩියෝ වෙත ප්‍රවේශ වීමට ඉඩ දෙන්න ද?" "<b>%1$s<b> වෙත ශබ්දය පටි ගත කිරීමට ඉඩ දෙන්නද?" + "<b>%1$s</b> හට ඔබේ <b>%2$s</b> මත ශ්‍රව්‍ය පටිගත කිරීමට ඉඩ දෙන්න ද?" "යෙදුමට ඔබ යෙදුම භාවිත කරන අතරතුර ඕඩියෝ පටිගත කිරීමට පමණක් හැකි වනු ඇත" "<b>%1$s</b> හට ඕඩියෝ පටිගත කිරීමට ඉඩ දෙන්නද?" + "<b>%1$s</b> හට ඔබේ <b>%2$s</b> මත ශ්‍රව්‍ය පටිගත කිරීමට ඉඩ දෙන්න ද?" "මෙම යෙදුමට ඔබ යෙදුම භාවිත කරමින් නොසිටින විට පවා මුළු කාලය පුරාම ඕඩියෝ පටිගත කිරීමට අවශ්‍ය විය හැකිය. ""සැකසීම්වල ඉඩ දෙන්න." "<b>%1$s</b> සඳහා මයික්‍රෆෝන ප්‍රවේශය වෙනස් කරන්නද?" + "ඔබේ <b>%2$s</b> මත <b>%1$s</b> සඳහා මයික්‍රෆෝන ප්‍රවේශය වෙනස් කරන්න ද?" "මෙම යෙදුමට ඔබ යෙදුම භාවිත කරමින් නොසිටින විට පවා මුළු කාලය පුරාම ඕඩියෝ පටිගත කිරීමට අවශ්‍යයි. ""සැකසීම්වල ඉඩ දෙන්න." "<b>%1$s</b> හට ඔබේ ශාරීරික ක්‍රියාකාරකමට ප්‍රවේශ වීමට ඉඩ දෙන්නේද?" + "<b>%1$s</b> හට ඔබේ <b>%2$s</b> මත ඔබේ ශාරීරික ක්‍රියාකාරකම් වෙත ප්‍රවේශ වීමට ඉඩ දෙන්න ද?" "<b>%1$s<b> වෙත පින්තූර සහ වීඩියෝ ගැනීමට ඉඩ දෙන්නද?" + "<b>%1$s</b> හට ඔබේ <b>%2$s</b> මත පින්තූර ගැනීමට සහ වීඩියෝ පටිගත කිරීමට ඉඩ දෙන්න ද?" "යෙදුමට ඔබ යෙදුම භාවිත කරන අතරතුර පින්තූර ගැනීමට සහ වීඩියෝ පටිගත කිරීමට පමණක් හැකි වනු ඇත" "<b>%1$s</b> හට පින්තූර ගැනීමට සහ වීඩියෝ පටිගත කිරීමට ඉඩ දෙන්නද?" + "<b>%1$s</b> හට ඔබේ <b>%2$s</b> මත පින්තූර ගැනීමට සහ වීඩියෝ පටිගත කිරීමට ඉඩ දෙන්න ද?" "මෙම යෙදුමට ඔබ යෙදුම භාවිත කරමින් නොසිටින විට පවා මුළු කාලය පුරාම පින්තූර ගැනීමට සහ වීඩියෝ පටිගත කිරීමට අවශ්‍ය විය හැකිය. ""සැකසීම්වල ඉඩ දෙන්න." "<b>%1$s</b> සඳහා කැමරා ප්‍රවේශය වෙනස් කරන්නද?" + "ඔබේ <b>%2$s</b> මත <b>%1$s</b> සඳහා කැමරා ප්‍රවේශය වෙනස් කරන්න ද?" "මෙම යෙදුමට ඔබ යෙදුම භාවිත කරමින් නොසිටින විට පවා මුළු කාලය පුරාම පින්තූර ගැනීමට සහ වීඩියෝ පටිගත කිරීමට අවශ්‍යයි. ""සැකසීම්වල ඉඩ දෙන්න." "<b>%1$s<b> ඔබේ ඇමතුම් ලොග වෙත පිවිසීමට ඉඩ දෙන්නද?" + "<b>%1$s</b> හට ඔබේ <b>%2$s</b> මත ඔබේ දුරකථන ඇමතුම් ලොග වෙත ප්‍රවේශ වීමට ඉඩ දෙන්න ද?" "<b>%1$s<b> වෙත දුරකථන ඇමතුම් ලබා ගැනීමට සහ කළමනාකරණය කිරීමට ඉඩ දෙන්නද?" + "<b>%1$s</b> හට ඔබේ <b>%2$s</b> මත දුරකථන ඇමතුම් ලබා ගැනීමට සහ කළමනාකරණය කිරීමට ඉඩ දෙන්න ද?" "<b>%1$s<b> වෙත ඔබගේ ජෛව ලක්ෂණ පිළිබඳ සංවේදක දත්ත වෙත ප්‍රවේශ වීමට ඉඩ දෙන්නද?" + "<b>%1$s</b> හට ඔබේ <b>%2$s</b> මත ඔබේ ජීව සලකුණු පිළිබඳ සංවේදක දත්ත වෙත ප්‍රවේශ වීමට ඉඩ දෙන්න ද?" "මෙම යෙදුමට ඔබ යෙදුම භාවිත නොකරමින් සිටින විට පවා, සියලු අවස්ථාවල ඔබගේ ජෛව ලක්ෂණ පිළිබඳ සංවේදක දත්තවලට ප්‍රවේශය අවශ්‍යයි. මෙම වෙනස් කිරීම සිදු කිරීමට, ""සැකසීම් වෙත යන්න." "<b>%1$s<b> හට ඔබගේ ජෛව ලක්ෂණ පිළිබඳ සංවේදක දත්ත වෙත ප්‍රවේශ වීමට ඉඩ දෙන්නද?" + "<b>%1$s</b> හට ඔබේ <b>%2$s</b> මත ඔබේ ජීව සලකුණු පිළිබඳ සංවේදක දත්ත වෙත ප්‍රවේශ වීමට ඉඩ දෙන්න ද?" "ඔබ යෙදුම භාවිත නොකරන විට පවා, මෙම යෙදුමට ශරීර සංවේදක දත්තවලට ප්‍රවේශ වීමට ඉඩ දීමට, ""සැකසීම් වෙත යන්න." "යෙදුම භාවිතයේ ඇති අතරතුර ශරීර සංවේදක දත්ත වෙත ප්‍රවේශ වීමට <b>%1$s<b> හට ඉඩ දෙන්නද?" + "යෙදුම භාවිතයේ පවතින අතරේ ඔබේ <b>%2$s</b> මත ශරීර සංවේදක දත්ත වෙත ප්‍රවේශ වීමට <b>%1$s</b> හට දිගටම ඉඩ දෙන්න ද?" "ඔබට දැනුම්දීම් එවීමට <b>%1$s<b> හට ඉඩ දෙන්නද?" + "<b>%1$s</b> හට ඔබේ <b>%2$s</b> මත දැනුම්දීම් යැවීමට ඉඩ දෙන්න ද?" "පාලිත අවසර" "%1$s හට ස්ථාන ප්‍රවේශය ඇත" "ඔබේ සංවිධානය %1$s හට ඔබේ ස්ථානයට ප්‍රවේශ වීමට ඉඩ දෙයි" diff --git a/PermissionController/res/values-sk/strings.xml b/PermissionController/res/values-sk/strings.xml index ae8ea524c7b85cd615e92d0a778919505ace5fe6..6680ddad9c6fa54b020ab5ada1f343b5b509396a 100644 --- a/PermissionController/res/values-sk/strings.xml +++ b/PermissionController/res/values-sk/strings.xml @@ -34,6 +34,7 @@ "Ďalšie info" "Povoliť všetko" "Vždy povoliť všetko" + "Povoliť obmedzený prístup" "Vybrať fotky a videá" "Vybrať ďalšie" "Nevybrať ďalšie" @@ -60,6 +61,7 @@ "Aplikácie" "Povolenia aplikácií" "Nepoužívané aplikácie" + "Upraviť vybrané fotky pre túto aplikáciu" "Žiadne nepoužívané aplikácie" "Žiadne nepoužívané aplikácie" "Nedávne rozhodnutia o povolení" @@ -455,48 +457,75 @@ "Zobrazovať detekciu spustenia asistenta" "Zobrazovať v stavovom riadku ikonu, keď bude pomocou mikrofónu aktivovaný hlasový asistent" "Chcete povoliť aplikácii <b>%1$s</b> prístup k fotkám a médiám v zariadení?" + "Chcete aplikácii <b>%1$s</b> povoliť prístup k fotkám a médiám v zariadení <b>%2$s</b>?" "Chcete povoliť aplikácii <b>%1$s</b> prístup ku kontaktom?" + "Chcete aplikácii <b>%1$s</b> povoliť prístup ku kontaktom v zariadení <b>%2$s</b>?" "Chcete povoliť aplikácii <b>%1$s</b> prístup k polohe tohto zariadenia?" + "Chcete aplikácii <b>%1$s</b> povoliť prístup k polohe zariadenia <b>%2$s’s</b>?" "Aplikácia bude mať prístup k polohe iba vtedy, keď ju budete používať" "Chcete povoliť aplikácii <b>%1$s</b> prístup k polohe tohto zariadenia?" + "Chcete aplikácii <b>%1$s</b> povoliť prístup k polohe zariadenia <b>%2$s?" "Táto aplikácia môže požadovať nepretržitý prístup k vašej polohe, aj keď ju nepoužívate. ""Povolíte ho v nastaveniach." "Chcete zmeniť prístup k polohe pre aplikáciu <b>%1$s</b>?" + "Chcete zmeniť prístup k polohe pre <b>%1$s</b> v zariadení <b>%2$s</b>?" "Táto aplikácia požaduje nepretržitý prístup k vašej polohe, aj keď ju nepoužívate. ""Povolíte ho v nastaveniach." "Chcete aplikácii %1$s povoliť vyhľadávať zariadenia v okolí, pripájať sa k nim a určovať ich relatívnu polohu?" + "Povoliť aplikácii <b>%1$s</b> vyhľadávať zariadenia v okolí, určovať ich relatívnu polohu a pripájať sa k nim v zariadení <b>%2$s</b>?" "Chcete aplikácii %1$s povoliť vyhľadávať zariadenia v okolí, pripájať sa k nim a určovať ich vzájomnú polohu? ""Urobte to v nastaveniach." "Chcete zmeniť prístup k polohe aplikácie <b>%1$s</b> z približnej polohy na presnú?" + "Chcete zmeniť prístup k polohe pre aplikáciu <b>%1$s</b> v zariadení <b>%2$s</b> z približnej na presnú?" "Chcete povoliť aplikácii <b>%1$s</b> prístup k približnej polohe tohto zariadenia?" + "Chcete aplikácii <b>%1$s</b> povoliť prístup k približnej polohe zariadenia <b>%2$s</b>?" "Presná" "Približná" "Povoliť aplikácii <b>%1$s</b> prístup ku kalendáru?" + "Chcete aplikácii <b>%1$s</b> povoliť prístup ku kalendáru v zariadení <b>%2$s</b>?" "Povoliť aplikácii <b>%1$s</b> odosielať a zobrazovať správy SMS?" + "Chcete aplikácii <b>%1$s</b> povoliť odosielať a zobrazovať správy SMS v zariadení <b>%2$s</b>?" "Chcete povoliť aplikácii <b>%1$s</b> prístup k fotkám, médiám a súborom v zariadení?" + "Chcete aplikácii <b>%1$s</b> povoliť prístup k fotkám, médiám a súborom v zariadení <b>%2$s</b>?" "Povoliť aplikácii <b>%1$s</b> prístup k <b>fotkám, videám, hudbe a zvuku</b> v tomto zariadení?" "Povoliť aplikácii <b>%1$s</b> prístup k <b>fotkám, videám, hudbe, zvuku a ďalším súborom</b> v tomto zariadení?" "Chcete povoliť aplikácii <b>%1$s</b> prístup k hudbe a zvuku v tomto zariadení?" + "Chcete aplikácii <b>%1$s</b> povoliť prístup k hudbe a zvuku v zariadení <b>%2$s</b>?" "Chcete povoliť aplikácii <b>%1$s</b> prístup k fotkám a videám v tomto zariadení?" + "Chcete aplikácii <b>%1$s</b> povoliť prístup k fotkám a videám v zariadení <b>%2$s</b>?" "Chcete povoliť aplikácii <b>%1$s</b> prístup k ďalším fotkám a videám v tomto zariadení?" + "Chcete aplikácii <b>%1$s</b> povoliť prístup k ďalším fotkám a videám v zariadení <b>%2$s</b>?" "Chcete povoliť aplikácii <b>%1$s</b> nahrávať zvuk?" + "Chcete aplikácii <b>%1$s</b> povoliť nahrávať zvuk v zariadení <b>%2$s</b>?" "Táto aplikácia bude môcť nahrávať zvuk iba vtedy, keď ju budete používať" "Chcete povoliť aplikácii <b>%1$s</b> nahrávať zvuk?" + "Chcete aplikácii <b>%1$s</b> povoliť nahrávať zvuk v zariadení <b>%2$s</b>?" "Táto aplikácia môže požadovať nepretržitý prístup k nahrávaniu zvuku, aj keď ju nepoužívate. ""Povolíte ho v nastaveniach." "Chcete aplikácii <b>%1$s</b> zmeniť prístup k mikrofónu?" + "Chcete zmeniť prístup k mikrofónu pre <b>%1$s</b> v zariadení <b>%2$s</b>?" "Táto aplikácia požaduje nepretržitý prístup k nahrávaniu zvuku, aj keď ju nepoužívate. ""Povolíte ho v nastaveniach." "Povoliť aplikácii <b>%1$s</b> prístup k vašej fyzickej aktivite?" + "Chcete aplikácii <b>%1$s</b> povoliť prístup k údajom o fyzickej aktivite v zariadení <b>%2$s</b>?" "Chcete povoliť aplikácii <b>%1$s</b> fotiť a nahrávať video?" + "Chcete aplikácii <b>%1$s</b> povoliť snímať fotky a nahrávať videá v zariadení <b>%2$s</b>?" "Táto aplikácia bude môcť fotiť a nahrávať videá iba vtedy, keď ju budete používať" "Chcete povoliť aplikácii <b>%1$s</b> fotiť a nahrávať videá?" + "Chcete aplikácii <b>%1$s</b> povoliť snímať fotky a nahrávať videá v zariadení <b>%2$s</b>?" "Táto aplikácia môže požadovať nepretržitý prístup k foteniu a nahrávaniu videí, aj keď ju nepoužívate. ""Povolíte ho v nastaveniach." "Chcete aplikácii <b>%1$s</b> zmeniť prístup k fotoaparátu?" + "Zmeniť prístup ku kamere pre <b>%1$s</b> v zariadení <b>%2$s</b>?" "Táto aplikácia požaduje nepretržitý prístup k foteniu a nahrávaniu videí, aj keď ju nepoužívate. ""Povolíte ho v nastaveniach." "Chcete povoliť aplikácii <b>%1$s</b> prístup k zoznamu tel. hovorov?" + "Chcete aplikácii <b>%1$s</b> povoliť prístup k zoznamu hovorov telefónu v zariadení <b>%2$s</b>?" "Chcete povoliť aplikácii <b>%1$s</b> uskutočňovať a spravovať telefonické hovory?" + "Povoliť aplikácii <b>%1$s</b> uskutočňovať a spravovať telefonické hovor v zariadení <b>%2$s</b>?" "Povoliť aplikácii <b>%1$s</b> používať údaje senzorov o vašich životných funkciách?" + "Povoliť aplikácii <b>%1$s</b> prístup k dátam senzora o životných funkciách v zariadení <b>%2$s</b>?" "Táto aplikácia požaduje nepretržitý prístup k dátam senzorov o vašich životných funkciách, a to aj vtedy, keď ju nepoužívate. Povolíte to ""v nastaveniach""." "Chcete povoliť aplikácii <b>%1$s</b> používať dáta senzorov o vašich životných funkciách?" + "Povoliť aplikácii <b>%1$s</b> prístup k dátam senzora o životných funkciách v zariadení <b>%2$s</b>?" "Ak chcete tejto aplikácii povoliť nepretržitý prístup k údajom telového senzora, a to aj v prípade, že ju nepoužívate, ""prejdite do nastavení." "Chcete povoliť aplikácii <b>%1$s</b> prístup k dátam telových senzorov počas jej používania?" + "Má mať <b>%1$s</b> počas používania naďalej prístup k dátam telových senzorov v zariadení <b>%2$s</b>?" "Chcete povoliť aplikácii <b>%1$s</b> posielať vám upozornenia?" + "Chcete aplikácii <b>%1$s</b> povoliť odosielať upozornenia v zariadení <b>%2$s</b>?" "Ovládané povolenia" "%1$s má prístup k polohe" "Vaša organizácia povoľuje aplikácii %1$s prístup k vašej polohe" diff --git a/PermissionController/res/values-sl/strings.xml b/PermissionController/res/values-sl/strings.xml index 5265a0724ec86022e7a1c468285eabc9238391a2..d4b8a103768fb5cf01180c1d6303af6ab1aded64 100644 --- a/PermissionController/res/values-sl/strings.xml +++ b/PermissionController/res/values-sl/strings.xml @@ -34,6 +34,7 @@ "Več informacij" "Dovoli vse" "Vedno dovoli vse" + "Dovoli omejen dostop" "Izberi fotografije in videoposnetke" "Izberi več" "Brez izbire dodatnih" @@ -60,6 +61,7 @@ "Aplikacije" "Dovoljenja za aplikacije" "Neuporabljene aplikacije" + "Urejanje izbranih fotografij za to aplikacijo" "Ni neuporabljenih aplikacij." "0 neuporabljenih aplikacij" "Nedavne odločitve o dovoljenjih" @@ -455,48 +457,75 @@ "Prikaz zaznavanja sprožilca za pomočnika" "Prikaz ikone v vrstici stanja, ko z mikrofonom aktivirate glasovnega pomočnika" "Dovolite aplikaciji <b>%1$s</b> dostop do fotografij in predstavnosti v napravi?" + "Želite aplikaciji <b>%1$s</b> dovoliti dostop do fotografij in predstavnosti v napravi <b>%2$s</b>?" "Dovolite aplikaciji <b>%1$s</b> dostop do stikov?" + "Želite aplikaciji <b>%1$s</b> dovoliti dostop do stikov v napravi <b>%2$s</b>?" "Dovolite aplikaciji <b>%1$s</b> dostop do lokacije te naprave?" + "Želite aplikaciji <b>%1$s</b> dovoliti dostop do lokacije naprave <b>%2$s</b>?" "Aplikacija bo imela dostop do lokacije samo, ko aplikacijo uporabljate" "Dovolite aplikaciji <b>%1$s</b> dostop do lokacije te naprave?" + "Želite aplikaciji <b>%1$s</b> dovoliti dostop do lokacije naprave <b>%2$s</b>?" "Ta aplikacija bo morda želela imeti stalen dostop do vaše lokacije, tudi ko aplikacije ne boste uporabljali. ""Omogočite v nastavitvah." "Želite spremeniti dostop do lokacije za aplikacijo <b>%1$s</b>?" + "Želite spremeniti dostop do lokacije za aplikacijo <b>%1$s</b> v napravi <b>%2$s</b>?" "Ta aplikacija želi imeti stalen dostop do vaše lokacije, tudi ko aplikacije ne uporabljate. ""Omogočite v nastavitvah." "Ali apl. <b>%1$s</b> dovolite iskanje naprav v bližini, povezovanje z njimi in določanje njihove rel. lokacije?" + "Žel. apl. <b>%1$s</b> dovoliti isk. napr. v bliž., pov. z njimi in določ. rel. lok. v napr. <b>%2$s</b>?" "Ali aplikaciji <b>%1$s</b> dovolite iskanje naprav v bližini, povezovanje z njimi in določanje njihove rel. lokacije? ""Omogočite v nastavitvah." "Ali želite aplikaciji <b>%1$s</b> omogočiti dostop do natančne lokacije namesto približne?" + "Želite dostop do lokacije za aplikacijo <b>%1$s</b> v napravi <b>%2$s</b> spremeniti iz približnega v natančnega?" "Dovolite aplikaciji <b>%1$s</b> dostop do približne lokacije te naprave?" + "Želite aplikaciji <b>%1$s</b> dovoliti dostop do približne lokacije naprave <b>%2$s</b>?" "Natančna" "Približna" "Dovolite aplikaciji <b>%1$s</b> dostop do koledarja?" + "Želite aplikaciji <b>%1$s</b> dovoliti dostop do koledarja v napravi <b>%2$s</b>?" "Dovolite aplikaciji <b>%1$s</b> pošiljanje in ogled sporočil SMS?" + "Želite aplikaciji <b>%1$s</b> dovoliti pošiljanje in ogled sporočil SMS v napravi <b>%2$s</b>?" "Dovolite aplikaciji <b>%1$s</b> dostop do fotografij, predstavnosti in datotek v svoji napravi?" + "Želite aplik. <b>%1$s</b> dovoliti dostop do fotografij, predstavnosti in datotek v napravi <b>%2$s</b>?" "Dovolite aplikaciji <b>%1$s</b> dostop do <b>fotografij, videoposnetkov, glasbe in zvočnih datotek</b> v tej napravi?" "Dovolite aplikaciji <b>%1$s</b> dostop do <b>fotografij, videoposnetkov, glasbe, zvočnih datotek in drugih datotek</b> v tej napravi?" "Dovolite aplikaciji <b>%1$s</b> dostop do glasbe in zvočnih datotek v tej napravi?" + "Želite aplikaciji <b>%1$s</b> dovoliti dostop do glasbe in zvočnih datotek v napravi <b>%2$s</b>?" "Dovolite aplikaciji <b>%1$s</b> dostop do fotografij in videoposnetkov v tej napravi?" + "Želite aplikaciji <b>%1$s</b> dovoliti dostop do fotografij in videoposnetkov v napravi <b>%2$s</b>?" "Želite aplikaciji <b>%1$s</b> dovoliti dostop do več fotografij in videoposnetkov v tej napravi?" + "Želite aplikaciji <b>%1$s</b> dovoliti dostop do več fotografij in videoposnetkov v napravi <b>%2$s</b>?" "Dovolite aplikaciji <b>%1$s</b> snemanje zvoka?" + "Želite aplikaciji <b>%1$s</b> dovoliti snemanje zvoka v napravi <b>%2$s</b>?" "Aplikacija bo lahko snemala zvok le med vašo uporabo aplikacije." "Želite aplikaciji <b>%1$s</b> omogočiti snemanje zvoka?" + "Želite aplikaciji <b>%1$s</b> dovoliti snemanje zvoka v napravi <b>%2$s</b>?" "Ta aplikacija bo morda želela vseskozi snemati zvok, tudi ko aplikacije ne uporabljate. ""To omogočite v nastavitvah." "Želite spremeniti dostop do mikrofona za aplikacijo <b>%1$s</b>?" + "Želite spremeniti dostop do mikrofona za aplikacijo <b>%1$s</b> v napravi <b>%2$s</b>?" "Ta aplikacija želi vseskozi snemati zvok, tudi ko aplikacije ne uporabljate. ""To omogočite v nastavitvah." "Dovolite aplikaciji <b>%1$s</b> dostop do svoje telesne dejavnosti?" + "Želite aplikaciji <b>%1$s</b> dovoliti dostop do telesne dejavnosti v napravi <b>%2$s</b>?" "Dovolite aplikaciji <b>%1$s</b> fotografiranje in snemanje videoposnetkov?" + "Želite aplikaciji <b>%1$s</b> dovoliti snemanje fotografij in videoposnetkov v napravi <b>%2$s</b>?" "Aplikacija bo lahko snemala fotografije in videoposnetke le med vašo uporabo aplikacije." "Želite aplikaciji <b>%1$s</b> omogočiti fotografiranje in snemanje videoposnetkov?" + "Želite aplikaciji <b>%1$s</b> dovoliti snemanje fotografij in videoposnetkov v napravi <b>%2$s</b>?" "Ta aplikacija bo morda želela vseskozi snemati fotografije in videoposnetke, tudi ko aplikacije ne uporabljate. ""To omogočite v nastavitvah." "Želite spremeniti dostop do fotoaparata za aplikacijo <b>%1$s</b>?" + "Želite spremeniti dostop do fotoaparata za aplikacijo <b>%1$s</b> v napravi <b>%2$s</b>?" "Ta aplikacija želi vseskozi snemati fotografije in videoposnetke, tudi ko aplikacije ne uporabljate. ""To omogočite v nastavitvah." "Dovolite aplikaciji <b>%1$s</b> dostop do dnevnikov klicev v telefonu?" + "Želite aplikaciji <b>%1$s</b> dovoliti dostop do dnevnikov telefonskih klicev v napravi <b>%2$s</b>?" "Dovolite aplikaciji <b>%1$s</b> opravljanje in upravljanje telefonskih klicev?" + "Želite aplik. <b>%1$s</b> dovoliti opravljanje in upravljanje telefonskih klicev v napravi <b>%2$s</b>?" "Dovolite aplikaciji <b>%1$s</b> dostop do podatkov tipala o vitalnih znakih?" + "Želite aplikaciji <b>%1$s</b> dovoliti dostop do podatkov tipal o vitalnih znakih v napravi <b>%2$s</b>?" "Ta aplikacija želi stalen dostop do podatkov tipal vitalnih znakov, tudi ko aplikacije ne uporabljate. Če želite izvesti to spremembo, ""pojdite v nastavitve""." "Želite aplikaciji <b>%1$s</b> omogočiti dostop do podatkov tipal o vitalnih znakih?" + "Želite aplikaciji <b>%1$s</b> dovoliti dostop do podatkov tipal o vitalnih znakih v napravi <b>%2$s</b>?" "Če želite tej aplikaciji omogočiti stalen dostop do podatkov tipal telesnih funkcij, tudi ko je ne uporabljate, ""pojdite v nastavitve""." "Ali želite aplikaciji <b>%1$s</b> še naprej dovoliti dostop do podatkov tipal telesnih funkcij, ko je v uporabi?" + "Žel. apl. <b>%1$s</b> v napravi <b>%2$s</b> še napr. dov. dost. do pod. tip. tel. funkc., ko je v upor.?" "Želite aplikaciji <b>%1$s</b> omogočiti, da vam pošilja obvestila?" + "Želite aplikaciji <b>%1$s</b> dovoliti pošiljanje obvestil v napravi <b>%2$s</b>?" "Zunanje upravljana dovoljenja" "%1$s ima dostop do lokacije" "Vaša organizacija aplikaciji %1$s dovoljuje dostop do vaše lokacije." diff --git a/PermissionController/res/values-sq/strings.xml b/PermissionController/res/values-sq/strings.xml index bfda0b905ff8bc48962a6237ef1f3028f6cefa65..a32dfb4f78eda7276c0084f9c8b715b121475012 100644 --- a/PermissionController/res/values-sq/strings.xml +++ b/PermissionController/res/values-sq/strings.xml @@ -34,6 +34,7 @@ "Më shumë info." "Lejoji të gjitha" "Lejoji gjithmonë të gjitha" + "Lejo qasjen e kufizuar" "Zgjidh fotografi dhe video" "Zgjidh më shumë" "Mos zgjidh të tjera" @@ -60,6 +61,7 @@ "Aplikacionet" "Lejet e aplikacionit" "Aplikacionet e papërdorura" + "Modifiko fotografitë e zgjedhura për këtë aplikacion" "Nuk ka aplikacione të papërdorura" "0 aplikacione të papërdorura" "Vendimet e fundit për lejet" @@ -455,48 +457,75 @@ "Shfaq zbulimin e aktivizimit të asistentit" "Shfaq ikonën në shiritin e statusit kur përdoret mikrofoni për të aktivizuar asistentin me zë" "Të lejohet që <b>%1$s</b> të ketë qasje te fotografitë dhe media në pajisjen tënde?" + "Të lejohet që <b>%1$s</b> të ketë qasje te fotografitë dhe media në <b>%2$s</b>?" "Të lejohet që <b>%1$s</b> të ketë qasje te kontaktet e tua?" + "Të lejohet që <b>%1$s</b> të ketë qasje te kontaktet e tua në <b>%2$s</b>?" "Të lejohet që <b>%1$s</b> të ketë qasje te vendndodhja e kësaj pajisjeje?" + "Të lejohet që <b>%1$s</b> të ketë qasje te vendndodhja e <b>%2$s</b>?" "Aplikacioni do të ketë qasje te vendndodhja vetëm kur po e përdor aplikacionin" "Të lejohet që <b>%1$s</b> të ketë qasje te vendndodhja e kësaj pajisjeje?" + "Të lejohet që <b>%1$s</b> të ketë qasje te vendndodhja e <b>%2$s?" "Ky aplikacion mund të dëshirojë të ketë qasje në vendndodhjen tënde gjatë gjithë kohës, edhe kur nuk po e përdor aplikacionin. ""Lejoje te cilësimet""." "Do ta ndryshosh qasjen për vendndodhjen për <b>%1$s</b>?" + "Të ndryshohet qasje te vendndodhja për <b>%1$s</b> në <b>%2$s</b>?" "Ky aplikacion dëshiron të ketë qasje në vendndodhjen tënde gjatë gjithë kohës, edhe kur nuk po e përdor aplikacionin. ""Lejoje te cilësimet""." "Të lejohet <b>%1$s</b> të gjejë, të lidhet dhe të përcaktojë pozicionin relativ të pajisjeve në afërsi?" + "Të lejohet që <b>%1$s</b> të gjejë, të lidhet dhe të përcaktojë pozicionin e përafërt të pajisjeve në afërsi në <b>%2$s</b>?" "Të lejohet <b>%1$s</b> të gjejë, të lidhet dhe të përcaktojë pozicionin relativ të pajisjeve në afërsi? ""Lejoje te cilësimet." "Të ndryshohet qasja që ka <b>%1$s</b> te vendndodhja nga \"e përafërt\" në \"e saktë\"?" + "Të ndryshohet qasja e <b>%1$s</b> te vendndodhja në <b>%2$s</b> nga e përafërt në e saktë?" "Të lejohet që <b>%1$s</b> të ketë qasje te vendndodhja e përafërt e kësaj pajisjeje?" + "Të lejohet që <b>%1$s</b> të ketë qasje te vendndodhja e përafërt e <b>%2$s</b>?" "E saktë" "E përafërt" "Të lejohet që <b>%1$s</b> të ketë qasje te kalendari yt?" + "Të lejohet që <b>%1$s</b> të ketë qasje te kalendari yt në <b>%2$s</b>?" "Të lejohet që <b>%1$s</b> të dërgojë dhe të shikojë mesazhet SMS?" + "Të lejohet që <b>%1$s</b> të dërgojë dhe të shikojë mesazhet SMS në <b>%2$s</b>?" "Të lejohet që <b>%1$s</b> të ketë qasje te fotografitë, media dhe skedarët në pajisjen tënde?" + "Të lejohet që <b>%1$s</b> të ketë qasje te fotografitë, media dhe skedarët në <b>%2$s</b>?" "Të lejohet që <b>%1$s</b> të ketë qasje te <b>fotografitë, videot, muzika dhe audioja</b> në këtë pajisje?" "Të lejohet që <b&gt%1$s</b> të ketë qasje te <b>fotografitë, videot, muzika, audioja e të tjera</b> në pajisje?" "Të lejohet që <b>%1$s</b> të ketë qasje te muzika dhe te audioja në këtë pajisje?" + "Të lejohet që <b>%1$s</b> të ketë qasje te muzika dhe audioja në <b>%2$s</b>?" "Të lejohet që <b>%1$s</b> të ketë qasje te fotografitë dhe videot në këtë pajisje?" + "Të lejohet që <b>%1$s</b> të ketë qasje te fotografitë dhe videot në <b>%2$s</b>?" "Të lejohet që <b>%1$s</b> të qaset te më shumë fotografi dhe video në pajisje?" + "Të lejohet që <b>%1$s</b> të ketë qasje në më shumë fotografi dhe video në <b>%2$s</b>?" "Të lejohet që <b>%1$s</b> të regjistrojë audio?" + "Të lejohet që <b>%1$s</b> të regjistrojë audio në <b>%2$s</b>?" "Aplikacioni do të mund të regjistrojë audion vetëm kur ti po e përdor aplikacionin" "Të lejohet që <b>%1$s</b> të regjistrojë audio?" + "Të lejohet që <b>%1$s</b> të regjistrojë audio në <b>%2$s</b>?" "Ky aplikacion mund të dëshirojë të regjistrojë audion gjatë gjithë kohës, edhe kur ti nuk po e përdor aplikacionin. ""Lejoje te cilësimet""." "Të ndryshohet qasja për mikrofonin për <b>%1$s</b>?" + "Të ndryshohet qasja te mikrofoni për <b>%1$s</b> në <b>%2$s</b>?" "Ky aplikacion dëshiron të regjistrojë audion gjatë gjithë kohës, edhe kur ti nuk po e përdor aplikacionin. ""Lejoje te cilësimet""." "Të lejohet që <b>%1$s</b> të ketë qasje në aktivitetin tënd fizik?" + "Të lejohet që <b>%1$s</b> të ketë qasje tek aktiviteti yt fizik në <b>%2$s</b>?" "Të lejohet që <b>%1$s</b> të nxjerrë fotografi dhe të regjistrojë video?" + "Të lejohet që <b>%1$s</b> të nxjerrë fotografi dhe të regjistrojë video në <b>%2$s</b>?" "Aplikacioni do të mund të nxjerrë fotografi dhe të regjistrojë video vetëm kur ti po e përdor aplikacionin" "Të lejohet që <b>%1$s</b> të nxjerrë fotografi dhe të regjistrojë video?" + "Të lejohet që <b>%1$s</b> të nxjerrë fotografi dhe të regjistrojë video në <b>%2$s</b>?" "Ky aplikacion mund të dëshirojë të nxjerrë fotografi dhe video gjatë gjithë kohës, edhe kur ti nuk po e përdor aplikacionin. ""Lejoje te cilësimet""." "Të ndryshohet qasja për kamerën për <b>%1$s</b>?" + "Të ndryshohet qasja te kamera për <b>%1$s</b> në <b>%2$s</b>?" "Ky aplikacion dëshiron të nxjerrë fotografi dhe video gjatë gjithë kohës, edhe kur ti nuk po e përdor aplikacionin. ""Lejoje te cilësimet""." "Të lejohet <b>%1$s</b> të ketë qasje në evidencat e tua të telefonatave?" + "Të lejohet që <b>%1$s</b> të ketë qasje tek evidencat e telefonatave të telefonit në <b>%2$s</b>?" "Të lejohet që <b>%1$s</b> të kryejë dhe të menaxhojë telefonata?" + "Të lejohet që <b>%1$s</b> të bëjë dhe të menaxhojë telefonatat në <b>%2$s</b>?" "Të lejohet që <b>%1$s</b> të ketë qasje te të dhënat e sensorëve rreth shenjave të tua jetësore?" + "Të lejohet që <b>%1$s</b> të ketë qasje te të dhënat e sensorëve rreth shenjave jetësore në <b>%2$s</b>?" "Aplikacioni kërkon qasje te të dhënat e sensorëve rreth shenjave të tua jetësore gjithmonë, edhe kur nuk e përdor aplikacionin. Për ta bërë këtë ndryshim, ""shko te cilësimet." "Të lejohet që <b>%1$s</b> të ketë qasje te të dhënat e sensorëve rreth shenjave të tua jetësore?" + "Të lejohet që <b>%1$s</b> të ketë qasje te të dhënat e sensorëve rreth shenjave jetësore në <b>%2$s</b>?" "Për të lejuar këtë aplikacion që të ketë qasje te të dhënat e sensorit të trupit gjithmonë, edhe kur nuk e përdor aplikacionin, ""shko te cilësimet." "Të lejohet akoma që <b>%1$s</b> të ketë qasje te të dhënat e sensorit të trupit kur aplikacioni përdoret?" + "Të lejohet akoma që <b>%1$s</b> të ketë qasje te të dhënat e sensorëve të trupit në <b>%2$s</b> kur aplikacioni është në përdorim?" "Të lejohet që <b>%1$s</b> të të dërgojë njoftime?" + "Të lejohet që <b>%1$s</b> të të dërgojë njoftime në <b>%2$s</b>?" "Lejet e kontrolluara" "%1$s ka qasje te vendndodhja" "Organizata jote lejon që %1$s të ketë qasje te vendndodhja jote" diff --git a/PermissionController/res/values-sr/strings.xml b/PermissionController/res/values-sr/strings.xml index 0fd94a0695002534766b74174eaea4e17c981a86..847f95fbbe671f64c45d1de4fed1345abe8bf4be 100644 --- a/PermissionController/res/values-sr/strings.xml +++ b/PermissionController/res/values-sr/strings.xml @@ -34,6 +34,7 @@ "Више информација" "Дозволи све" "Увек дозволи све" + "Дозволи ограничен приступ" "Изаберите слике и видео снимке" "Изаберите још" "Ништа више" @@ -60,6 +61,7 @@ "Апликације" "Дозволе за апликације" "Апликације које се не користе" + "Мењај изабране слике за ову апликацију" "Нема аплик. које се не користе" "0 апликац. које се не користе" "Недавне одлуке о дозволама" @@ -93,7 +95,7 @@ "%1$s пружа услуге локације за овај уређај. Приступ локацији можете да измените у подешавањима локације." "Ако одбијете ову дозволу, основне функције уређаја можда неће више исправно радити." "Ова апликација је дизајнирана за старију верзију Android-а. Ако овој апликацији одбијете приступ за слике и видео снимке, повлачи се и приступ музици и другим аудио снимцима." - "Ова апликација је дизајнирана за старију верзију Android-а. Ако овој апликацији одбијете приступ за музику и друге аудио снимке, повлачи се и приступ сликама и видео снимцима." + "Ова апликација је дизајнирана за старију верзију Android-а. Ако овој апликацији одбијете приступ за музику и друге аудио снимке, повлачи се и приступ сликама и видеима." "Ако одбијете ову дозволу, неке функције уређаја којима управља ова апликација можда неће више исправно радити." "Примењује се у складу са смерницама" "Приступ у позадини је онемогућен смерницама" @@ -240,7 +242,7 @@ "Апликације са овом дозволом могу да шаљу и прегледају SMS-ове" "Апликације са овом дозволом могу да приступају сликама, медијском садржају и фајловима на уређају" "Апликације са овом дозволом могу да приступају музици и другим аудио фајловима на овом уређају" - "Апликације са овом дозволом могу да приступају сликама и видео снимцима на овом уређају" + "Апликације са овом дозволом могу да приступају сликама и видеима на овом уређају" "Последњи приступ: %1$s" "Тренутно одбијено/последњи приступ: %1$s" "Без приступа" @@ -455,48 +457,75 @@ "Приказуј откривање активирања помоћника" "Приказује икону на статусној траци када се микрофон користи за активирање гласовног помоћника" "Желите ли да дозволите да <b>%1$s</b> приступа сликама и медијима на уређају?" + "Дозвољавате да <b>%1$s</b> приступа сликама и медијима на уређају <b>%2$s</b>?" "Желите да дозволите да <b>%1$s</b> приступа контактима?" + "Дозвољавате да <b>%1$s</b> приступа контактима на уређају <b>%2$s</b>?" "Желите да дозволите да <b>%1$s</b> приступа локацији овог уређаја?" + "Дозвољавате да <b>%1$s</b> приступа локацији уређаја <b>%2$s</b>?" "Апликација ће имати приступ локацији само док користите апликацију" "Желите да дозволите да <b>%1$s</b> приступа локацији овог уређаја?" + "Дозвољавате да <b>%1$s</b> приступа локацији уређаја <b>%2$s?" "Ова апликација можда жели да приступа локацији све време, чак и када не користите апликацију. ""Дозволите у подешавањима." "Желите ли да промените приступ локацији за апликацију <b>%1$s</b>?" + "Мењате приступ локацији за апликацију <b>%1$s</b> на уређају <b>%2$s</b>?" "Ова апликација жели да приступа локацији све време, чак и када не користите апликацију. ""Дозволите у подешавањима." "Дозвољавате да <b>%1$s</b> проналази уређаје у близини, повезује се с њима и одређује им релативан положај?" + "<b>%1$s</b> може да налази уређаје у близини, повезује се са њима и утврђује релативни положај на: <b>%2$s</b>?" "Дозвољавате да <b>%1$s</b> проналази уређаје у близини, повезује се с њима и одређује им релативан положај? ""Дозволите у подешавањима." "Желите ли да промените приступ апликације <b>%1$s</b> из приближне локације на прецизну?" + "Мењате приступ апликације <b>%1$s</b> локацији уређаја <b>%2$s</b> из приближне у прецизну локацију?" "Желите ли да омогућите да <b>%1$s</b> приступа приближној локацији овог уређаја?" + "Дозвољавате да <b>%1$s</b> приступа приближној локацији уређаја <b>%2$s</b>?" "Прецизна" "Приближна" "Желите да дозволите да <b>%1$s</b> приступа календару?" + "Дозвољавате да <b>%1$s</b> приступа календару на уређају <b>%2$s</b>?" "Желите да дозволите да <b>%1$s</b> шаље и прегледа SMS-ове?" + "Дозвољавате да <b>%1$s</b> шаље и прегледа SMS поруке на уређају <b>%2$s</b>?" "Желите да дозволите да <b>%1$s</b> приступа сликама, медијским и другим фајловима на уређају?" + "Дозвољавате да <b>%1$s</b> приступа сликама, медијима и фајловима на уређају <b>%2$s</b>?" "Приступ <b>сликама, видеу, музици и звуку</b> на уређају за <b>%1$s</b>?" "Приступ сликама, видеу, музици, звуку и другом на уређају за <b>%1$s</b>?" "Дозвољавате ли приступ музици и звуку на овом уређају за <b>%1$s</b>?" + "Дозвољавате да <b>%1$s</b> приступа музици и аудио садржају на уређају <b>%2$s</b>?" "Дозвољавате ли приступ сликама и видеу на овом уређају за <b>%1$s</b>?" - "Дозвољавате ли да <b>%1$s</b> приступа и другим сликама и видео снимцима на овом уређају?" + "Дозвољавате да <b>%1$s</b> приступа сликама и видеима на уређају <b>%2$s</b>?" + "Дозвољавате ли да <b>%1$s</b> приступа и другим сликама и видеима на овом уређају?" + "Дозвољавате да <b>%1$s</b> приступа и другим сликама и видеима на уређају <b>%2$s</b>?" "Желите да дозволите да <b>%1$s</b> снима звук?" + "Дозвољавате да <b>%1$s</b> снима аудио садржај на уређају <b>%2$s</b>?" "Апликација ће моћи да снима звук само док користите апликацију" "Желите да дозволите да <b>%1$s</b> снима звук?" + "Дозвољавате да <b>%1$s</b> снима аудио садржај на уређају <b>%2$s</b>?" "Ова апликација можда жели да снима звук све време, чак и када не користите апликацију. ""Дозволите у подешавањима." "Желите да промените приступ микрофону за апликацију <b>%1$s</b>?" + "Мењате приступ микрофону за апликацију <b>%1$s</b> на уређају <b>%2$s</b>?" "Ова апликација жели да снима звук све време, чак и када не користите апликацију. ""Дозволите у подешавањима." "Желите ли да дозволите да <b>%1$s</b> приступа физичким активностима?" + "Дозвољавате да <b>%1$s</b> приступа подацима о физичким активностима на уређају <b>%2$s</b>?" "Желите да дозволите да <b>%1$s</b> снима слике и видео снимке?" + "Дозволићете да апликација <b>%1$s</b> снима слике и видео снимке на уређају <b>%2$s</b>?" "Апликација ће моћи да снима слике и видео снимке само док користите апликацију" "Желите да дозволите да <b>%1$s</b> снима слике и видео снимке?" + "Дозвољавате да <b>%1$s</b> снима слике и видео снимке на уређају <b>%2$s</b>?" "Ова апликација можда жели да снима слике и видео снимке све време, чак и када не користите апликацију. ""Дозволите у подешавањима." "Желите да промените приступ камери за апликацију <b>%1$s</b>?" + "Мењате приступ камери за апликацију <b>%1$s</b> на уређају <b>%2$s</b>?" "Ова апликација жели да снима слике и видео снимке све време, чак и када не користите апликацију. ""Дозволите у подешавањима." "Желите да дозволите да <b>%1$s</b> приступа евиденцијама позива на телефону?" + "Дозвољавате да <b>%1$s</b> приступа евиденцијама телефонских позива на уређају <b>%2$s</b>?" "Желите да дозволите да <b>%1$s</b> упућује позиве и управља њима?" + "Дозвољавате да <b>%1$s</b> упућује телефонске позиве и управља њима на уређају <b>%2$s</b>?" "Желите да дозволите да <b>%1$s</b> приступа подацима сензора о виталним функцијама?" + "Дозвољавате да <b>%1$s</b> приступа подацима сензора о виталним знацима на уређају <b>%2$s</b>?" "Ова апликација жели да све време приступа подацима сензора о виталним функцијама, чак и када не користите апликацију. Да бисте обавили ову измену, ""идите у подешавања." "Желите да омогућите да <b>%1$s</b> приступа подацима сензора о виталним функцијама?" + "Дозвољавате да <b>%1$s</b> приступа подацима сензора о виталним знацима на уређају <b>%2$s</b>?" "Да бисте дозволили овој апликацији да све време приступа подацима сензора за тело, чак и када не користите апликацију, ""идите у подешавања." "Желите да <b>%1$s</b> и даље приступа подацима сензора за тело док се апликација користи?" + "Дозвољавате да <b>%1$s</b> током коришћења и даље приступа подацима сензора за тело на: <b>%2$s</b>?" "Желите да дозволите да вам <b>%1$s</b> шаље обавештења?" + "Дозвољавате да вам <b>%1$s</b> шаље обавештења на уређају <b>%2$s</b>?" "Контролисане дозволе" "%1$s има приступ локацији" "Организација дозвољава да %1$s приступа локацији" @@ -558,18 +587,18 @@ "Ни приступ другим фајловима неће бити дозвољен" "Биће дозвољен приступ и другим фајловима" "Ни приступ другим фајловима неће бити дозвољен" - "Биће дозвољен приступ и сликама и видео снимцима" - "Ни приступ сликама и видео снимцима неће бити дозвољен" + "Биће дозвољен приступ и сликама и видеима" + "Ни приступ сликама и видеима неће бити дозвољен" "Биће дозвољен приступ и музици и аудио фајловима" "Ни приступ музици и аудио фајловима неће бити дозвољен" - "Ова апликација не подржава најновију верзију Android-а. Ако ова апликација може да приступа музици и аудио фајловима, биће јој дозвољено и да приступа сликама, видео снимцима и другим фајловима." - "Ова апликација не подржава најновију верзију Android-а. Ако ова апликација не може да приступа музици и аудио фајловима, неће јој бити дозвољено ни да приступа сликама, видео снимцима и другим фајловима." - "Ова апликација не подржава најновију верзију Android-а. Ако ова апликација може да приступа сликама и видео снимцима, биће јој дозвољено и да приступа музици, аудио и другим фајловима." - "Ова апликација не подржава најновију верзију Android-а. Ако ова апликација не може да приступа сликама и видео снимцима, неће јој бити дозвољено ни да приступа музици, аудио и другим фајловима." - "Ова апликација не подржава најновију верзију Android-а. Ако ова апликација може да приступа музици и аудио фајловима, биће јој дозвољено и да приступа сликама и видео снимцима." - "Ова апликација не подржава најновију верзију Android-а. Ако ова апликација не може да приступа музици и аудио фајловима, неће јој бити дозвољено ни да приступа сликама и видео снимцима." - "Ова апликација не подржава најновију верзију Android-а. Ако ова апликација може да приступа сликама и видео снимцима, биће јој дозвољено и да приступа музици и аудио фајловима." - "Ова апликација не подржава најновију верзију Android-а. Ако ова апликација не може да приступа музици и аудио фајловима, неће јој бити дозвољено ни да приступа сликама и видео снимцима." + "Ова апликација не подржава најновију верзију Android-а. Ако ова апликација може да приступа музици и аудио фајловима, биће јој дозвољено и да приступа сликама, видеима и другим фајловима." + "Ова апликација не подржава најновију верзију Android-а. Ако ова апликација не може да приступа музици и аудио фајловима, неће јој бити дозвољено ни да приступа сликама, видеима и другим фајловима." + "Ова апликација не подржава најновију верзију Android-а. Ако ова апликација може да приступа сликама и видеима, биће јој дозвољено и да приступа музици, аудио и другим фајловима." + "Ова апликација не подржава најновију верзију Android-а. Ако ова апликација не може да приступа сликама и видеима, неће јој бити дозвољено ни да приступа музици, аудио и другим фајловима." + "Ова апликација не подржава најновију верзију Android-а. Ако ова апликација може да приступа музици и аудио фајловима, биће јој дозвољено и да приступа сликама и видеима." + "Ова апликација не подржава најновију верзију Android-а. Ако ова апликација не може да приступа музици и аудио фајловима, неће јој бити дозвољено ни да приступа сликама и видеима." + "Ова апликација не подржава најновију верзију Android-а. Ако ова апликација може да приступа сликама и видеима, биће јој дозвољено и да приступа музици и аудио фајловима." + "Ова апликација не подржава најновију верзију Android-а. Ако ова апликација не може да приступа музици и аудио фајловима, неће јој бити дозвољено ни да приступа сликама и видеима." "Прегледајте апликацију са приступом локацији у позадини" "%s увек може да приступа вашој локацији, чак и кад је апликација затворена" "Прегледајте апликацију са приступом локацији у позадини" diff --git a/PermissionController/res/values-sv/strings.xml b/PermissionController/res/values-sv/strings.xml index 7d53baf1add1ad18de94297ba204997d340e9baa..350d6528c94f725945b66d829d25ff90555bcfa5 100644 --- a/PermissionController/res/values-sv/strings.xml +++ b/PermissionController/res/values-sv/strings.xml @@ -34,6 +34,7 @@ "Mer info" "Tillåt alla" "Tillåt alltid alla" + "Tillåt begränsad åtkomst" "Välj foton och videor" "Välj fler" "Välj inte fler" @@ -60,6 +61,7 @@ "Appar" "Appbehörigheter" "Appar som inte används" + "Redigera urvalet av foton för appen" "Inga appar som inte används" "0 appar som inte används" "Senaste behörighetsbesluten" @@ -455,48 +457,75 @@ "Visa när enheten lyssnar efter ord som aktiverar assistenten" "Visa en ikon i statusfältet när mikrofonen används för att aktivera röstassistenten" "Vill du ge <b>%1$s</b> åtkomstbehörighet till foton och media på enheten?" + "Vill du ge <b>%1$s</b> åtkomst till foton och media på <b>%2$s</b>?" "Vill du ge <b>%1$s</b> åtkomst till dina kontakter?" + "Vill du ge <b>%1$s</b> åtkomst till kontakter på <b>%2$s</b>?" "Vill du ge <b>%1$s</b> åtkomst till enhetens plats?" + "Vill du ge <b>%1$s</b> åtkomst till platsen för <b>%2$s’s</b>?" "Appen får endast åtkomst till din plats när du använder den" "Vill du ge <b>%1$s</b> åtkomst till enhetens plats?" + "Vill du ge <b>%1$s</b> åtkomst till platsen för <b>%2$s?" "Appen kanske vill få åtkomst till din plats hela tiden, även när du inte använder den. ""Tillåt i inställningarna." "Vill du ändra platsåtkomsten för <b>%1$s</b>?" + "Vill du ändra platsåtkomsten för <b>%1$s</b> på <b>%2$s</b>?" "Appen vill få åtkomst till din plats hela tiden, även när du inte använder den. ""Tillåt i inställningarna." "Vill du tillåta att <b>%1$s</b> kan hitta, ansluta till och fastställa relativ position för enheter i närheten?" + "Tillåt <b>%1$s</b> att hitta, ansluta till och avgöra relativ plats för enheter i närheten på <b>%2$s</b>?" "Vill du tillåta att <b>%1$s</b> kan hitta, ansluta till och fastställa relativ position för enheter i närheten? ""Tillåt i inställningarna." "Vill du ändra platsåtkomsten för <b>%1$s</b> från ungefärlig till exakt?" + "Vill du ändra <b>%1$s</b>s platsåtkomst på <b>%2$s</b> från ungefärlig till exakt?" "Vill du ge <b>%1$s</b> åtkomst till enhetens ungefärliga plats?" + "Vill du ge <b>%1$s</b> åtkomst till den ungefärliga platsen för <b>%2$s</b>?" "Exakt" "Ungefärlig" "Vill du ge <b>%1$s</b> åtkomst till din kalender?" + "Vill du ge <b>%1$s</b> åtkomst till kalendern på <b>%2$s</b>?" "Vill du ge <b>%1$s</b> behörighet att skicka och visa sms?" + "Vill du ge <b>%1$s</b> behörighet att skicka och visa sms på <b>%2$s</b>?" "Vill du ge <b>%1$s</b> åtkomst till foton, mediefiler och andra filer på enheten?" + "Vill du ge <b>%1$s</b> åtkomst till foton, media och filer på <b>%2$s</b>?" "Vill du ge <b>%1$s</b> åtkomst till <b>foton, videor, musik och ljud</b> på enheten?" "Vill du ge <b>%1$s</b> åtkomst till <b>foton, videor, musik, ljud och andra filer</b> på enheten?" "Vill du ge <b>%1$s</b> åtkomst till musik och ljud på enheten?" + "Vill du ge <b>%1$s</b> åtkomst till musik och ljud på <b>%2$s</b>?" "Vill du ge <b>%1$s</b> åtkomst till foton och videor på enheten?" + "Vill du ge <b>%1$s</b> åtkomst till foton och videor på <b>%2$s</b>?" "Vill du ge <b>%1$s</b> åtkomst till fler foton och videor på enheten?" + "Vill du ge <b>%1$s</b> åtkomst till fler foton och videor på <b>%2$s</b>?" "Vill du ge <b>%1$s</b> behörighet att spela in ljud?" + "Vill du ge <b>%1$s</b> behörighet att spela in ljud på <b>%2$s</b>?" "Appen kan bara spela in ljud medan du använder den" "Vill du ge <b>%1$s</b> behörighet att spela in ljud?" + "Vill du ge <b>%1$s</b> behörighet att spela in ljud på <b>%2$s</b>?" "Appen kanske vill spela in ljud hela tiden, även när du inte använder appen. ""Tillåt i inställningarna." "Vill du ändra mikrofonåtkomsten för <b>%1$s</b>?" + "Vill du ändra mikrofonåtkomsten för <b>%1$s</b> på <b>%2$s</b>?" "Appen vill ha behörighet att spela in ljud hela tiden, även när du inte använder appen. ""Tillåt i inställningarna." "Vill du ge <b>%1$s</b> åtkomst till data om fysisk aktivitet?" + "Vill du ge <b>%1$s</b> åtkomst till din fysiska aktivitet på <b>%2$s</b>?" "Vill du ge <b>%1$s</b> behörighet att ta bilder och spela in video?" + "Vill du ge <b>%1$s</b> behörighet att ta bilder och spela in video på <b>%2$s</b>?" "Appen kan bara ta bilder och spela in video medan du använder den" "Vill du ge <b>%1$s</b> behörighet att ta bilder och spela in video?" + "Vill du ge <b>%1$s</b> behörighet att ta bilder och spela in video på <b>%2$s</b>?" "Appen kanske vill ta bilder och spela in videor hela tiden, även när du inte använder appen. ""Tillåt i inställningarna." "Vill du ändra kameraåtkomsten för <b>%1$s</b>?" + "Vill du ändra kameraåtkomsten för <b>%1$s</b> på <b>%2$s</b>?" "Appen vill ha behörighet att ta bilder och spela in videor hela tiden, även när du inte använder appen. ""Tillåt i inställningarna." "Vill du ge <b>%1$s</b> åtkomst till samtalsloggarna?" + "Vill du ge <b>%1$s</b> åtkomst till dina samtalsloggar på <b>%2$s</b>?" "Vill du ge <b>%1$s</b> behörighet att ringa och hantera telefonsamtal?" + "Vill du ge <b>%1$s</b> behörighet att ringa och hantera telefonsamtal på<b>%2$s</b>?" "Vill du ge <b>%1$s</b> åtkomst till sensordata om vitalparametrar?" + "Vill du ge <b>%1$s</b> åtkomst till sensordata om dina vitalparametrar på <b>%2$s</b>?" "Appen vill ha åtkomst till sensordata om vitalparametrar hela tiden, även när du inte använder den. ""Öppna inställningarna"" om du vill tillåta detta." "Vill du ge <b>%1$s</b> åtkomstbehörighet till sensordata om vitalparametrar?" + "Vill du ge <b>%1$s</b> åtkomst till sensordata om dina vitalparametrar på <b>%2$s</b>?" "Öppna inställningarna"" om du vill ge appen åtkomst till data från kroppssensorer hela tiden, även när du inte använder appen." "Ska <b>%1$s</b> ha åtkomst till data från kroppssensorer medan appen används även i fortsättningen?" + "Vill du fortsätta ge <b>%1$s</b> åtkomst till kroppssensorsdata på <b>%2$s</b> medan appen används?" "Vill du ge <b>%1$s</b> behörighet att skicka aviseringar?" + "Vill du ge <b>%1$s</b> behörighet att skicka aviseringar på <b>%2$s</b>?" "Styrda behörigheter" "%1$s har platsåtkomst" "Din organisation tillåter att %1$s får åtkomst till din plats" diff --git a/PermissionController/res/values-sw/strings.xml b/PermissionController/res/values-sw/strings.xml index 83a4ebe03c00fa510424e47123e6419f4001a74e..689ed6f9e41fa206198ccc97268a547cf7ed1f6e 100644 --- a/PermissionController/res/values-sw/strings.xml +++ b/PermissionController/res/values-sw/strings.xml @@ -34,6 +34,7 @@ "Maelezo zaidi" "Ruhusu zote" "Ruhusu zote kila wakati" + "Ruhusu kufikia baadhi ya vipengele" "Chagua picha na video" "Chagua zaidi" "Usichague zaidi" @@ -60,6 +61,7 @@ "Programu" "Ruhusa za programu" "Programu zisizotumika" + "Badilisha picha ulizochagua za programu hii" "Hakuna programu zisizotumika" "Hakuna programu zisizotumika" "Uamuzi wa ruhusa wa hivi majuzi" @@ -455,48 +457,75 @@ "Onyesha utambuzi wa kuwashwa/kuzimwa kwa mratibu" "Onyesha aikoni kwenye sehemu ya kuonyesha hali wakati maikrofoni inatumika kuwasha kipengele cha maagizo ya sauti" "Ungependa kuruhusu <b>%1$s</b> ifikie picha na maudhui kwenye kifaa chako?" + "Ungependa kuiruhusu <b>%1$s</b> ifikie picha na maudhui kwenye <b>%2$s</b> yako?" "Ungependa kuiruhusu <b>%1$s</b> ifikie anwani zako?" + "Ungependa kuiruhusu <b>%1$s</b> ifikie anwani zako kwenye <b>%2$s</b> yako?" "Ungependa kuiruhusu <b>%1$s</b> ifikie mahali kilipo kifaa hiki?" + "Ungependa kuiruhusu <b>%1$s</b> ifikie maelezo ya mahali ya <b>%2$s</b> yako?" "Programu itafikia data ya mahali ulipo unapoitumia tu" "Ungependa kuiruhusu <b>%1$s</b> ifikie mahali kilipo kifaa hiki?" + "Ungependa kuiruhusu <b>%1$s</b> ifikie maelezo ya mahali ya <b>%2$s yako?" "Huenda programu hii ikataka kufikia maelezo ya mahali ulipo kila wakati, hata wakati huitumii.""Iruhusu katika mipangilio." "Ungependa kubadilisha ruhusa za <b>%1$s</b> za kufikia maelezo ya mahali?" + "Ungependa kubadilisha idhini ya kufikia maelezo ya mahali ya <b>%1$s</b> kwenye <b>%2$s</b> yako?" "Programu hii inataka kufikia maelezo ya mahali ulipo kila wakati, hata wakati huitumii.""Iruhusu katika mipangilio." "Ungependa kuruhusu <b>%1$s</b> itafute, iunganishe kwenye na ibaini mahali vilipo vifaa vilivyo karibu?" + "Ungependa kuiruhusu <b>%1$s</b> itafute, iunganishe na kubaini nafasi ya makadirio ya vifaa vilivyo karibu kwenye <b>%2$s</b> yako?" "Ungependa kuruhusu <b>%1$s</b> itafute, iunganishe kwenye na ibaini mahali vilipo vifaa vilivyo karibu? ""Ruhusu katika mipangilio." "Ungependa kubadilisha ufikiaji wa maelezo ya mahali kwenye <b>%1$s</b> kutoka eneo lililokadiriwa utumie eneo mahususi?" + "Ungependa kubadilisha ufikiaji wa maelezo ya mahali ya <b>%1$s</b> kwenye <b>%2$s</b> yako kutoka makadirio kuwa mahususi?" "Ungependa kuruhusu <b>%1$s</b> ifikie mahali palipokadiriwa kilipo kifaa hiki?" + "Ungependa kuiruhusu <b>%1$s</b> ifikie maelezo ya mahali pa kukadiria pa <b>%2$s</b> yako?" "Mahususi" "Palipokadiriwa" "Ungependa kuiruhusu <b>%1$s</b> ifikie kalenda yako?" + "Ungependa kuiruhusu <b>%1$s</b> ifikie kalenda yako kwenye <b>%2$s</b> yako?" "Ungependa kuiruhusu <b>%1$s</b> itume na ione ujumbe wa SMS?" + "Ungependa kuiruhusu <b>%1$s</b> itume na kuona ujumbe wa SMS kwenye <b>%2$s</b> yako?" "Ungependa <b>%1$s</b> ifikie picha, maudhui na faili kwenye kifaa chako?" + "Ungependa kuiruhusu <b>%1$s</b> ifikie picha, maudhui na faili kwenye <b>%2$s</b> yako?" "Ungependa kuruhusu <b>%1$s</b> ifikie <b>picha, video, muziki na sauti</b> kwenye kifaa hiki?" "Ungependa kuruhusu <b>%1$s</b> ifikie <b>picha, video, muziki, sauti na faili zingine</b> kwenye kifaa hiki?" "Ungependa kuruhusu <b>%1$s</b> ifikie muziki na sauti kwenye kifaa hiki?" + "Ungependa kuiruhusu <b>%1$s</b> ifikie muziki na sauti kwenye <b>%2$s</b> yako?" "Ungependa kuruhusu <b>%1$s</b> ifikie picha na video kwenye kifaa hiki?" + "Ungependa kuiruhusu <b>%1$s</b> ifikie picha na video kwenye <b>%2$s</b> yako?" "Ungependa kuruhusu <b>%1$s</b> ifikie picha na video zaidi kwenye kifaa hiki?" + "Ungependa kuiruhusu <b>%1$s</b> ifikie picha na video zaidi kwenye <b>%2$s</b> yako?" "Ungependa kuruhusu <b>%1$s</b> kurekodi sauti?" + "Ungependa kuiruhusu <b>%1$s</b> irekodi sauti kwenye <b>%2$s</b> yako?" "Programu itaweza kurekodi sauti unapoitumia tu" "Ungependa kuiruhusu <b>%1$s</b> irekodi sauti?" + "Ungependa kuiruhusu <b>%1$s</b> irekodi sauti kwenye <b>%2$s</b> yako?" "Huenda programu hii ikataka kurekodi sauti kila wakati, hata wakati huitumii.""Ruhusu katika mipangilio." "Ungependa kubadilisha ruhusa za <b>%1$s</b> za kufikia maikrofoni?" + "Ungependa kubadilisha idhini ya maikrofoni ya <b>%1$s</b> kwenye <b>%2$s</b> yako?" "Programu hii inataka kurekodi sauti kila wakati, hata wakati huitumii.""Ruhusu katika mipangilio." "Ungependa kuruhusu <b>%1$s</b> ifikie shughuli zako za kimwili?" + "Ungependa kuiruhusu <b>%1$s</b> ifikie shughuli yako ya mazoezi ya mwili kwenye <b>%2$s</b> yako?" "Ungependa kuruhusu <b>%1$s</b> kupiga picha na kurekodi video?" + "Ungependa kuiruhusu <b>%1$s</b> ipige picha na kurekodi video kwenye <b>%2$s</b> yako?" "Programu itaweza kupiga picha na kurekodi video unapoitumia tu" "Ungependa kuiruhusu <b>%1$s</b> ipige picha na kurekodi video?" + "Ungependa kuiruhusu <b>%1$s</b> ipige picha na kurekodi video kwenye <b>%2$s</b> yako?" "Huenda programu hii ikataka kupiga picha na kurekodi video kila wakati, hata wakati huitumii.""Ruhusu katika mipangilio." "Ungependa kubadilisha ruhusa za <b>%1$s</b> za kufikia kamera?" + "Ungependa kubadilisha idhini ya kufikia ya kamera ya <b>%1$s</b> kwenye <b>%2$s</b> yako?" "Programu hii inataka kupiga picha na kurekodi video kila wakati, hata wakati huitumii.""Ruhusu katika mipangilio." "Ungependa kuiruhusu <b>%1$s</b> ifikie rekodi zako za nambari za simu?" + "Ungependa kuiruhusu <b>%1$s</b> ifikie rekodi za nambari za simu yako kwenye <b>%2$s</b> yako?" "Ungependa kuruhusu <b>%1$s</b> kupiga na kudhibiti simu?" + "Ungependa kuiruhusu <b>%1$s</b> ipige na kudhibiti simu kwenye <b>%2$s</b> yako?" "Ungependa kuiruhusu <b>%1$s</b> ifikie data ya vitambuzi kuhusu viashiria muhimu vya mwili wako?" + "Ungependa kuiruhusu <b>%1$s</b> ifikie data ya vitambuzi inayohusu viashiria muhimu vya mwili wako kwenye <b>%2$s</b> yako?" "Programu hii inataka kufikia data ya vitambuzi ya viashiria muhimu vya mwili wako kila wakati, hata wakati huitumii. Ili ufanye mabadiliko haya, ""nenda kwenye mipangilio." "Ungependa kuruhusu <b>%1$s</b> ifikie data ya vitambuzi inayohusu viashiria muhimu vya mwili wako?" + "Ungependa kuiruhusu <b>%1$s</b> ifikie data ya vitambuzi inayohusu viashiria muhimu vya mwili wako kwenye <b>%2$s</b> yako?" "Ili uruhusu programu hii ifikie data ya vitambuzi vya shughuli za mwili kila wakati, hata wakati hutumii programu, ""nenda kwenye mipangilio." "Ungependa kuendelea kuruhusu <b>%1$s</b> ifikie data ya vitambuzi vya shughuli za mwili wakati programu inatumika?" + "Ungependa kuendelea kuiruhusu <b>%1$s</b> ifikie data ya vitambuzi shughuli za mwili kwenye <b>%2$s</b> yako wakatii programu inatumika?" "Ungependa kuruhusu <b>%1$s</b> ikutumie arifa?" + "Ungependa kuiruhusu <b>%1$s</b> ikutumie arifa kwenye <b>%2$s</b> yako?" "Ruhusa zinazodhibitiwa" "%1$s ina idhini ya kufikia maelezo ya mahali kilipo kifaa" "Shirika lako limeruhusu %1$s kufikia maelezo ya mahali kilipo kifaa chako" diff --git a/PermissionController/res/values-ta/strings.xml b/PermissionController/res/values-ta/strings.xml index ad2bea8a3528dfa477c51a823352dacc7e32b9f4..70d71f31bce40a7ad00033e688f88d500d087739 100644 --- a/PermissionController/res/values-ta/strings.xml +++ b/PermissionController/res/values-ta/strings.xml @@ -34,6 +34,7 @@ "மேலும் தகவல்" "அனைத்தையும் அனுமதி" "எப்போதும் அனைத்தையும் அனுமதி" + "வரம்பிற்குட்பட்ட அணுகலை அனுமதி" "படங்களையும் வீடியோக்களையும் தேர்ந்தெடுங்கள்" "இன்னும் தேர்ந்தெடுங்கள்" "கூடுதலாகத் தேர்ந்தெடுக்க வேண்டாம்" @@ -60,6 +61,7 @@ "ஆப்ஸ்" "ஆப்ஸ் அனுமதிகள்" "பயன்படுத்தாத ஆப்ஸ்" + "இந்த ஆப்ஸுக்கெனத் தேர்ந்தெடுத்த படங்களை மாற்றுங்கள்" "பயன்படுத்தாத ஆப்ஸ் எதுவுமில்லை" "0 பயன்படுத்தாத ஆப்ஸ்" "அனுமதி தொடர்பான முடிவுகள்" @@ -455,48 +457,75 @@ "அசிஸ்டண்ட் இயக்கப்படுவதைக் கண்டறியும் ஐகானைக் காட்டு" "குரல் உதவியை இயக்க மைக்ரோஃபோனைப் பயன்படுத்தும்போது நிலைப் பட்டியில் ஐகானைக் காட்டு" "இந்தச் சாதனத்திலுள்ள படங்களையும் மீடியாவையும் அணுகுவதற்கு <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" + "உங்கள் <b>%2$s</b> சாதனத்திலுள்ள படங்களையும் மீடியாவையும் அணுக <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" "தொடர்புகளை அணுகுவதற்கு <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" + "உங்கள் <b>%2$s</b> சாதனத்தில் தொடர்புகளை அணுக <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" "இந்தச் சாதன இருப்பிடத்தை அணுகுவதற்கு <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" + "உங்கள் <b>%2$s</b> சாதனத்தின் இருப்பிடத்தை அணுக <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" "இந்த ஆப்ஸை நீங்கள் உபயோகிக்கும்போது மட்டுமே இருப்பிடத்தை அணுகும்" "இந்தச் சாதனத்தின் இருப்பிடத்தை அணுகுவதற்கு <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" + "உங்கள் <b>%2$s சாதனத்தின் இருப்பிடத்தை அணுக <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" "இந்த ஆப்ஸை நீங்கள் பயன்படுத்தாதபோதும்கூட உங்கள் இருப்பிடத்தை எந்நேரமும் அணுக இது விரும்பக்கூடும். ""அமைப்புகளில் அனுமதிக்கவும்""." "<b>%1$s</b> ஆப்ஸிற்கு இருப்பிட அணுகலை மாற்றவா?" + "உங்கள் <b>%2$s</b> சாதனத்தில் <b>%1$s</b> ஆப்ஸுக்கான இருப்பிட அணுகலை மாற்றவா?" "இந்த ஆப்ஸை நீங்கள் பயன்படுத்தாதபோதும்கூட உங்கள் இருப்பிடத்தை எந்நேரமும் அணுக இது விரும்பக்கூடும். ""அமைப்புகளில் அனுமதிக்கவும்""." "அருகிலுள்ள சாதனங்களைக் கண்டறியவும் அவற்றுடன் இணையவும் அவற்றின் தூரத்தைத் தீர்மானிக்கவும் <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" + "உங்கள் <b>%2$s</b> இன் அருகிலுள்ள சாதனங்களைக் கண்டறியவும், அவற்றுடன் இணையவும், அவற்றின் தூரத்தைத் தீர்மானிக்கவும் <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" "அருகிலுள்ள சாதனங்களைக் கண்டறியவும் அவற்றுடன் இணையவும் அவற்றின் தூரத்தைத் தீர்மானிக்கவும் <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா? ""அமைப்புகளில் அனுமதி." "<b>%1$s</b> ஆப்ஸின் இருப்பிட அணுகலைத் தோராயத்திலிருந்து துல்லியத்திற்கு மாற்றவா?" + "உங்கள் <b>%2$s</b> சாதனத்தில் <b>%1$s</b> ஆப்ஸின் இருப்பிட அணுகலைத் தோராயமானதிலிருந்து துல்லியமானதாக மாற்றவா?" "இந்தச் சாதனத்தின் தோராயமான இருப்பிடத்தை அணுக <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" + "உங்கள் <b>%2$s</b> சாதனத்தின் தோராயமான இருப்பிடத்தை அணுக <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" "துல்லியமானது" "தோராயமானது" "கேலெண்டரை அணுகுவதற்கு <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" + "உங்கள் <b>%2$s</b> சாதனத்தில் கேலெண்டரை அணுக <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" "மெசேஜ்களை அனுப்பவும், பார்க்கவும் <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" + "உங்கள் <b>%2$s</b> சாதனத்தில் மெசேஜ்களை அனுப்பவும் பார்க்கவும் <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" "உங்கள் சாதனத்திலுள்ள படங்கள், மீடியா, ஃபைல்கள் ஆகியவற்றை அணுகுவதற்கு <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" + "உங்கள் <b>%2$s</b> சாதனத்திலுள்ள படங்கள், மீடியா, ஃபைல்கள் ஆகியவற்றை அணுக <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" "சாதனத்திலுள்ள <b>படங்கள், வீடியோக்கள், இசை & ஆடியோவுக்கான</b> அணுகலை <b>%1$s</b> ஆப்ஸுக்கு வழங்கவா?" "சாதனத்திலுள்ள <b>படம், வீடியோ, இசை, ஆடியோ & பிற ஃபைல்களின்</b> அணுகலை <b>%1$s</b> ஆப்ஸுக்கு வழங்கவா?" "இந்தச் சாதனத்திலுள்ள இசை மற்றும் ஆடியோவுக்கான அணுகலை <b>%1$s</b> ஆப்ஸுக்கு வழங்கவா?" + "உங்கள் <b>%2$s</b> சாதனத்திலுள்ள இசையையும் ஆடியோவையும் அணுக <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" "இந்தச் சாதனத்திலுள்ள படங்கள் மற்றும் வீடியோக்களுக்கான அணுகலை <b>%1$s</b> ஆப்ஸுக்கு வழங்கவா?" + "உங்கள் <b>%2$s</b> சாதனத்திலுள்ள படங்களையும் வீடியோக்களையும் அணுக <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" "இந்தச் சாதனத்திலுள்ள கூடுதல் படங்கள் மற்றும் வீடியோக்களுக்கான அணுகலை <b>%1$s</b> ஆப்ஸுக்கு வழங்கவா?" + "உங்கள் <b>%2$s</b> சாதனத்திலுள்ள கூடுதல் படங்களையும் வீடியோக்களையும் அணுக <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" "ஆடியோ ரெக்கார்டு செய்ய <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" + "உங்கள் <b>%2$s</b> சாதனத்தில் ஆடியோ ரெக்கார்டு செய்ய <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" "இந்த ஆப்ஸை நீங்கள் உபயோகிக்கும்போது மட்டுமே ஆடியோ ரெக்கார்டு செய்யும்" "ஆடியோ ரெக்கார்டு செய்ய <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" + "உங்கள் <b>%2$s</b> சாதனத்தில் ஆடியோ ரெக்கார்டு செய்ய <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" "இந்த ஆப்ஸை உபயோகிக்காத போதும்கூட எந்நேரமும் ஆடியோ ரெக்கார்டு செய்ய அனுமதி கேட்கக்கூடும். ""அமைப்புகளில் அனுமதிக்கவும்." "<b>%1$s</b> ஆப்ஸுக்கான மைக்ரோஃபோன் அணுகலை மாற்றவா?" + "உங்கள் <b>%2$s</b> சாதனத்தில் <b>%1$s</b> ஆப்ஸுக்கான மைக்ரோஃபோன் அணுகலை மாற்றவா?" "இந்த ஆப்ஸை உபயோகிக்காத போதும்கூட எந்நேரமும் ஆடியோ ரெக்கார்டு செய்ய அனுமதி கேட்கிறது. ""அமைப்புகளில் அனுமதிக்கவும்." "உடல் செயல்பாட்டைக் கண்காணிக்க <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" + "உங்கள் <b>%2$s</b> சாதனத்தில் உடல் செயல்பாட்டை அணுக <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" "படங்கள் எடுக்கவும் வீடியோ ரெக்கார்டு செய்யவும் <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" + "உங்கள் <b>%2$s</b> இல் படங்கள் எடுக்கவும் வீடியோ ரெக்கார்டு செய்யவும் <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" "இந்த ஆப்ஸை நீங்கள் உபயோகிக்கும்போது மட்டுமே படங்கள் எடுக்கும், வீடியோ ரெக்கார்டு செய்யும்" "படங்கள் எடுக்கவும் வீடியோ ரெக்கார்டு செய்யவும் <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" + "உங்கள் <b>%2$s</b> இல் படங்கள் எடுக்கவும் வீடியோ ரெக்கார்டு செய்யவும் <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" "இந்த ஆப்ஸை உபயோகிக்காத போதும்கூட எந்நேரமும் படங்கள் எடுக்கவும் வீடியோ ரெக்கார்டு செய்யவும் அனுமதி கேட்கக்கூடும். ""அமைப்புகளில் அனுமதிக்கவும்." "<b>%1$s</b> ஆப்ஸுக்கான கேமரா அணுகலை மாற்றவா?" + "உங்கள் <b>%2$s</b> சாதனத்தில் <b>%1$s</b> ஆப்ஸுக்கான கேமரா அணுகலை மாற்றவா?" "இந்த ஆப்ஸை உபயோகிக்காத போதும்கூட எந்நேரமும் படங்கள் எடுக்கவும் வீடியோ ரெக்கார்டு செய்யவும் அனுமதி கேட்கிறது. ""அமைப்புகளில் அனுமதிக்கவும்." "உங்கள் மொபைல் அழைப்புப் பதிவுகளை அணுக, <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" + "உங்கள் <b>%2$s</b> சாதனத்தில் மொபைல் அழைப்புப் பதிவுகளை அணுக <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" "மொபைல் அழைப்புகள் செய்யவும், அவற்றை நிர்வகிக்கவும், <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" + "உங்கள் <b>%2$s</b> இல் மொபைல் அழைப்புகள் செய்யவும், அவற்றை நிர்வகிக்கவும் <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" "உங்கள் உடலியக்கக் குறிகள் பற்றிய சென்சார் தரவை அணுகுவதற்கு <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" + "உங்கள் <b>%2$s</b> இல் உடல் இயக்க அளவீடுகள் குறித்த சென்சார் தரவை அணுக <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" "ஆப்ஸைப் பயன்படுத்தாதபோதும் உங்கள் உடலியக்க அளவீடுகள் பற்றிய சென்சார் தரவை எப்போதும் அணுக இந்த ஆப்ஸ் விரும்புகிறது. இந்த மாற்றத்தைச் செய்ய ""அமைப்புகளுக்குச் செல்லுங்கள்." "உடலியக்க அளவீடுகள் பற்றிய சென்சார் தரவை அணுக <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" + "உங்கள் <b>%2$s</b> இல் உடல் இயக்க அளவீடுகள் குறித்த சென்சார் தரவை அணுக <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" "இந்த ஆப்ஸ் எல்லா நேரங்களிலும் உடல் சென்சார் தரவை அணுக (நீங்கள் ஆப்ஸைப் பயன்படுத்தாதபோதும்) ""அமைப்புகளுக்குச் செல்லுங்கள்." "ஆப்ஸ் பயன்பாட்டில் இருக்கும்போது உடல் சென்சார் தரவை அணுக <b>%1$s</b&gt ஆப்ஸுக்குத் தொடர்ந்து அனுமதியளிக்கவா?" + "<b>%1$s</b> ஆப்ஸ் உபயோகத்தில் இருக்கும்போது உங்கள் <b>%2$s</b> இல் உடல் சென்சார் குறித்த தரவை அணுக தொடர்ந்து அனுமதிக்கவா?" "உங்களுக்கு அறிவிப்புகளை அனுப்ப <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" + "உங்கள் <b>%2$s</b> சாதனத்திற்கு அறிவிப்புகளை அனுப்ப <b>%1$s</b> ஆப்ஸை அனுமதிக்கவா?" "கட்டுப்படுத்தப்பட்ட அனுமதிகள்" "%1$s ஆப்ஸுக்கு இருப்பிட அணுகல் உள்ளது" "உங்கள் இருப்பிடத்தை %1$s அணுக உங்கள் நிறுவனம் அனுமதிக்கிறது" diff --git a/PermissionController/res/values-te/strings.xml b/PermissionController/res/values-te/strings.xml index dd105ae853b296e5bfb478332784f3275e0854a1..22eae448de77bb84f7ac913c45e626ec0c5ca4d3 100644 --- a/PermissionController/res/values-te/strings.xml +++ b/PermissionController/res/values-te/strings.xml @@ -34,6 +34,7 @@ "మరింత సమాచారం" "అన్నీ అనుమతించండి" "ఎల్లవేళలా అన్నీ అనుమతించండి" + "పరిమిత యాక్సెస్‌ను అనుమతించండి" "ఫోటోలు, వీడియోలను ఎంచుకోండి" "మరిన్ని ఫోటోలను ఎంచుకోండి" "మరిన్ని ఫోటోలను ఎంచుకోవద్దు" @@ -60,6 +61,7 @@ "యాప్‌లు" "యాప్ అనుమతులు" "ఉపయోగించని యాప్‌లు" + "ఈ యాప్ కోసం ఎంచుకున్న ఫోటోలను ఎడిట్ చేయండి" "ఉపయోగించని యాప్‌లు లేవు" "0 ఉపయోగించని యాప్‌లు" "ఇటీవలి అనుమతి నిర్ణయాలు" @@ -455,48 +457,75 @@ "Assistant ట్రిగ్గర్ గుర్తింపును చూపించడం" "వాయిస్ అసిస్టెంట్‌ను యాక్టివేట్ చేయడానికి మైక్రోఫోన్‌ను ఉపయోగించినప్పుడు, స్టేటస్ బార్‌లో చిహ్నాన్ని చూపు" "మీ పరికరంలో ఫోటోలు, మీడియా ఫైళ్లను యాక్సెస్ చేయగలిగేలా <b>%1$s</b>ను అనుమతించాలా?" + "మీ <b>%2$s</b>‌లో ఫోటోలు, మీడియాను యాక్సెస్ చేయడానికి <b>%1$s</b>‌కు అనుమతినివ్వాలా?" "మీ కాంటాక్ట్‌లను యాక్సెస్ చేయడానికి <b>%1$s</b>ను అనుమతించాలా?" + "మీ <b>%2$s</b>‌లో కాంటాక్ట్‌లను యాక్సెస్ చేయడానికి <b>%1$s</b>‌కు అనుమతినివ్వాలా?" "ఈ పరికర లొకేషన్‌ను యాక్సెస్ చేయడానికి <b>%1$s</b>ను అనుమతించాలా?" + "మీ <b>%2$s</b> లొకేషన్‌ను యాక్సెస్ చేయడానికి <b>%1$s</b>‌కు అనుమతినివ్వాలా?" "మీరు యాప్‌ను ఉపయోగిస్తున్నప్పుడు మాత్రమే లొకేషన్‌కు యాప్ యాక్సెస్ కలిగి ఉంటుంది" "ఈ పరికర లొకేషన్‌ను యాక్సెస్ చేయడానికి <b>%1$s</b>ను అనుమతించాలా?" + "మీ <b>%2$s లొకేషన్‌ను యాక్సెస్ చేయడానికి <b>%1$s</b>‌కు అనుమతినివ్వాలా?" "ఈ యాప్‌నకు మీ లొకేషన్ యాక్సెస్ అన్ని సమయాలలో, అంటే యాప్‌ను ఉపయోగించనప్పుడు కూడా, అవసరం ఉండవచ్చు. ""సెట్టింగ్‌లలో అనుమతించండి." "<b>%1$s</b> కోసం లొకేష‌న్‌ యాక్సెస్‌ను మార్చాలా?" + "మీ <b>%2$s</b>‌లో <b>%1$s</b>‌కు సంబంధించిన లొకేషన్ యాక్సెస్‌ను మార్చాలా?" "మీరు యాప్ ఉపయోగించనప్పుడు కూడా ఈ యాప్ మీ లొకేష‌న్‌ను ఎప్పటికప్పుడు యాక్సెస్ చేయాల‌ని అనుకుంటోంది.""సెట్టింగ్‌లలో అనుమతించండి." "సమీప పరికరాల సంబంధిత స్థానాన్ని కనుగొనడానికి, కనెక్ట్ చేయడానికి అలాగే నిర్ణయించడానికి <b>%1$s</b>ను అనుమతించాలా?" + "మీ <b>%2$s</b>‌లో సమీప పరికరాలు కనుగొని, కనెక్ట్ అయి, వాటి దూరం అంచనా వేసేలా <b>%1$s</b>‌ను అనుమతించాలా?" "సమీప పరికరాల సంబంధిత స్థానాన్ని కనుగొనడానికి, కనెక్ట్ చేయడానికి అలాగే నిర్ణయించడానికి <b>%1$s</b>ను అనుమతించాలా? ""సెట్టింగ్‌లలో అనుమతించండి." "<b>%1$s</b>కు సంబంధించిన లొకేషన్ యాక్సెస్‌ను సుమారు నుండి ఖచ్చితమైనదిగా మార్చాలా?" + "మీ <b>%2$s</b>‌లో <b><b>%1$s</b></b> లొకేషన్ యాక్సెస్‌ను రమారమి నుండి ఖచ్చితమైన లొకేషన్‌కు మార్చాలా?" "ఈ పరికరానికి సంబంధించి సుమారుగా ఉన్న లొకేషన్‌ను యాక్సెస్ చేయడానికి <b>%1$s</b>ని అనుమతించాలా?" + "మీ <b>%2$s</b> రమారమి లొకేషన్‌ను యాక్సెస్ చేయడానికి <b>%1$s</b>‌కు అనుమతినివ్వాలా?" "ఖచ్చితమైన" "సుమారుగా" "మీ క్యాలెండర్‌ని యాక్సెస్ చేయడానికి <b>%1$s</b>ని అనుమతించాలా?" + "మీ <b>%2$s</b>‌లో క్యాలెండర్‌ను యాక్సెస్ చేయడానికి <b>%1$s</b>‌ను అనుమతించాలా?" "SMS మెసేజ్‌లు పంపడం, చూడటం చేయగలిగేలా <b>%1$s</b>ను అనుమతించాలా?" + "మీ <b>%2$s</b>‌లో SMSను పంపడానికి, చూడటానికి <b>%1$s</b>‌కు అనుమతినివ్వాలా?" "మీ పరికరంలోని ఫోటోలు, మీడియా, ఫైళ్లను యాక్సెస్ చేయడానికి <b>%1$s</b>‌ను అనుమతించాలా?" + "మీ <b>%2$s</b>‌లో ఫోటోలు, మీడియా, ఫైల్స్‌ను యాక్సెస్ చేయడానికి <b>%1$s</b>‌కు అనుమతినివ్వాలా?" "ఈ పరికరంలో <b>ఫోటోలు, వీడియోలు, మ్యూజిక్, ఆడియో</b>ను యాక్సెస్ చేయడానికి <b>%1$s</b>ను అనుమతించాలా?" "ఈపరికరంలో <b>ఫోటోలు, వీడియోలు, మ్యూజిక్, ఆడియో, ఇతర ఫైళ్ల</b> యాక్సెస్‌కు <b>%1$s</b>ను అనుమతించాలా?" "ఈ పరికరంలో మ్యూజిక్‌ను, ఆడియోను యాక్సెస్ చేయడానికి <b>%1$s</b>‌ను అనుమతించాలా?" + "మీ <b>%2$s</b>‌లో మ్యూజిక్‌ను, ఆడియోను యాక్సెస్ చేయడానికి <b>%1$s</b>‌కు అనుమతినివ్వాలా?" "ఈ పరికరంలో ఫోటోలను, వీడియోలను యాక్సెస్ చేయడానికి <b>%1$s</b>‌ను అనుమతించాలా?" + "మీ <b>%2$s</b>‌లో ఫోటోలు, వీడియోలను యాక్సెస్ చేయడానికి <b>%1$s</b>‌కు అనుమతినివ్వాలా?" "ఈ పరికరంలోని మరిన్ని ఫోటోలను, వీడియోలను యాక్సెస్ చేయడానికి <b>%1$s</b> యాప్‌ను అనుమతించాలా?" + "మీ <b>%2$s</b>‌లో మరిన్ని ఫోటోలు, వీడియోలను యాక్సెస్ చేయడానికి <b>%1$s</b>‌కు అనుమతినివ్వాలా?" "ఆడియోను రికార్డ్ చేయడానికి <b>%1$s</b>ను అనుమతించాలా?" + "మీ <b>%2$s</b>‌లో ఆడియోను రికార్డ్ చేయడానికి <b>%1$s</b>‌కు అనుమతినివ్వాలా?" "మీరు యాప్‌ను ఉపయోగిస్తున్నప్పుడు మాత్రమే ఈ యాప్, ఆడియోను రికార్డ్ చేయగలుగుతుంది" "ఆడియోను రికార్డ్ చేయడానికి <b>%1$s</b>ను అనుమతించాలా?" + "మీ <b>%2$s</b>‌లో ఆడియోను రికార్డ్ చేయడానికి <b>%1$s</b>‌కు అనుమతినివ్వాలా?" "మీరు యాప్ ఉపయోగించనప్పుడు కూడా ఈ యాప్ ఎల్లప్పుడూ ఆడియోను రికార్డ్ చేయాలనుకోవచ్చు. ""సెట్టింగ్‌లలో అనుమతించండి." "<b>%1$s</b> కోసం మైక్రోఫోన్ యాక్సెస్‌ను మార్చాలా?" + "మీ <b>%2$s</b>‌లో <b>%1$s</b>‌కు సంబంధించిన మైక్రోఫోన్ యాక్సెస్‌ను మార్చాలా?" "మీరు యాప్ ఉపయోగించనప్పుడు కూడా ఈ యాప్ ఎల్లప్పుడూ ఆడియోను రికార్డ్ చేయాలనుకుంటోంది. ""సెట్టింగ్‌లలో అనుమతించండి." "మీ భౌతిక యాక్టివిటీని యాక్సెస్ చేయడానికి <b>%1$s</b>ను అనుమతించాలా?" + "మీ <b>%2$s</b>‌లో ఫిజికల్ యాక్టివిటీని యాక్సెస్ చేయడానికి <b>%1$s</b>‌కు అనుమతినివ్వాలా?" "ఫోటోలు తీయడానికి, వీడియో రికార్డ్ చేయడానికి <b>%1$s</b>ను అనుమతించాలా?" + "మీ <b>%2$s</b>‌లో ఫోటోలు తీయడానికి, వీడియోను రికార్డ్ చేయడానికి <b>%1$s</b>‌కు అనుమతినివ్వాలా?" "మీరు యాప్‌ను ఉపయోగిస్తున్నప్పుడు మాత్రమే ఈ యాప్, ఫోటోలను తీయగలుగుతుంది, వీడియోను రికార్డ్ చేయగలుగుతుంది" "ఫోటోలు తీయడానికి, వీడియోను రికార్డ్ చేయడానికి <b>%1$s</b>ను అనుమతించాలా?" + "మీ <b>%2$s</b>‌లో ఫోటోలు తీయడానికి, వీడియోను రికార్డ్ చేయడానికి <b>%1$s</b>‌కు అనుమతినివ్వాలా?" "మీరు యాప్ ఉపయోగించనప్పుడు కూడా ఈ యాప్ ఎల్లప్పుడూ ఫోటోలను తీయాలనుకోవచ్చు, వీడియోను రికార్డ్ చేయాలనుకోవచ్చు. ""సెట్టింగ్‌లలో అనుమతించండి." "<b>%1$s</b> కోసం కెమెరా యాక్సెస్‌ను మార్చాలా?" + "మీ <b>%2$s</b>‌లో <b>%1$s</b>‌కు సంబంధించిన కెమెరా యాక్సెస్‌ను మార్చాలా?" "మీరు యాప్ ఉపయోగించనప్పుడు కూడా ఈ యాప్ ఎల్లప్పుడూ ఫోటోలను తీయాలనుకుంటోంది, వీడియోను రికార్డ్ చేయాలనుకుంటోంది. ""సెట్టింగ్‌లలో అనుమతించండి." "మీ ఫోన్ కాల్ లాగ్‌లను యాక్సెస్ చేయడానికి <b>%1$s</b>ని అనుమతించాలా?" + "మీ <b>%2$s</b>‌లో ఫోన్ కాల్ లాగ్‌లను యాక్సెస్ చేయడానికి <b>%1$s</b>‌కు అనుమతినివ్వాలా?" "ఫోన్‌ కాల్స్‌ చేయడానికి, మేనేజ్ చేయడానికి <b>%1$s</b>ని అనుమతించాలా?" + "మీ <b>%2$s</b>‌లో ఫోన్ కాల్స్ చేయడానికి, మేనేజ్ చేయడానికి <b>%1$s</b>‌కు అనుమతినివ్వాలా?" "మీ అత్యంత కీలకమైన గుర్తుల గురించి సెన్సార్ డేటాను యాక్సెస్ చేయడానికి <b>%1$s</b>ని అనుమతించాలా?" + "మీ <b>%2$s</b>‌లో కీలకమైన ఆరోగ్య కొలమానాల సెన్సార్ డేటా యాక్సెస్ చేయడానికి <b>%1$s</b>‌ను అనుమతించాలా?" "ఈ యాప్‌ను మీరు ఉపయోగించని సమయంలో కూడా మీ ఆరోగ్యానికి సంబంధించి కీలకమైన కొలమానాల గురించిన సెన్సార్ డేటాను ఎల్లప్పుడూ యాక్సెస్ చేయగలిగేలా ఈ యాప్ అనుమతి కోరుతోంది. ఈ మార్పును ఆమోదించడానికి, ""సెట్టింగ్‌లకు వెళ్లండి." "మీ ఆరోగ్యానికి సంబంధించి కీలకమైన కొలమానాల గురించిన సెన్సార్ డేటాను యాక్సెస్ చేయడానికి <b>%1$s</b>ను అనుమతించాలా?" + "మీ <b>%2$s</b>‌లో కీలకమైన ఆరోగ్య కొలమానాల సెన్సార్ డేటా యాక్సెస్ చేయడానికి <b>%1$s</b>‌ను అనుమతించాలా?" "మీరు యాప్‌ను ఉపయోగించనప్పుడు కూడా, శరీర సెన్సార్ డేటాను ఎల్లప్పుడూ యాక్సెస్ చేయడానికి ఈ యాప్‌ను అనుమతించడానికి, ""సెట్టింగ్‌లకు వెళ్లండి." "యాప్‌ను వినియోగిస్తున్నప్పుడు బాడీ సెన్సార్ డేటాను యాక్సెస్ చేయగలిగేలా <b>%1$s</b>‌కు ఉన్న అనుమతిని కొనసాగించాలా?" + "యాప్ వినియోగంలో ఉన్నప్పుడు, మీ <b>%2$s</b>‌లో శరీర సెన్సార్‌ల యాక్సెస్ కోసం <b>%1$s</b>‌ను అనుమతించాలా?" "మీకు నోటిఫికేషన్‌లను పంపడానికి <b>%1$s</b>ను అనుమతించాలా?" + "మీ <b>%2$s</b>‌లో మీకు నోటిఫికేషన్‌లు పంపడానికి <b>%1$s</b>‌కు అనుమతినివ్వాలా?" "నియంత్రణలో ఉన్న అనుమతులు" "%1$s‌కు లొకేషన్ యాక్సెస్ ఉంది" "మీ సంస్థ, మీ లొకేషన్‌ను యాక్సెస్ చేయడానికి %1$s‌నకు అనుమతి ఇస్తుంది" diff --git a/PermissionController/res/values-th/strings.xml b/PermissionController/res/values-th/strings.xml index c6b80ea1f10a8bb97abad240b49f5e9fac59bcf3..f960cfbafe70878c75114bfd775700f7a0f86228 100644 --- a/PermissionController/res/values-th/strings.xml +++ b/PermissionController/res/values-th/strings.xml @@ -34,6 +34,7 @@ "ข้อมูลเพิ่มเติม" "อนุญาตทั้งหมด" "อนุญาตทั้งหมดตลอดเวลา" + "อนุญาตสิทธิ์เข้าถึงแบบจำกัด" "เลือกรูปภาพและวิดีโอ" "เลือกเพิ่มเติม" "ไม่เลือกเพิ่มแล้ว" @@ -60,6 +61,7 @@ "แอป" "สิทธิ์ของแอป" "แอปที่ไม่ได้ใช้" + "แก้ไขรูปภาพที่เลือกสำหรับแอปนี้" "ไม่มีแอปที่ไม่ได้ใช้งาน" "แอปที่ไม่ได้ใช้ 0 รายการ" "สิทธิ์ที่กำหนดไว้ล่าสุด" @@ -455,48 +457,75 @@ "แสดงการตรวจหาตัวทริกเกอร์ผู้ช่วย" "แสดงไอคอนในแถบสถานะเมื่อมีการใช้ไมโครโฟนเพื่อเปิดใช้งานผู้ช่วยสั่งการด้วยเสียง" "อนุญาตให้ <b>%1$s</b> เข้าถึงรูปภาพและสื่อในอุปกรณ์ไหม" + "อนุญาตให้ <b>%1$s</b> เข้าถึงรูปภาพและสื่อบน<b>%2$s</b>ไหม" "อนุญาตให้ <b>%1$s</b> เข้าถึงรายชื่อติดต่อไหม" + "อนุญาตให้ <b>%1$s</b> เข้าถึงรายชื่อติดต่อบน<b>%2$s</b>ไหม" "อนุญาตให้ <b>%1$s</b> เข้าถึงตำแหน่งของอุปกรณ์นี้ไหม" + "อนุญาตให้ <b>%1$s</b> เข้าถึงตำแหน่งของ<b>%2$s</b>ไหม" "แอปจะมีสิทธิ์เข้าถึงตำแหน่งในขณะที่คุณใช้แอปเท่านั้น" "อนุญาตให้ <b>%1$s</b> เข้าถึงตำแหน่งของอุปกรณ์นี้ไหม" + "อนุญาตให้ <b>%1$s</b> เข้าถึงตำแหน่งของ<b>%2$sไหม" "แอปนี้อาจต้องการเข้าถึงตำแหน่งของคุณตลอดเวลา แม้ในขณะที่คุณไม่ได้ใช้แอป โปรด""อนุญาตในการตั้งค่า" "เปลี่ยนการเข้าถึงตำแหน่งสำหรับ <b>%1$s</b> ไหม" + "เปลี่ยนแปลงสิทธิ์เข้าถึงตำแหน่งของ <b>%1$s</b> บน<b>%2$s</b>ไหม" "แอปนี้ต้องการเข้าถึงตำแหน่งของคุณตลอดเวลา แม้ในขณะที่คุณไม่ได้ใช้แอป โปรด""อนุญาตในการตั้งค่า" "อนุญาตให้ <b>%1$s</b> ค้นหา เชื่อมต่อ และระบุตำแหน่งสัมพัทธ์ของอุปกรณ์ที่อยู่ใกล้เคียงไหม" + "อนุญาตให้ <b>%1$s</b> ค้นหา เชื่อมต่อ และระบุตำแหน่งซึ่งสัมพันธ์กับอุปกรณ์ใกล้เคียงบน<b>%2$s</b>ไหม" "อนุญาตให้ <b>%1$s</b> ค้นหา เชื่อมต่อ และระบุตำแหน่งซึ่งสัมพันธ์กับอุปกรณ์ที่อยู่ใกล้เคียง ""อนุญาตในการตั้งค่า" "เปลี่ยนการเข้าถึงตำแหน่งของ <b>%1$s</b> จากตำแหน่งโดยประมาณเป็นตำแหน่งที่แน่นอนไหม" + "เปลี่ยนแปลงสิทธิ์เข้าถึงตำแหน่งของ <b>%1$s</b> บน<b>%2$s</b>จากโดยประมาณเป็นตำแหน่งที่แม่นยำไหม" "อนุญาตให้ <b>%1$s</b> เข้าถึงตำแหน่งโดยประมาณของอุปกรณ์นี้ไหม" + "อนุญาตให้ <b>%1$s</b> เข้าถึงตำแหน่งโดยประมาณของ<b>%2$s</b>ไหม" "แน่นอน" "โดยประมาณ" "อนุญาตให้ <b>%1$s</b> เข้าถึงปฏิทินไหม" + "อนุญาตให้ <b>%1$s</b> เข้าถึงปฏิทินบน<b>%2$s</b>ไหม" "อนุญาตให้ <b>%1$s</b> ส่งและดูข้อความ SMS ไหม" + "อนุญาตให้ <b>%1$s</b> ส่งและดูข้อความ SMS บน<b>%2$s</b>ไหม" "อนุญาตให้ <b>%1$s</b> เข้าถึงรูปภาพ สื่อ และไฟล์ในอุปกรณ์ไหม" + "อนุญาตให้ <b>%1$s</b> เข้าถึงรูปภาพ สื่อ และไฟล์บน<b>%2$s</b>ไหม" "อนุญาตให้ <b>%1$s</b> เข้าถึง<b>รูปภาพ วิดีโอ เพลง และเสียง</b>ในอุปกรณ์นี้ไหม" "อนุญาตให้ <b>%1$s</b> เข้าถึง<b>รูปภาพ วิดีโอ เพลง เสียง และไฟล์อื่นๆ</b> ในอุปกรณ์นี้ไหม" "อนุญาตให้ <b>%1$s</b> เข้าถึงเพลงและเสียงในอุปกรณ์นี้ไหม" + "อนุญาตให้ <b>%1$s</b> เข้าถึงเพลงและเสียงบน<b>%2$s</b>ไหม" "อนุญาตให้ <b>%1$s</b> เข้าถึงรูปภาพและวิดีโอในอุปกรณ์นี้ไหม" + "อนุญาตให้ <b>%1$s</b> เข้าถึงรูปภาพและวิดีโอบน<b>%2$s</b>ไหม" "อนุญาตให้ <b>%1$s</b> เข้าถึงรูปภาพและวิดีโอเพิ่มเติมในอุปกรณ์นี้ไหม" + "อนุญาตให้ <b>%1$s</b> เข้าถึงรูปภาพและวิดีโอเพิ่มเติมบน<b>%2$s</b>ไหม" "อนุญาตให้ <b>%1$s</b> บันทึกเสียงไหม" + "อนุญาตให้ <b>%1$s</b> บันทึกเสียงบน<b>%2$s</b>ไหม" "แอปจะบันทึกเสียงได้ในขณะที่คุณใช้แอปอยู่เท่านั้น" "อนุญาตให้ <b>%1$s</b> บันทึกเสียงไหม" + "อนุญาตให้ <b>%1$s</b> บันทึกเสียงบน<b>%2$s</b>ไหม" "แอปนี้อาจต้องการบันทึกเสียงตลอดเวลา แม้ในขณะที่คุณไม่ได้ใช้แอป ""อนุญาตในการตั้งค่า" "เปลี่ยนแปลงสิทธิ์เข้าถึงไมโครโฟนของ <b>%1$s</b> ไหม" + "เปลี่ยนแปลงสิทธิ์เข้าถึงไมโครโฟนของ <b>%1$s</b> บน<b>%2$s</b>ไหม" "แอปนี้ต้องการบันทึกเสียงตลอดเวลา แม้ในขณะที่คุณไม่ได้ใช้แอป ""อนุญาตในการตั้งค่า" "อนุญาตให้ <b>%1$s</b> เข้าถึงกิจกรรมการเคลื่อนไหวร่างกายของคุณไหม" + "อนุญาตให้ <b>%1$s</b> เข้าถึงกิจกรรมการเคลื่อนไหวร่างกายบน<b>%2$s</b>ไหม" "อนุญาตให้ <b>%1$s</b> ถ่ายรูปและบันทึกวิดีโอไหม" + "อนุญาตให้ <b>%1$s</b> ถ่ายภาพและบันทึกวิดีโอบน<b>%2$s</b>ไหม" "แอปจะถ่ายภาพและวิดีโอได้ในขณะที่คุณใช้แอปอยู่เท่านั้น" "อนุญาตให้ <b>%1$s</b> ถ่ายภาพและวิดีโอไหม" + "อนุญาตให้ <b>%1$s</b> ถ่ายภาพและบันทึกวิดีโอบน<b>%2$s</b>ไหม" "แอปนี้อาจต้องการถ่ายภาพและวิดีโอตลอดเวลา แม้ในขณะที่คุณไม่ได้ใช้แอป ""อนุญาตในการตั้งค่า" "เปลี่ยนแปลงสิทธิ์เข้าถึงกล้องถ่ายรูปของ <b>%1$s</b> ไหม" + "เปลี่ยนแปลงสิทธิ์เข้าถึงกล้องของ <b>%1$s</b> บน<b>%2$s</b>ไหม" "แอปนี้ต้องการถ่ายภาพและวิดีโอตลอดเวลา แม้ในขณะที่คุณไม่ได้ใช้แอป ""อนุญาตในการตั้งค่า" "อนุญาตให้ <b>%1$s</b> เข้าถึงบันทึกการโทรในโทรศัพท์ไหม" + "อนุญาตให้ <b>%1$s</b> เข้าถึงบันทึกการโทรในโทรศัพท์บน<b>%2$s</b>ไหม" "อนุญาตให้ <b>%1$s</b> โทรและจัดการการโทรไหม" + "อนุญาตให้ <b>%1$s</b> โทรและจัดการการโทรบน<b>%2$s</b>ไหม" "อนุญาตให้ <b>%1$s</b> เข้าถึงข้อมูลเซ็นเซอร์เกี่ยวกับสัญญาณชีพไหม" + "อนุญาตให้ <b>%1$s</b> เข้าถึงข้อมูลเซ็นเซอร์เกี่ยวกับสัญญาณชีพบน<b>%2$s</b>ไหม" "แอปนี้ต้องการเข้าถึงข้อมูลเซ็นเซอร์เกี่ยวกับสัญญาณชีพตลอดเวลาแม้ว่าคุณจะไม่ได้ใช้​แอปอยู่ก็ตาม หากจะอนุญาตตามนี้ ""ไปที่การตั้งค่า" "อนุญาตให้ <b>%1$s</b> เข้าถึงข้อมูลเซ็นเซอร์เกี่ยวกับสัญญาณชีพไหม" + "อนุญาตให้ <b>%1$s</b> เข้าถึงข้อมูลเซ็นเซอร์เกี่ยวกับสัญญาณชีพบน<b>%2$s</b>ไหม" "หากต้องการให้แอปนี้เข้าถึงข้อมูลเซ็นเซอร์ร่างกายได้ทุกเมื่อ แม้ว่าคุณจะไม่ได้ใช้งานแอปอยู่ ""ไปที่การตั้งค่า" "อนุญาตให้ <b>%1$s</b> เข้าถึงข้อมูลเซ็นเซอร์ร่างกายได้ตลอดขณะใช้งานแอปไหม" + "อนุญาตให้ <b>%1$s</b> เข้าถึงข้อมูลเซ็นเซอร์ร่างกายได้ตลอดขณะใช้งานแอปบน<b>%2$s</b>ไหม" "อนุญาตให้ <b>%1$s</b> ส่งการแจ้งเตือนถึงคุณไหม" + "อนุญาตให้ <b>%1$s</b> ส่งการแจ้งเตือนถึงคุณบน<b>%2$s</b>ไหม" "สิทธิ์ที่มีการควบคุม" "%1$s มีสิทธิ์เข้าถึงตำแหน่ง" "องค์กรของคุณอนุญาตให้ %1$s เข้าถึงตำแหน่ง" diff --git a/PermissionController/res/values-tl/strings.xml b/PermissionController/res/values-tl/strings.xml index d4bdb66e02e36b0ad7015ddd723c776d55f9afc4..c17871ae56c68cfa97100964d611e78ab596d099 100644 --- a/PermissionController/res/values-tl/strings.xml +++ b/PermissionController/res/values-tl/strings.xml @@ -34,6 +34,7 @@ "Higit pang info" "Pahintulutan lahat" "Palaging pahintulutan lahat" + "Payagan ang limitadong access" "Pumili ng mga larawan at video" "Pumili pa" "Huwag nang pumili pa" @@ -60,6 +61,7 @@ "Mga App" "Mga pahintulot sa app" "Mga hindi ginagamit na app" + "I-edit ang mga piniling larawan para sa app na ito" "Walang hindi ginagamit na app" "0 hindi ginagamit na app" "Mga recent permission decision" @@ -455,48 +457,75 @@ "Ipakita ang pagtukoy ng trigger ng assistant" "Ipakita ang icon sa status bar kapag gumamit ng mikropono para i-activate ang voice assistant" "Payagan ang <b>%1$s</b> na i-access ang mga larawan at media sa iyong device?" + "Payagan ang <b>%1$s</b> na i-access ang mga larawan at media sa <b>%2$s</b> mo?" "Payagan ang <b>%1$s</b> na i-access ang iyong mga contact?" + "Payagan ang <b>%1$s</b> na i-access ang iyong mga contact sa <b>%2$s</b> mo?" "Payagan ang <b>%1$s</b> na i-access ang lokasyon ng device na ito?" + "Payagan ang <b>%1$s</b> na i-access ang lokasyon ng <b>%2$s’s</b> mo?" "Magkakaroon lang ang app ng access sa lokasyon habang ginagamit mo ang app" "Payagan ang <b>%1$s</b> na i-access ang lokasyon ng device na ito?" + "Payagan ang <b>%1$s</b> na i-access ang lokasyon ng <b>%2$s mo?" "Posibleng gustong i-access ng app na ito ang iyong lokasyon sa lahat ng oras, kahit na hindi mo ginagamit ang app. ""Payagan sa mga setting." "Baguhin ang access sa lokasyon para sa <b>%1$s</b>?" + "Baguhin ang access sa lokasyon para sa <b>%1$s</b> sa <b>%2$s</b> mo?" "Gustong i-access ng app na ito ang iyong lokasyon sa lahat ng oras, kahit na hindi mo ginagamit ang app. ""Payagan sa mga setting." "Payagan ang <b>%1$s</b> na maghanap, kumonekta sa, at tukuyin ang relatibong posisyon ng mga kalapit na device?" + "Payagan ang <b>%1$s</b> na humanap, kumonekta, at tumukoy ng posisyon ng nearby device sa <b>%2$s</b>?" "Payagan ang <b>%1$s</b> na hanapin at tukuyin ang, at kumonekta sa relatibong posisyon ng mga kalapit na device? ""Payagan sa mga setting." "Gawing eksakto ang access sa lokasyon ng <b>%1$s</b> mula sa pagiging tinatantya?" + "Gawing tumpak mula sa tinataya ang access sa lokasyon ng <b>%1$s</b> sa <b>%2$s</b> mo?" "Payagan ang <b>%1$s</b> na i-access ang tinatantyang lokasyon ng device na ito?" + "Payagan ang <b>%1$s</b> na i-access ang tinatayang lokasyon ng <b>%2$s</b>’s mo?" "Eksakto" "Tinatantya" "Payagan ang <b>%1$s</b> na i-access ang iyong kalendaryo?" + "Payagan ang <b>%1$s</b> na i-access ang iyong kalendaryo sa <b>%2$s</b> mo?" "Payagan ang <b>%1$s</b> na magpadala at tumingin ng mga mensaheng SMS?" + "Payagan ang <b>%1$s</b> na magpadala at tumingin ng mga SMS message sa <b>%2$s</b> mo?" "Payagan ang <b>%1$s</b> na i-access ang mga larawan, media, at file sa iyong device?" + "Payagan ang <b>%1$s</b> na i-access ang mga larawan, media, at file sa <b>%2$s</b> mo?" "Payagan ang <b>%1$s</b> na i-access ang <b>mga larawan, video, musika, at audio</b> sa device?" "Payagan ang <b>%1$s</b> na i-access ang <b>mga larawan, video, musika, audio, at iba pang file</b> sa device?" "Payagan ang <b>%1$s</b> na i-access ang musika at audio sa device na ito?" + "Payagan ang <b>%1$s</b> na i-access ang musika at audio sa <b>%2$s</b> mo?" "Payagan ang <b>%1$s</b> na i-access ang mga larawan at video sa device na ito?" + "Payagan ang <b>%1$s</b> na i-access ang mga larawan at video sa <b>%2$s</b> mo?" "Payagan ang <b>%1$s</b> na i-access ang higit pang larawan at video sa device na ito?" + "Payagan ang <b>%1$s</b> na mag-access ng higit pang larawan at video sa <b>%2$s</b> mo?" "Payagan ang <b>%1$s</b> na mag-record ng audio?" + "Payagan ang <b>%1$s</b> na mag-record ng audio sa <b>%2$s</b> mo?" "Makakapag-record lang ng audio ang app habang ginagamit mo ang app" "Payagan ang <b>%1$s</b> na mag-record ng audio?" + "Payagan ang <b>%1$s</b> na mag-record ng audio sa <b>%2$s</b> mo?" "Posibleng gusto ng app na ito na mag-record ng audio sa lahat ng oras, kahit na hindi mo ginagamit ang app. ""Payagan sa mga setting." "Baguhin ang access sa mikropono para sa <b>%1$s</b>?" + "Baguhin ang access sa mikropono para sa <b>%1$s</b> sa <b>%2$s</b> mo?" "Gusto ng app na ito na mag-record ng audio sa lahat ng oras, kahit na hindi mo ginagamit ang app. ""Payagan sa mga setting." "Payagan ang <b>%1$s</b> na i-access ang iyong pisikal na aktibidad?" + "Payagan ang <b>%1$s</b> na i-access ang iyong pisikal na aktibidad sa <b>%2$s</b> mo?" "Payagan ang <b>%1$s</b> na kumuha ng larawan at mag-record ng video?" + "Payagan ang <b>%1$s</b> na kumuha ng mga larawan at mag-record ng video sa <b>%2$s</b> mo?" "Makakakuha lang ng mga larawan at makakapag-precord lang ng video ang app habang ginagamit mo ang app" "Payagan ang <b>%1$s</b> na kumuha ng mga larawan at mag-record ng video?" + "Payagan ang <b>%1$s</b> na kumuha ng mga larawan at mag-record ng video sa <b>%2$s</b> mo?" "Posibleng gusto ng app na ito na kumuha ng larawan at mag-record ng video sa lahat ng oras, kahit na hindi mo ginagamit ang app. ""Payagan sa settings." "Baguhin ang access sa camera para sa <b>%1$s</b>?" + "Baguhin ang access sa camera para sa <b>%1$s</b> sa <b>%2$s</b> mo?" "Gusto ng app na ito na kumuha ng mga larawn at mag-record ng video sa lahat ng oras, kahit na hindi mo ginagamit ang app. ""Payagan sa mga setting." "Payagan ang <b>%1$s</b> na i-access ang iyong mga log ng tawag sa telepono?" + "Payagan ang <b>%1$s</b> na i-access ang iyong mga log ng tawag sa telepono sa <b>%2$s</b> mo?" "Payagan ang <b>%1$s</b> na tumawag at mamahala ng mga tawag sa telepono?" + "Payagan ang <b>%1$s</b> na gumawa at mamahala ng mga tawag sa telepono sa <b>%2$s</b> mo?" "Payagan ang <b>%1$s</b> na i-access ang data ng sensor tungkol sa iyong mga vital sign?" + "Payagan ang <b>%1$s</b> na i-access ang data ng sensor tungkol sa mga vital sign mo sa <b>%2$s</b> mo?" "Gusto ng app na ito na palaging i-access ang data ng sensor tungkol sa iyong mga vital sign, kahit hindi mo ginagamit ang app. Para gawin ang pagbabagong ito, ""pumunta sa mga setting." "Payagan ang <b>%1$s</b> na i-access ang data ng sensor tungkol sa iyong mga vital sign?" + "Payagan ang <b>%1$s</b> na i-access ang data ng sensor tungkol sa mga vital sign mo sa <b>%2$s</b> mo?" "Para pahintulutan ang app na ito na i-access ang data ng sensor ng katawan sa lahat ng oras, kahit na hindi mo ginagamit ang app, ""pumunta sa mga setting." "Patuloy na pahintulutan ang <b>%1$s</b> na i-access ang data ng sensor ng katawan habang ginagamit ang app?" + "Payagan ang <b>%1$s</b> na i-access ang data ng sensor ng katawan sa <b>%2$s</b> habang ginagamit ito?" "Payagan ang %1$s na padalhan ka ng mga notification?" + "Payagan ang <b>%1$s</b> na magpadala sa iyo ng mga notification sa <b>%2$s</b> mo?" "Kontroladong pahintulot" "May access sa lokasyon ang %1$s" "Pinapayagan ng organisasyon mo ang %1$s na i-access ang iyong lokasyon" diff --git a/PermissionController/res/values-tr/strings.xml b/PermissionController/res/values-tr/strings.xml index 9bda447758a1bf5a81ae9a120ca78c5ec1036639..878e9155c5066e7937ef89d9d58e3f4a987e86b7 100644 --- a/PermissionController/res/values-tr/strings.xml +++ b/PermissionController/res/values-tr/strings.xml @@ -34,6 +34,7 @@ "Daha fazla bilgi" "Tümüne izin ver" "Tümüne her zaman izin ver" + "Sınırlı erişime izin ver" "Fotoğraf ve video seçin" "Daha fazla seçin" "Başka seçilmesin" @@ -60,6 +61,7 @@ "Uygulamalar" "Uygulama izinleri" "Kullanılmayan uygulamalar" + "Bu uygulamanın hangi fotoğraflara erişebileceğini düzenler" "Kullanılmayan uygulama yok" "Kullanılmayan 0 uygulama" "Son izin kararları" @@ -455,48 +457,75 @@ "Yardımcı uygulama tetikleyici algılamasını göster" "Sesli yardımı etkinleştirmek için mikrofon kullanıldığında simgeyi durum çubuğunda göster" "<b>%1$s</b> uygulamasının cihazınızdaki fotoğraf ve medya içeriğine erişmesine izin verilsin mi?" + "<b>%1$s</b> uygulamasının, <b>%2$s</b> cihazınızdaki fotoğraf ve medyalara erişmesine izin verilsin mi?" "<b>%1$s</b> uygulamasının kişilerinize erişmesine izin verilsin mi?" + "<b>%1$s</b> uygulamasının, <b>%2$s</b> cihazınızdaki kişilerinize erişmesine izin verilsin mi?" "<b>%1$s</b> uygulamasının bu cihazın konumuna erişmesine izin verilsin mi?" + "<b>%1$s</b> uygulamasının, <b>%2$s</b> cihazınızın konumuna erişmesine izin verilsin mi?" "Bu uygulama konum bilgisine yalnızca kullanıldığı sırada erişebilecektir" "<b>%1$s</b> uygulamasının bu cihazın konumuna erişmesine izin verilsin mi?" + "<b>%1$s</b> uygulamasının, <b>%2$s cihazınızın konumuna erişmesine izin verilsin mi?" "Bu uygulama, kullanmadığınız sırada bile konum bilginize sürekli olarak erişmek isteyebilir. ""Ayarlar\'da izin verin." "<b>%1$s</b> için konum adresi değiştirilsin mi?" + "<b>%1$s</b> uygulamasının, <b>%2$s</b> cihazınızdaki konum erişimi değiştirilsin mi?" "Bu uygulama, kullanmadığınız sırada bile konum bilginize sürekli olarak erişmek isteyebilir. ""Ayarlar\'da izin verin." "<b>%1$s</b> uygulamasına, yakındaki cihazları bulup bağlanma ve göreli konumlarını belirleme izni verilsin mi?" + "<b>%1$s</b> uygulamasına, <b>%2$s</b> cihazınızda yakındaki cihazları keşfedip bağlanma ve bu cihazların göreli konumunu belirleme izni verilsin mi?" "<b>%1$s</b> uygulamasına, yakındaki cihazları bulup bağlanma ve göreli konumlarını belirleme izni verilsin mi? ""Ayarlarda izin ver" "<b>%1$s</b> uygulamasının konum erişimi, yaklaşık konumdan tam konuma değiştirilsin mi?" + "<b>%1$s</b> uygulamasının, <b>%2$s</b> cihazınızdaki konum erişimi yaklaşık konum yerine tam konum olarak değiştirilsin mi?" "<b>%1$s</b> uygulamasının bu cihazın yaklaşık konumuna erişmesine izin verilsin mi?" + "<b>%1$s</b> uygulamasının, <b>%2$s</b> cihazınızın yaklaşık konumuna erişmesine izin verilsin mi?" "Tam" "Yaklaşık" "<b>%1$s</b> uygulamasının takviminize erişmesine izin verilsin mi?" + "<b>%1$s</b> uygulamasının, <b>%2$s</b> cihazınızdaki takviminize erişmesine izin verilsin mi?" "<b>%1$s</b> uygulamasının SMS mesajları göndermesine ve görüntülemesine izin verilsin mi?" + "<b>%1$s</b> uygulamasının, <b>%2$s</b> cihazınızda SMS mesajları gönderip görmesine izin verilsin mi?" "<b>%1$s</b> uygulamasının cihazınızdaki fotoğraf, medya ve dosyalara erişmesine izin verilsin mi?" + "<b>%1$s</b> uygulamasına, <b>%2$s</b> cihazınızda fotoğraf, medya ve dosyalara erişme izni verilsin mi?" "<b>%1$s</b> için bu cihazdaki <b>fotoğraf, video, müzik ve ses dosyalarına</b> erişim verilsin mi?" "<b>%1$s</b> için cihazdaki <b>fotoğraf, video, müzik, ses vb. dosyalara</b> erişim verilsin mi?" "<b>%1$s</b> uygulamasının bu cihazda müzik ve ses dosyalarına erişmesine izin verilsin mi?" + "<b>%1$s</b> uygulamasının, <b>%2$s</b> cihazınızda müzik ve ses dosyalarına erişmesine izin verilsin mi?" "<b>%1$s</b> uygulamasının bu cihazdaki fotoğraf ve videolara erişmesine izin verilsin mi?" + "<b>%1$s</b> uygulamasının, <b>%2$s</b> cihazınızdaki fotoğraf ve videolara erişmesine izin verilsin mi?" "<b>%1$s</b> uygulamasının bu cihazdaki diğer fotoğraf ve videolara erişmesine izin verilsin mi?" + "<b>%1$s</b> uygulamasına, <b>%2$s</b> cihazınızdaki diğer fotoğraf ve videolara erişme izni verilsin mi?" "<b>%1$s</b> uygulamasının ses kaydetmesine izin verilsin mi?" + "<b>%1$s</b> uygulamasının, <b>%2$s</b> cihazınızda ses kaydetmesine izin verilsin mi?" "Bu uygulama, yalnızca kullanıldığı sırada ses kaydedebilir" "<b>%1$s</b> uygulamasının ses kaydetmesine izin verilsin mi?" + "<b>%1$s</b> uygulamasının, <b>%2$s</b> cihazınızda ses kaydetmesine izin verilsin mi?" "Bu uygulama, kullanmadığınız sırada bile sürekli olarak ses kaydetmek isteyebilir. ""Ayarlar\'da izin verin." "<b>%1$s</b> için mikrofon erişimi değiştirilsin mi?" + "<b>%1$s</b> uygulamasının, <b>%2$s</b> cihazınızdaki mikrofon erişimi değiştirilsin mi?" "Bu uygulama, kullanmadığınız sırada bile sürekli olarak ses kaydetmek istiyor. ""Ayarlar\'da izin verin." "<b>%1$s</b> uygulamasına fiziksel aktivitenize erişme izni verilsin mi?" + "<b>%1$s</b> uygulamasının, <b>%2$s</b> cihazınızdaki fiziksel aktivitenize erişmesine izin verilsin mi?" "<b>%1$s</b> uygulamasının fotoğraf çekmesine ve video kaydı yapmasına izin verilsin mi?" + "<b>%1$s</b> uygulamasının, <b>%2$s</b> cihazınızda resim çekip video kaydetmesine izin verilsin mi?" "Bu uygulama, yalnızca kullanıldığı sırada resim çekebilir veya video kaydedebilir" "<b>%1$s</b> uygulamasının resim çekmesine ve video kaydı yapmasına izin verilsin mi?" + "<b>%1$s</b> uygulamasının, <b>%2$s</b> cihazınızda resim çekip video kaydetmesine izin verilsin mi?" "Bu uygulama, kullanmadığınız sırada bile sürekli olarak resim çekmek ve video kaydetmek isteyebilir. ""Ayarlar\'da izin verin." "<b>%1$s</b> için kamera erişimi değiştirilsin mi?" + "<b>%1$s</b> uygulamasının, <b>%2$s</b> cihazınızdaki kamera erişimi değiştirilsin mi?" "Bu uygulama, kullanmadığınız sırada bile sürekli olarak resim çekmek ve video kaydetmek istiyor. ""Ayarlar\'da izin verin." "<b>%1$s</b> uygulamasının telefon arama kayıtlarınıza erişmesine izin verilsin mi?" + "<b>%1$s</b> uygulamasının, <b>%2$s</b> cihazınızdaki telefon arama kaydına erişmesine izin verilsin mi?" "<b>%1$s</b> uygulamasının telefon etmesine ve aramaları yönetmesine izin verilsin mi?" + "<b>%1$s</b> uygulamasının, <b>%2$s</b> cihazınızda telefon edip aramaları yönetmesine izin verilsin mi?" "<b>%1$s</b> uygulamasının hayati belirtilerinizle ilgili sensör verilerine erişmesine izin verilsin mi?" + "<b>%1$s</b> uygulamasının, <b>%2$s</b> cihazınızdaki hayati bulgularla ilgili sensör verilerine erişmesine izin verilsin mi?" "Bu uygulama, kullanmadığınız sırada bile hayati belirtilerinizle ilgili sensör verilerine sürekli olarak erişmek istiyor. Bu değişikliği yapmak için ""ayarlara gidin." "<b>%1$s</b> uygulamasının hayati belirtilerinizle ilgili sensör verilerine erişmesine izin verilsin mi?" + "<b>%1$s</b> uygulamasının, <b>%2$s</b> cihazınızdaki hayati bulgularla ilgili sensör verilerine erişmesine izin verilsin mi?" "Bu uygulamanın, kullanmadığınız sırada bile vücut sensörü verilerine sürekli olarak erişmesine izin vermek için ""ayarlara gidin." "<b>%1$s</b> uygulamasının kullanımdayken vücut sensörü verilerine erişme izni sürdürülsün mü?" + "<b>%1$s</b> uygulamasının kullanımdayken <b>%2$s</b> cihazındaki vücut sensörü verilerine erişme izni sürdürülsün mü?" "<b>%1$s</b> uygulamasının size bildirim göndermesine izin verilsin mi?" + "<b>%1$s</b> uygulamasının, <b>%2$s</b> cihazınızda size bildirim göndermesine izin verilsin mi?" "Kontrol edilen izinler" "%1$s konuma erişebiliyor" "Kuruluşunuz %1$s uygulamasının konumunuza erişmesine izin veriyor" diff --git a/PermissionController/res/values-uk/strings.xml b/PermissionController/res/values-uk/strings.xml index bf4b99d43ab7fedc2d6b56b3f48c4bc8e1ed29c9..9a39e12ee951e77cfae573f019c55b69c7db4896 100644 --- a/PermissionController/res/values-uk/strings.xml +++ b/PermissionController/res/values-uk/strings.xml @@ -34,6 +34,7 @@ "Докладніше" "Дозволити всі" "Завжди дозволяти всі" + "Дозволити обмежений доступ" "Вибрати фото й відео" "Вибрати ще" "Не вибирати більше" @@ -60,6 +61,7 @@ "Додатки" "Дозволи додатка" "Непотрібні додатки" + "Змінити вибрані фотографії для цього додатка" "Усі додатки використовуються" "0 додатків не використовуються" "Останні рішення щодо дозволів" @@ -455,48 +457,75 @@ "Показувати значок очікування активатора асистента" "Показувати значок у рядку стану, коли мікрофон працює в режимі очікування активатора голосового помічника" "Дозволити додатку <b>%1$s</b> доступ до фото й медіа на пристрої?" + "Дозволити додатку <b>%1$s</b> доступ до фото й медіаконтенту на <b>%2$s</b>?" "Дозволити додатку <b>%1$s</b> доступ до контактів?" + "Дозволити додатку <b>%1$s</b> доступ до контактів на <b>%2$s</b>?" "Дозволити додатку <b>%1$s</b> доступ до місцезнаходження пристрою?" + "Дозволити додатку <b>%1$s</b> доступ до місцезнаходження на <b>%2$s</b>?" "Додаток матиме доступ до геоданих, лише коли ви ним користуєтеся" "Дозволити додатку <b>%1$s</b> доступ до місцезнаходження пристрою?" + "Дозволити додатку <b>%1$s</b> доступ до геоданих на <b>%2$s</b>?" "Додаток може запитувати доступ до ваших геоданих, навіть коли ви не використовуєте його. Дозвіл можна надати в ""налаштуваннях""." "Змінити доступ до геоданих для додатка <b>%1$s</b>?" + "Змінити налаштування доступу до геоданих для додатка <b>%1$s</b> на <b>%2$s</b>?" "Додаток хоче завжди отримувати доступ до ваших геоданих, навіть коли ви не використовуєте його. Дозвіл можна надати в ""налаштуваннях""." "Дозволити додатку %1$s знаходити пристрої поблизу, підключатися до них і визначати їх відносне розташування?" + "Дозволити додатку <b>%1$s</b> знаходити пристрої поблизу, підключатися до них і визначати їх відносне розташування на <b>%2$s</b>?" "Дозволити додатку %1$s знаходити пристрої поблизу, підключатися до них і визначати їх відносне розташування? ""Дозвольте в налаштуваннях." "Змінити доступ до місцезнаходження для додатка <b>%1$s</b> з приблизного на точне?" + "Змінити доступ до місцезнаходження для додатка <b>%1$s</b> на <b>%2$s</b> з приблизного на точне?" "Надати додатку <b>%1$s</b> доступ до приблизного місцезнаходження пристрою?" + "Дозволити додатку <b>%1$s</b> доступ до приблизного місцезнаходження <b>%2$s</b>’?" "Точне" "Приблизне" "Надати додатку <b>%1$s</b> доступ до календаря?" + "Дозволити додатку <b>%1$s</b> доступ до календаря на <b>%2$s</b>?" "Дозволити додатку <b>%1$s</b> надсилати та переглядати SMS?" + "Дозволити додатку <b>%1$s</b> надсилати й переглядати SMS на <b>%2$s</b>?" "Дозволити додатку <b>%1$s</b> доступ до фото, медіа та файлів на пристрої?" + "Дозволити додатку <b>%1$s</b> доступ до фото, медіаконтенту й файлів на <b>%2$s</b>?" "Надати додатку <b>%1$s</b> доступ до <b>фото, відео, музики й аудіо</b> на цьому пристрої?" "Надати додатку <b>%1$s</b> доступ до <b>фото, відео, музики, аудіо й інших файлів</b> на пристрої?" "Надати додатку <b>%1$s</b> доступ до музики й аудіофайлів на цьому пристрої?" + "Дозволити додатку <b>%1$s</b> доступ до музики й аудіо на <b>%2$s</b>?" "Надати додатку <b>%1$s</b> доступ до фотографій і відео на цьому пристрої?" + "Дозволити додатку <b>%1$s</b> доступ до фото й відео на <b>%2$s</b>?" "Дозволити додатку <b>%1$s</b> доступ до інших фото й відео на цьому пристрої?" + "Дозволити додатку <b>%1$s</b> доступ до інших фото й відео на <b>%2$s</b>?" "Дозволити додатку <b>%1$s</b> записувати аудіо?" + "Дозволити додатку <b>%1$s</b> записувати звук на <b>%2$s</b>?" "Додаток зможе записувати звук, лише коли ви використовуєте його" "Дозволити додатку <b>%1$s</b> записувати звук?" + "Дозволити додатку <b>%1$s</b> записувати звук на <b>%2$s</b>?" "Цей додаток може записувати звук, навіть коли ви не використовуєте його. Дозвіл можна надати в ""налаштуваннях""." "Змінити налаштування доступу до мікрофона для додатка <b>%1$s</b>?" + "Змінити налаштування доступу до мікрофона для додатка <b>%1$s</b> на <b>%2$s</b>?" "Цей додаток може записувати звук, навіть коли ви не використовуєте його. Дозвіл можна надати в ""налаштуваннях""." "Надати додатку <b>%1$s</b> доступ до даних про фізичну активність?" + "Дозволити додатку <b>%1$s</b> доступ до даних про фізичну активність на <b>%2$s</b>?" "Дозволити додатку <b>%1$s</b> робити знімки та записувати відео?" + "Дозволити додатку <b>%1$s</b> робити знімки й записувати відео на <b>%2$s</b>?" "Додаток зможе робити фотографії та записувати відео, лише коли ви використовуєте його" "Дозволити додатку <b>%1$s</b> робити знімки й записувати відео?" + "Дозволити додатку <b>%1$s</b> робити знімки й записувати відео на <b>%2$s</b>?" "Цей додаток може робити фотографії та записувати відео, навіть коли ви не використовуєте його. Дозвіл можна надати в ""налаштуваннях""." "Змінити налаштування доступу до камери для додатка <b>%1$s</b>?" + "Змінити налаштування доступу до камери для додатка <b>%1$s</b> на <b>%2$s</b>?" "Цей додаток може робити фотографії та записувати відео, навіть коли ви не використовуєте його. Дозвіл можна надати в ""налаштуваннях""." "Дозволити додатку <b>%1$s</b> доступ до журналів викликів телефона?" + "Дозволити додатку <b>%1$s</b> доступ до журналів викликів на <b>%2$s</b>?" "Дозволити додатку <b>%1$s</b> здійснювати телефонні дзвінки та керувати ними?" + "Дозволити додатку <b>%1$s</b> здійснювати телефонні дзвінки й керувати ними на <b>%2$s</b>?" "Надати додатку <b>%1$s</b> доступ до життєвих показників із датчиків?" + "Дозволити додатку <b>%1$s</b> доступ до життєвих показників від датчиків на <b>%2$s</b>?" "Цей додаток хоче постійно отримувати дані життєвих показників від датчиків, навіть коли ви не використовуєте його. Щоб внести зміни, ""перейдіть у налаштування""." "Дозволити додатку <b>%1$s</b> доступ до життєвих показників із датчиків?" + "Дозволити додатку <b>%1$s</b> доступ до життєвих показників від датчиків на <b>%2$s</b>?" "Щоб надати додатку постійний доступ до показників датчиків на тілі, навіть коли він не використовується, ""перейдіть у налаштування""." "Надавати й надалі додатку %1$s доступ до показників датчиків на тілі, коли він використовується?" + "Дозволяти й надалі додатку <b>%1$s</b> доступ до показників датчиків на тілі на <b>%2$s</b>, коли додаток використовується?" "Дозволити додатку <b>%1$s</b> надсилати вам сповіщення?" + "Дозволити додатку <b>%1$s</b> надсилати вам сповіщення на <b>%2$s</b>?" "Керовані дозволи" "Додаток %1$s має доступ до геоданих" "Ваша організація надає додатку %1$s доступ до ваших геоданих" diff --git a/PermissionController/res/values-ur/strings.xml b/PermissionController/res/values-ur/strings.xml index 4cb926518a4d50cf3a89a28140a8966dfe997d87..f1d9a96dca3a47cc763d41beca6ee75b5e1467b4 100644 --- a/PermissionController/res/values-ur/strings.xml +++ b/PermissionController/res/values-ur/strings.xml @@ -34,6 +34,7 @@ "مزید معلومات" "سبھی کو اجازت دیں" "ہمیشہ سبھی کو اجازت دیں" + "محدود رسائی کی اجازت دیں" "تصاویر اور ویڈیوز منتخب کریں" "مزید منتخب کریں" "مزید منتخب نہ کریں" @@ -60,6 +61,7 @@ "ایپس" "ایپ کی اجازتیں" "غیر مستعمل ایپس" + "منتخب کریں کہ کن تصاویر تک اس ایپ کو رسائی ہوگی" "کوئی غیر مستعمل ایپ نہیں ہے" "0 غیر مستعمل ایپس" "اجازت کے حالیہ فیصلے" @@ -455,48 +457,75 @@ "اسسٹنٹ ٹریگر کا پتہ لگانا دکھائیں" "جب صوتی معاون کو فعال کرنے کے لیے مائیکروفون کا استعمال کیا جائے تو اسٹیٹس بار میں آئیکن دکھائیں" "‏‎<b>%1$s</b>‎ کو آپ کے آلہ پر تصاویر اور میڈیا تک رسائی کی اجازت دیں؟" + "‏<b>‏%1$s</b> کو آپ کے <b>‏%2$s</b> پر تصاویر اور میڈیا تک رسائی کی اجازت دیں؟" "‏<b>%1$s</b> کو آپ کے رابطوں تک رسائی کی اجازت دیں؟" + "‏<b>‏%1$s</b> کو آپ کے <b>‏%2$s</b> پر آپ کے رابطوں تک رسائی کی اجازت دیں؟" "‏<b>%1$s</b> کو اس آلہ کے مقام تک رسائی کی اجازت دیں؟" + "‏<b>‏%1$s</b> کو آپ کے <b>‏%2$s</b> کے مقام تک رسائی کی اجازت دیں؟" "جب آپ ایپ استعمال کریں گے تبھی ایپ کو مقام تک رسائی حاصل ہوگی" "‏<b>%1$s</b> کو اس آلہ کے مقام تک رسائی کی اجازت دیں؟" + "‏<b>‏%1$s</b> کو آپ کے <b>‏%2$s</b> کے مقام تک رسائی کی اجازت دیں؟" "ممکن ہے یہ ایپ ہر وقت آپ کے مقام تک رسائی حاصل کرنا چاہے، اگرچہ آپ ایپ استعمال نہ کر رہے ہوں۔ ""ترتیبات میں اجازت دیں۔" "‏<b>%1$s</b> کے ليے مقام تک رسائی تبدیل کریں" + "‏آپ کے <b>‏%2$s</b> پر <b>‏%1$s</b> کی مقام تک رسائی کو تبدیل کریں؟" "یہ ایپ ہر وقت آپ کے مقام تک رسائی حاصل کرنا چاہتی ہے، اگرچہ آپ ایپ استعمال نہ کر رہے ہوں۔ ""ترتیبات میں اجازت دیں۔" "‏‎<b>%1$s</b>‎ کو قریبی آلات تلاش کرنے، ان سے منسلک ہونے اور ان کی متعلقہ پوزیشن کا تعین کرنے کی اجازت دیں؟" + "‏<b>‏%1$s</b> کو آپ کے <b>‏%2$s</b> پر قریبی آلات کی متعلقہ پوزیشن تلاش کرنے، ان سے منسلک ہونے اور اس کا تعین کرنے کی اجازت دیں؟" "‏‎<b>%1$s</b>‎ کو قریبی آلات تلاش کرنے، ان سے منسلک ہونے اور ان کی متعلقہ پوزیشن کا تعین کرنے کی اجازت دیں؟ ""ترتیبات میں اجازت دیں۔" "<b>%1$s</b> کے مقام تک رسائی کو تخمینی سے قطعی میں تبدیل کریں؟" + "‏آپ کے <b>‏%2$s</b> پر <b>‏<b>%1$s</b></b> کے مقام تک رسائی کو تخمینی سے قطعی میں تبدیل کریں؟" "‏<b>%1$s</b> کو اس آلے کے تخمینی مقام تک رسائی کی اجازت دیں؟" + "‏<b>‏%1$s</b> کو آپ کے <b>‏%2$s</b> کے تخمینی مقام تک رسائی کی اجازت دیں؟" "قطعی" "تخمینی" "‏<b>%1$s</b> کو آپ کے کیلنڈر تک رسائی کی اجازت دیں؟" + "‏<b>‏%1$s</b> کو آپ کے <b>‏%2$s</b> پر آپ کے کیلنڈر تک رسائی کی اجازت دیں؟" "‏<b>%1$s</b> کو SMS پیغامات بھیجنے اور انہیں ملاحظہ کرنے کی اجازت دیں؟" + "‏<b>‏%1$s</b> کو آپ کے <b>‏%2$s</b> پر SMS پیغامات بھیجنے اور دیکھنے کی اجازت دیں؟؟" "‏<b>%1$s</b> کو آپ کے آلہ پر تصاویر، میڈیا اور فائلوں تک رسائی کی اجازت دیں؟" + "‏<b>‏%1$s</b> کو آپ کے <b>‏%2$s</b> پر تصاویر، میڈیا اور فائلز تک رسائی کی اجازت دیں؟" "‏اس آلے پر <b>%1$s</b> کو <b>تصاویر، ویڈیوز، موسیقی اور آڈیو</b> تک رسائی کی اجازت دیں؟" "‏اس آلے پر <b>%1$s</b> کو <b>تصاویر، ویڈیوز، موسیقی، آڈیو اور دیگر فائلز</b> تک رسائی کی اجازت دیں؟" "‏اس آلے پر <b>%1$s</b> کو موسیقی اور آڈیو تک رسائی کی اجازت دیں؟" + "‏<b>‏%1$s</b> کو آپ کے <b>‏%2$s</b> پر موسیقی اور آڈیو تک رسائی کی اجازت دیں؟" "‏اس آلے پر <b>%1$s</b> کو تصاویر اور ویڈیوز تک رسائی کی اجازت دیں؟" + "‏<b>‏%1$s</b> کو آپ کے <b>‏%2$s</b> پر تصاویر اور ویڈیوز تک رسائی کی اجازت دیں؟" "‏‎<b>%1$s</b>‎ کو اس آلے پر مزید تصاویر اور ویڈیوز تک رسائی کی اجازت دیں؟" - "‏<b>%1$s</b> کو آڈیو ریکارڈ کرنے کی اجازت دیں؟" + "‏<b>‏%1$s</b> کو آپ کے <b>‏%2$s</b> پر مزید تصاویر اور ویڈیوز تک رسائی کی اجازت دیں؟" + "‏آڈیو ریکارڈ کرنے کے لیے <b>%1$s</b> کو اجازت دیں؟" + "‏<b>‏%1$s</b> کو آپ کے <b>‏%2$s</b> پر آڈیو ریکارڈ کرنے کی اجازت دیں؟" "جب آپ ایپ استعمال کر رہے ہوں تب ایپ صرف آڈیو ریکارڈ کر پائے گی" - "‏<b>%1$s</b> کو آڈیو ریکارڈ کرنے کی اجازت دیں؟" + "‏آڈیو ریکارڈ کرنے کے لیے <b>%1$s</b> کو اجازت دیں؟" + "‏<b>‏%1$s</b> کو آپ کے <b>‏%2$s</b> پر آڈیو ریکارڈ کرنے کی اجازت دیں؟" "ممکن ہے یہ ایپ ہر وقت آڈیو ریکارڈ کرنا چاہے، اگرچہ آپ ایپ استعمال نہ کر رہے ہوں۔ ""ترتیبات میں اجازت دیں۔" "‏<b>%1$s</b>? کے ليے مائیکروفون تک رسائی تبدیل کریں؟" + "‏آپ کے <b>‏%2$s</b> پر <b>‏%1$s</b> کی مائیکروفون تک رسائی تبدیل کریں؟" "یہ ایپ ہر وقت آڈیو ریکارڈ کرنا چاہتی ہے، اگرچہ آپ ایپ استعمال نہ کر رہے ہوں۔ ""ترتیبات میں اجازت دیں۔" "‏‎<b>%1$s<b>‎ کو آپ کی جسمانی سرگرمی کی شناخت کرنے کی اجازت دیں؟" + "‏<b>‏%1$s</b> کو آپ کے <b>‏%2$s</b> پر آپ کی جسمانی سرگرمی تک رسائی کی اجازت دیں؟" "‏<b>%1$s</b> کو تصاویر لینے اور ویڈیو ریکارڈ کرنے کی اجازت دیں؟" + "‏<b>‏%1$s</b> کو آپ کے <b>‏%2$s</b> پر تصاویر لینے اور ویڈیو ریکارڈ کرنے کی اجازت دیں؟" "جب آپ ایپ استعمال کر رہے ہوں تب ایپ صرف تصاویر لے سکے گی اور ویڈیوز ریکارڈ کر پائے گی" "‏<b>%1$s</b> کو تصاویر لینے اور ویڈیو ریکارڈ کرنے کی اجازت دیں؟" + "‏<b>‏%1$s</b> کو آپ کے <b>‏%2$s</b> پر تصاویر لینے اور ویڈیو ریکارڈ کرنے کی اجازت دیں؟" "ممکن ہے یہ ایپ ہر وقت تصاویر لینا اور ویڈیو ریکارڈ کرنا چاہے، اگرچہ آپ ایپ استعمال نہ کر رہے ہوں۔ ""ترتیبات میں اجازت دیں۔" "‏<b>%1$s</b>? کے ليے کیمرا تک رسائی تبدیل کریں؟" + "‏آپ کے <b>‏%2$s</b> پر <b>‏%1$s</b> کی کیمرا تک رسائی تبدیل کریں؟" "یہ ایپ ہر وقت تصاویر لینا اور ویڈیو ریکارڈ کرنا چاہتی ہے، اگرچہ آپ ایپ استعمال نہ کر رہے ہوں۔ ""ترتیبات میں اجازت دیں۔" "‏‎<b>%1$s</b>‎ کو آپ کے فون کال لاگز تک رسائی کی اجازت دیں؟" + "‏<b>‏%1$s</b> کو آپ کے <b>‏%2$s</b> پر آپ کے فون کال لاگز تک رسائی کی اجازت دیں؟" "‏</b>%1$s</b> کو فون کالز کرنے اور ان کا نظم کرنے کی اجازت دیں؟" + "‏<b>‏%1$s</b> کو آپ کے <b>‏%2$s</b> پر فون کالز کرنے اور ان کا نظم کرنے کی اجازت دیں؟" "‏<b>%1$s</b> کو آپ کے اہم اشاروں کے متعلق سینسر ڈیٹا تک رسائی کی اجازت دیں؟" + "‏<b>‏%1$s</b> کو آپ کے <b>‏%2$s</b> پر آپ کی علامات حیات کے بارے میں سینسر ڈیٹا تک رسائی کی اجازت دیں؟" "آپ کے ایپ کا استعمال نہ کرنے کے باوجود یہ ایپ ہر وقت آپ کے اہم علامتوں کے متعلق سینسر ڈیٹا تک رسائی حاصل کرنا چاہتی ہے۔ یہ تبدیلی کرنے کے لیے ""ترتیبات پر جائیں۔" "‏<b>%1$s</b> کو آپ کے اہم اشاروں کے متعلق سینسر ڈیٹا تک رسائی کی اجازت دیں؟" + "‏<b>‏%1$s</b> کو آپ کے <b>‏%2$s</b> پر آپ کی علامات حیات کے بارے میں سینسر ڈیٹا تک رسائی کی اجازت دیں؟" "آپ کے ایپ کا استعمال نہ کرنے کے باوجود اس ایپ کو ہر وقت باڈی سینسر ڈیٹا تک رسائی کی اجازت دینے کے لیے ""ترتیبات پر جائیں۔" "‏ایپ کے استعمال میں ہونے کے دوران ‎<b>%1$s</b>‎ کو باڈی سینسر ڈیٹا تک رسائی کی اجازت دینا جاری رکھیں؟" + "‏ایپ کے استعمال کے دوران <b>‏%1$s</b> کو آپ کے </b>‏%2$s</b> پر باڈی سینسر ڈیٹا تک رسائی کی اجازت دینا جاری رکھیں؟" "‏<b>%1$s‏</b> کو آپ کو اطلاعات بھیجنے کی اجازت دیں؟" + "‏<b>‏%1$s</b> کو آپ کے <b>‏%2$s</b> پر اطلاعات بھیجنے کی اجازت دیں؟" "کنٹرول کی گئی اجازتیں" "%1$s کے پاس مقام تک رسائی حاصل ہے" "آپ کی تنظیم %1$s کو آپ کے مقام تک رسائی کی اجازت دیتی ہے" diff --git a/PermissionController/res/values-uz/strings.xml b/PermissionController/res/values-uz/strings.xml index 356df948efcc2df24de778a9bd2b87bb3673d7ec..706ec1a6c55ae6bd2da008f425117df07ca8e3f8 100644 --- a/PermissionController/res/values-uz/strings.xml +++ b/PermissionController/res/values-uz/strings.xml @@ -34,6 +34,7 @@ "Batafsil" "Hammasiga ruxsat" "Doim hammasiga ruxsat berish" + "Cheklangan ruxsat berish" "Surat va videolarni tanlash" "Yana" "Boshqa tanlanmasin" @@ -60,6 +61,7 @@ "Ilovalar" "Ilovalar uchun ruxsatlar" "Ishlatilmagan ilovalar" + "Bu ilova uchun tanlangan suratlarni tahrirlash" "Ishlatilmagan ilovalar yoʻq" "0 ta ishlatilmagan ilova" "Yaqinda tekshirilgan ruxsatlar" @@ -455,48 +457,75 @@ "Ovozli yordamchi faollashgani haqidagi belgini chiqarish" "Ovozli yordamchi mikrofon orqali faollashtirilganda, bu haqda holat qatorida maxsus belgi chiqadi" "%1$s uchun qurilmadagi suratlar va media fayllarga kirish ruxsati berilsinmi?" + "%1$s uchun <b>%2$s</b>dagi suratlar va media fayllarga kirish ruxsati berilsinmi?" "<b>%1$s</b> uchun kontaktlaringizga kirish ruxsati berilsinmi?" + "<b>%1$s</b> uchun <b>%2$s</b>da kontaktlaringizga ruxsat berilsinmi?" "<b>%1$s</b> uchun bu qurilmaning joylashuvi haqidagi axborotdan foydalanish ruxsati berilsinmi?" + "<b>%1$s</b> uchun <b>%2$s’s</b> joylashuviga kirishga ruxsat berilsinmi?" "Bu ilovadan foydalanilayotdangina u joylashuv axborotidan foydalana oladi" "<b>%1$s</b> uchun bu qurilmaning joylashuvi haqidagi axborotdan foydalanish ruxsati berilsinmi?" + "<b>%1$s</b> uchun <b>%2$s joylashuviga kirishga ruxsat berilsinmi?" "Bu ilova ochiq emasligida ham joylashuvingiz haqidagi axborotdan foydalanmoqchi. Bunga "" sozlamalar"" orqali ruxsat bering." "<b>%1$s</b> uchun joylashuv axborotiga ruxsat oʻzgartirilsinmi?" + "<b>%2$s</b>da <b>%1$s</b> uchun joylashuv axborotiga ruxsat oʻzgartirilsinmi?" "Bu ilova ochiq emasligida ham joylashuvingiz haqidagi axborotdan foydalanmoqchi. Bunga ""sozlamalar"" orqali ruxsat bering." "<b>%1$s</b> yaqin-atrofdagi qurilmalar joylashuvini aniqlashi va ularga ulanishiga ruxsat berilsinmi?" + "%1$s ilovasi uchun <b>%2$s</b>da yaqin-atrofdagi qurilmalar joylashuvini aniqlashi va ularga ulanishiga ruxsat berilsinmi?" "<b>%1$s</b> yaqin-atrofdagi qurilmalar joylashuvini aniqlashi va ularga ulanishiga ruxsat berilsinmi? ""Sozlamalar orqali ruxsat berish mumkin." "<b>%1$s</b> uchun joylashuv ruxsati taxminiydan aniqqa oʻzgartirilsinmi?" + "<b>%1$s</b> ilovasining joylashuv ruxsati <b>%2$s</b>da taxminiydan aniq qiymatga oʻzgartirilsinmi?" "<b>%1$s</b> uchun bu qurilmaning taxminiy joylashuvi haqidagi axborotdan foydalanish ruxsati berilsinmi?" + "<b>%1$s</b> uchun <b>%2$s taxminiy joylashuviga kirishga ruxsat berilsinmi?" "Aniq" "Taxminiy" "<b>%1$s</b> uchun taqvimingizga ruxsat berilsinmi?" + "<b>%1$s</b> uchun <b>%2$s</b>da taqvimingizga ruxsat berilsinmi?" "<b>%1$s</b> uchun SMS xabarlarni yuborish va ko‘rishga ruxsat berilsinmi?" + "<b>%1$s</b> uchun <b>%2$s</b>da SMS xabarlarni yuborish va ko‘rishga ruxsat berilsinmi?" "<b>%1$s</b> uchun qurilmangizdagi suratlar, multimedia va fayllarga kirish ruxsati berilsinmi?" + "<b>%1$s</b> uchun <b>%2$s</b>dagi surat, multimedia va fayllarga ruxsat berilsinmi?" "%1$s uchun ushbu qurilmadagi surat, video, musiqa va audiolarga kirish ruxsati berilsinmi?" "%1$s uchun ushbu qurilmadagi surat, video, musiqa, audio va fayllarga kirish ruxsati berilsinmi?" "%1$s uchun ushbu qurilmadagi musiqa va audio fayllarga kirish ruxsati berilsinmi?" + "%1$s uchun <b>%2$s</b>dagi musiqa va audio fayllarga kirish ruxsati berilsinmi?" "%1$s uchun qurilmadagi suratlar va videolarga kirish ruxsati berilsinmi?" + "<b>%1$s</b> uchun <b>%2$s</b>dagi rasm va videolarga kirish ruxsati berilsinmi?" "<b>%1$s</b> uchun qurilmadagi boshqa surat va videolarga kirish ruxsati berilsinmi?" + "<b>%1$s</b> uchun <b>%2$s</b>dagi boshqa rasm va videolarga kirish ruxsati berilsinmi?" "<b>%1$s</b> uchun audio yozib olish ruxsati berilsinmi?" + "<b>%1$s</b> uchun <b>%2$s</b>da audio yozib olishga ruxsat berilsinmi?" "Bu ilova faqat undan foydalanganingizda ovozlarni yozib oladi" "<b>%1$s</b> uchun audio yozib olishga ruxsat berilsinmi?" + "<b>%1$s</b> uchun <b>%2$s</b>da audio yozib olishga ruxsat berilsinmi?" "Bu ilova doimo, hatto undan foydalanmagan vaqtlaringizda ham ovoz yozib olishi mumkin. ""Sozlamalar orqali ruxsat bering." "<b>%1$s</b> uchun mikrofonga ruxsat oʻzgartirilsinmi?" + "<b>%2$s</b>da <b>%1$s</b> ilovasi uchun mikrofon ruxsati oʻzgartirilsinmi?" "Bu ilova doimo, hatto undan foydalanmagan vaqtlaringizda ham ovoz yozib olishi mumkin. ""Sozlamalar orqali ruxsat bering." "<b>%1$s</b> uchun jismoniy harakatlaringizga oid axborotga kirish ruxsati berilsinmi?" + "<b>%1$s</b> uchun <b>%2$s</b>da jismoniy harakatlaringiz axborotiga ruxsat berilsinmi?" "<b>%1$s</b> uchun surat va videoga olish ruxsati berilsinmi?" + "<b>%1$s</b> uchun <b>%2$s</b>da surat va videoga olishga ruxsat berilsinmi?" "Bu ilova faqat undan foydalanganingizda rasm va videoga oladi" "<b>%1$s</b> uchun surat va videoga olishga ruxsat berilsinmi?" + "<b>%1$s</b> uchun <b>%2$s</b>da surat va videoga olishga ruxsat berilsinmi?" "Bu ilova doimo, hatto undan foydalanmagan vaqtlaringizda ham rasm va videoga olishi mumkin. ""Sozlamalar orqali ruxsat bering." "<b>%1$s</b> uchun kameraga ruxsat oʻzgartirilsinmi?" + "<b>%2$s</b>da <b>%1$s</b> ilovasi uchun kamera ruxsati oʻzgartirilsinmi?" "Bu ilova doimo, hatto undan foydalanmagan vaqtlaringizda ham rasm va videoga olishi mumkin. ""Sozlamalar orqali ruxsat bering." "<b>%1$s</b> uchun telefoningizdagi chaqiruvlar tarixiga kirish ruxsati berilsinmi?" + "<b>%1$s</b> uchun <b>%2$s</b>da telefon chaqiruvlari tarixiga kirishga ruxsat berilsinmi?" "<b>%1$s</b> uchun telefon chaqiruvlarini amalga oshirish va boshqarish ruxsati berilsinmi?" + "<b>%1$s</b> uchun <b>%2$s</b>da telefon chaqiruvlarini amalga oshirish va boshqarishga ruxsat berilsinmi?" "<b>%1$s</b> uchun tana holati haqidagi sensor axborotlariga ruxsat berilsinmi?" + "<b>%1$s</b> uchun <b>%2$s</b>da organizm holati haqidagi sezgichlar axborotlariga ruxsat berilsinmi?" "Bu ilova organizm holati haqidagi sensor maʼlumotlaringizdan doimiy foydalanishga ruxsat olmoqchi. Bu ruxsatni berish uchun ""sozlamalarni oching." "<b>%1$s</b> uchun organizm holati haqidagi sensor axborotlariga ruxsat berilsinmi?" + "<b>%1$s</b> uchun <b>%2$s</b>da organizm holati haqidagi sezgichlar axborotlariga ruxsat berilsinmi?" "Bu ilovaga tanadagi sensor maʼlumotlaridan foydalanishga (hatto ilova yopiqligida ham) doimiy ruxsat berish uchun ""sozlamalarni oching." "<b>%1$s</b> ilovasining tanadagi sensor maʼlumotlaridan foydalanishiga ruxsat berilsinmi?" + "<b>%2$s</b>da <b>%1$s</b> ilovasi tanadagi sensor maʼlumotlaridan foydalanishiga ruxsat berilaversinmi?" "<b>%1$s</b> ilovasiga sizga bildirishnomalar yuborishi uchun ruxsat berilsinmi?" + "<b>%1$s</b> ilovasiga <b>%2$s</b>da sizga bildirishnomalar yuborishi uchun ruxsat berilsinmi?" "Boshqariluvchi ruxsatlar" "%1$s joylashuvga kira oladi" "Tashkilotingiz %1$s ilovasiga joylashuvingizga kirishga ruxsat bergan" diff --git a/PermissionController/res/values-v31/styles.xml b/PermissionController/res/values-v31/styles.xml index a05fd488bf0f7f6ddd8f279debcad9a6a33bb35f..e2f6378f54ddb57d2b7f34df554d993d14bbe818 100644 --- a/PermissionController/res/values-v31/styles.xml +++ b/PermissionController/res/values-v31/styles.xml @@ -90,22 +90,22 @@ parent="@style/PermissionGrantButtonTop"> + - - + + + - - + + + + + - - + @@ -256,10 +256,6 @@ parent="@style/PermissionGrantButton"> - - diff --git a/PermissionController/res/values/themes.xml b/PermissionController/res/values/themes.xml index 76196a0502f7d32a42ce99280a17d7c269e1ead0..4f59ec29da272f340c93308dbe3b505dbd62e70f 100644 --- a/PermissionController/res/values/themes.xml +++ b/PermissionController/res/values/themes.xml @@ -138,4 +138,6 @@ true + + diff --git a/tests/cts/permissionui/UsePermissionAppWithOverlay/src/android/permissionui/cts/usepermission/OverlayActivity.kt b/tests/cts/permissionui/UsePermissionAppWithOverlay/src/android/permissionui/cts/usepermission/OverlayActivity.kt new file mode 100644 index 0000000000000000000000000000000000000000..bcd5496dce197e65c9605eef33fc0f901e9f32c4 --- /dev/null +++ b/tests/cts/permissionui/UsePermissionAppWithOverlay/src/android/permissionui/cts/usepermission/OverlayActivity.kt @@ -0,0 +1,60 @@ +package android.permissionui.cts.usepermission + +import android.app.Activity +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.os.Bundle +import android.view.Gravity +import android.view.WindowManager + +class OverlayActivity : Activity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.overlay_activity) + val params = window.attributes + params.flags = + (WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS or + WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL or + WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE or + WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON or + WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN) + + if (!intent.getBooleanExtra(EXTRA_FULL_OVERLAY, true)) { + params.gravity = Gravity.LEFT or Gravity.TOP + val left = intent.getIntExtra(OVERLAY_LEFT, params.x) + val top = intent.getIntExtra(OVERLAY_TOP, params.y) + val right = intent.getIntExtra(OVERLAY_RIGHT, params.x + params.width) + val bottom = intent.getIntExtra(OVERLAY_BOTTOM, top + 1) + params.x = left + params.y = top + params.width = right - left + params.height = bottom - top + } + + registerReceiver( + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (intent?.action != RequestPermissionsActivity.ACTION_HIDE_OVERLAY) { + return + } + + finish() + } + }, + IntentFilter(RequestPermissionsActivity.ACTION_HIDE_OVERLAY), + RECEIVER_EXPORTED + ) + } + + companion object { + const val EXTRA_FULL_OVERLAY = "android.permissionui.cts.usepermission.extra.FULL_OVERLAY" + + const val OVERLAY_LEFT = "android.permissionui.cts.usepermission.extra.OVERLAY_LEFT" + const val OVERLAY_TOP = "android.permissionui.cts.usepermission.extra.OVERLAY_TOP" + const val OVERLAY_RIGHT = "android.permissionui.cts.usepermission.extra.OVERLAY_RIGHT" + const val OVERLAY_BOTTOM = "android.permissionui.cts.usepermission.extra.OVERLAY_BOTTOM" + } +} diff --git a/tests/cts/permissionui/UsePermissionAppWithOverlay/src/android/permissionui/cts/usepermission/RequestPermissionsActivity.kt b/tests/cts/permissionui/UsePermissionAppWithOverlay/src/android/permissionui/cts/usepermission/RequestPermissionsActivity.kt new file mode 100644 index 0000000000000000000000000000000000000000..c13a02392e4e01802cccc4a1199e7714fa65309b --- /dev/null +++ b/tests/cts/permissionui/UsePermissionAppWithOverlay/src/android/permissionui/cts/usepermission/RequestPermissionsActivity.kt @@ -0,0 +1,106 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts.usepermission + +import android.app.Activity +import android.content.BroadcastReceiver +import android.content.ComponentName +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.os.Bundle +import android.os.Handler +import android.util.Log + +class RequestPermissionsActivity : Activity() { + + var paused = false + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + if (savedInstanceState != null) { + Log.w(TAG, "Activity was recreated. (Perhaps due to a configuration change?)") + return + } + + registerReceiver( + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (intent?.action != ACTION_SHOW_OVERLAY) { + return + } + + startActivity( + intent + .setAction(null) + .setComponent(ComponentName(context!!, OverlayActivity::class.java)) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + ) + } + }, + IntentFilter(ACTION_SHOW_OVERLAY), + RECEIVER_EXPORTED + ) + Handler(mainLooper).post(this::eventuallyRequestPermission) + } + + /** + * Keep trying to requestPermissions until the dialog shows. It may fail the first few times due + * to rapid install/uninstall tests do + */ + private fun eventuallyRequestPermission() { + if (!paused) { + val permissions = intent.getStringArrayExtra("$packageName.PERMISSIONS")!! + requestPermissions(permissions, 1) + Handler(mainLooper).postDelayed(this::eventuallyRequestPermission, 200) + } + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + + setResult( + RESULT_OK, + Intent().apply { + putExtra("$packageName.PERMISSIONS", permissions) + putExtra("$packageName.GRANT_RESULTS", grantResults) + } + ) + finish() + } + + override fun onPause() { + paused = true + super.onPause() + } + + override fun onResume() { + paused = false + super.onResume() + } + + companion object { + const val ACTION_SHOW_OVERLAY = "android.permissionui.cts.usepermission.ACTION_SHOW_OVERLAY" + const val ACTION_HIDE_OVERLAY = "android.permissionui.cts.usepermission.ACTION_HIDE_OVERLAY" + private val TAG = RequestPermissionsActivity::class.simpleName + } +} diff --git a/tests/cts/permissionui/res/raw/lg_g4_iso_800_jpg.jpg b/tests/cts/permissionui/res/raw/lg_g4_iso_800_jpg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d26419604ef018e770fde2be00bcfa67f4535625 Binary files /dev/null and b/tests/cts/permissionui/res/raw/lg_g4_iso_800_jpg.jpg differ diff --git a/tests/cts/permissionui/res/raw/test_video.mp4 b/tests/cts/permissionui/res/raw/test_video.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..ab95ac07dd3304d4c2b8a68dfe625fd53a581627 Binary files /dev/null and b/tests/cts/permissionui/res/raw/test_video.mp4 differ diff --git a/PermissionController/res/values-w764dp-v34/dimens.xml b/tests/cts/permissionui/res/values-en-rGB/strings.xml old mode 100644 new mode 100755 similarity index 80% rename from PermissionController/res/values-w764dp-v34/dimens.xml rename to tests/cts/permissionui/res/values-en-rGB/strings.xml index cb336fc3e0e3d7b6e58495840f9b688c00595711..7c98df76817de055c6b9bd8838296e137378669d --- a/PermissionController/res/values-w764dp-v34/dimens.xml +++ b/tests/cts/permissionui/res/values-en-rGB/strings.xml @@ -1,5 +1,7 @@ + + - @dimen/sc_spacing_large + Permission diff --git a/tests/cts/permissionui/res/values/strings.xml b/tests/cts/permissionui/res/values/strings.xml new file mode 100755 index 0000000000000000000000000000000000000000..b2f8e3dac9b5a3881b4001dd80d54a1840b8f6e8 --- /dev/null +++ b/tests/cts/permissionui/res/values/strings.xml @@ -0,0 +1,28 @@ + + + + + + Permissions + Allow only while using the app + Allow access to media only + Allow management of all files + com.android.systemui:id/mic_privacy_chip + com.android.systemui:id/camera_privacy_chip + TestService1 + TestService2 + diff --git a/tests/cts/permissionui/res/xml/test_accessibilityservice.xml b/tests/cts/permissionui/res/xml/test_accessibilityservice.xml new file mode 100644 index 0000000000000000000000000000000000000000..fa87e2e0ffc0a8b8671465b7ef9e3a4240a0d072 --- /dev/null +++ b/tests/cts/permissionui/res/xml/test_accessibilityservice.xml @@ -0,0 +1,21 @@ + + + diff --git a/tests/cts/permissionui/src/android/permissionui/cts/AppDataSharingUpdatesTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/AppDataSharingUpdatesTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..cd002ebfc01f8dbf04e051548fd681b51a979916 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/AppDataSharingUpdatesTest.kt @@ -0,0 +1,591 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.app.ActivityManager +import android.content.Context +import android.content.Intent +import android.content.pm.PackageInstaller.PACKAGE_SOURCE_DOWNLOADED_FILE +import android.content.pm.PackageInstaller.PACKAGE_SOURCE_LOCAL_FILE +import android.content.pm.PackageInstaller.PACKAGE_SOURCE_OTHER +import android.content.pm.PackageInstaller.PACKAGE_SOURCE_STORE +import android.content.pm.PackageInstaller.PACKAGE_SOURCE_UNSPECIFIED +import android.os.Build +import android.os.PersistableBundle +import android.permission.cts.PermissionUtils +import android.permissionui.cts.AppMetadata.createAppMetadataWithLocationSharingAds +import android.permissionui.cts.AppMetadata.createAppMetadataWithLocationSharingNoAds +import android.permissionui.cts.AppMetadata.createAppMetadataWithNoSharing +import android.provider.DeviceConfig +import android.safetylabel.SafetyLabelConstants.SAFETY_LABEL_CHANGE_NOTIFICATIONS_ENABLED +import android.util.Log +import androidx.test.filters.FlakyTest +import androidx.test.filters.SdkSuppress +import androidx.test.uiautomator.By +import com.android.compatibility.common.util.DeviceConfigStateChangerRule +import com.android.compatibility.common.util.SystemUtil.eventually +import com.android.compatibility.common.util.SystemUtil.runWithShellPermissionIdentity +import com.android.compatibility.common.util.SystemUtil.waitForBroadcasts +import com.android.modules.utils.build.SdkLevel +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue +import org.junit.Assume +import org.junit.Before +import org.junit.Ignore +import org.junit.Rule +import org.junit.Test + +/** Tests the UI that displays information about apps' updates to their data sharing policies. */ +@SdkSuppress(minSdkVersion = Build.VERSION_CODES.UPSIDE_DOWN_CAKE, codeName = "UpsideDownCake") +@FlakyTest +class AppDataSharingUpdatesTest : BaseUsePermissionTest() { + // TODO(b/263838456): Add tests for personal and work profile. + + private var activityManager: ActivityManager? = null + + @get:Rule + val deviceConfigSafetyLabelChangeNotificationsEnabled = + DeviceConfigStateChangerRule( + context, + DeviceConfig.NAMESPACE_PRIVACY, + SAFETY_LABEL_CHANGE_NOTIFICATIONS_ENABLED, + true.toString() + ) + + @get:Rule + val deviceConfigDataSharingUpdatesPeriod = + DeviceConfigStateChangerRule( + context, + DeviceConfig.NAMESPACE_PRIVACY, + PROPERTY_DATA_SHARING_UPDATE_PERIOD_MILLIS, + "600000" + ) + + /** + * This rule serves to limit the max number of safety labels that can be persisted, so that + * repeated tests don't overwhelm the disk storage on the device. + */ + @get:Rule + val deviceConfigMaxSafetyLabelsPersistedPerApp = + DeviceConfigStateChangerRule( + context, + DeviceConfig.NAMESPACE_PRIVACY, + PROPERTY_MAX_SAFETY_LABELS_PERSISTED_PER_APP, + "2" + ) + + @Before + fun setup() { + Assume.assumeTrue( + "Data sharing updates page is only available on U+", + SdkLevel.isAtLeastU() + ) + Assume.assumeFalse(isAutomotive) + Assume.assumeFalse(isTv) + Assume.assumeFalse(isWatch) + + PermissionUtils.clearAppState(context.packageManager.permissionControllerPackageName) + waitForBroadcasts() + activityManager = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager + } + + @Test + fun startActivityWithIntent_whenAppGrantedCoarseLocation_noSharingToNoAdsSharing_showsUpdate() { + installAndWaitTillPackageAdded( + APP_APK_NAME_31, + createAppMetadataWithNoSharing(), + waitTillBroadcastProcessed = true + ) + installAndWaitTillPackageAdded(APP_APK_NAME_31, createAppMetadataWithLocationSharingNoAds()) + grantCoarseLocationPermission(APP_PACKAGE_NAME) + + startAppDataSharingUpdatesActivity() + + try { + assertUpdatesPresent() + findView(By.textContains(APP_PACKAGE_NAME_SUBSTRING), true) + findView(By.textContains(NOW_SHARED_WITH_THIRD_PARTIES), true) + } finally { + pressBack() + } + } + + @Test + fun startActivityWithIntent_whenAppGrantedFineLocation_showsUpdate() { + installAndWaitTillPackageAdded( + APP_APK_NAME_31, + createAppMetadataWithNoSharing(), + waitTillBroadcastProcessed = true + ) + installAndWaitTillPackageAdded(APP_APK_NAME_31, createAppMetadataWithLocationSharingNoAds()) + grantFineLocationPermission(APP_PACKAGE_NAME) + + startAppDataSharingUpdatesActivity() + + try { + assertUpdatesPresent() + findView(By.textContains(APP_PACKAGE_NAME_SUBSTRING), true) + findView(By.textContains(NOW_SHARED_WITH_THIRD_PARTIES), true) + } finally { + pressBack() + } + } + + @Test + fun startActivityWithIntent_whenAppGrantedBackgroundLocation_showsUpdate() { + installAndWaitTillPackageAdded( + APP_APK_NAME_31, + createAppMetadataWithNoSharing(), + waitTillBroadcastProcessed = true + ) + installAndWaitTillPackageAdded(APP_APK_NAME_31, createAppMetadataWithLocationSharingNoAds()) + grantBackgroundLocationPermission(APP_PACKAGE_NAME) + + startAppDataSharingUpdatesActivity() + + try { + assertUpdatesPresent() + findView(By.textContains(APP_PACKAGE_NAME_SUBSTRING), true) + findView(By.textContains(NOW_SHARED_WITH_THIRD_PARTIES), true) + } finally { + pressBack() + } + } + + @Test + fun startActivityWithIntent_whenAppGrantedLocation_noSharingToAdsSharing_showsUpdate() { + installAndWaitTillPackageAdded( + APP_APK_NAME_31, + createAppMetadataWithNoSharing(), + waitTillBroadcastProcessed = true + ) + installAndWaitTillPackageAdded(APP_APK_NAME_31, createAppMetadataWithLocationSharingAds()) + grantCoarseLocationPermission(APP_PACKAGE_NAME) + + startAppDataSharingUpdatesActivity() + + try { + assertUpdatesPresent() + findView(By.textContains(APP_PACKAGE_NAME_SUBSTRING), true) + findView(By.textContains(NOW_SHARED_WITH_THIRD_PARTIES_FOR_ADS), true) + } finally { + pressBack() + } + } + + @Test + fun startActivityWithIntent_whenAppGrantedLocation_noAdsSharingToAdsSharing_showsUpdate() { + installAndWaitTillPackageAdded( + APP_APK_NAME_31, + createAppMetadataWithLocationSharingNoAds(), + waitTillBroadcastProcessed = true + ) + installAndWaitTillPackageAdded(APP_APK_NAME_31, createAppMetadataWithLocationSharingAds()) + grantCoarseLocationPermission(APP_PACKAGE_NAME) + + startAppDataSharingUpdatesActivity() + + try { + assertUpdatesPresent() + findView(By.textContains(APP_PACKAGE_NAME_SUBSTRING), true) + findView(By.textContains(NOW_SHARED_WITH_THIRD_PARTIES_FOR_ADS), true) + } finally { + pressBack() + } + } + + @Test + fun startActivityWithIntent_whenAppGrantedLocation_adsSharingToNoAdsSharing_showsNoUpdate() { + installAndWaitTillPackageAdded( + APP_APK_NAME_31, + createAppMetadataWithLocationSharingAds(), + waitTillBroadcastProcessed = true + ) + installAndWaitTillPackageAdded(APP_APK_NAME_31, createAppMetadataWithLocationSharingNoAds()) + grantCoarseLocationPermission(APP_PACKAGE_NAME) + + startAppDataSharingUpdatesActivity() + + try { + assertNoUpdatesPresent() + findView(By.textContains(APP_PACKAGE_NAME_SUBSTRING), false) + } finally { + pressBack() + } + } + + @Test + fun startActivityWithIntent_whenAppGrantedLocation_noAdsSharingToNoSharing_showsNoUpdate() { + installAndWaitTillPackageAdded( + APP_APK_NAME_31, + createAppMetadataWithLocationSharingNoAds(), + waitTillBroadcastProcessed = true + ) + installAndWaitTillPackageAdded(APP_APK_NAME_31, createAppMetadataWithNoSharing()) + grantCoarseLocationPermission(APP_PACKAGE_NAME) + + startAppDataSharingUpdatesActivity() + + try { + assertNoUpdatesPresent() + findView(By.textContains(APP_PACKAGE_NAME_SUBSTRING), false) + } finally { + pressBack() + } + } + + @Test + fun startActivityWithIntent_whenAppGrantedLocation_adsSharingToNoSharing_showsNoUpdate() { + installAndWaitTillPackageAdded( + APP_APK_NAME_31, + createAppMetadataWithLocationSharingAds(), + waitTillBroadcastProcessed = true + ) + installAndWaitTillPackageAdded(APP_APK_NAME_31, createAppMetadataWithNoSharing()) + grantCoarseLocationPermission(APP_PACKAGE_NAME) + + startAppDataSharingUpdatesActivity() + + try { + assertNoUpdatesPresent() + findView(By.textContains(APP_PACKAGE_NAME_SUBSTRING), false) + } finally { + pressBack() + } + } + + @Ignore("b/282063206") + @Test + fun clickLearnMore_opensHelpCenter() { + Assume.assumeFalse(getPermissionControllerResString(HELP_CENTER_URL_ID).isNullOrEmpty()) + + startAppDataSharingUpdatesActivity() + + try { + findView(By.descContains(DATA_SHARING_UPDATES), true) + findView(By.textContains(LEARN_ABOUT_DATA_SHARING), true) + + clickAndWaitForWindowTransition(By.textContains(LEARN_ABOUT_DATA_SHARING)) + + eventually({ assertHelpCenterLinkClickSuccessful() }, HELP_CENTER_TIMEOUT_MILLIS) + } finally { + pressBack() + pressBack() + } + } + + @Test + fun noHelpCenterLinkAvailable_noHelpCenterClickAction() { + Assume.assumeTrue(getPermissionControllerResString(HELP_CENTER_URL_ID).isNullOrEmpty()) + + startAppDataSharingUpdatesActivity() + + try { + findView(By.descContains(DATA_SHARING_UPDATES), true) + findView(By.textContains(LEARN_ABOUT_DATA_SHARING), false) + } finally { + pressBack() + pressBack() + } + } + + @Test + fun clickUpdate_opensAppLocationPermissionPage() { + installAndWaitTillPackageAdded( + APP_APK_NAME_31, + createAppMetadataWithNoSharing(), + waitTillBroadcastProcessed = true + ) + installAndWaitTillPackageAdded(APP_APK_NAME_31, createAppMetadataWithLocationSharingNoAds()) + grantFineLocationPermission(APP_PACKAGE_NAME) + startAppDataSharingUpdatesActivity() + + try { + findView(By.descContains(DATA_SHARING_UPDATES), true) + findView(By.textContains(UPDATES_IN_LAST_30_DAYS), true) + findView(By.textContains(APP_PACKAGE_NAME_SUBSTRING), true) + + clickAndWaitForWindowTransition(By.textContains(APP_PACKAGE_NAME_SUBSTRING)) + + findView(By.descContains(LOCATION_PERMISSION), true) + findView(By.textContains(APP_PACKAGE_NAME), true) + } finally { + pressBack() + pressBack() + } + } + + @Test + fun startActivityWithIntent_whenAppNotGrantedLocation_showsNoUpdates() { + installAndWaitTillPackageAdded( + APP_APK_NAME_31, + createAppMetadataWithNoSharing(), + waitTillBroadcastProcessed = true + ) + installAndWaitTillPackageAdded(APP_APK_NAME_31, createAppMetadataWithLocationSharingNoAds()) + + startAppDataSharingUpdatesActivity() + + try { + assertNoUpdatesPresent() + findView(By.textContains(APP_PACKAGE_NAME_SUBSTRING), false) + } finally { + pressBack() + } + } + + @Test + fun startActivityWithIntent_noMetadata_showsNoUpdates() { + installPackageWithoutInstallSource(APP_APK_PATH_31) + waitForBroadcasts() + installPackageWithoutInstallSource(APP_APK_PATH_31) + waitForBroadcasts() + + startAppDataSharingUpdatesActivity() + + try { + assertNoUpdatesPresent() + findView(By.textContains(APP_PACKAGE_NAME_SUBSTRING), false) + } finally { + pressBack() + } + } + + @Test + fun startActivityWithIntent_featureDisabled_doesNotOpenDataSharingUpdatesPage() { + setDeviceConfigPrivacyProperty(SAFETY_LABEL_CHANGE_NOTIFICATIONS_ENABLED, false.toString()) + + startAppDataSharingUpdatesActivity() + + findView(By.descContains(DATA_SHARING_UPDATES), false) + } + + @Test + fun startActivityWithIntent_whenAppGrantedFineLocation_packageSourceUnspecified_showsUpdate() { + installAndWaitTillPackageAdded( + APP_APK_NAME_31, + createAppMetadataWithNoSharing(), + PACKAGE_SOURCE_UNSPECIFIED, + waitTillBroadcastProcessed = true + ) + installAndWaitTillPackageAdded( + APP_APK_NAME_31, + createAppMetadataWithLocationSharingNoAds(), + PACKAGE_SOURCE_UNSPECIFIED + ) + grantFineLocationPermission(APP_PACKAGE_NAME) + + startAppDataSharingUpdatesActivity() + + try { + assertUpdatesPresent() + findView(By.textContains(APP_PACKAGE_NAME_SUBSTRING), true) + findView(By.textContains(NOW_SHARED_WITH_THIRD_PARTIES), true) + } finally { + pressBack() + } + } + + @Test + fun startActivityWithIntent_whenAppGrantedLocation_packageSourceOther_doesntShowUpdate() { + installAndWaitTillPackageAdded( + APP_APK_NAME_31, + createAppMetadataWithNoSharing(), + PACKAGE_SOURCE_OTHER, + waitTillBroadcastProcessed = true + ) + installAndWaitTillPackageAdded( + APP_APK_NAME_31, + createAppMetadataWithLocationSharingNoAds(), + PACKAGE_SOURCE_OTHER + ) + grantFineLocationPermission(APP_PACKAGE_NAME) + + startAppDataSharingUpdatesActivity() + + try { + assertNoUpdatesPresent() + } finally { + pressBack() + } + } + + @Test + fun startActivityWithIntent_whenAppGrantedLocation_packageSourceStore_showsUpdate() { + installAndWaitTillPackageAdded( + APP_APK_NAME_31, + createAppMetadataWithNoSharing(), + PACKAGE_SOURCE_STORE, + waitTillBroadcastProcessed = true + ) + installAndWaitTillPackageAdded( + APP_APK_NAME_31, + createAppMetadataWithLocationSharingNoAds(), + PACKAGE_SOURCE_STORE + ) + grantFineLocationPermission(APP_PACKAGE_NAME) + + startAppDataSharingUpdatesActivity() + + try { + assertUpdatesPresent() + findView(By.textContains(APP_PACKAGE_NAME_SUBSTRING), true) + findView(By.textContains(NOW_SHARED_WITH_THIRD_PARTIES), true) + } finally { + pressBack() + } + } + + @Test + fun startActivityWithIntent_whenAppGrantedLocation_packageSourceLocalFile_doesntShowUpdate() { + installAndWaitTillPackageAdded( + APP_APK_NAME_31, + createAppMetadataWithNoSharing(), + PACKAGE_SOURCE_LOCAL_FILE, + waitTillBroadcastProcessed = true + ) + installAndWaitTillPackageAdded( + APP_APK_NAME_31, + createAppMetadataWithLocationSharingNoAds(), + PACKAGE_SOURCE_LOCAL_FILE + ) + grantFineLocationPermission(APP_PACKAGE_NAME) + + startAppDataSharingUpdatesActivity() + + try { + assertNoUpdatesPresent() + } finally { + pressBack() + } + } + + @Test + fun startActivityWithIntent_whenAppGrantedLocation_packageSourceDownloaded_doesntShowUpdate() { + installAndWaitTillPackageAdded( + APP_APK_NAME_31, + createAppMetadataWithNoSharing(), + PACKAGE_SOURCE_DOWNLOADED_FILE, + waitTillBroadcastProcessed = true + ) + installAndWaitTillPackageAdded( + APP_APK_NAME_31, + createAppMetadataWithLocationSharingNoAds(), + PACKAGE_SOURCE_DOWNLOADED_FILE + ) + grantFineLocationPermission(APP_PACKAGE_NAME) + + startAppDataSharingUpdatesActivity() + + try { + assertNoUpdatesPresent() + } finally { + pressBack() + } + } + + /** Installs an app and waits for the package added broadcast to be dispatched. */ + private fun installAndWaitTillPackageAdded( + apkPath: String, + appMetadata: PersistableBundle, + packageSource: Int? = null, + waitTillBroadcastProcessed: Boolean = false + ) { + installPackageViaSession(apkPath, appMetadata, packageSource) + waitForBroadcasts() + // TODO(b/279455955): Investigate why this is necessary and remove if possible. + if (waitTillBroadcastProcessed) Thread.sleep(500) + } + + private fun assertUpdatesPresent() { + findView(By.descContains(DATA_SHARING_UPDATES), true) + findView(By.textContains(DATA_SHARING_UPDATES_SUBTITLE), true) + findView(By.textContains(UPDATES_IN_LAST_30_DAYS), true) + findView(By.textContains(DATA_SHARING_UPDATES_FOOTER_MESSAGE), true) + findView(By.textContains(LEARN_ABOUT_DATA_SHARING), shouldShowLearnMoreLink()) + } + + private fun assertNoUpdatesPresent() { + findView(By.descContains(DATA_SHARING_UPDATES), true) + findView(By.textContains(DATA_SHARING_UPDATES_SUBTITLE), true) + findView(By.textContains(DATA_SHARING_NO_UPDATES_MESSAGE), true) + findView(By.textContains(APP_PACKAGE_NAME_SUBSTRING), false) + findView(By.textContains(UPDATES_IN_LAST_30_DAYS), false) + findView(By.textContains(DATA_SHARING_UPDATES_FOOTER_MESSAGE), true) + findView(By.textContains(LEARN_ABOUT_DATA_SHARING), shouldShowLearnMoreLink()) + } + + private fun grantFineLocationPermission(packageName: String) { + uiAutomation.grantRuntimePermission( + packageName, + android.Manifest.permission.ACCESS_FINE_LOCATION + ) + } + private fun grantCoarseLocationPermission(packageName: String) { + uiAutomation.grantRuntimePermission( + packageName, + android.Manifest.permission.ACCESS_COARSE_LOCATION + ) + } + private fun grantBackgroundLocationPermission(packageName: String) { + uiAutomation.grantRuntimePermission( + packageName, + android.Manifest.permission.ACCESS_BACKGROUND_LOCATION + ) + } + + private fun assertHelpCenterLinkClickSuccessful() { + runWithShellPermissionIdentity { + val runningTasks = activityManager!!.getRunningTasks(5) + + Log.v(TAG, "# running tasks: ${runningTasks.size}") + assertFalse("Expected runningTasks to not be empty", runningTasks.isEmpty()) + + runningTasks.forEachIndexed { index, runningTaskInfo -> + Log.v(TAG, "task $index ${runningTaskInfo.baseIntent}") + } + + val taskInfo = runningTasks[0] + val observedIntentAction = taskInfo.baseIntent.action + val observedIntentDataString = taskInfo.baseIntent.dataString + val observedIntentScheme: String? = taskInfo.baseIntent.scheme + + Log.v(TAG, "task base intent: ${taskInfo.baseIntent}") + assertEquals("Unexpected intent action", Intent.ACTION_VIEW, observedIntentAction) + + val expectedUrl = getPermissionControllerResString(HELP_CENTER_URL_ID)!! + assertFalse(observedIntentDataString.isNullOrEmpty()) + assertTrue(observedIntentDataString?.startsWith(expectedUrl) ?: false) + + assertFalse(observedIntentScheme.isNullOrEmpty()) + assertEquals("https", observedIntentScheme) + } + } + + private fun shouldShowLearnMoreLink(): Boolean { + return !getPermissionControllerResString(HELP_CENTER_URL_ID).isNullOrEmpty() + } + + /** Companion object for [AppDataSharingUpdatesTest]. */ + companion object { + private val TAG = AppDataSharingUpdatesTest::class.java.simpleName + + private const val HELP_CENTER_URL_ID = "data_sharing_help_center_link" + private const val HELP_CENTER_TIMEOUT_MILLIS: Long = 20000 + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/AppMetadata.kt b/tests/cts/permissionui/src/android/permissionui/cts/AppMetadata.kt new file mode 100644 index 0000000000000000000000000000000000000000..8c61f03662305050748635c9e12d7937f685f5be --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/AppMetadata.kt @@ -0,0 +1,214 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.os.PersistableBundle + +/** Helper methods for creating test app metadata [PersistableBundle] */ +object AppMetadata { + /** Returns empty App Metadata [PersistableBundle] representation */ + fun createEmptyAppMetadata(): PersistableBundle { + return PersistableBundle() + } + + /** Returns valid App Metadata [PersistableBundle] representation */ + fun createDefaultAppMetadata(): PersistableBundle { + val approximateLocationBundle = + PersistableBundle().apply { putIntArray(KEY_PURPOSES, (1..7).toList().toIntArray()) } + + val locationBundle = + PersistableBundle().apply { + putPersistableBundle(APPROX_LOCATION, approximateLocationBundle) + } + + val dataSharedBundle = + PersistableBundle().apply { putPersistableBundle(LOCATION_CATEGORY, locationBundle) } + + val dataLabelBundle = + PersistableBundle().apply { putPersistableBundle(KEY_DATA_SHARED, dataSharedBundle) } + + val safetyLabelBundle = + PersistableBundle().apply { + putLong(KEY_VERSION, INITIAL_SAFETY_LABELS_VERSION) + putPersistableBundle(KEY_DATA_LABELS, dataLabelBundle) + } + + return PersistableBundle().apply { + putLong(KEY_VERSION, INITIAL_TOP_LEVEL_VERSION) + putPersistableBundle(KEY_SAFETY_LABELS, safetyLabelBundle) + } + } + + /** + * Returns invalid App Metadata [PersistableBundle] representation. Invalidity due to invalid + * label name usage + */ + fun createInvalidAppMetadata(): PersistableBundle { + val validAppMetaData = createDefaultAppMetadata() + val validSafetyLabel = validAppMetaData.getPersistableBundle(KEY_SAFETY_LABELS) + + return PersistableBundle().apply { + putLong(KEY_VERSION, INITIAL_TOP_LEVEL_VERSION) + putPersistableBundle(KEY_INVALID, validSafetyLabel) + } + } + + /** + * Returns invalid App Metadata [PersistableBundle] representation. Invalidity due to no top + * level meta data version number. + */ + fun createInvalidAppMetadataWithoutTopLevelVersion(): PersistableBundle { + val validAppMetaData = createDefaultAppMetadata() + val validSafetyLabel = validAppMetaData.getPersistableBundle(KEY_SAFETY_LABELS) + + return PersistableBundle().apply { + putPersistableBundle(KEY_SAFETY_LABELS, validSafetyLabel) + } + } + + /** + * Returns invalid App Metadata [PersistableBundle] representation. Invalidity due to invalid + * top level meta data version number. + */ + fun createInvalidAppMetadataWithInvalidTopLevelVersion(): PersistableBundle { + val validAppMetaData = createDefaultAppMetadata() + val validSafetyLabel = validAppMetaData.getPersistableBundle(KEY_SAFETY_LABELS) + + return PersistableBundle().apply { + putLong(KEY_VERSION, INVALID_TOP_LEVEL_VERSION) + putPersistableBundle(KEY_SAFETY_LABELS, validSafetyLabel) + } + } + + /** + * Returns invalid App Metadata [PersistableBundle] representation. Invalidity due to no safety + * label version number. + */ + fun createInvalidAppMetadataWithoutSafetyLabelVersion(): PersistableBundle { + val validAppMetaData = createDefaultAppMetadata() + val invalidSafetyLabel = + validAppMetaData.getPersistableBundle(KEY_SAFETY_LABELS).apply { + this?.remove(KEY_VERSION) + } + + return PersistableBundle().apply { + putLong(KEY_VERSION, INITIAL_TOP_LEVEL_VERSION) + putPersistableBundle(KEY_SAFETY_LABELS, invalidSafetyLabel) + } + } + + /** + * Returns invalid App Metadata [PersistableBundle] representation. Invalidity due to invalid + * safety label version number. + */ + fun createInvalidAppMetadataWithInvalidSafetyLabelVersion(): PersistableBundle { + val validAppMetaData = createDefaultAppMetadata() + val invalidSafetyLabel = + validAppMetaData.getPersistableBundle(KEY_SAFETY_LABELS)?.apply { + putLong(KEY_VERSION, INVALID_SAFETY_LABELS_VERSION) + } + + return PersistableBundle().apply { + putLong(KEY_VERSION, INITIAL_TOP_LEVEL_VERSION) + putPersistableBundle(KEY_SAFETY_LABELS, invalidSafetyLabel) + } + } + /** Returns an App Metadata [PersistableBundle] representation where no data is shared. */ + fun createAppMetadataWithNoSharing(): PersistableBundle { + return createMetadataWithDataShared(PersistableBundle()) + } + + /** + * Returns an App Metadata [PersistableBundle] representation where location data is shared, but + * not for advertising purpose. + */ + fun createAppMetadataWithLocationSharingNoAds(): PersistableBundle { + val locationBundle = + PersistableBundle().apply { + putPersistableBundle( + APPROX_LOCATION, + PersistableBundle().apply { + putIntArray( + KEY_PURPOSES, + listOf(PURPOSE_FRAUD_PREVENTION_SECURITY).toIntArray() + ) + } + ) + } + + val dataSharedBundle = + PersistableBundle().apply { putPersistableBundle(LOCATION_CATEGORY, locationBundle) } + + return createMetadataWithDataShared(dataSharedBundle) + } + + /** + * Returns an App Metadata [PersistableBundle] representation where location data is shared, + * including for advertising purpose. + */ + fun createAppMetadataWithLocationSharingAds(): PersistableBundle { + val locationBundle = + PersistableBundle().apply { + putPersistableBundle( + APPROX_LOCATION, + PersistableBundle().apply { + putIntArray(KEY_PURPOSES, listOf(PURPOSE_ADVERTISING).toIntArray()) + } + ) + } + + val dataSharedBundle = + PersistableBundle().apply { putPersistableBundle(LOCATION_CATEGORY, locationBundle) } + + return createMetadataWithDataShared(dataSharedBundle) + } + + private fun createMetadataWithDataShared( + dataSharedBundle: PersistableBundle + ): PersistableBundle { + val dataLabelBundle = + PersistableBundle().apply { putPersistableBundle(KEY_DATA_SHARED, dataSharedBundle) } + + val safetyLabelBundle = + PersistableBundle().apply { + putLong(KEY_VERSION, INITIAL_SAFETY_LABELS_VERSION) + putPersistableBundle(KEY_DATA_LABELS, dataLabelBundle) + } + + return PersistableBundle().apply { + putLong(KEY_VERSION, INITIAL_TOP_LEVEL_VERSION) + putPersistableBundle(KEY_SAFETY_LABELS, safetyLabelBundle) + } + } + + private const val INITIAL_SAFETY_LABELS_VERSION = 1L + private const val INITIAL_TOP_LEVEL_VERSION = 1L + private const val INVALID_SAFETY_LABELS_VERSION = -1L + private const val INVALID_TOP_LEVEL_VERSION = 0L + + private const val LOCATION_CATEGORY = "location" + private const val APPROX_LOCATION = "approx_location" + private const val PURPOSE_FRAUD_PREVENTION_SECURITY = 4 + private const val PURPOSE_ADVERTISING = 5 + + private const val KEY_VERSION = "version" + private const val KEY_SAFETY_LABELS = "safety_labels" + private const val KEY_INVALID = "invalid_safety_labels" + private const val KEY_DATA_SHARED = "data_shared" + private const val KEY_DATA_LABELS = "data_labels" + private const val KEY_PURPOSES = "purposes" +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/AppPermissionTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/AppPermissionTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..99fed6b797fae8f5cdcba93cbd09a6062831a95c --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/AppPermissionTest.kt @@ -0,0 +1,213 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.Manifest.permission.ACCESS_COARSE_LOCATION +import android.os.Build +import android.provider.DeviceConfig +import android.provider.Settings +import android.provider.Settings.Secure.USER_SETUP_COMPLETE +import androidx.test.filters.FlakyTest +import androidx.test.filters.SdkSuppress +import androidx.test.uiautomator.By +import com.android.compatibility.common.util.DeviceConfigStateChangerRule +import com.android.modules.utils.build.SdkLevel +import com.google.common.truth.Truth +import org.junit.Assume +import org.junit.Before +import org.junit.Rule +import org.junit.Test + +/** App Permission page UI tests. */ +@SdkSuppress(minSdkVersion = Build.VERSION_CODES.UPSIDE_DOWN_CAKE, codeName = "UpsideDownCake") +@FlakyTest +class AppPermissionTest : BaseUsePermissionTest() { + + @get:Rule + val deviceConfigPermissionRationaleEnabled = + DeviceConfigStateChangerRule( + context, + DeviceConfig.NAMESPACE_PRIVACY, + PERMISSION_RATIONALE_ENABLED, + true.toString() + ) + + @Before + fun setup() { + Assume.assumeTrue("Permission rationale is only available on U+", SdkLevel.isAtLeastU()) + Assume.assumeFalse(isAutomotive) + Assume.assumeFalse(isTv) + Assume.assumeFalse(isWatch) + + val userSetupComplete = + Settings.Secure.getInt(context.contentResolver, USER_SETUP_COMPLETE, 0) == 1 + + Truth.assertWithMessage("User setup must be complete before running this test") + .that(userSetupComplete) + .isTrue() + } + + @Test + fun showPermissionRationaleContainer_withInstallSourceAndMetadata_packageSourceUnspecified() { + // Unspecified is the default, so no need to explicitly set it + installPackageWithInstallSourceAndMetadata(APP_APK_NAME_31) + + navigateToIndividualPermissionSetting(ACCESS_COARSE_LOCATION) + + assertAppPermissionRationaleContainerIsVisible(true) + + clickPermissionRationaleContentInAppPermission() + assertPermissionRationaleDialogIsVisible(expected = true, showSettingsSection = false) + } + + @Test + fun showPermissionRationaleContainer_withInstallSourceAndMetadata_packageSourceStore() { + installPackageWithInstallSourceAndMetadataFromStore(APP_APK_NAME_31) + + navigateToIndividualPermissionSetting(ACCESS_COARSE_LOCATION) + + assertAppPermissionRationaleContainerIsVisible(true) + + clickPermissionRationaleContentInAppPermission() + assertPermissionRationaleDialogIsVisible(expected = true, showSettingsSection = false) + } + + @Test + fun showPermissionRationaleContainer_withInstallSourceAndMetadata_packageSourceLocalFile() { + installPackageWithInstallSourceAndMetadataFromLocalFile(APP_APK_NAME_31) + + navigateToIndividualPermissionSetting(ACCESS_COARSE_LOCATION) + + assertAppPermissionRationaleContainerIsVisible(false) + } + + @Test + fun showPermissionRationaleContainer_withInstallSourceAndMetadata_packageSourceDownloadedFile() { + installPackageWithInstallSourceAndMetadataFromDownloadedFile(APP_APK_NAME_31) + + navigateToIndividualPermissionSetting(ACCESS_COARSE_LOCATION) + + assertAppPermissionRationaleContainerIsVisible(false) + } + + @Test + fun showPermissionRationaleContainer_withInstallSourceAndMetadata_packageSourceOther() { + installPackageWithInstallSourceAndMetadataFromOther(APP_APK_NAME_31) + + navigateToIndividualPermissionSetting(ACCESS_COARSE_LOCATION) + + assertAppPermissionRationaleContainerIsVisible(false) + } + + @Test + fun noShowPermissionRationaleContainer_withInstallSourceAndNoMetadata() { + installPackageWithInstallSourceAndNoMetadata(APP_APK_NAME_31) + + navigateToIndividualPermissionSetting(ACCESS_COARSE_LOCATION) + + assertAppPermissionRationaleContainerIsVisible(false) + } + + @Test + fun noShowPermissionRationaleContainer_withInstallSourceAndNullMetadata() { + installPackageWithInstallSourceAndNoMetadata(APP_APK_NAME_31) + + navigateToIndividualPermissionSetting(ACCESS_COARSE_LOCATION) + + assertAppPermissionRationaleContainerIsVisible(false) + } + + @Test + fun noShowPermissionRationaleContainer_withInstallSourceAndEmptyMetadata() { + installPackageWithInstallSourceAndEmptyMetadata(APP_APK_NAME_31) + + navigateToIndividualPermissionSetting(ACCESS_COARSE_LOCATION) + + assertAppPermissionRationaleContainerIsVisible(false) + } + + @Test + fun noShowPermissionRationaleContainer_withInstallSourceAndInvalidMetadata() { + installPackageWithInstallSourceAndInvalidMetadata(APP_APK_NAME_31) + + navigateToIndividualPermissionSetting(ACCESS_COARSE_LOCATION) + + assertAppPermissionRationaleContainerIsVisible(false) + } + + @Test + fun noShowPermissionRationaleContainer_withInstallSourceAndMetadataWithoutTopLevelVersion() { + installPackageWithInstallSourceAndMetadataWithoutTopLevelVersion(APP_APK_NAME_31) + + navigateToIndividualPermissionSetting(ACCESS_COARSE_LOCATION) + + assertAppPermissionRationaleContainerIsVisible(false) + } + + @Test + fun noShowPermissionRationaleContainer_withInstallSourceAndMetadataWithInvalidTopLevelVersion() { + installPackageWithInstallSourceAndMetadataWithInvalidTopLevelVersion(APP_APK_NAME_31) + + navigateToIndividualPermissionSetting(ACCESS_COARSE_LOCATION) + + assertAppPermissionRationaleContainerIsVisible(false) + } + + @Test + fun noShowPermissionRationaleContainer_withInstallSourceAndMetadataWithoutSafetyLabelVersion() { + installPackageWithInstallSourceAndMetadataWithoutSafetyLabelVersion(APP_APK_NAME_31) + + navigateToIndividualPermissionSetting(ACCESS_COARSE_LOCATION) + + assertAppPermissionRationaleContainerIsVisible(false) + } + + @Test + fun noShowPermissionRationaleContainer_withInstallSourceAndMetadataWithInvalidSafetyLabelVersion() { + installPackageWithInstallSourceAndMetadataWithInvalidSafetyLabelVersion(APP_APK_NAME_31) + + navigateToIndividualPermissionSetting(ACCESS_COARSE_LOCATION) + + assertAppPermissionRationaleContainerIsVisible(false) + } + + @Test + fun noShowPermissionRationaleContainer_withOutInstallSource() { + installPackageWithoutInstallSource(APP_APK_PATH_31) + + navigateToIndividualPermissionSetting(ACCESS_COARSE_LOCATION) + + assertAppPermissionRationaleContainerIsVisible(false) + } + + @Test + fun noShowPermissionRationaleContainer_withoutMetadata() { + installPackageWithInstallSourceAndNoMetadata(APP_APK_NAME_31) + + navigateToIndividualPermissionSetting(ACCESS_COARSE_LOCATION) + + assertAppPermissionRationaleContainerIsVisible(false) + } + + private fun assertAppPermissionRationaleContainerIsVisible(expected: Boolean) { + findView(By.res(APP_PERMISSION_RATIONALE_CONTAINER_VIEW), expected) + } + + companion object { + private const val PERMISSION_RATIONALE_ENABLED = "permission_rationale_enabled" + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/BasePermissionTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/BasePermissionTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..b47fba56f8c5757fda8d02f2aa113b89b0d2a9b2 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/BasePermissionTest.kt @@ -0,0 +1,497 @@ +/* + * 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 android.permissionui.cts + +import android.app.Instrumentation +import android.app.PendingIntent +import android.app.PendingIntent.FLAG_MUTABLE +import android.app.PendingIntent.FLAG_UPDATE_CURRENT +import android.app.UiAutomation +import android.content.BroadcastReceiver +import android.content.ComponentName +import android.content.Context +import android.content.Context.RECEIVER_EXPORTED +import android.content.Intent +import android.content.IntentFilter +import android.content.pm.PackageInstaller +import android.content.pm.PackageInstaller.EXTRA_STATUS +import android.content.pm.PackageInstaller.EXTRA_STATUS_MESSAGE +import android.content.pm.PackageInstaller.STATUS_FAILURE_INVALID +import android.content.pm.PackageInstaller.STATUS_SUCCESS +import android.content.pm.PackageInstaller.SessionParams +import android.content.pm.PackageManager +import android.content.res.Resources +import android.os.PersistableBundle +import android.os.SystemClock +import android.platform.test.rule.ScreenRecordRule +import android.provider.DeviceConfig +import android.provider.Settings +import android.text.Html +import android.util.Log +import androidx.test.core.app.ActivityScenario +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.uiautomator.By +import androidx.test.uiautomator.BySelector +import androidx.test.uiautomator.StaleObjectException +import androidx.test.uiautomator.UiDevice +import androidx.test.uiautomator.UiObject2 +import androidx.test.uiautomator.UiScrollable +import androidx.test.uiautomator.UiSelector +import androidx.test.uiautomator.Until +import com.android.compatibility.common.util.DisableAnimationRule +import com.android.compatibility.common.util.FreezeRotationRule +import com.android.compatibility.common.util.SystemUtil.runShellCommand +import com.android.compatibility.common.util.SystemUtil.runShellCommandOrThrow +import com.android.compatibility.common.util.SystemUtil.runWithShellPermissionIdentity +import com.android.compatibility.common.util.UiAutomatorUtils2 +import com.android.modules.utils.build.SdkLevel +import com.google.common.truth.Truth.assertThat +import java.io.File +import java.util.concurrent.CompletableFuture +import java.util.concurrent.LinkedBlockingQueue +import java.util.concurrent.TimeUnit +import java.util.regex.Pattern +import org.junit.After +import org.junit.Assert +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNotEquals +import org.junit.Before +import org.junit.Rule + +@ScreenRecordRule.ScreenRecord +abstract class BasePermissionTest { + companion object { + private const val TAG = "BasePermissionTest" + + private const val INSTALL_ACTION_CALLBACK = "BasePermissionTest.install_callback" + + private const val MAX_SWIPES = 5 + + const val APK_DIRECTORY = "/data/local/tmp/cts-permissionui" + + const val QUICK_CHECK_TIMEOUT_MILLIS = 100L + const val IDLE_TIMEOUT_MILLIS: Long = 1000 + const val UNEXPECTED_TIMEOUT_MILLIS = 1000 + const val TIMEOUT_MILLIS: Long = 20000 + const val PACKAGE_INSTALLER_TIMEOUT = 60000L + const val NEW_WINDOW_TIMEOUT_MILLIS: Long = 20_000 + + @JvmStatic + protected val instrumentation: Instrumentation = + InstrumentationRegistry.getInstrumentation() + @JvmStatic protected val context: Context = instrumentation.context + @JvmStatic protected val uiAutomation: UiAutomation = instrumentation.uiAutomation + @JvmStatic protected val uiDevice: UiDevice = UiDevice.getInstance(instrumentation) + @JvmStatic protected val packageManager: PackageManager = context.packageManager + private val packageInstaller = packageManager.packageInstaller + @JvmStatic + private val mPermissionControllerResources: Resources = + context + .createPackageContext(context.packageManager.permissionControllerPackageName, 0) + .resources + + @JvmStatic + protected val isTv = packageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK) + @JvmStatic + protected val isWatch = packageManager.hasSystemFeature(PackageManager.FEATURE_WATCH) + @JvmStatic + protected val isAutomotive = + packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE) + } + + @get:Rule val screenRecordRule = ScreenRecordRule(false, false) + + @get:Rule val disableAnimationRule = DisableAnimationRule() + + @get:Rule val freezeRotationRule = FreezeRotationRule() + + var activityScenario: ActivityScenario? = null + + data class SessionResult(val status: Int?) + + /** If a status was received the value of the status, otherwise null */ + private var installSessionResult = LinkedBlockingQueue() + + private val installSessionResultReceiver = + object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + val status = intent.getIntExtra(EXTRA_STATUS, STATUS_FAILURE_INVALID) + val msg = intent.getStringExtra(EXTRA_STATUS_MESSAGE) + Log.d(TAG, "status: $status, msg: $msg") + + installSessionResult.offer(SessionResult(status)) + } + } + + private var screenTimeoutBeforeTest: Long = 0L + + @Before + fun setUp() { + runWithShellPermissionIdentity { + screenTimeoutBeforeTest = + Settings.System.getLong(context.contentResolver, Settings.System.SCREEN_OFF_TIMEOUT) + Settings.System.putLong( + context.contentResolver, + Settings.System.SCREEN_OFF_TIMEOUT, + 1800000L + ) + } + + uiDevice.wakeUp() + runShellCommand(instrumentation, "wm dismiss-keyguard") + + uiDevice.findObject(By.text("Close"))?.click() + } + + @Before + fun registerInstallSessionResultReceiver() { + context.registerReceiver( + installSessionResultReceiver, + IntentFilter(INSTALL_ACTION_CALLBACK), + RECEIVER_EXPORTED + ) + } + + @After + fun unregisterInstallSessionResultReceiver() { + try { + context.unregisterReceiver(installSessionResultReceiver) + } catch (ignored: IllegalArgumentException) {} + } + + @After + fun tearDown() { + runWithShellPermissionIdentity { + Settings.System.putLong( + context.contentResolver, + Settings.System.SCREEN_OFF_TIMEOUT, + screenTimeoutBeforeTest + ) + } + + try { + activityScenario?.close() + } catch (e: NullPointerException) { + // ignore + } + + pressHome() + } + + protected fun setDeviceConfigPrivacyProperty( + propertyName: String, + value: String, + ) { + runWithShellPermissionIdentity(instrumentation.uiAutomation) { + val valueWasSet = + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_PRIVACY, + /* name = */ propertyName, + /* value = */ value, + /* makeDefault = */ false + ) + check(valueWasSet) { "Could not set $propertyName to $value" } + } + } + + protected fun getPermissionControllerString(res: String, vararg formatArgs: Any): Pattern { + val textWithHtml = + mPermissionControllerResources.getString( + mPermissionControllerResources.getIdentifier( + res, + "string", + "com.android.permissioncontroller" + ), + *formatArgs + ) + val textWithoutHtml = Html.fromHtml(textWithHtml, 0).toString() + return Pattern.compile( + Pattern.quote(textWithoutHtml), + Pattern.CASE_INSENSITIVE or Pattern.UNICODE_CASE + ) + } + + protected fun getPermissionControllerResString(res: String): String? { + try { + return mPermissionControllerResources.getString( + mPermissionControllerResources.getIdentifier( + res, + "string", + "com.android.permissioncontroller" + ) + ) + } catch (e: Resources.NotFoundException) { + return null + } + } + + protected fun byAnyText(vararg texts: String?): BySelector { + var regex = "" + for (text in texts) { + if (text != null) { + regex = regex + Pattern.quote(text) + "|" + } + } + if (regex.endsWith("|")) { + regex = regex.dropLast(1) + } + return By.text(Pattern.compile(regex, Pattern.CASE_INSENSITIVE or Pattern.UNICODE_CASE)) + } + + protected open fun installPackage( + apkPath: String, + reinstall: Boolean = false, + grantRuntimePermissions: Boolean = false, + expectSuccess: Boolean = true, + installSource: String? = null + ) { + val output = + runShellCommandOrThrow( + "pm install${if (SdkLevel.isAtLeastU()) " --bypass-low-target-sdk-block" else ""} " + + "${if (reinstall) " -r" else ""}${if (grantRuntimePermissions) " -g" + else ""}${if (installSource != null) " -i $installSource" else ""} $apkPath" + ) + .trim() + if (expectSuccess) { + assertEquals("Success", output) + } else { + assertNotEquals("Success", output) + } + } + + protected fun installPackageViaSession( + apkName: String, + appMetadata: PersistableBundle? = null, + packageSource: Int? = null + ) { + val (sessionId, session) = createPackageInstallerSession(packageSource) + runWithShellPermissionIdentity { + writePackageInstallerSession(session, apkName) + if (appMetadata != null) { + setAppMetadata(session, appMetadata) + } + commitPackageInstallerSession(session) + + // No need to click installer UI here due to running in shell permission identity and + // not needing user interaciton to complete install. Install should have succeeded. + val result = getInstallSessionResult() + assertThat(result.status).isEqualTo(STATUS_SUCCESS) + } + } + + protected fun uninstallPackage(packageName: String, requireSuccess: Boolean = true) { + val output = runShellCommand("pm uninstall $packageName").trim() + if (requireSuccess) { + assertEquals("Success", output) + } + } + + protected fun waitFindObject(selector: BySelector): UiObject2 { + return findObjectWithRetry({ t -> UiAutomatorUtils2.waitFindObject(selector, t) })!! + } + + protected fun waitFindObject(selector: BySelector, timeoutMillis: Long): UiObject2 { + return findObjectWithRetry( + { t -> UiAutomatorUtils2.waitFindObject(selector, t) }, + timeoutMillis + )!! + } + + protected fun waitFindObjectOrNull(selector: BySelector): UiObject2? { + return findObjectWithRetry({ t -> UiAutomatorUtils2.waitFindObjectOrNull(selector, t) }) + } + + protected fun waitFindObjectOrNull(selector: BySelector, timeoutMillis: Long): UiObject2? { + return findObjectWithRetry( + { t -> UiAutomatorUtils2.waitFindObjectOrNull(selector, t) }, + timeoutMillis + ) + } + + private fun findObjectWithRetry( + automatorMethod: (timeoutMillis: Long) -> UiObject2?, + timeoutMillis: Long = 20_000L + ): UiObject2? { + val startTime = SystemClock.elapsedRealtime() + return try { + automatorMethod(timeoutMillis) + } catch (e: StaleObjectException) { + val remainingTime = timeoutMillis - (SystemClock.elapsedRealtime() - startTime) + if (remainingTime <= 0) { + throw e + } + automatorMethod(remainingTime) + } + } + + protected fun click(selector: BySelector, timeoutMillis: Long = 20_000) { + waitFindObject(selector, timeoutMillis).click() + } + + protected fun clickAndWaitForWindowTransition( + selector: BySelector, + timeoutMillis: Long = 20_000 + ) { + waitFindObject(selector, timeoutMillis) + .clickAndWait(Until.newWindow(), NEW_WINDOW_TIMEOUT_MILLIS) + } + + protected fun findView(selector: BySelector, expected: Boolean) { + val timeoutMs = + if (expected) { + 10000L + } else { + 1000L + } + + val exception = + try { + waitFindObject(selector, timeoutMs) + null + } catch (e: Exception) { + e + } + Assert.assertTrue("Expected to find view: $expected", (exception == null) == expected) + } + + protected fun clickPermissionControllerUi(selector: BySelector, timeoutMillis: Long = 20_000) { + click(selector.pkg(context.packageManager.permissionControllerPackageName), timeoutMillis) + } + + /** + * Clicks Permission Controller UI with a swipe based timeout instead of a time based one + * + * Use this if finding some Permission Controller UI isn't time bound. + * + * @param text The text to search for + * @param maxSearchSwipes See {@link UiScrollable#setMaxSearchSwipes} + */ + protected fun clickPermissionControllerUi(text: String, maxSearchSwipes: Int = 5) { + scrollToText(text, maxSearchSwipes).click() + } + + private fun scrollToText(text: String, maxSearchSwipes: Int = MAX_SWIPES): UiObject2 { + val scrollable = + UiScrollable(UiSelector().scrollable(true)).apply { + this.maxSearchSwipes = maxSearchSwipes + } + + scrollable.scrollTextIntoView(text) + + val foundObject = + uiDevice.findObject( + By.text(text).pkg(context.packageManager.permissionControllerPackageName) + ) + Assert.assertNotNull("View not found after scrolling", foundObject) + + return foundObject + } + + protected fun pressBack() { + uiDevice.pressBack() + } + + protected fun pressHome() { + uiDevice.pressHome() + } + + protected fun pressDPadDown() { + uiDevice.pressDPadDown() + waitForIdle() + } + + protected fun waitForIdle() = uiAutomation.waitForIdle(IDLE_TIMEOUT_MILLIS, TIMEOUT_MILLIS) + + protected fun startActivityForFuture( + intent: Intent + ): CompletableFuture = + CompletableFuture().also { + activityScenario = + ActivityScenario.launch(StartForFutureActivity::class.java).onActivity { activity -> + activity.startActivityForFuture(intent, it) + } + } + + open fun enableComponent(component: ComponentName) { + packageManager.setComponentEnabledSetting( + component, + PackageManager.COMPONENT_ENABLED_STATE_ENABLED, + PackageManager.DONT_KILL_APP + ) + } + + open fun disableComponent(component: ComponentName) { + packageManager.setComponentEnabledSetting( + component, + PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP + ) + } + + private fun createPackageInstallerSession( + packageSource: Int? = null + ): Pair { + // Create session + val sessionParam = SessionParams(SessionParams.MODE_FULL_INSTALL) + if (packageSource != null) { + sessionParam.setPackageSource(packageSource) + } + + val sessionId = packageInstaller.createSession(sessionParam) + val session = packageInstaller.openSession(sessionId)!! + + return Pair(sessionId, session) + } + + private fun writePackageInstallerSession(session: PackageInstaller.Session, apkName: String) { + val apkFile = File(APK_DIRECTORY, apkName) + // Write data to session + apkFile.inputStream().use { fileOnDisk -> + session + .openWrite(/* name= */ apkName, /* offsetBytes= */ 0, /* lengthBytes= */ -1) + .use { sessionFile -> fileOnDisk.copyTo(sessionFile) } + } + } + + private fun commitPackageInstallerSession(session: PackageInstaller.Session) { + // PendingIntent that triggers a INSTALL_ACTION_CALLBACK broadcast that gets received by + // installSessionResultReceiver when install actions occur with this session + val installActionPendingIntent = + PendingIntent.getBroadcast( + context, + 0, + Intent(INSTALL_ACTION_CALLBACK).setPackage(context.packageName), + FLAG_UPDATE_CURRENT or FLAG_MUTABLE + ) + session.commit(installActionPendingIntent.intentSender) + } + + private fun setAppMetadata(session: PackageInstaller.Session, data: PersistableBundle) { + try { + session.setAppMetadata(data) + } catch (e: Exception) { + session.abandon() + throw e + } + } + + /** Wait for session's install result and return it */ + private fun getInstallSessionResult(timeout: Long = PACKAGE_INSTALLER_TIMEOUT): SessionResult { + return installSessionResult.poll(timeout, TimeUnit.MILLISECONDS) + ?: SessionResult(null /* status */) + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/BaseUsePermissionTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/BaseUsePermissionTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..d24f4fd2717db5ce8d85c241c1fec7a7404cd79e --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/BaseUsePermissionTest.kt @@ -0,0 +1,1327 @@ +/* + * 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 android.permissionui.cts + +import android.Manifest +import android.app.Activity +import android.app.ActivityManager +import android.app.Instrumentation +import android.content.ComponentName +import android.content.Intent +import android.content.Intent.ACTION_REVIEW_APP_DATA_SHARING_UPDATES +import android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK +import android.content.Intent.FLAG_ACTIVITY_NEW_TASK +import android.content.pm.PackageInstaller.PACKAGE_SOURCE_DOWNLOADED_FILE +import android.content.pm.PackageInstaller.PACKAGE_SOURCE_LOCAL_FILE +import android.content.pm.PackageInstaller.PACKAGE_SOURCE_OTHER +import android.content.pm.PackageInstaller.PACKAGE_SOURCE_STORE +import android.content.pm.PackageManager +import android.net.Uri +import android.os.Build +import android.os.Process +import android.provider.DeviceConfig +import android.provider.Settings +import android.text.Spanned +import android.text.style.ClickableSpan +import android.view.View +import androidx.test.uiautomator.By +import androidx.test.uiautomator.BySelector +import androidx.test.uiautomator.StaleObjectException +import androidx.test.uiautomator.UiObjectNotFoundException +import androidx.test.uiautomator.UiScrollable +import androidx.test.uiautomator.UiSelector +import androidx.test.uiautomator.Until +import com.android.compatibility.common.util.SystemUtil +import com.android.compatibility.common.util.SystemUtil.callWithShellPermissionIdentity +import com.android.compatibility.common.util.SystemUtil.eventually +import com.android.compatibility.common.util.SystemUtil.runWithShellPermissionIdentity +import com.android.modules.utils.build.SdkLevel +import java.util.concurrent.CompletableFuture +import java.util.concurrent.TimeUnit +import java.util.regex.Pattern +import org.junit.After +import org.junit.Assert +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNotNull +import org.junit.Assert.assertTrue +import org.junit.Before + +abstract class BaseUsePermissionTest : BasePermissionTest() { + companion object { + const val APP_APK_NAME_31 = "CtsUsePermissionApp31.apk" + + const val APP_APK_PATH_22 = "$APK_DIRECTORY/CtsUsePermissionApp22.apk" + const val APP_APK_PATH_22_CALENDAR_ONLY = + "$APK_DIRECTORY/CtsUsePermissionApp22CalendarOnly.apk" + const val APP_APK_PATH_22_NONE = "$APK_DIRECTORY/CtsUsePermissionApp22None.apk" + const val APP_APK_PATH_23 = "$APK_DIRECTORY/CtsUsePermissionApp23.apk" + const val APP_APK_PATH_25 = "$APK_DIRECTORY/CtsUsePermissionApp25.apk" + const val APP_APK_PATH_26 = "$APK_DIRECTORY/CtsUsePermissionApp26.apk" + const val APP_APK_PATH_28 = "$APK_DIRECTORY/CtsUsePermissionApp28.apk" + const val APP_APK_PATH_29 = "$APK_DIRECTORY/CtsUsePermissionApp29.apk" + const val APP_APK_PATH_30 = "$APK_DIRECTORY/CtsUsePermissionApp30.apk" + const val APP_APK_PATH_31 = "$APK_DIRECTORY/$APP_APK_NAME_31" + const val APP_APK_PATH_32 = "$APK_DIRECTORY/CtsUsePermissionApp32.apk" + + const val APP_APK_PATH_30_WITH_BACKGROUND = + "$APK_DIRECTORY/CtsUsePermissionApp30WithBackground.apk" + const val APP_APK_PATH_30_WITH_BLUETOOTH = + "$APK_DIRECTORY/CtsUsePermissionApp30WithBluetooth.apk" + const val APP_APK_PATH_LATEST = "$APK_DIRECTORY/CtsUsePermissionAppLatest.apk" + const val APP_APK_PATH_LATEST_NONE = "$APK_DIRECTORY/CtsUsePermissionAppLatestNone.apk" + const val APP_APK_PATH_WITH_OVERLAY = "$APK_DIRECTORY/CtsUsePermissionAppWithOverlay.apk" + const val APP_APK_PATH_CREATE_NOTIFICATION_CHANNELS_31 = + "$APK_DIRECTORY/CtsCreateNotificationChannelsApp31.apk" + const val APP_APK_PATH_MEDIA_PERMISSION_33_WITH_STORAGE = + "$APK_DIRECTORY/CtsMediaPermissionApp33WithStorage.apk" + const val APP_APK_PATH_IMPLICIT_USER_SELECT_STORAGE = + "$APK_DIRECTORY/CtsUsePermissionAppImplicitUserSelectStorage.apk" + const val APP_APK_PATH_STORAGE_33 = "$APK_DIRECTORY/CtsUsePermissionAppStorage33.apk" + const val APP_APK_PATH_OTHER_APP = "$APK_DIRECTORY/CtsDifferentPkgNameApp.apk" + const val APP_PACKAGE_NAME = "android.permissionui.cts.usepermission" + const val OTHER_APP_PACKAGE_NAME = "android.permissionui.cts.usepermissionother" + const val TEST_INSTALLER_PACKAGE_NAME = "android.permissionui.cts" + + const val ALLOW_ALL_BUTTON = + "com.android.permissioncontroller:id/permission_allow_all_button" + const val SELECT_BUTTON = + "com.android.permissioncontroller:id/permission_allow_selected_button" + const val DONT_SELECT_MORE_BUTTON = + "com.android.permissioncontroller:id/permission_dont_allow_more_selected_button" + const val ALLOW_BUTTON = "com.android.permissioncontroller:id/permission_allow_button" + const val ALLOW_FOREGROUND_BUTTON = + "com.android.permissioncontroller:id/permission_allow_foreground_only_button" + const val DENY_BUTTON = "com.android.permissioncontroller:id/permission_deny_button" + const val DENY_AND_DONT_ASK_AGAIN_BUTTON = + "com.android.permissioncontroller:id/permission_deny_and_dont_ask_again_button" + const val NO_UPGRADE_BUTTON = + "com.android.permissioncontroller:id/permission_no_upgrade_button" + const val NO_UPGRADE_AND_DONT_ASK_AGAIN_BUTTON = + "com.android.permissioncontroller:" + + "id/permission_no_upgrade_and_dont_ask_again_button" + + const val ALLOW_ALWAYS_RADIO_BUTTON = + "com.android.permissioncontroller:id/allow_always_radio_button" + const val ALLOW_RADIO_BUTTON = "com.android.permissioncontroller:id/allow_radio_button" + const val ALLOW_FOREGROUND_RADIO_BUTTON = + "com.android.permissioncontroller:id/allow_foreground_only_radio_button" + const val ASK_RADIO_BUTTON = "com.android.permissioncontroller:id/ask_radio_button" + const val DENY_RADIO_BUTTON = "com.android.permissioncontroller:id/deny_radio_button" + const val SELECT_RADIO_BUTTON = "com.android.permissioncontroller:id/select_radio_button" + const val EDIT_PHOTOS_BUTTON = "com.android.permissioncontroller:id/edit_selected_button" + + const val NOTIF_TEXT = "permgrouprequest_notifications" + const val ALLOW_BUTTON_TEXT = "grant_dialog_button_allow" + const val ALLOW_ALL_FILES_BUTTON_TEXT = "app_permission_button_allow_all_files" + const val ALLOW_FOREGROUND_BUTTON_TEXT = "grant_dialog_button_allow_foreground" + const val ALLOW_FOREGROUND_PREFERENCE_TEXT = "permission_access_only_foreground" + const val ASK_BUTTON_TEXT = "app_permission_button_ask" + const val ALLOW_ONE_TIME_BUTTON_TEXT = "grant_dialog_button_allow_one_time" + const val DENY_BUTTON_TEXT = "grant_dialog_button_deny" + const val DENY_ANYWAY_BUTTON_TEXT = "grant_dialog_button_deny_anyway" + const val DENY_AND_DONT_ASK_AGAIN_BUTTON_TEXT = + "grant_dialog_button_deny_and_dont_ask_again" + const val NO_UPGRADE_AND_DONT_ASK_AGAIN_BUTTON_TEXT = "grant_dialog_button_no_upgrade" + const val ALERT_DIALOG_MESSAGE = "android:id/message" + const val ALERT_DIALOG_OK_BUTTON = "android:id/button1" + const val APP_PERMISSION_RATIONALE_CONTAINER_VIEW = + "com.android.permissioncontroller:id/app_permission_rationale_container" + const val APP_PERMISSION_RATIONALE_CONTENT_VIEW = + "com.android.permissioncontroller:id/app_permission_rationale_content" + const val GRANT_DIALOG_PERMISSION_RATIONALE_CONTAINER_VIEW = + "com.android.permissioncontroller:id/permission_rationale_container" + const val PERMISSION_RATIONALE_ACTIVITY_TITLE_VIEW = + "com.android.permissioncontroller:id/permission_rationale_title" + const val DATA_SHARING_SOURCE_TITLE_ID = + "com.android.permissioncontroller:id/data_sharing_source_title" + const val DATA_SHARING_SOURCE_MESSAGE_ID = + "com.android.permissioncontroller:id/data_sharing_source_message" + const val PURPOSE_TITLE_ID = "com.android.permissioncontroller:id/purpose_title" + const val PURPOSE_MESSAGE_ID = "com.android.permissioncontroller:id/purpose_message" + const val LEARN_MORE_TITLE_ID = "com.android.permissioncontroller:id/learn_more_title" + const val LEARN_MORE_MESSAGE_ID = "com.android.permissioncontroller:id/learn_more_message" + const val PERMISSION_RATIONALE_SETTINGS_SECTION = + "com.android.permissioncontroller:id/settings_section" + const val SETTINGS_TITLE_ID = "com.android.permissioncontroller:id/settings_title" + const val SETTINGS_MESSAGE_ID = "com.android.permissioncontroller:id/settings_message" + + const val REQUEST_LOCATION_MESSAGE = "permgrouprequest_location" + + const val DATA_SHARING_UPDATES = "Data sharing updates for location" + const val DATA_SHARING_UPDATES_SUBTITLE = + "These apps have changed the way they may share your location data. They may not" + + " have shared it before, or may now share it for advertising or marketing" + + " purposes." + const val DATA_SHARING_NO_UPDATES_MESSAGE = "No updates at this time" + const val UPDATES_IN_LAST_30_DAYS = "Updated within 30 days" + const val DATA_SHARING_UPDATES_FOOTER_MESSAGE = + "The developers of these apps provided info about their data sharing practices" + + " to an app store. They may update it over time.\n\nData sharing" + + " practices may vary based on your app version, use, region, and age." + const val LEARN_ABOUT_DATA_SHARING = "Learn about data sharing" + const val LOCATION_PERMISSION = "Location permission" + const val APP_PACKAGE_NAME_SUBSTRING = "android.permissionui" + const val NOW_SHARED_WITH_THIRD_PARTIES = + "Your location data is now shared with third " + "parties" + const val NOW_SHARED_WITH_THIRD_PARTIES_FOR_ADS = + "Your location data is now shared with " + "third parties for advertising or marketing" + const val PROPERTY_DATA_SHARING_UPDATE_PERIOD_MILLIS = "data_sharing_update_period_millis" + const val PROPERTY_MAX_SAFETY_LABELS_PERSISTED_PER_APP = + "max_safety_labels_persisted_per_app" + + // The highest SDK for which the system will show a "low SDK" warning when launching the app + const val MAX_SDK_FOR_SDK_WARNING = 27 + const val MIN_SDK_FOR_RUNTIME_PERMS = 23 + + val TEST_INSTALLER_ACTIVITY_COMPONENT_NAME = + ComponentName(context, TestInstallerActivity::class.java) + + val MEDIA_PERMISSIONS: Set = + mutableSetOf( + Manifest.permission.ACCESS_MEDIA_LOCATION, + Manifest.permission.READ_MEDIA_AUDIO, + Manifest.permission.READ_MEDIA_IMAGES, + Manifest.permission.READ_MEDIA_VIDEO, + ) + .apply { + if (SdkLevel.isAtLeastU()) { + add(Manifest.permission.READ_MEDIA_VISUAL_USER_SELECTED) + } + } + .toSet() + + val STORAGE_AND_MEDIA_PERMISSIONS = + MEDIA_PERMISSIONS.plus(Manifest.permission.READ_EXTERNAL_STORAGE) + .plus(Manifest.permission.WRITE_EXTERNAL_STORAGE) + + @JvmStatic protected val PICKER_ENABLED_SETTING = "photo_picker_prompt_enabled" + + @JvmStatic + protected fun isPhotoPickerPermissionPromptEnabled(): Boolean { + return SdkLevel.isAtLeastU() && + !isTv && + !isAutomotive && + !isWatch && + callWithShellPermissionIdentity { + DeviceConfig.getBoolean( + DeviceConfig.NAMESPACE_PRIVACY, + PICKER_ENABLED_SETTING, + true + ) + } + } + } + + enum class PermissionState { + ALLOWED, + DENIED, + DENIED_WITH_PREJUDICE + } + + private val platformResources = context.createPackageContext("android", 0).resources + private val permissionToLabelResNameMap = + mapOf( + // Contacts + android.Manifest.permission.READ_CONTACTS to "@android:string/permgrouplab_contacts", + android.Manifest.permission.WRITE_CONTACTS to "@android:string/permgrouplab_contacts", + // Calendar + android.Manifest.permission.READ_CALENDAR to "@android:string/permgrouplab_calendar", + android.Manifest.permission.WRITE_CALENDAR to "@android:string/permgrouplab_calendar", + // SMS + android.Manifest.permission.SEND_SMS to "@android:string/permgrouplab_sms", + android.Manifest.permission.RECEIVE_SMS to "@android:string/permgrouplab_sms", + android.Manifest.permission.READ_SMS to "@android:string/permgrouplab_sms", + android.Manifest.permission.RECEIVE_WAP_PUSH to "@android:string/permgrouplab_sms", + android.Manifest.permission.RECEIVE_MMS to "@android:string/permgrouplab_sms", + "android.permission.READ_CELL_BROADCASTS" to "@android:string/permgrouplab_sms", + // Storage + android.Manifest.permission.READ_EXTERNAL_STORAGE to + "@android:string/permgrouplab_storage", + android.Manifest.permission.WRITE_EXTERNAL_STORAGE to + "@android:string/permgrouplab_storage", + // Location + android.Manifest.permission.ACCESS_FINE_LOCATION to + "@android:string/permgrouplab_location", + android.Manifest.permission.ACCESS_COARSE_LOCATION to + "@android:string/permgrouplab_location", + android.Manifest.permission.ACCESS_BACKGROUND_LOCATION to + "@android:string/permgrouplab_location", + // Phone + android.Manifest.permission.READ_PHONE_STATE to "@android:string/permgrouplab_phone", + android.Manifest.permission.CALL_PHONE to "@android:string/permgrouplab_phone", + "android.permission.ACCESS_IMS_CALL_SERVICE" to "@android:string/permgrouplab_phone", + android.Manifest.permission.READ_CALL_LOG to "@android:string/permgrouplab_phone", + android.Manifest.permission.WRITE_CALL_LOG to "@android:string/permgrouplab_phone", + android.Manifest.permission.ADD_VOICEMAIL to "@android:string/permgrouplab_phone", + android.Manifest.permission.USE_SIP to "@android:string/permgrouplab_phone", + android.Manifest.permission.PROCESS_OUTGOING_CALLS to + "@android:string/permgrouplab_phone", + // Microphone + android.Manifest.permission.RECORD_AUDIO to "@android:string/permgrouplab_microphone", + // Camera + android.Manifest.permission.CAMERA to "@android:string/permgrouplab_camera", + // Body sensors + android.Manifest.permission.BODY_SENSORS to "@android:string/permgrouplab_sensors", + android.Manifest.permission.BODY_SENSORS_BACKGROUND to + "@android:string/permgrouplab_sensors", + // Bluetooth + android.Manifest.permission.BLUETOOTH_CONNECT to + "@android:string/permgrouplab_nearby_devices", + android.Manifest.permission.BLUETOOTH_SCAN to + "@android:string/permgrouplab_nearby_devices", + // Aural + android.Manifest.permission.READ_MEDIA_AUDIO to + "@android:string/permgrouplab_readMediaAural", + // Visual + android.Manifest.permission.READ_MEDIA_IMAGES to + "@android:string/permgrouplab_readMediaVisual", + android.Manifest.permission.READ_MEDIA_VIDEO to + "@android:string/permgrouplab_readMediaVisual" + ) + + @Before + @After + fun uninstallApp() { + uninstallPackage(APP_PACKAGE_NAME, requireSuccess = false) + } + + override fun installPackage( + apkPath: String, + reinstall: Boolean, + grantRuntimePermissions: Boolean, + expectSuccess: Boolean, + installSource: String? + ) { + installPackage( + apkPath, + reinstall, + grantRuntimePermissions, + expectSuccess, + installSource, + false + ) + } + + fun installPackage( + apkPath: String, + reinstall: Boolean = false, + grantRuntimePermissions: Boolean = false, + expectSuccess: Boolean = true, + installSource: String? = null, + skipClearLowSdkDialog: Boolean = false + ) { + super.installPackage( + apkPath, + reinstall, + grantRuntimePermissions, + expectSuccess, + installSource + ) + + val targetSdk = getTargetSdk() + // If the targetSDK is high enough, the low sdk warning won't show. If the SDK is + // below runtime permissions, the dialog will be delayed by the permission review screen. + // If success is not expected, don't bother trying + if ( + targetSdk > MAX_SDK_FOR_SDK_WARNING || + targetSdk < MIN_SDK_FOR_RUNTIME_PERMS || + !expectSuccess || + skipClearLowSdkDialog + ) { + return + } + + val finishOnCreateIntent = + Intent().apply { + component = + ComponentName(APP_PACKAGE_NAME, "$APP_PACKAGE_NAME.FinishOnCreateActivity") + flags = FLAG_ACTIVITY_NEW_TASK or FLAG_ACTIVITY_CLEAR_TASK + } + + // Check if an activity resolves for the test app. If it doesn't, then our test app doesn't + // have the usual set of activities, and likely won't be opened, and thus, won't show the + // dialog + callWithShellPermissionIdentity { + context.packageManager.resolveActivity(finishOnCreateIntent, PackageManager.MATCH_ALL) + } + ?: return + + // Start the test app, and expect the targetSDK warning dialog + context.startActivity(finishOnCreateIntent) + clearTargetSdkWarning() + // Kill the test app, so that the next time we launch, we don't see the app warning dialog + killTestApp() + } + + protected fun clearTargetSdkWarning(timeoutMillis: Long = TIMEOUT_MILLIS) { + if (SdkLevel.isAtLeastV()) { + // In V and above, the target SDK dialog can be disabled via system property + return + } + + waitFindObjectOrNull(By.res("android:id/button1"), timeoutMillis)?.let { + try { + it.click() + } catch (e: StaleObjectException) { + // Click sometimes fails with StaleObjectException (b/280430717). + e.printStackTrace() + } + } + } + + protected fun killTestApp() { + pressBack() + pressBack() + runWithShellPermissionIdentity { + val am = context.getSystemService(ActivityManager::class.java)!! + am.forceStopPackage(APP_PACKAGE_NAME) + } + waitForIdle() + } + + protected fun clickPermissionReviewContinue() { + if (isAutomotive || isWatch) { + clickAndWaitForWindowTransition( + By.text(getPermissionControllerString("review_button_continue")), + TIMEOUT_MILLIS * 2 + ) + } else { + clickAndWaitForWindowTransition( + By.res("com.android.permissioncontroller:id/continue_button") + ) + } + } + + protected fun clickPermissionReviewContinueAndClearSdkWarning() { + clickPermissionReviewContinue() + clearTargetSdkWarning() + } + + protected fun installPackageWithInstallSourceAndEmptyMetadata(apkName: String) { + installPackageViaSession(apkName, AppMetadata.createEmptyAppMetadata()) + } + + protected fun installPackageWithInstallSourceAndMetadata(apkName: String) { + installPackageViaSession(apkName, AppMetadata.createDefaultAppMetadata()) + } + + protected fun installPackageWithInstallSourceAndMetadataFromStore(apkName: String) { + installPackageViaSession( + apkName, + AppMetadata.createDefaultAppMetadata(), + PACKAGE_SOURCE_STORE + ) + } + + protected fun installPackageWithInstallSourceAndMetadataFromLocalFile(apkName: String) { + installPackageViaSession( + apkName, + AppMetadata.createDefaultAppMetadata(), + PACKAGE_SOURCE_LOCAL_FILE + ) + } + + protected fun installPackageWithInstallSourceAndMetadataFromDownloadedFile(apkName: String) { + installPackageViaSession( + apkName, + AppMetadata.createDefaultAppMetadata(), + PACKAGE_SOURCE_DOWNLOADED_FILE + ) + } + + protected fun installPackageWithInstallSourceAndMetadataFromOther(apkName: String) { + installPackageViaSession( + apkName, + AppMetadata.createDefaultAppMetadata(), + PACKAGE_SOURCE_OTHER + ) + } + + protected fun installPackageWithInstallSourceAndNoMetadata(apkName: String) { + installPackageViaSession(apkName) + } + + protected fun installPackageWithInstallSourceAndInvalidMetadata(apkName: String) { + installPackageViaSession(apkName, AppMetadata.createInvalidAppMetadata()) + } + + protected fun installPackageWithInstallSourceAndMetadataWithoutTopLevelVersion( + apkName: String + ) { + installPackageViaSession( + apkName, + AppMetadata.createInvalidAppMetadataWithoutTopLevelVersion() + ) + } + + protected fun installPackageWithInstallSourceAndMetadataWithInvalidTopLevelVersion( + apkName: String + ) { + installPackageViaSession( + apkName, + AppMetadata.createInvalidAppMetadataWithInvalidTopLevelVersion() + ) + } + + protected fun installPackageWithInstallSourceAndMetadataWithoutSafetyLabelVersion( + apkName: String + ) { + installPackageViaSession( + apkName, + AppMetadata.createInvalidAppMetadataWithoutSafetyLabelVersion() + ) + } + + protected fun installPackageWithInstallSourceAndMetadataWithInvalidSafetyLabelVersion( + apkName: String + ) { + installPackageViaSession( + apkName, + AppMetadata.createInvalidAppMetadataWithInvalidSafetyLabelVersion() + ) + } + + protected fun installPackageWithoutInstallSource(apkName: String) { + // TODO(b/257293222): Update/remove when hooking up PackageManager APIs + installPackage(apkName) + } + + protected fun assertPermissionRationaleActivityTitleIsVisible(expected: Boolean) { + findView(By.res(PERMISSION_RATIONALE_ACTIVITY_TITLE_VIEW), expected = expected) + } + + protected fun assertPermissionRationaleActivityDataSharingSourceSectionVisible( + expected: Boolean + ) { + findView(By.res(DATA_SHARING_SOURCE_TITLE_ID), expected = expected) + findView(By.res(DATA_SHARING_SOURCE_MESSAGE_ID), expected = expected) + } + + protected fun assertPermissionRationaleActivityPurposeSectionVisible(expected: Boolean) { + findView(By.res(PURPOSE_TITLE_ID), expected = expected) + findView(By.res(PURPOSE_MESSAGE_ID), expected = expected) + } + + protected fun assertPermissionRationaleActivityLearnMoreSectionVisible(expected: Boolean) { + findView(By.res(LEARN_MORE_TITLE_ID), expected = expected) + findView(By.res(LEARN_MORE_MESSAGE_ID), expected = expected) + } + + protected fun assertPermissionRationaleActivitySettingsSectionVisible(expected: Boolean) { + findView(By.res(PERMISSION_RATIONALE_SETTINGS_SECTION), expected = expected) + findView(By.res(SETTINGS_TITLE_ID), expected = expected) + findView(By.res(SETTINGS_MESSAGE_ID), expected = expected) + } + + protected fun assertPermissionRationaleDialogIsVisible( + expected: Boolean, + showSettingsSection: Boolean = true + ) { + assertPermissionRationaleActivityTitleIsVisible(expected) + assertPermissionRationaleActivityDataSharingSourceSectionVisible(expected) + assertPermissionRationaleActivityPurposeSectionVisible(expected) + assertPermissionRationaleActivityLearnMoreSectionVisible(expected) + if (expected) { + assertPermissionRationaleActivitySettingsSectionVisible(showSettingsSection) + } + } + + protected fun assertPermissionRationaleContainerOnGrantDialogIsVisible(expected: Boolean) { + findView(By.res(GRANT_DIALOG_PERMISSION_RATIONALE_CONTAINER_VIEW), expected = expected) + } + + protected fun clickPermissionReviewCancel() { + if (isAutomotive || isWatch) { + clickAndWaitForWindowTransition( + By.text(getPermissionControllerString("review_button_cancel")) + ) + } else { + clickAndWaitForWindowTransition( + By.res("com.android.permissioncontroller:id/cancel_button") + ) + } + } + + protected fun approvePermissionReview() { + startAppActivityAndAssertResultCode(Activity.RESULT_OK) { + clickPermissionReviewContinueAndClearSdkWarning() + } + } + + protected fun cancelPermissionReview() { + startAppActivityAndAssertResultCode(Activity.RESULT_CANCELED) { + clickPermissionReviewCancel() + } + } + + protected fun assertAppDoesNotNeedPermissionReview() { + startAppActivityAndAssertResultCode(Activity.RESULT_OK) {} + } + + protected inline fun startAppActivityAndAssertResultCode( + expectedResultCode: Int, + block: () -> Unit + ) { + val future = + startActivityForFuture( + Intent().apply { + component = + ComponentName(APP_PACKAGE_NAME, "$APP_PACKAGE_NAME.FinishOnCreateActivity") + } + ) + block() + assertEquals( + expectedResultCode, + future.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS).resultCode + ) + } + + protected inline fun requestAppPermissionsForNoResult( + vararg permissions: String?, + crossinline block: () -> Unit + ) { + // Request the permissions + doAndWaitForWindowTransition { + context.startActivity( + Intent().apply { + component = + ComponentName( + APP_PACKAGE_NAME, + "$APP_PACKAGE_NAME.RequestPermissionsActivity" + ) + putExtra("$APP_PACKAGE_NAME.PERMISSIONS", permissions) + addFlags(FLAG_ACTIVITY_NEW_TASK or FLAG_ACTIVITY_CLEAR_TASK) + } + ) + } + // Perform the post-request action + block() + } + + protected inline fun requestAppPermissions( + vararg permissions: String?, + askTwice: Boolean = false, + waitForWindowTransition: Boolean = true, + crossinline block: () -> Unit + ): Instrumentation.ActivityResult { + // Request the permissions + lateinit var future: CompletableFuture + doAndWaitForWindowTransition { + future = + startActivityForFuture( + Intent().apply { + component = + ComponentName( + APP_PACKAGE_NAME, + "$APP_PACKAGE_NAME.RequestPermissionsActivity" + ) + putExtra("$APP_PACKAGE_NAME.PERMISSIONS", permissions) + putExtra("$APP_PACKAGE_NAME.ASK_TWICE", askTwice) + } + ) + } + + // Notification permission prompt is shown first, so get it out of the way + clickNotificationPermissionRequestAllowButtonIfAvailable() + // Perform the post-request action + if (waitForWindowTransition) { + doAndWaitForWindowTransition { block() } + } else { + block() + } + return future.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS) + } + + protected inline fun requestAppPermissionsAndAssertResult( + permissions: Array, + permissionAndExpectedGrantResults: Array>, + askTwice: Boolean = false, + waitForWindowTransition: Boolean = !isWatch, + crossinline block: () -> Unit + ) { + val result = + requestAppPermissions( + *permissions, + askTwice = askTwice, + waitForWindowTransition = waitForWindowTransition, + block = block + ) + assertEquals( + "Permission request result had unexpected resultCode:", + Activity.RESULT_OK, + result.resultCode + ) + + val responseSize: Int = + result.resultData!!.getStringArrayExtra("$APP_PACKAGE_NAME.PERMISSIONS")!!.size + assertEquals( + "Permission request result had unexpected number of grant results:", + responseSize, + result.resultData!!.getIntArrayExtra("$APP_PACKAGE_NAME.GRANT_RESULTS")!!.size + ) + + // Note that the behavior around requesting `null` permissions changed in the platform + // in Android U. Currently, null permissions are ignored and left out of the result set. + assertTrue( + "Permission request result had fewer permissions than request", + permissions.size >= responseSize + ) + assertEquals( + "Permission request result had unexpected grant results:", + permissionAndExpectedGrantResults.filter { it.first != null }.toList(), + result.resultData!! + .getStringArrayExtra("$APP_PACKAGE_NAME.PERMISSIONS")!! + .filterNotNull() + .zip( + result.resultData!!.getIntArrayExtra("$APP_PACKAGE_NAME.GRANT_RESULTS")!!.map { + it == PackageManager.PERMISSION_GRANTED + } + ) + ) + + permissionAndExpectedGrantResults.forEach { + it.first?.let { permission -> assertAppHasPermission(permission, it.second) } + } + } + + protected inline fun requestAppPermissionsAndAssertResult( + vararg permissionAndExpectedGrantResults: Pair, + askTwice: Boolean = false, + waitForWindowTransition: Boolean = !isWatch, + crossinline block: () -> Unit + ) { + requestAppPermissionsAndAssertResult( + permissionAndExpectedGrantResults.map { it.first }.toTypedArray(), + permissionAndExpectedGrantResults, + askTwice, + waitForWindowTransition, + block + ) + } + + // Perform the requested action, then wait both for the action to complete, and for at least + // one window transition to occur since the moment the action begins executing. + protected inline fun doAndWaitForWindowTransition(crossinline block: () -> Unit) { + val timeoutOccurred = + !uiDevice.performActionAndWait( + { block() }, + Until.newWindow(), + NEW_WINDOW_TIMEOUT_MILLIS + ) + + if (timeoutOccurred) { + throw RuntimeException("Timed out waiting for window transition.") + } + } + + protected fun findPermissionRequestAllowButton(timeoutMillis: Long = 20000) { + if (isAutomotive || isWatch) { + waitFindObject(By.text(getPermissionControllerString(ALLOW_BUTTON_TEXT)), timeoutMillis) + } else { + waitFindObject(By.res(ALLOW_BUTTON), timeoutMillis) + } + } + + protected fun clickPermissionRequestAllowButton(timeoutMillis: Long = 20000) { + if (isAutomotive || isWatch) { + click(By.text(getPermissionControllerString(ALLOW_BUTTON_TEXT)), timeoutMillis) + } else { + click(By.res(ALLOW_BUTTON), timeoutMillis) + } + } + + protected fun clickPermissionRequestAllowAllButton(timeoutMillis: Long = 20000) { + click(By.res(ALLOW_ALL_BUTTON), timeoutMillis) + } + + /** + * Only for use in tests that are not testing the notification permission popup, on T devices + */ + protected fun clickNotificationPermissionRequestAllowButtonIfAvailable() { + if (!SdkLevel.isAtLeastT()) { + return + } + + if ( + waitFindObjectOrNull( + By.text(getPermissionControllerString(NOTIF_TEXT, APP_PACKAGE_NAME)), + 1000 + ) != null + ) { + if (isAutomotive) { + click(By.text(getPermissionControllerString(ALLOW_BUTTON_TEXT))) + } else { + click(By.res(ALLOW_BUTTON)) + } + } + } + + protected fun clickPermissionRequestSettingsLinkAndAllowAlways() { + clickPermissionRequestSettingsLink() + eventually({ clickAllowAlwaysInSettings() }, TIMEOUT_MILLIS * 2) + pressBack() + } + + protected fun clickAllowAlwaysInSettings() { + if (isAutomotive || isTv || isWatch) { + click(By.text(getPermissionControllerString("app_permission_button_allow_always"))) + } else { + click(By.res("com.android.permissioncontroller:id/allow_always_radio_button")) + } + } + + protected fun clickAllowForegroundInSettings() { + click(By.res(ALLOW_FOREGROUND_RADIO_BUTTON)) + } + + protected fun clicksDenyInSettings() { + if (isAutomotive || isWatch) { + click(By.text(getPermissionControllerString("app_permission_button_deny"))) + } else { + click(By.res("com.android.permissioncontroller:id/deny_radio_button")) + } + } + + protected fun findPermissionRequestAllowForegroundButton(timeoutMillis: Long = 20000) { + if (isAutomotive || isWatch) { + waitFindObject( + By.text(getPermissionControllerString(ALLOW_FOREGROUND_BUTTON_TEXT)), + timeoutMillis + ) + } else { + waitFindObject(By.res(ALLOW_FOREGROUND_BUTTON), timeoutMillis) + } + } + + protected fun clickPermissionRequestAllowForegroundButton(timeoutMillis: Long = 10_000) { + if (isAutomotive || isWatch) { + click( + By.text(getPermissionControllerString(ALLOW_FOREGROUND_BUTTON_TEXT)), + timeoutMillis + ) + } else { + click(By.res(ALLOW_FOREGROUND_BUTTON), timeoutMillis) + } + } + + protected fun clickPermissionRequestDenyButton() { + if (isAutomotive || isWatch || isTv) { + click(By.text(getPermissionControllerString(DENY_BUTTON_TEXT))) + } else { + click(By.res(DENY_BUTTON)) + } + } + + protected fun clickPermissionRequestSettingsLinkAndDeny() { + clickPermissionRequestSettingsLink() + eventually({ clicksDenyInSettings() }, TIMEOUT_MILLIS * 2) + pressBack() + } + + protected fun clickPermissionRequestSettingsLink() { + eventually { + // UiObject2 doesn't expose CharSequence. + val node = + if (isAutomotive) { + // Should match "Allow in settings." (location) and "go to settings." (body + // sensors) + uiAutomation.rootInActiveWindow + .findAccessibilityNodeInfosByText(" settings.")[0] + } else { + uiAutomation.rootInActiveWindow + .findAccessibilityNodeInfosByViewId( + "com.android.permissioncontroller:id/detail_message" + )[0] + } + if (!node.isVisibleToUser) { + scrollToBottom() + } + assertTrue(node.isVisibleToUser) + val text = node.text as Spanned + val clickableSpan = text.getSpans(0, text.length, ClickableSpan::class.java)[0] + // We could pass in null here in Java, but we need an instance in Kotlin. + doAndWaitForWindowTransition { clickableSpan.onClick(View(context)) } + } + } + + protected fun clickPermissionRequestDenyAndDontAskAgainButton() { + if (isAutomotive) { + click(By.text(getPermissionControllerString(DENY_AND_DONT_ASK_AGAIN_BUTTON_TEXT))) + } else if (isWatch) { + click(By.text(getPermissionControllerString(DENY_BUTTON_TEXT))) + } else { + click(By.res(DENY_AND_DONT_ASK_AGAIN_BUTTON)) + } + } + + // Only used in TV and Watch form factors + protected fun clickPermissionRequestDontAskAgainButton() { + if (isWatch) { + click(By.text(getPermissionControllerString(DENY_BUTTON_TEXT))) + } else { + click( + By.res("com.android.permissioncontroller:id/permission_deny_dont_ask_again_button") + ) + } + } + + protected fun clickPermissionRequestNoUpgradeAndDontAskAgainButton() { + if (isAutomotive) { + click(By.text(getPermissionControllerString(NO_UPGRADE_AND_DONT_ASK_AGAIN_BUTTON_TEXT))) + } else { + click(By.res(NO_UPGRADE_AND_DONT_ASK_AGAIN_BUTTON)) + } + } + + protected fun clickPermissionRationaleContentInAppPermission() { + clickAndWaitForWindowTransition(By.res(APP_PERMISSION_RATIONALE_CONTENT_VIEW)) + } + + protected fun clickPermissionRationaleViewInGrantDialog() { + clickAndWaitForWindowTransition(By.res(GRANT_DIALOG_PERMISSION_RATIONALE_CONTAINER_VIEW)) + } + + protected fun grantAppPermissionsByUi(vararg permissions: String) { + setAppPermissionState(*permissions, state = PermissionState.ALLOWED, isLegacyApp = false) + } + + protected fun grantRuntimePermissions(vararg permissions: String) { + for (permission in permissions) { + uiAutomation.grantRuntimePermission(APP_PACKAGE_NAME, permission) + } + } + + protected fun revokeAppPermissionsByUi( + vararg permissions: String, + isLegacyApp: Boolean = false + ) { + setAppPermissionState( + *permissions, + state = PermissionState.DENIED, + isLegacyApp = isLegacyApp + ) + } + + private fun navigateToAppPermissionSettings() { + if (isTv) { + // Dismiss DeprecatedTargetSdkVersionDialog, if present + if (waitFindObjectOrNull(By.text(APP_PACKAGE_NAME), 1000L) != null) { + pressBack() + } + pressHome() + } else { + pressBack() + pressBack() + pressBack() + } + + // Try multiple times as the AppInfo page might have read stale data + eventually( + { + try { + // Open the app details settings + doAndWaitForWindowTransition { + context.startActivity( + Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply { + data = Uri.fromParts("package", APP_PACKAGE_NAME, null) + addCategory(Intent.CATEGORY_DEFAULT) + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) + } + ) + } + if (isTv) { + pressDPadDown() + pressDPadDown() + pressDPadDown() + pressDPadDown() + } + // Open the permissions UI + clickAndWaitForWindowTransition(byTextRes(R.string.permissions).enabled(true)) + } catch (e: Exception) { + pressBack() + throw e + } + }, + TIMEOUT_MILLIS + ) + } + + private fun getTargetSdk(packageName: String = APP_PACKAGE_NAME): Int { + return callWithShellPermissionIdentity { + try { + context.packageManager.getApplicationInfo(packageName, 0).targetSdkVersion + } catch (e: PackageManager.NameNotFoundException) { + -1 + } + } + } + + protected fun navigateToIndividualPermissionSetting( + permission: String, + manuallyNavigate: Boolean = false + ) { + val useLegacyNavigation = isWatch || isAutomotive || manuallyNavigate + if (useLegacyNavigation) { + navigateToAppPermissionSettings() + val permissionLabel = getPermissionLabel(permission) + if (isWatch) { + clickAndWaitForWindowTransition(By.text(permissionLabel), 40_000) + } else { + clickPermissionControllerUi(By.text(permissionLabel)) + } + return + } + doAndWaitForWindowTransition { + runWithShellPermissionIdentity { + context.startActivity( + Intent(Intent.ACTION_MANAGE_APP_PERMISSION).apply { + putExtra(Intent.EXTRA_PACKAGE_NAME, APP_PACKAGE_NAME) + putExtra(Intent.EXTRA_PERMISSION_NAME, permission) + putExtra(Intent.EXTRA_USER, Process.myUserHandle()) + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) + } + ) + } + } + } + + /** Starts activity with intent [ACTION_REVIEW_APP_DATA_SHARING_UPDATES]. */ + fun startAppDataSharingUpdatesActivity() { + doAndWaitForWindowTransition { + runWithShellPermissionIdentity { + context.startActivity( + Intent(ACTION_REVIEW_APP_DATA_SHARING_UPDATES).apply { + addFlags(FLAG_ACTIVITY_NEW_TASK) + } + ) + } + } + } + + private fun setAppPermissionState( + vararg permissions: String, + state: PermissionState, + isLegacyApp: Boolean, + manuallyNavigate: Boolean = false, + ) { + val useLegacyNavigation = isWatch || isAutomotive || manuallyNavigate + if (useLegacyNavigation) { + navigateToAppPermissionSettings() + } + + val navigatedGroupLabels = mutableSetOf() + for (permission in permissions) { + // Find the permission screen + val permissionLabel = getPermissionLabel(permission) + if (navigatedGroupLabels.contains(getPermissionLabel(permission))) { + continue + } + navigatedGroupLabels.add(permissionLabel) + if (useLegacyNavigation) { + if (isWatch) { + click(By.text(permissionLabel), 40_000) + } else if (isAutomotive) { + clickPermissionControllerUi(permissionLabel) + } else { + clickPermissionControllerUi(By.text(permissionLabel)) + } + } else { + doAndWaitForWindowTransition { + runWithShellPermissionIdentity { + context.startActivity( + Intent(Intent.ACTION_MANAGE_APP_PERMISSION).apply { + putExtra(Intent.EXTRA_PACKAGE_NAME, APP_PACKAGE_NAME) + putExtra(Intent.EXTRA_PERMISSION_NAME, permission) + putExtra(Intent.EXTRA_USER, Process.myUserHandle()) + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) + } + ) + } + } + } + + val wasGranted = + if (isAutomotive) { + // Automotive doesn't support one time permissions, and thus + // won't show an "Ask every time" message + !waitFindObject( + By.text(getPermissionControllerString("app_permission_button_deny")) + ) + .isChecked + } else if (isTv || isWatch) { + !(waitFindObject(By.text(getPermissionControllerString(DENY_BUTTON_TEXT))) + .isChecked || + (!isLegacyApp && + hasAskButton(permission) && + waitFindObject(By.text(getPermissionControllerString(ASK_BUTTON_TEXT))) + .isChecked)) + } else { + !(waitFindObject(By.res(DENY_RADIO_BUTTON)).isChecked || + (!isLegacyApp && + hasAskButton(permission) && + waitFindObject(By.res(ASK_RADIO_BUTTON)).isChecked)) + } + var alreadyChecked = false + val button = + waitFindObject( + if (isAutomotive) { + // Automotive doesn't support one time permissions, and thus + // won't show an "Ask every time" message + when (state) { + PermissionState.ALLOWED -> + if (showsForegroundOnlyButton(permission)) { + By.text( + getPermissionControllerString( + "app_permission_button_allow_foreground" + ) + ) + } else { + By.text( + getPermissionControllerString("app_permission_button_allow") + ) + } + PermissionState.DENIED -> + By.text(getPermissionControllerString("app_permission_button_deny")) + PermissionState.DENIED_WITH_PREJUDICE -> + By.text(getPermissionControllerString("app_permission_button_deny")) + } + } else if (isTv || isWatch) { + when (state) { + PermissionState.ALLOWED -> + if (showsForegroundOnlyButton(permission)) { + By.text( + getPermissionControllerString( + ALLOW_FOREGROUND_PREFERENCE_TEXT + ) + ) + } else { + byAnyText( + getPermissionControllerResString(ALLOW_BUTTON_TEXT), + getPermissionControllerResString( + ALLOW_ALL_FILES_BUTTON_TEXT + ) + ) + } + PermissionState.DENIED -> + if (!isLegacyApp && hasAskButton(permission)) { + By.text(getPermissionControllerString(ASK_BUTTON_TEXT)) + } else { + By.text(getPermissionControllerString(DENY_BUTTON_TEXT)) + } + PermissionState.DENIED_WITH_PREJUDICE -> + By.text(getPermissionControllerString(DENY_BUTTON_TEXT)) + } + } else { + when (state) { + PermissionState.ALLOWED -> + if (showsForegroundOnlyButton(permission)) { + By.res(ALLOW_FOREGROUND_RADIO_BUTTON) + } else if (showsAlwaysButton(permission)) { + By.res(ALLOW_ALWAYS_RADIO_BUTTON) + } else { + By.res(ALLOW_RADIO_BUTTON) + } + PermissionState.DENIED -> + if (!isLegacyApp && hasAskButton(permission)) { + By.res(ASK_RADIO_BUTTON) + } else { + By.res(DENY_RADIO_BUTTON) + } + PermissionState.DENIED_WITH_PREJUDICE -> By.res(DENY_RADIO_BUTTON) + } + } + ) + alreadyChecked = button.isChecked + if (!alreadyChecked) { + button.click() + } + + val shouldShowStorageWarning = + SdkLevel.isAtLeastT() && + getTargetSdk() <= Build.VERSION_CODES.S_V2 && + permission in MEDIA_PERMISSIONS + if (shouldShowStorageWarning) { + if (isWatch) { + click( + By.desc( + getPermissionControllerString("media_confirm_dialog_positive_button") + ) + ) + } else { + click(By.res(ALERT_DIALOG_OK_BUTTON)) + } + } else if (!alreadyChecked && isLegacyApp && wasGranted) { + if (!isTv) { + // Wait for alert dialog to popup, then scroll to the bottom of it + if (isWatch) { + waitFindObject( + By.text(getPermissionControllerString("old_sdk_deny_warning")) + ) + } else { + waitFindObject(By.res(ALERT_DIALOG_MESSAGE)) + } + scrollToBottom() + } + + // Due to the limited real estate, Wear uses buttons with icons instead of text + // for dialogs + if (isWatch) { + click(By.desc(getPermissionControllerString("ok"))) + } else { + val resources = + context + .createPackageContext(packageManager.permissionControllerPackageName, 0) + .resources + val confirmTextRes = + resources.getIdentifier( + "com.android.permissioncontroller:string/grant_dialog_button_deny_anyway", + null, + null + ) + + val confirmText = resources.getString(confirmTextRes) + click(byTextStartsWithCaseInsensitive(confirmText)) + } + } + pressBack() + } + pressBack() + pressBack() + } + + private fun getPermissionLabel(permission: String): String { + val labelResName = permissionToLabelResNameMap[permission] + assertNotNull("Unknown permission $permission", labelResName) + val labelRes = platformResources.getIdentifier(labelResName, null, null) + return platformResources.getString(labelRes) + } + + private fun hasAskButton(permission: String): Boolean = + when (permission) { + android.Manifest.permission.CAMERA, + android.Manifest.permission.RECORD_AUDIO, + android.Manifest.permission.ACCESS_FINE_LOCATION, + android.Manifest.permission.ACCESS_COARSE_LOCATION, + android.Manifest.permission.ACCESS_BACKGROUND_LOCATION -> true + else -> false + } + private fun showsAllowPhotosButton(permission: String): Boolean { + if (!isPhotoPickerPermissionPromptEnabled()) { + return false + } + return when (permission) { + Manifest.permission.READ_MEDIA_VISUAL_USER_SELECTED, + Manifest.permission.READ_MEDIA_IMAGES, + Manifest.permission.READ_MEDIA_VIDEO -> true + else -> false + } + } + + private fun showsForegroundOnlyButton(permission: String): Boolean = + when (permission) { + android.Manifest.permission.CAMERA, + android.Manifest.permission.RECORD_AUDIO -> true + else -> false + } + + private fun showsAlwaysButton(permission: String): Boolean = + when (permission) { + android.Manifest.permission.ACCESS_BACKGROUND_LOCATION -> true + else -> false + } + + private fun scrollToBottom() { + val scrollable = + UiScrollable(UiSelector().scrollable(true)).apply { + if (isWatch) { + swipeDeadZonePercentage = 0.1 + } else { + swipeDeadZonePercentage = 0.25 + } + } + waitForIdle() + if (scrollable.exists()) { + try { + scrollable.flingToEnd(10) + } catch (e: UiObjectNotFoundException) { + // flingToEnd() sometimes still fails despite waitForIdle() and the exists() check + // (b/246984354). + e.printStackTrace() + } + } + } + + private fun byTextRes(textRes: Int): BySelector = By.text(context.getString(textRes)) + + private fun byTextStartsWithCaseInsensitive(prefix: String): BySelector = + By.text(Pattern.compile("(?i)^${Pattern.quote(prefix)}.*$")) + + protected fun assertAppHasPermission(permissionName: String, expectPermission: Boolean) { + val checkPermissionResult = packageManager.checkPermission(permissionName, APP_PACKAGE_NAME) + assertTrue( + "Invalid permission check result: $checkPermissionResult", + checkPermissionResult == PackageManager.PERMISSION_GRANTED || + checkPermissionResult == PackageManager.PERMISSION_DENIED + ) + if (!expectPermission && checkPermissionResult == PackageManager.PERMISSION_GRANTED) { + Assert.fail( + "Unexpected permission check result for $permissionName: " + + "expected -1 (PERMISSION_DENIED) but was 0 (PERMISSION_GRANTED)" + ) + } + if (expectPermission && checkPermissionResult == PackageManager.PERMISSION_DENIED) { + Assert.fail( + "Unexpected permission check result for $permissionName: " + + "expected 0 (PERMISSION_GRANTED) but was -1 (PERMISSION_DENIED)" + ) + } + } + + protected fun assertAppHasCalendarAccess(expectAccess: Boolean) { + val future = + startActivityForFuture( + Intent().apply { + component = + ComponentName( + APP_PACKAGE_NAME, + "$APP_PACKAGE_NAME.CheckCalendarAccessActivity" + ) + } + ) + clickNotificationPermissionRequestAllowButtonIfAvailable() + val result = future.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS) + assertEquals(Activity.RESULT_OK, result.resultCode) + assertTrue(result.resultData!!.hasExtra("$APP_PACKAGE_NAME.HAS_ACCESS")) + assertEquals( + expectAccess, + result.resultData!!.getBooleanExtra("$APP_PACKAGE_NAME.HAS_ACCESS", false) + ) + } + + protected fun assertPermissionFlags(permName: String, vararg flags: Pair) { + val user = Process.myUserHandle() + SystemUtil.runWithShellPermissionIdentity { + val currFlags = packageManager.getPermissionFlags(permName, APP_PACKAGE_NAME, user) + for ((flag, set) in flags) { + assertEquals("flag $flag: ", set, currFlags and flag != 0) + } + } + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/CameraMicIndicatorsPermissionTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/CameraMicIndicatorsPermissionTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..47fe17bac0038392ca654f4674b0534f56f001f5 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/CameraMicIndicatorsPermissionTest.kt @@ -0,0 +1,698 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package android.permissionui.cts + +import android.Manifest +import android.app.Instrumentation +import android.app.UiAutomation +import android.app.compat.CompatChanges +import android.content.AttributionSource +import android.content.Context +import android.content.Intent +import android.content.pm.PackageManager +import android.hardware.camera2.CameraManager +import android.os.Build +import android.os.Process +import android.os.SystemClock +import android.os.SystemProperties +import android.permission.PermissionManager +import android.platform.test.annotations.AsbSecurityTest +import android.provider.DeviceConfig +import android.provider.Settings +import android.safetycenter.SafetyCenterManager +import android.server.wm.WindowManagerStateHelper +import androidx.annotation.RequiresApi +import androidx.test.filters.FlakyTest +import androidx.test.filters.SdkSuppress +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.uiautomator.By +import androidx.test.uiautomator.BySelector +import androidx.test.uiautomator.StaleObjectException +import androidx.test.uiautomator.UiDevice +import androidx.test.uiautomator.UiObject2 +import androidx.test.uiautomator.UiSelector +import com.android.compatibility.common.util.CddTest +import com.android.compatibility.common.util.DisableAnimationRule +import com.android.compatibility.common.util.SystemUtil.callWithShellPermissionIdentity +import com.android.compatibility.common.util.SystemUtil.eventually +import com.android.compatibility.common.util.SystemUtil.runShellCommand +import com.android.compatibility.common.util.SystemUtil.runShellCommandOrThrow +import com.android.compatibility.common.util.SystemUtil.runWithShellPermissionIdentity +import com.android.compatibility.common.util.UiAutomatorUtils2 +import com.android.modules.utils.build.SdkLevel +import com.android.sts.common.util.StsExtraBusinessLogicTestCase +import java.util.regex.Pattern +import org.junit.After +import org.junit.Assert +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertNotNull +import org.junit.Assert.assertNull +import org.junit.Assert.assertTrue +import org.junit.Assume.assumeFalse +import org.junit.Assume.assumeTrue +import org.junit.Before +import org.junit.Rule +import org.junit.Test + +private const val APK_PATH = + "/data/local/tmp/cts-permissionui/CtsAppThatAccessesMicAndCameraPermission.apk" +private const val APP_LABEL = "CtsCameraMicAccess" +private const val APP_PKG = "android.permissionui.cts.appthataccessescameraandmic" +private const val SHELL_PKG = "com.android.shell" +private const val USE_CAMERA = "use_camera" +private const val USE_MICROPHONE = "use_microphone" +private const val USE_HOTWORD = "use_hotword" +private const val FINISH_EARLY = "finish_early" +private const val USE_INTENT_ACTION = "test.action.USE_CAMERA_OR_MIC" +private const val PRIVACY_CHIP_ID = "com.android.systemui:id/privacy_chip" +private const val PRIVACY_ITEM_ID = "com.android.systemui:id/privacy_item" +private const val INDICATORS_FLAG = "camera_mic_icons_enabled" +private const val PERMISSION_INDICATORS_NOT_PRESENT = 162547999L +private const val IDLE_TIMEOUT_MILLIS: Long = 1000 +private const val UNEXPECTED_TIMEOUT_MILLIS = 1000L +private const val TIMEOUT_MILLIS: Long = 20000 +private const val TV_MIC_INDICATOR_WINDOW_TITLE = "MicrophoneCaptureIndicator" +private const val MIC_LABEL_NAME = "microphone_toggle_label_qs" +private const val CAMERA_LABEL_NAME = "camera_toggle_label_qs" +private val HOTWORD_DETECTION_SERVICE_REQUIRED = + SystemProperties.getBoolean("ro.hotword.detection_service_required", false) + +@SdkSuppress(minSdkVersion = Build.VERSION_CODES.S, codeName = "S") +@FlakyTest +class CameraMicIndicatorsPermissionTest : StsExtraBusinessLogicTestCase { + private val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation() + private val context: Context = instrumentation.context + private val uiAutomation: UiAutomation = instrumentation.uiAutomation + private val uiDevice: UiDevice = UiDevice.getInstance(instrumentation) + private val packageManager: PackageManager = context.packageManager + private val permissionManager: PermissionManager = + context.getSystemService(PermissionManager::class.java)!! + + private val isTv = packageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK) + private val isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE) + private val safetyCenterMicLabel = getPermissionControllerString(MIC_LABEL_NAME) + private val safetyCenterCameraLabel = getPermissionControllerString(CAMERA_LABEL_NAME) + private val originalCameraLabel = + packageManager + .getPermissionGroupInfo(Manifest.permission_group.CAMERA, 0) + .loadLabel(packageManager) + .toString() + private val originalMicLabel = + packageManager + .getPermissionGroupInfo(Manifest.permission_group.MICROPHONE, 0) + .loadLabel(packageManager) + .toString() + private val cameraLabel = originalCameraLabel.lowercase() + private val micLabel = originalMicLabel.lowercase() + private var wasEnabled = false + private var isScreenOn = false + private var screenTimeoutBeforeTest: Long = 0L + private lateinit var carMicPrivacyChipId: String + private lateinit var carCameraPrivacyChipId: String + + @get:Rule val disableAnimationRule = DisableAnimationRule() + + constructor() : super() + + companion object { + private const val AUTO_MIC_INDICATOR_DISMISSAL_TIMEOUT_MS = 30_000L + const val SAFETY_CENTER_ENABLED = "safety_center_is_enabled" + const val DELAY_MILLIS = 3000L + } + + private val safetyCenterEnabled = callWithShellPermissionIdentity { + DeviceConfig.getString( + DeviceConfig.NAMESPACE_PRIVACY, + SAFETY_CENTER_ENABLED, + false.toString() + )!! + } + + private fun uninstall() { + val output = runShellCommand("pm uninstall $APP_PKG").trim() + assertEquals("Success", output) + } + + private fun install() { + val output = runShellCommandOrThrow("pm install -g $APK_PATH").trim() + assertEquals("Success", output) + } + + @Before + fun setUp() { + runWithShellPermissionIdentity { + screenTimeoutBeforeTest = + Settings.System.getLong(context.contentResolver, Settings.System.SCREEN_OFF_TIMEOUT) + Settings.System.putLong( + context.contentResolver, + Settings.System.SCREEN_OFF_TIMEOUT, + 1800000L + ) + } + + if (!isScreenOn) { + uiDevice.wakeUp() + runShellCommand(instrumentation, "wm dismiss-keyguard") + Thread.sleep(DELAY_MILLIS) + isScreenOn = true + } + uiDevice.findObject(By.text("Close"))?.click() + wasEnabled = setIndicatorsEnabledStateIfNeeded(true) + // If the change Id is not present, then isChangeEnabled will return true. To bypass this, + // the change is set to "false" if present. + assumeFalse( + "feature not present on this device", + callWithShellPermissionIdentity { + CompatChanges.isChangeEnabled(PERMISSION_INDICATORS_NOT_PRESENT, Process.SYSTEM_UID) + } + ) + install() + } + + private fun setIndicatorsEnabledStateIfNeeded(shouldBeEnabled: Boolean): Boolean { + var currentlyEnabled = false + runWithShellPermissionIdentity { + currentlyEnabled = + DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY, INDICATORS_FLAG, true) + if (currentlyEnabled != shouldBeEnabled) { + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_PRIVACY, + INDICATORS_FLAG, + shouldBeEnabled.toString(), + false + ) + } + } + return currentlyEnabled + } + + @After + fun tearDown() { + uninstall() + if (isCar) { + // Deselect the indicator since it persists otherwise + pressBack() + } + eventually( + { assertIndicatorsShown(false, false, false) }, + AUTO_MIC_INDICATOR_DISMISSAL_TIMEOUT_MS + ) + if (!wasEnabled) { + setIndicatorsEnabledStateIfNeeded(false) + } + runWithShellPermissionIdentity { + Settings.System.putLong( + context.contentResolver, + Settings.System.SCREEN_OFF_TIMEOUT, + screenTimeoutBeforeTest + ) + } + changeSafetyCenterFlag(safetyCenterEnabled) + if (!isTv) { + pressBack() + pressBack() + } + pressHome() + pressHome() + } + + private fun openApp( + useMic: Boolean, + useCamera: Boolean, + useHotword: Boolean, + finishEarly: Boolean = false + ) { + context.startActivity( + Intent(USE_INTENT_ACTION).apply { + putExtra(USE_CAMERA, useCamera) + putExtra(USE_MICROPHONE, useMic) + putExtra(USE_HOTWORD, useHotword) + putExtra(FINISH_EARLY, finishEarly) + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + } + ) + } + + @Test + @CddTest(requirement = "9.8.2/H-5-1,T-5-1,A-2-1") + fun testCameraIndicator() { + // If camera is not available skip the test + assumeTrue(packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY)) + val manager = context.getSystemService(CameraManager::class.java)!! + assumeTrue(manager.cameraIdList.isNotEmpty()) + changeSafetyCenterFlag(false.toString()) + testCameraAndMicIndicator(useMic = false, useCamera = true) + } + + @Test + @CddTest(requirement = "9.8.2/H-4-1,T-4-1,A-1-1") + fun testMicIndicator() { + changeSafetyCenterFlag(false.toString()) + testCameraAndMicIndicator(useMic = true, useCamera = false) + } + + // TODO b/269687722: remove once mainline presubmit uses a more recent S build + @Test + @AsbSecurityTest(cveBugId = [258672042]) + fun testMicIndicatorWithManualFinishOpStillShows() { + changeSafetyCenterFlag(false.toString()) + testCameraAndMicIndicator(useMic = true, useCamera = false, finishEarly = true) + } + + @Test + @CddTest(requirement = "9.8.2/H-4-1,T-4-1,A-1-1") + fun testHotwordIndicatorBehavior() { + changeSafetyCenterFlag(false.toString()) + testCameraAndMicIndicator(useMic = false, useCamera = false, useHotword = true) + } + + @Test + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.TIRAMISU, codeName = "Tiramisu") + fun testChainUsageWithOtherUsage() { + // TV has only the mic icon + assumeFalse(isTv) + // Car has separate panels for mic and camera for now. + // TODO(b/218788634): enable this test for car once the new camera indicator is implemented. + assumeFalse(isCar) + // If camera is not available skip the test + assumeTrue(packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY)) + changeSafetyCenterFlag(false.toString()) + testCameraAndMicIndicator(useMic = false, useCamera = true, chainUsage = true) + } + + @Test + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.TIRAMISU, codeName = "Tiramisu") + fun testSafetyCenterCameraIndicator() { + assumeFalse(isTv) + assumeFalse(isCar) + val manager = context.getSystemService(CameraManager::class.java)!! + assumeTrue(manager.cameraIdList.isNotEmpty()) + changeSafetyCenterFlag(true.toString()) + assumeSafetyCenterEnabled() + testCameraAndMicIndicator(useMic = false, useCamera = true, safetyCenterEnabled = true) + } + + @Test + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.TIRAMISU, codeName = "Tiramisu") + fun testSafetyCenterMicIndicator() { + assumeFalse(isTv) + assumeFalse(isCar) + changeSafetyCenterFlag(true.toString()) + assumeSafetyCenterEnabled() + testCameraAndMicIndicator(useMic = true, useCamera = false, safetyCenterEnabled = true) + } + + @Test + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.TIRAMISU, codeName = "Tiramisu") + fun testSafetyCenterHotwordIndicatorBehavior() { + assumeFalse(isTv) + assumeFalse(isCar) + assumeTrue(HOTWORD_DETECTION_SERVICE_REQUIRED) + changeSafetyCenterFlag(true.toString()) + assumeSafetyCenterEnabled() + testCameraAndMicIndicator( + useMic = false, + useCamera = false, + useHotword = true, + safetyCenterEnabled = true + ) + } + + @Test + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.TIRAMISU, codeName = "Tiramisu") + fun testSafetyCenterChainUsageWithOtherUsage() { + assumeFalse(isTv) + assumeFalse(isCar) + changeSafetyCenterFlag(true.toString()) + assumeSafetyCenterEnabled() + testCameraAndMicIndicator( + useMic = false, + useCamera = true, + chainUsage = true, + safetyCenterEnabled = true + ) + } + + private fun testCameraAndMicIndicator( + useMic: Boolean, + useCamera: Boolean, + useHotword: Boolean = false, + chainUsage: Boolean = false, + safetyCenterEnabled: Boolean = false, + finishEarly: Boolean = false + ) { + // If camera is not available skip the test + if (useCamera) { + assumeTrue(packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY)) + } + var chainAttribution: AttributionSource? = null + openApp(useMic, useCamera, useHotword, finishEarly) + try { + eventually { + val appView = uiDevice.findObject(UiSelector().textContains(APP_LABEL)) + assertTrue("View with text $APP_LABEL not found", appView.exists()) + } + if (chainUsage) { + chainAttribution = createChainAttribution() + runWithShellPermissionIdentity { + val ret = + permissionManager.checkPermissionForStartDataDelivery( + Manifest.permission.RECORD_AUDIO, + chainAttribution!!, + "" + ) + assertEquals(PermissionManager.PERMISSION_GRANTED, ret) + } + } + + assertIndicatorsShown(useMic, useCamera, useHotword, chainUsage, safetyCenterEnabled) + + if (finishEarly) { + // Assert that the indicator doesn't go away + val indicatorGoneException: Exception? = + try { + eventually { assertIndicatorsShown(false, false, false) } + null + } catch (e: Exception) { + e + } + assertNotNull("Expected the indicator to be present", indicatorGoneException) + } + } finally { + if (chainAttribution != null) { + runWithShellPermissionIdentity { + permissionManager.finishDataDelivery( + Manifest.permission.RECORD_AUDIO, + chainAttribution + ) + } + } + } + } + + private fun assertIndicatorsShown( + useMic: Boolean, + useCamera: Boolean, + useHotword: Boolean = false, + chainUsage: Boolean = false, + safetyCenterEnabled: Boolean = false, + ) { + if (isTv) { + assertTvIndicatorsShown(useMic, useCamera, useHotword) + } else if (isCar) { + assertCarIndicatorsShown(useMic, useCamera, useHotword, chainUsage) + } else { + uiDevice.openQuickSettings() + val micInUse = + if (SdkLevel.isAtLeastU() && HOTWORD_DETECTION_SERVICE_REQUIRED) { + useMic || useHotword + } else { + useMic + } + assertPrivacyChipAndIndicatorsPresent( + micInUse, + useCamera, + chainUsage, + safetyCenterEnabled + ) + uiDevice.pressBack() + } + } + + private fun assertTvIndicatorsShown(useMic: Boolean, useCamera: Boolean, useHotword: Boolean) { + if (useMic || useHotword || (!useMic && !useCamera && !useHotword)) { + eventually { + val found = + WindowManagerStateHelper().waitFor( + "Waiting for the mic indicator window to come up" + ) { + it.containsWindow(TV_MIC_INDICATOR_WINDOW_TITLE) && + it.isWindowVisible(TV_MIC_INDICATOR_WINDOW_TITLE) + } + if (useMic) { + assertTrue("Did not find chip", found) + } else { + assertFalse("Found chip, but did not expect to", found) + } + } + } + if (useCamera) { + // There is no camera indicator on TVs. + } + } + + private fun assertCarIndicatorsShown( + useMic: Boolean, + useCamera: Boolean, + useHotword: Boolean, + chainUsage: Boolean + ) { + eventually { + // Ensure the privacy chip is present (or not) + carMicPrivacyChipId = context.getString(R.string.car_mic_privacy_chip_id) + carCameraPrivacyChipId = context.getString(R.string.car_camera_privacy_chip_id) + var micPrivacyChip = uiDevice.findObject(By.res(carMicPrivacyChipId)) + var cameraPrivacyChip = uiDevice.findObject(By.res(carCameraPrivacyChipId)) + if (useMic) { + assertNotNull("Did not find mic chip", micPrivacyChip) + // Click to chip to show the panel. + micPrivacyChip.click() + } else if (useCamera) { + assertNotNull("Did not find camera chip", cameraPrivacyChip) + // Click to chip to show the panel. + cameraPrivacyChip.click() + } else { + assertNull("Found mic chip, but did not expect to", micPrivacyChip) + assertNull("Found camera chip, but did not expect to", cameraPrivacyChip) + } + } + + eventually { + if (chainUsage) { + // Not applicable for car + assertChainMicAndOtherCameraUsed(false) + return@eventually + } + if (useMic) { + // There should be a mic privacy panel after mic privacy chip is clicked + val micLabelView = uiDevice.findObject(UiSelector().textContains(micLabel)) + assertTrue("View with text $micLabel not found", micLabelView.exists()) + val appView = uiDevice.findObject(UiSelector().textContains(APP_LABEL)) + assertTrue("View with text $APP_LABEL not found", appView.exists()) + } else if (useCamera) { + // There should be a camera privacy panel after camera privacy chip is clicked + val cameraLabelView = uiDevice.findObject(UiSelector().textContains(cameraLabel)) + assertTrue("View with text $cameraLabel not found", cameraLabelView.exists()) + val appView = uiDevice.findObject(UiSelector().textContains(APP_LABEL)) + assertTrue("View with text $APP_LABEL not found", appView.exists()) + } else { + // There should be no privacy panel when using hot word + val micLabelView = uiDevice.findObject(UiSelector().textContains(micLabel)) + assertFalse( + "View with text $micLabel found, but did not expect to", + micLabelView.exists() + ) + val cameraLabelView = uiDevice.findObject(UiSelector().textContains(cameraLabel)) + assertFalse( + "View with text $cameraLabel found, but did not expect to", + cameraLabelView.exists() + ) + val appView = uiDevice.findObject(UiSelector().textContains(APP_LABEL)) + assertFalse( + "View with text $APP_LABEL found, but did not expect to", + appView.exists() + ) + } + } + } + + private fun assertPrivacyChipAndIndicatorsPresent( + useMic: Boolean, + useCamera: Boolean, + chainUsage: Boolean, + safetyCenterEnabled: Boolean = false + ) { + // Ensure the privacy chip is present + if (useCamera || useMic) { + eventually { + val privacyChip = UiAutomatorUtils2.waitFindObjectOrNull(By.res(PRIVACY_CHIP_ID)) + assertNotNull("view with id $PRIVACY_CHIP_ID not found", privacyChip) + privacyChip.click() + } + } else { + UiAutomatorUtils2.waitUntilObjectGone(By.res(PRIVACY_CHIP_ID)) + return + } + + eventually { + if (chainUsage) { + assertChainMicAndOtherCameraUsed(safetyCenterEnabled) + return@eventually + } + if (useMic) { + if (safetyCenterEnabled) { + assertSafetyCenterMicViewNotNull() + } else { + val iconView = waitFindObject(By.descContains(micLabel)) + assertNotNull("View with description '$micLabel' not found", iconView) + } + } + if (useCamera) { + if (safetyCenterEnabled) { + assertSafetyCenterCameraViewNotNull() + } else { + val iconView = waitFindObject(By.descContains(cameraLabel)) + assertNotNull("View with description '$cameraLabel' not found", iconView) + } + } + var appView = waitFindObject(By.textContains(APP_LABEL)) + assertNotNull("View with text $APP_LABEL not found", appView) + } + uiDevice.pressBack() + } + + private fun createChainAttribution(): AttributionSource? { + var attrSource: AttributionSource? = null + runWithShellPermissionIdentity { + try { + val appUid = packageManager.getPackageUid(APP_PKG, 0) + val childAttribution = AttributionSource(appUid, APP_PKG, null) + val attribution = + AttributionSource( + Process.myUid(), + context.packageName, + null, + null, + permissionManager.registerAttributionSource(childAttribution) + ) + attrSource = permissionManager.registerAttributionSource(attribution) + } catch (e: PackageManager.NameNotFoundException) { + Assert.fail("Expected to find a UID for $APP_LABEL") + } + } + return attrSource + } + + private fun assertChainMicAndOtherCameraUsed(safetyCenterEnabled: Boolean) { + val shellLabel = + try { + context.packageManager + .getApplicationInfo(SHELL_PKG, 0) + .loadLabel(context.packageManager) + .toString() + } catch (e: PackageManager.NameNotFoundException) { + "Did not find shell package" + } + + if (safetyCenterEnabled) { + assertSafetyCenterMicViewNotNull() + assertSafetyCenterCameraViewNotNull() + var shellView = waitFindObject(By.textContains(shellLabel)) + assertNotNull("View with text $shellLabel not found", shellView) + } else { + val usageViews = uiDevice.findObjects(By.res(PRIVACY_ITEM_ID)) + assertEquals("Expected two usage views", 2, usageViews.size) + val appViews = uiDevice.findObjects(By.textContains(APP_LABEL)) + assertEquals("Expected two $APP_LABEL view", 2, appViews.size) + val shellView = uiDevice.findObjects(By.textContains(shellLabel)) + assertEquals("Expected only one shell view", 1, shellView.size) + } + } + + private fun pressBack() { + uiDevice.pressBack() + } + + private fun pressHome() { + uiDevice.pressHome() + } + + private fun changeSafetyCenterFlag(safetyCenterEnabled: String) { + runWithShellPermissionIdentity { + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_PRIVACY, + SAFETY_CENTER_ENABLED, + safetyCenterEnabled, + false + ) + } + } + + @RequiresApi(Build.VERSION_CODES.TIRAMISU) + private fun assumeSafetyCenterEnabled() { + val safetyCenterManager = context.getSystemService(SafetyCenterManager::class.java)!! + val isSafetyCenterEnabled: Boolean = + runWithShellPermissionIdentity { safetyCenterManager.isSafetyCenterEnabled } + assumeTrue(isSafetyCenterEnabled) + } + + protected fun waitFindObject(selector: BySelector): UiObject2? { + return findObjectWithRetry({ t -> UiAutomatorUtils2.waitFindObject(selector, t) }) + } + + private fun findObjectWithRetry( + automatorMethod: (timeoutMillis: Long) -> UiObject2?, + timeoutMillis: Long = TIMEOUT_MILLIS + ): UiObject2? { + val startTime = SystemClock.elapsedRealtime() + return try { + automatorMethod(timeoutMillis) + } catch (e: StaleObjectException) { + val remainingTime = timeoutMillis - (SystemClock.elapsedRealtime() - startTime) + if (remainingTime <= 0) { + throw e + } + automatorMethod(remainingTime) + } + } + + private fun getPermissionControllerString(resourceName: String): String { + val permissionControllerPkg = context.packageManager.permissionControllerPackageName + try { + val permissionControllerContext = + context.createPackageContext(permissionControllerPkg, 0) + val resourceId = + permissionControllerContext.resources.getIdentifier( + resourceName, + "string", + "com.android.permissioncontroller" + ) + return permissionControllerContext.getString(resourceId) + } catch (e: PackageManager.NameNotFoundException) { + throw RuntimeException(e) + } + } + + private fun assertSafetyCenterMicViewNotNull() { + val micView = waitFindObject(byOneOfText(originalMicLabel, safetyCenterMicLabel)) + assertNotNull( + "View with text '$originalMicLabel' or '$safetyCenterMicLabel' not found", + micView + ) + } + + private fun assertSafetyCenterCameraViewNotNull() { + val cameraView = waitFindObject(byOneOfText(originalCameraLabel, safetyCenterCameraLabel)) + assertNotNull( + "View with text '$originalCameraLabel' or '$safetyCenterCameraLabel' not found", + cameraView + ) + } + + private fun byOneOfText(vararg textValues: String) = + By.text(Pattern.compile(textValues.joinToString(separator = "|") { Pattern.quote(it) })) +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/LocationAccuracyTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/LocationAccuracyTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..176010cf5c09a03084fe0c87864c8d799fd0e5a2 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/LocationAccuracyTest.kt @@ -0,0 +1,164 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.Manifest.permission.ACCESS_BACKGROUND_LOCATION +import android.Manifest.permission.ACCESS_COARSE_LOCATION +import android.Manifest.permission.ACCESS_FINE_LOCATION +import androidx.test.filters.FlakyTest +import androidx.test.uiautomator.By +import com.android.modules.utils.build.SdkLevel +import org.junit.Assume.assumeFalse +import org.junit.Assume.assumeTrue +import org.junit.Before +import org.junit.Test + +@FlakyTest +class LocationAccuracyTest : BaseUsePermissionTest() { + + companion object { + private const val LOCATION_ACCURACY_PRECISE_RADIO_BUTTON = + "com.android.permissioncontroller:id/permission_location_accuracy_radio_fine" + private const val LOCATION_ACCURACY_COARSE_RADIO_BUTTON = + "com.android.permissioncontroller:id/permission_location_accuracy_radio_coarse" + private const val LOCATION_ACCURACY_PRECISE_ONLY_VIEW = + "com.android.permissioncontroller:id/permission_location_accuracy_fine_only" + private const val LOCATION_ACCURACY_COARSE_ONLY_VIEW = + "com.android.permissioncontroller:id/permission_location_accuracy_coarse_only" + } + + @Before + fun setup() { + assumeTrue("Location Accuracy is only available on S+", SdkLevel.isAtLeastS()) + assumeFalse(isAutomotive) + assumeFalse(isTv) + assumeFalse(isWatch) + } + + @Test + fun testCoarsePermissionIsGranted() { + installPackage(APP_APK_PATH_31) + + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + assertAppHasPermission(ACCESS_BACKGROUND_LOCATION, false) + + requestAppPermissionsAndAssertResult( + ACCESS_FINE_LOCATION to false, + ACCESS_COARSE_LOCATION to true + ) { + clickCoarseLocationRadioButton() + clickPreciseLocationRadioButton() + clickCoarseLocationRadioButton() + clickPermissionRequestAllowForegroundButton() + } + } + + @Test + fun testPrecisePermissionIsGranted() { + installPackage(APP_APK_PATH_31) + + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + assertAppHasPermission(ACCESS_BACKGROUND_LOCATION, false) + + requestAppPermissionsAndAssertResult( + ACCESS_FINE_LOCATION to true, + ACCESS_COARSE_LOCATION to true + ) { + clickPreciseLocationRadioButton() + clickCoarseLocationRadioButton() + clickPreciseLocationRadioButton() + clickPermissionRequestAllowForegroundButton() + } + } + + @Test + fun testPermissionUpgradeFlow() { + installPackage(APP_APK_PATH_31) + + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + assertAppHasPermission(ACCESS_BACKGROUND_LOCATION, false) + + requestAppPermissionsAndAssertResult( + ACCESS_FINE_LOCATION to false, + ACCESS_COARSE_LOCATION to true + ) { + clickCoarseLocationRadioButton() + clickPreciseLocationRadioButton() + clickCoarseLocationRadioButton() + clickPermissionRequestAllowForegroundButton() + } + + // now request again to change to precise location + requestAppPermissionsAndAssertResult( + ACCESS_FINE_LOCATION to true, + ACCESS_COARSE_LOCATION to true + ) { + clickPreciseLocationOnlyView() + clickPermissionRequestAllowForegroundButton() + } + } + + @Test + fun testCoarseRequestAndGrant() { + installPackage(APP_APK_PATH_31) + + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + assertAppHasPermission(ACCESS_BACKGROUND_LOCATION, false) + + requestAppPermissionsAndAssertResult(ACCESS_COARSE_LOCATION to true) { + clickCoarseLocationOnlyView() + clickPermissionRequestAllowForegroundButton() + } + + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + assertAppHasPermission(ACCESS_BACKGROUND_LOCATION, false) + } + + @Test + fun testPreSAppsAutograntFineIfCoarseGranted() { + installPackage(APP_APK_PATH_30) + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + requestAppPermissionsAndAssertResult(ACCESS_COARSE_LOCATION to true) { + clickPermissionRequestAllowForegroundButton() + } + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + requestAppPermissionsAndAssertResult( + ACCESS_FINE_LOCATION to true, + waitForWindowTransition = false + ) {} + } + + private fun clickPreciseLocationRadioButton() { + click(By.res(LOCATION_ACCURACY_PRECISE_RADIO_BUTTON)) + } + + private fun clickCoarseLocationRadioButton() { + click(By.res(LOCATION_ACCURACY_COARSE_RADIO_BUTTON)) + } + + private fun clickPreciseLocationOnlyView() { + click(By.res(LOCATION_ACCURACY_PRECISE_ONLY_VIEW)) + } + + private fun clickCoarseLocationOnlyView() { + click(By.res(LOCATION_ACCURACY_COARSE_ONLY_VIEW)) + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/LocationProviderInterceptDialogTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/LocationProviderInterceptDialogTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..e7920edfd23c1b7934a7d0fc9524000028d2ee6b --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/LocationProviderInterceptDialogTest.kt @@ -0,0 +1,149 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.app.Activity +import android.app.AppOpsManager +import android.content.ComponentName +import android.content.Intent +import android.location.LocationManager +import android.os.Build +import android.permission.cts.MtsIgnore +import android.permission.cts.PermissionUtils +import androidx.test.filters.FlakyTest +import androidx.test.filters.SdkSuppress +import androidx.test.uiautomator.By +import com.android.compatibility.common.util.AppOpsUtils +import com.android.compatibility.common.util.CddTest +import com.android.compatibility.common.util.SystemUtil +import java.util.concurrent.TimeUnit +import org.junit.Assert +import org.junit.Assume.assumeFalse +import org.junit.Before +import org.junit.Ignore +import org.junit.Test + +private const val EXTRA_PACKAGE_NAME = "android.intent.extra.PACKAGE_NAME" +private const val ACTION_MANAGE_APP_PERMISSIONS = "android.intent.action.MANAGE_APP_PERMISSIONS" + +/** + * Tests that LocationProviderInterceptDialog (a warning dialog) shows when attempting to view the + * location permission for location a service provider app (e.g., usually GMS, but we use a custom + * app in this test). + */ +@SdkSuppress(minSdkVersion = Build.VERSION_CODES.S) +@FlakyTest +@CddTest(requirement = "9.1/C-0-1") +class LocationProviderInterceptDialogTest : BaseUsePermissionTest() { + @Before + fun setup() { + assumeFalse(isAutomotive) + assumeFalse(isTv) + assumeFalse(isWatch) + installPackage(MIC_LOCATION_PROVIDER_APP_APK_PATH, grantRuntimePermissions = true) + AppOpsUtils.setOpMode( + MIC_LOCATION_PROVIDER_APP_PACKAGE_NAME, + AppOpsManager.OPSTR_MOCK_LOCATION, + AppOpsManager.MODE_ALLOWED + ) + enableMicrophoneAppAsLocationProvider() + } + + @Test + @Ignore("b/288471744") + @MtsIgnore(bugId = 288471744) + fun clickLocationPermission_showDialog_clickOk() { + openPermissionScreenForApp() + clickAndWaitForWindowTransition(By.text("Location")) + findView(By.textContains("Location access can be modified from location settings"), true) + click(By.res(OK_BUTTON_RES)) + } + + @Test + @Ignore("b/288471744") + @MtsIgnore(bugId = 288471744) + fun clickLocationPermission_showDialog_clickLocationAccess() { + openPermissionScreenForApp() + clickAndWaitForWindowTransition(By.text("Location")) + findView(By.textContains("Location access can be modified from location settings"), true) + clickAndWaitForWindowTransition(By.res(LOCATION_ACCESS_BUTTON_RES)) + findView(By.res(USE_LOCATION_LABEL_ID), true) + } + + @Test + @Ignore("b/288471744") + @MtsIgnore(bugId = 288471744) + fun checkRestrictedPermissions() { + context.sendBroadcast( + Intent(PermissionTapjackingTest.ACTION_SHOW_OVERLAY) + .putExtra("package", MIC_LOCATION_PROVIDER_APP_PACKAGE_NAME) + .putExtra("permission", "android.permission.BACKGROUND_CAMERA") + ) + } + + private fun openPermissionScreenForApp() { + restartPermissionController() + doAndWaitForWindowTransition { + SystemUtil.runWithShellPermissionIdentity { + context.startActivity( + Intent(ACTION_MANAGE_APP_PERMISSIONS).apply { + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) + putExtra(EXTRA_PACKAGE_NAME, MIC_LOCATION_PROVIDER_APP_PACKAGE_NAME) + } + ) + } + } + } + + private fun restartPermissionController() { + PermissionUtils.clearAppState(permissionControllerPackageName) + } + + private fun enableMicrophoneAppAsLocationProvider() { + val locationManager = context.getSystemService(LocationManager::class.java)!! + val future = + startActivityForFuture( + Intent().apply { + component = + ComponentName( + MIC_LOCATION_PROVIDER_APP_PACKAGE_NAME, + "$MIC_LOCATION_PROVIDER_APP_PACKAGE_NAME.AddLocationProviderActivity" + ) + } + ) + val result = future.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS) + Assert.assertEquals(Activity.RESULT_OK, result.resultCode) + Assert.assertTrue( + SystemUtil.callWithShellPermissionIdentity { + locationManager.isProviderPackage(MIC_LOCATION_PROVIDER_APP_PACKAGE_NAME) + } + ) + } + + companion object { + private const val USE_LOCATION_LABEL_ID = "com.android.settings:id/switch_text" + private const val MIC_LOCATION_PROVIDER_APP_APK_PATH = + "$APK_DIRECTORY/CtsAccessMicrophoneAppLocationProvider.apk" + private const val MIC_LOCATION_PROVIDER_APP_PACKAGE_NAME = + "android.permissionui.cts.accessmicrophoneapplocationprovider" + private const val OK_BUTTON_RES = "android:id/button2" + private const val LOCATION_ACCESS_BUTTON_RES = "android:id/button1" + private val permissionControllerPackageName = + context.packageManager.permissionControllerPackageName + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/MediaPermissionTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/MediaPermissionTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..d41c7454fb75351bb0150b717535edf41400c157 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/MediaPermissionTest.kt @@ -0,0 +1,183 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.Manifest +import android.os.Build +import androidx.test.filters.FlakyTest +import androidx.test.filters.SdkSuppress +import com.android.compatibility.common.util.CddTest +import com.android.compatibility.common.util.SystemUtil +import org.junit.Assume +import org.junit.Test + +/** + * Tests media storage supergroup behavior. I.e., on a T+ platform, for legacy (targetSdk 33 + installPackage(APP_APK_PATH_LATEST, reinstall = true) + + // Request READ_MEDIA_* + requestAppPermissionsAndAssertResult( + READ_MEDIA_AUDIO to true, + READ_MEDIA_VIDEO to true, + READ_MEDIA_IMAGES to true, + waitForWindowTransition = false + ) { + // Don't click any grant dialog buttons because no grant dialog should appear + } + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/NoPermissionTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/NoPermissionTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..a5d42881289f0753c6386c703ef60d7fce8cbdd0 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/NoPermissionTest.kt @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.app.Activity +import androidx.test.filters.FlakyTest +import androidx.test.runner.AndroidJUnit4 +import com.android.modules.utils.build.SdkLevel +import org.junit.Assume +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +@FlakyTest +class NoPermissionTest : BaseUsePermissionTest() { + @Test + fun testStartActivity22() { + Assume.assumeFalse(SdkLevel.isAtLeastT()) + installPackage(APP_APK_PATH_22_NONE) + + startAppActivityAndAssertResultCode(Activity.RESULT_OK) {} + + clearTargetSdkWarning() + } + + @Test + fun testStartActivityLatest() { + installPackage(APP_APK_PATH_LATEST_NONE) + + startAppActivityAndAssertResultCode(Activity.RESULT_OK) {} + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/NotificationPermissionTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/NotificationPermissionTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..9b72d17061ccb1e89e257765d5236e5876e93e3c --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/NotificationPermissionTest.kt @@ -0,0 +1,416 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.Manifest.permission.POST_NOTIFICATIONS +import android.Manifest.permission.RECORD_AUDIO +import android.app.ActivityOptions +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Context.RECEIVER_EXPORTED +import android.content.Intent +import android.content.IntentFilter +import android.content.pm.PackageManager +import android.content.pm.PackageManager.PERMISSION_GRANTED +import android.os.Build +import android.os.UserHandle +import android.provider.Settings +import androidx.test.filters.FlakyTest +import androidx.test.filters.SdkSuppress +import androidx.test.uiautomator.By +import com.android.compatibility.common.util.SystemUtil +import com.android.compatibility.common.util.SystemUtil.callWithShellPermissionIdentity +import com.android.compatibility.common.util.SystemUtil.runWithShellPermissionIdentity +import java.util.concurrent.CountDownLatch +import org.junit.After +import org.junit.Assert +import org.junit.Assume.assumeFalse +import org.junit.Before +import org.junit.Test + +const val EXTRA_CREATE_CHANNELS = "extra_create" +const val EXTRA_REQUEST_OTHER_PERMISSIONS = "extra_request_permissions" +const val EXTRA_REQUEST_NOTIF_PERMISSION = "extra_request_notif_permission" +const val EXTRA_START_SECOND_ACTIVITY = "extra_start_second_activity" +const val EXTRA_START_SECOND_APP = "extra_start_second_app" +const val ACTIVITY_LABEL = "CreateNotif" +const val SECOND_ACTIVITY_LABEL = "EmptyActivity" +const val ALLOW = "to send you" +const val INTENT_ACTION = "usepermission.createchannels.MAIN" +const val BROADCAST_ACTION = "usepermission.createchannels.BROADCAST" +const val NOTIFICATION_PERMISSION_ENABLED = "notification_permission_enabled" +const val EXPECTED_TIMEOUT_MS = 2000L + +@SdkSuppress(minSdkVersion = Build.VERSION_CODES.TIRAMISU, codeName = "Tiramisu") +@FlakyTest +class NotificationPermissionTest : BaseUsePermissionTest() { + + private val cr = callWithShellPermissionIdentity { + context.createContextAsUser(UserHandle.SYSTEM, 0).contentResolver + } + private var previousEnableState = -1 + private var countDown: CountDownLatch = CountDownLatch(1) + private var allowedGroups = listOf() + private val receiver: BroadcastReceiver = + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + allowedGroups = + intent?.getStringArrayListExtra( + PackageManager.EXTRA_REQUEST_PERMISSIONS_RESULTS + ) + ?: emptyList() + countDown.countDown() + } + } + + @Before + fun setLatchAndEnablePermission() { + // b/220968160: Notification permission is not enabled on TV devices. + assumeFalse(isTv) + runWithShellPermissionIdentity { + previousEnableState = Settings.Secure.getInt(cr, NOTIFICATION_PERMISSION_ENABLED, 0) + Settings.Secure.putInt(cr, NOTIFICATION_PERMISSION_ENABLED, 1) + } + countDown = CountDownLatch(1) + allowedGroups = listOf() + context.registerReceiver(receiver, IntentFilter(BROADCAST_ACTION), RECEIVER_EXPORTED) + } + + @After + fun resetPermissionAndRemoveReceiver() { + if (previousEnableState >= 0) { + runWithShellPermissionIdentity { + Settings.Secure.putInt(cr, NOTIFICATION_PERMISSION_ENABLED, previousEnableState) + } + context.unregisterReceiver(receiver) + } + } + + @Test + fun notificationPermissionAddedForLegacyApp() { + installPackage(APP_APK_PATH_CREATE_NOTIFICATION_CHANNELS_31, expectSuccess = true) + runWithShellPermissionIdentity { + Assert.assertTrue( + "SDK < 32 apps should have POST_NOTIFICATIONS added implicitly", + context.packageManager + .getPackageInfo(APP_PACKAGE_NAME, PackageManager.GET_PERMISSIONS) + .requestedPermissions!! + .contains(POST_NOTIFICATIONS) + ) + } + } + + @Test + fun notificationPermissionIsNotImplicitlyAddedTo33Apps() { + installPackage(APP_APK_PATH_LATEST_NONE, expectSuccess = true) + runWithShellPermissionIdentity { + val requestedPerms = + context.packageManager + .getPackageInfo(APP_PACKAGE_NAME, PackageManager.GET_PERMISSIONS) + .requestedPermissions + Assert.assertTrue( + "SDK >= 33 apps should NOT have POST_NOTIFICATIONS added implicitly", + requestedPerms == null || !requestedPerms.contains(POST_NOTIFICATIONS) + ) + } + } + + @Test + fun notificationPromptShowsForLegacyAppAfterCreatingNotificationChannels() { + installPackage(APP_APK_PATH_CREATE_NOTIFICATION_CHANNELS_31, expectSuccess = true) + launchApp() + clickPermissionRequestAllowButton() + } + + @Test + fun notificationPromptShowsForLegacyAppWithNotificationChannelsOnStart() { + installPackage(APP_APK_PATH_CREATE_NOTIFICATION_CHANNELS_31, expectSuccess = true) + // create channels, then leave the app + launchApp() + killTestApp() + launchApp() + waitFindObject(By.textContains(ALLOW)) + clickPermissionRequestAllowButton() + } + + @Test + fun notificationPromptDoesNotShowForLegacyAppWithNoNotificationChannels_onLaunch() { + installPackage(APP_APK_PATH_CREATE_NOTIFICATION_CHANNELS_31, expectSuccess = true) + launchApp(createChannels = false) + assertDialogNotShowing() + } + @Test + fun notificationPromptDoesNotShowForNonLauncherIntentCategoryLaunches_onChannelCreate() { + installPackage(APP_APK_PATH_CREATE_NOTIFICATION_CHANNELS_31, expectSuccess = true) + launchApp(launcherCategory = false) + assertDialogNotShowing() + } + + @Test + fun notificationPromptDoesNotShowForNonLauncherIntentCategoryLaunches_onLaunch() { + installPackage(APP_APK_PATH_CREATE_NOTIFICATION_CHANNELS_31, expectSuccess = true) + // create channels, then leave the app + launchApp() + killTestApp() + launchApp(launcherCategory = false) + assertDialogNotShowing() + } + + @Test + fun notificationPromptDoesNotShowForNonMainIntentActionLaunches_onLaunch() { + installPackage(APP_APK_PATH_CREATE_NOTIFICATION_CHANNELS_31, expectSuccess = true) + // create channels, then leave the app + launchApp() + killTestApp() + launchApp(intentAction = INTENT_ACTION) + assertDialogNotShowing() + } + + @Test + fun notificationPromptDoesNotShowForNonMainIntentActionLaunches_onChannelCreate() { + installPackage(APP_APK_PATH_CREATE_NOTIFICATION_CHANNELS_31, expectSuccess = true) + launchApp(intentAction = INTENT_ACTION) + assertDialogNotShowing() + } + + @Test + fun notificationPromptShowsIfActivityOptionSet() { + installPackage(APP_APK_PATH_CREATE_NOTIFICATION_CHANNELS_31, expectSuccess = true) + // create channels, then leave the app + launchApp() + killTestApp() + launchApp(intentAction = INTENT_ACTION, isEligibleForPromptOption = true) + clickPermissionRequestAllowButton() + } + + @Test + fun notificationPromptShownForSubsequentStartsIfTaskStartWasLauncher() { + installPackage(APP_APK_PATH_CREATE_NOTIFICATION_CHANNELS_31, expectSuccess = true) + launchApp(startSecondActivity = true) + if (isAutomotive || isWatch) { + waitFindObject(By.text(getPermissionControllerString(ALLOW_BUTTON_TEXT))) + } else { + waitFindObject(By.res(ALLOW_BUTTON)) + } + pressBack() + clickPermissionRequestAllowButton() + } + + @Test + fun notificationPromptNotShownForSubsequentStartsIfTaskStartWasNotLauncher() { + installPackage(APP_APK_PATH_CREATE_NOTIFICATION_CHANNELS_31, expectSuccess = true) + launchApp(intentAction = INTENT_ACTION, startSecondActivity = true) + assertDialogNotShowing() + } + + @Test + fun notificationPromptShownForChannelCreateInSecondActivityIfTaskStartWasLauncher() { + installPackage(APP_APK_PATH_CREATE_NOTIFICATION_CHANNELS_31, expectSuccess = true) + launchApp(startSecondActivity = true, createChannels = false) + clickPermissionRequestAllowButton() + } + + @Test + fun notificationPromptNotShownForChannelCreateInSecondActivityIfTaskStartWasntLauncher() { + installPackage(APP_APK_PATH_CREATE_NOTIFICATION_CHANNELS_31, expectSuccess = true) + launchApp(intentAction = INTENT_ACTION, startSecondActivity = true, createChannels = false) + assertDialogNotShowing() + } + + @Test + fun notificationPromptNotShownForSubsequentStartsIfSubsequentIsDifferentPkg() { + installPackage(APP_APK_PATH_CREATE_NOTIFICATION_CHANNELS_31, expectSuccess = true) + installPackage(APP_APK_PATH_OTHER_APP, expectSuccess = true) + // perform a launcher start, then start a secondary app + launchApp(startSecondaryAppAndCreateChannelsAfterSecondStart = true) + try { + // Watch does not have app bar + if (!isWatch) { + waitFindObject(By.textContains(SECOND_ACTIVITY_LABEL)) + } + assertDialogNotShowing() + } finally { + uninstallPackage(OTHER_APP_PACKAGE_NAME) + } + } + + @Test + fun notificationGrantedOnLegacyGrant() { + installPackage(APP_APK_PATH_CREATE_NOTIFICATION_CHANNELS_31, expectSuccess = true) + launchApp() + clickPermissionRequestAllowButton() + assertAppPermissionGrantedState(POST_NOTIFICATIONS, granted = true) + } + + @Test + fun nonSystemServerPackageCannotShowPromptForOtherPackage() { + installPackage(APP_APK_PATH_CREATE_NOTIFICATION_CHANNELS_31, expectSuccess = true) + runWithShellPermissionIdentity { + val grantPermission = Intent(PackageManager.ACTION_REQUEST_PERMISSIONS_FOR_OTHER) + grantPermission.putExtra(Intent.EXTRA_PACKAGE_NAME, APP_PACKAGE_NAME) + grantPermission.putExtra( + PackageManager.EXTRA_REQUEST_PERMISSIONS_NAMES, + arrayOf(POST_NOTIFICATIONS) + ) + grantPermission.setPackage(context.packageManager.permissionControllerPackageName) + grantPermission.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + context.startActivity(grantPermission) + } + try { + clickPermissionRequestAllowButton(timeoutMillis = EXPECTED_TIMEOUT_MS) + Assert.fail("Expected not to find permission request dialog") + } catch (expected: RuntimeException) { + // Do nothing + } + } + + @Test + fun mergeAppPermissionRequestIntoNotificationAndVerifyResult() { + installPackage(APP_APK_PATH_CREATE_NOTIFICATION_CHANNELS_31, expectSuccess = true) + launchApp() + findPermissionRequestAllowButton() + // Notification dialog is showing, trigger RECORD_AUDIO check, and wait until it has been + // requested + val intent = createIntent(requestPermissions = true, intentAction = BROADCAST_ACTION) + context.sendBroadcast(intent) + countDown.await() + Thread.sleep(1000) + // reset countDownLatch + countDown = CountDownLatch(1) + + clickPermissionRequestAllowButton() + assertAppPermissionGrantedState(POST_NOTIFICATIONS, granted = true) + clickPermissionRequestAllowForegroundButton() + assertAppPermissionGrantedState(RECORD_AUDIO, granted = true) + countDown.await() + // Result should contain only the microphone request + Assert.assertEquals(listOf(RECORD_AUDIO), allowedGroups) + } + + @Test + fun mergeNotificationRequestIntoAppPermissionRequestAndVerifyResult() { + installPackage(APP_APK_PATH_CREATE_NOTIFICATION_CHANNELS_31, expectSuccess = true) + launchApp(createChannels = false, requestPermissions = true) + findPermissionRequestAllowForegroundButton() + // Microphone dialog is showing, trigger Notification check, and wait until it has been + // requested + val intent = createIntent(createChannels = true, intentAction = BROADCAST_ACTION) + context.sendBroadcast(intent) + countDown.await() + Thread.sleep(1000) + // reset countDownLatch + countDown = CountDownLatch(1) + + clickPermissionRequestAllowForegroundButton() + assertAppPermissionGrantedState(RECORD_AUDIO, granted = true) + clickPermissionRequestAllowButton() + assertAppPermissionGrantedState(POST_NOTIFICATIONS, granted = true) + countDown.await() + // Result should contain only the microphone request + Assert.assertEquals(listOf(RECORD_AUDIO), allowedGroups) + } + + @Test + fun legacyAppCannotExplicitlyRequestNotifications() { + installPackage(APP_APK_PATH_CREATE_NOTIFICATION_CHANNELS_31, expectSuccess = true) + launchApp(createChannels = false, requestNotificationPermission = true) + try { + clickPermissionRequestAllowButton(timeoutMillis = EXPECTED_TIMEOUT_MS) + Assert.fail("Expected not to find permission request dialog") + } catch (expected: RuntimeException) { + // Do nothing + } + } + + private fun assertAppPermissionGrantedState(permission: String, granted: Boolean) { + SystemUtil.eventually { + runWithShellPermissionIdentity { + Assert.assertEquals( + "Expected $permission to be granted", + context.packageManager.checkPermission(permission, APP_PACKAGE_NAME), + PERMISSION_GRANTED + ) + } + } + } + + private fun createIntent( + createChannels: Boolean = true, + requestNotificationPermission: Boolean = false, + requestPermissions: Boolean = false, + launcherCategory: Boolean = true, + intentAction: String = Intent.ACTION_MAIN, + startSecondActivity: Boolean = false, + startSecondaryAppAndCreateChannelsAfterSecondStart: Boolean = false + ): Intent { + val intent = + if (intentAction == Intent.ACTION_MAIN && launcherCategory) { + packageManager.getLaunchIntentForPackage(APP_PACKAGE_NAME)!! + } else { + Intent(intentAction) + } + + intent.`package` = APP_PACKAGE_NAME + intent.putExtra(EXTRA_CREATE_CHANNELS, createChannels) + intent.putExtra(EXTRA_REQUEST_OTHER_PERMISSIONS, requestPermissions) + intent.putExtra(EXTRA_REQUEST_NOTIF_PERMISSION, requestNotificationPermission) + intent.putExtra(EXTRA_START_SECOND_ACTIVITY, startSecondActivity) + intent.putExtra(EXTRA_START_SECOND_APP, startSecondaryAppAndCreateChannelsAfterSecondStart) + intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK + return intent + } + + private fun launchApp( + createChannels: Boolean = true, + requestNotificationPermission: Boolean = false, + requestPermissions: Boolean = false, + launcherCategory: Boolean = true, + intentAction: String = Intent.ACTION_MAIN, + isEligibleForPromptOption: Boolean = false, + startSecondActivity: Boolean = false, + startSecondaryAppAndCreateChannelsAfterSecondStart: Boolean = false + ) { + val intent = + createIntent( + createChannels, + requestNotificationPermission, + requestPermissions, + launcherCategory, + intentAction, + startSecondActivity, + startSecondaryAppAndCreateChannelsAfterSecondStart + ) + + val options = ActivityOptions.makeBasic() + options.isEligibleForLegacyPermissionPrompt = isEligibleForPromptOption + doAndWaitForWindowTransition { context.startActivity(intent, options.toBundle()) } + + // Watch does not have app bar + if (!isWatch) { + waitFindObject(By.textContains(ACTIVITY_LABEL)) + } + } + + private fun assertDialogNotShowing(timeoutMillis: Long = EXPECTED_TIMEOUT_MS) { + try { + clickPermissionRequestAllowButton(timeoutMillis) + Assert.fail("Expected not to find permission request dialog") + } catch (expected: RuntimeException) { + // Do nothing + } + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/PermissionDecisionsTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/PermissionDecisionsTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..495648b553694c80eb23c489267fd5500114fd03 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/PermissionDecisionsTest.kt @@ -0,0 +1,131 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.Manifest +import android.content.Intent +import android.os.Build +import android.permission.PermissionManager +import androidx.test.filters.FlakyTest +import androidx.test.filters.SdkSuppress +import androidx.test.uiautomator.By +import com.android.compatibility.common.util.SystemUtil +import org.junit.Assert.assertNull +import org.junit.Assume.assumeTrue +import org.junit.Before +import org.junit.Test + +@SdkSuppress(minSdkVersion = Build.VERSION_CODES.TIRAMISU, codeName = "Tiramisu") +@FlakyTest +class PermissionDecisionsTest : BaseUsePermissionTest() { + + companion object { + const val ASSERT_ABSENT_SELECTOR_TIMEOUT_MS = 500L + } + + // Permission decisions has only been implemented on Auto + @Before + fun assumeAuto() { + assumeTrue(isAutomotive) + } + + @Test + fun testAcceptPermissionDialogShowsDecisionWithGrantedAccess() { + installPackage(APP_APK_PATH_30_WITH_BACKGROUND) + requestAppPermissionsAndAssertResult(Manifest.permission.ACCESS_FINE_LOCATION to true) { + clickPermissionRequestAllowForegroundButton() + } + + openPermissionDecisions() + waitFindObject( + By.hasChild(By.text("You gave $APP_PACKAGE_NAME access to location")) + .hasChild(By.text("Today")) + ) + } + + @Test + fun testDenyPermissionDialogShowsDecisionWithDeniedAccess() { + installPackage(APP_APK_PATH_30_WITH_BACKGROUND) + requestAppPermissionsAndAssertResult(Manifest.permission.ACCESS_FINE_LOCATION to false) { + clickPermissionRequestDenyButton() + } + + openPermissionDecisions() + waitFindObject( + By.hasChild(By.text("You denied $APP_PACKAGE_NAME access to location")) + .hasChild(By.text("Today")) + ) + } + + @Test + fun testAppUninstallRemovesDecision() { + installPackage(APP_APK_PATH_30_WITH_BACKGROUND) + requestAppPermissionsAndAssertResult(Manifest.permission.ACCESS_FINE_LOCATION to false) { + clickPermissionRequestDenyButton() + } + uninstallApp() + + openPermissionDecisions() + assertNull( + waitFindObjectOrNull( + By.hasChild(By.text("You denied $APP_PACKAGE_NAME access to location")) + .hasChild(By.text("Today")), + ASSERT_ABSENT_SELECTOR_TIMEOUT_MS + ) + ) + } + + @Test + fun testClickOnDecisionAndChangeAccessUpdatesDecision() { + installPackage(APP_APK_PATH_30_WITH_BACKGROUND) + requestAppPermissionsAndAssertResult(Manifest.permission.ACCESS_FINE_LOCATION to true) { + clickPermissionRequestAllowForegroundButton() + } + + openPermissionDecisions() + + waitFindObject( + By.hasChild(By.text("You gave $APP_PACKAGE_NAME access to location")) + .hasChild(By.text("Today")) + ) + .click() + + waitFindObject(By.text(APP_PACKAGE_NAME)) + waitFindObject(By.text("Location access for this app")) + + // change the permission on the app permission screen and verify that updates the decision + // page + waitFindObject(By.text("Don’t allow")).click() + pressBack() + waitFindObject( + By.hasChild(By.text("You denied $APP_PACKAGE_NAME access to location")) + .hasChild(By.text("Today")) + ) + } + + private fun openPermissionDecisions() { + doAndWaitForWindowTransition { + SystemUtil.runWithShellPermissionIdentity { + context.startActivity( + Intent(PermissionManager.ACTION_REVIEW_PERMISSION_DECISIONS).apply { + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + } + ) + } + } + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/PermissionGroupTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/PermissionGroupTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..b27d9ea69359bc8381ae1a8d9c3e7372460beea0 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/PermissionGroupTest.kt @@ -0,0 +1,90 @@ +/* + * 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 android.permissionui.cts + +import androidx.test.filters.FlakyTest +import org.junit.Test + +/** Runtime permission behavior tests for permission groups. */ +@FlakyTest +class PermissionGroupTest : BaseUsePermissionTest() { + @Test + fun testRuntimeGroupGrantExpansion23() { + installPackage(APP_APK_PATH_23) + testRuntimeGroupGrantExpansion(true) + } + + @Test + fun testRuntimeGroupGrantExpansion25() { + installPackage(APP_APK_PATH_25) + testRuntimeGroupGrantExpansion(true) + } + + @Test + fun testRuntimeGroupGrantExpansion26() { + installPackage(APP_APK_PATH_26) + testRuntimeGroupGrantExpansion(false) + } + + @Test + fun testRuntimeGroupGrantExpansion30() { + installPackage(APP_APK_PATH_30) + testRuntimeGroupGrantExpansion(false) + } + + @Test + fun testPartiallyGrantedGroupExpansion() { + installPackage(APP_APK_PATH_30) + + // Start out without permission + assertAppHasPermission(android.Manifest.permission.RECEIVE_SMS, false) + assertAppHasPermission(android.Manifest.permission.SEND_SMS, false) + + // Grant only RECEIVE_SMS + uiAutomation.grantRuntimePermission( + APP_PACKAGE_NAME, + android.Manifest.permission.RECEIVE_SMS + ) + assertAppHasPermission(android.Manifest.permission.RECEIVE_SMS, true) + + // Request both permissions, and expect that SEND_SMS is granted + requestAppPermissionsAndAssertResult( + android.Manifest.permission.RECEIVE_SMS to true, + android.Manifest.permission.SEND_SMS to true, + waitForWindowTransition = false + ) {} + + assertAppHasPermission(android.Manifest.permission.SEND_SMS, true) + } + + private fun testRuntimeGroupGrantExpansion(expectExpansion: Boolean) { + // Start out without permission + assertAppHasPermission(android.Manifest.permission.RECEIVE_SMS, false) + assertAppHasPermission(android.Manifest.permission.SEND_SMS, false) + + // Request only one permission from the 'SMS' permission group at runtime, + // but two from this group are in the manifest + requestAppPermissionsAndAssertResult( + android.Manifest.permission.RECEIVE_SMS to true, + waitForWindowTransition = !isWatch + ) { + clickPermissionRequestAllowButton() + } + + assertAppHasPermission(android.Manifest.permission.SEND_SMS, expectExpansion) + } +} diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/behavior/BrowserRoleUiBehavior.java b/tests/cts/permissionui/src/android/permissionui/cts/PermissionNoOpGtsTest.kt similarity index 51% rename from PermissionController/src/com/android/permissioncontroller/role/ui/behavior/BrowserRoleUiBehavior.java rename to tests/cts/permissionui/src/android/permissionui/cts/PermissionNoOpGtsTest.kt index 018b0db4119dec58894164584bfcf95f24c30cfc..1ca319a308c2138dce49961c2536e756b848aa19 100644 --- a/PermissionController/src/com/android/permissioncontroller/role/ui/behavior/BrowserRoleUiBehavior.java +++ b/tests/cts/permissionui/src/android/permissionui/cts/PermissionNoOpGtsTest.kt @@ -14,24 +14,16 @@ * limitations under the License. */ -package com.android.permissioncontroller.role.ui.behavior; +package android.permissionui.cts -import android.content.Context; -import android.os.UserHandle; +import com.android.compatibility.common.util.CtsDownstreamingTest +import org.junit.Test -import androidx.annotation.NonNull; +// NoOp test class so that at least one GTS test passes on all platforms. +// b/235606392 for reference. Will be removed once we move all downstreaming +// CtsPermissionUiTestCases to GTS. +@CtsDownstreamingTest +class PermissionNoOpGtsTest { -import com.android.permissioncontroller.R; -import com.android.role.controller.model.Role; - -/*** - * Class for UI behavior of Browser role - */ -public class BrowserRoleUiBehavior implements RoleUiBehavior { - - @Override - public boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user, - @NonNull Context context) { - return context.getResources().getBoolean(R.bool.config_showBrowserRole); - } + @Test fun shouldAlwaysPass() {} } diff --git a/tests/cts/permissionui/src/android/permissionui/cts/PermissionPolicyTest25.kt b/tests/cts/permissionui/src/android/permissionui/cts/PermissionPolicyTest25.kt new file mode 100644 index 0000000000000000000000000000000000000000..3d03b669a742756ce942aadb1eeb5b9207e3eb06 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/PermissionPolicyTest25.kt @@ -0,0 +1,64 @@ +/* + * 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 android.permissionui.cts + +import android.app.Activity +import android.content.ComponentName +import android.content.Intent +import androidx.test.filters.FlakyTest +import java.util.concurrent.TimeUnit +import org.junit.After +import org.junit.Assert.assertEquals +import org.junit.Before +import org.junit.Test + +/** Tests for the platform permission policy around apps targeting API 25. */ +@FlakyTest +class PermissionPolicyTest25 : BasePermissionTest() { + companion object { + const val APP_APK_PATH_25 = "$APK_DIRECTORY/CtsPermissionPolicyApp25.apk" + const val APP_PACKAGE_NAME = "android.permissionui.cts.permissionpolicy" + } + + @Before + fun installApp25() { + uninstallPackage(APP_PACKAGE_NAME, requireSuccess = false) + installPackage(APP_APK_PATH_25) + } + + @After + fun uninstallApp() { + uninstallPackage(APP_PACKAGE_NAME, requireSuccess = false) + } + + @Test + fun testNoProtectionFlagsAddedToNonSignatureProtectionPermissions() { + val future = + startActivityForFuture( + Intent().apply { + component = + ComponentName( + APP_PACKAGE_NAME, + "$APP_PACKAGE_NAME.TestProtectionFlagsActivity" + ) + } + ) + val result = future.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS) + assertEquals(Activity.RESULT_OK, result.resultCode) + assertEquals("", result.resultData!!.getStringExtra("$APP_PACKAGE_NAME.ERROR_MESSAGE")) + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/PermissionRationalePermissionGrantDialogTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/PermissionRationalePermissionGrantDialogTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..73faaa7f6c1d2b8c0d94d24d3ab69ab78e14023a --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/PermissionRationalePermissionGrantDialogTest.kt @@ -0,0 +1,284 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.Manifest.permission.ACCESS_COARSE_LOCATION +import android.Manifest.permission.ACCESS_FINE_LOCATION +import android.Manifest.permission.CAMERA +import android.os.Build +import android.provider.DeviceConfig +import android.safetylabel.SafetyLabelConstants.PERMISSION_RATIONALE_ENABLED +import androidx.test.filters.FlakyTest +import androidx.test.filters.SdkSuppress +import com.android.compatibility.common.util.DeviceConfigStateChangerRule +import com.android.modules.utils.build.SdkLevel +import org.junit.Assume +import org.junit.Before +import org.junit.Rule +import org.junit.Test + +/** + * Permission rationale in Grant Permission Dialog tests. Permission rationale is only available on + * U+ + */ +@SdkSuppress(minSdkVersion = Build.VERSION_CODES.UPSIDE_DOWN_CAKE, codeName = "UpsideDownCake") +@FlakyTest +class PermissionRationalePermissionGrantDialogTest : BaseUsePermissionTest() { + + @get:Rule + val deviceConfigPermissionRationaleEnabled = + DeviceConfigStateChangerRule( + context, + DeviceConfig.NAMESPACE_PRIVACY, + PERMISSION_RATIONALE_ENABLED, + true.toString() + ) + + @Before + fun setup() { + Assume.assumeTrue("Permission rationale is only available on U+", SdkLevel.isAtLeastU()) + Assume.assumeFalse(isAutomotive) + Assume.assumeFalse(isTv) + Assume.assumeFalse(isWatch) + } + + @Test + fun requestLocationPerm_flagDisabled_noPermissionRationale() { + setDeviceConfigPrivacyProperty(PERMISSION_RATIONALE_ENABLED, false.toString()) + installPackageWithInstallSourceAndMetadata(APP_APK_NAME_31) + + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + + requestAppPermissionsForNoResult(ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION) { + assertPermissionRationaleContainerOnGrantDialogIsVisible(false) + } + } + + @Test + fun requestLocationPerm_apkHasNoInstallSource_noPermissionRationale() { + installPackageWithoutInstallSource(APP_APK_PATH_31) + + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + + requestAppPermissionsForNoResult(ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION) { + assertPermissionRationaleContainerOnGrantDialogIsVisible(false) + } + } + + @Test + fun requestLocationPerm_noAppMetadata_noPermissionRationale() { + installPackageWithInstallSourceAndNoMetadata(APP_APK_NAME_31) + + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + + requestAppPermissionsForNoResult(ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION) { + assertPermissionRationaleContainerOnGrantDialogIsVisible(false) + } + } + + @Test + fun requestLocationPerm_nullAppMetadata_noPermissionRationale() { + installPackageWithInstallSourceAndNoMetadata(APP_APK_NAME_31) + + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + + requestAppPermissionsForNoResult(ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION) { + assertPermissionRationaleContainerOnGrantDialogIsVisible(false) + } + } + + @Test + fun requestLocationPerm_emptyAppMetadata_noPermissionRationale() { + installPackageWithInstallSourceAndEmptyMetadata(APP_APK_NAME_31) + + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + + requestAppPermissionsForNoResult(ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION) { + assertPermissionRationaleContainerOnGrantDialogIsVisible(false) + } + } + + @Test + fun requestLocationPerm_invalidAppMetadata_noPermissionRationale() { + installPackageWithInstallSourceAndInvalidMetadata(APP_APK_NAME_31) + + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + + requestAppPermissionsForNoResult(ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION) { + assertPermissionRationaleContainerOnGrantDialogIsVisible(false) + } + } + + @Test + fun requestLocationPerm_invalidAppMetadataWithoutTopLevelVersion_noPermissionRationale() { + installPackageWithInstallSourceAndMetadataWithoutTopLevelVersion(APP_APK_NAME_31) + + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + + requestAppPermissionsForNoResult(ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION) { + assertPermissionRationaleContainerOnGrantDialogIsVisible(false) + } + } + + @Test + fun requestLocationPerm_invalidAppMetadataWithInvalidTopLevelVersion_noPermissionRationale() { + installPackageWithInstallSourceAndMetadataWithInvalidTopLevelVersion(APP_APK_NAME_31) + + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + + requestAppPermissionsForNoResult(ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION) { + assertPermissionRationaleContainerOnGrantDialogIsVisible(false) + } + } + + @Test + fun requestLocationPerm_invalidAppMetadataWithoutSafetyLabelVersion_noPermissionRationale() { + installPackageWithInstallSourceAndMetadataWithoutSafetyLabelVersion(APP_APK_NAME_31) + + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + + requestAppPermissionsForNoResult(ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION) { + assertPermissionRationaleContainerOnGrantDialogIsVisible(false) + } + } + + @Test + fun requestLocationPerm_invalidAppMetadataWithInvalidSafetyLabelVersion_noPermissionRationale() { + installPackageWithInstallSourceAndMetadataWithInvalidSafetyLabelVersion(APP_APK_NAME_31) + + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + + requestAppPermissionsForNoResult(ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION) { + assertPermissionRationaleContainerOnGrantDialogIsVisible(false) + } + } + + @Test + fun requestCameraPerm_noPermissionRationale() { + installPackageWithInstallSourceAndMetadata(APP_APK_NAME_31) + + assertAppHasPermission(CAMERA, false) + + requestAppPermissionsForNoResult(CAMERA) { + assertPermissionRationaleContainerOnGrantDialogIsVisible(false) + } + } + + @Test + fun requestCoarseLocationPerm_hasPermissionRationale_packageSourceUnspecified() { + installPackageWithInstallSourceAndMetadata(APP_APK_NAME_31) + + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + + requestAppPermissionsForNoResult(ACCESS_COARSE_LOCATION) { + assertPermissionRationaleContainerOnGrantDialogIsVisible(true) + } + } + + @Test + fun requestCoarseLocationPerm_hasPermissionRationale_packageSourceStore() { + installPackageWithInstallSourceAndMetadataFromStore(APP_APK_NAME_31) + + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + + requestAppPermissionsForNoResult(ACCESS_COARSE_LOCATION) { + assertPermissionRationaleContainerOnGrantDialogIsVisible(true) + } + } + + @Test + fun requestCoarseLocationPerm_hasPermissionRationale_packageSourceLocalFile() { + installPackageWithInstallSourceAndMetadataFromLocalFile(APP_APK_NAME_31) + + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + + requestAppPermissionsForNoResult(ACCESS_COARSE_LOCATION) { + assertPermissionRationaleContainerOnGrantDialogIsVisible(false) + } + } + + @Test + fun requestCoarseLocationPerm_hasPermissionRationale_packageSourceDownloadedFile() { + installPackageWithInstallSourceAndMetadataFromDownloadedFile(APP_APK_NAME_31) + + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + + requestAppPermissionsForNoResult(ACCESS_COARSE_LOCATION) { + assertPermissionRationaleContainerOnGrantDialogIsVisible(false) + } + } + + @Test + fun requestCoarseLocationPerm_hasPermissionRationale_packageSourceOther() { + installPackageWithInstallSourceAndMetadataFromOther(APP_APK_NAME_31) + + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + + requestAppPermissionsForNoResult(ACCESS_COARSE_LOCATION) { + assertPermissionRationaleContainerOnGrantDialogIsVisible(false) + } + } + + @Test + fun requestFineLocationPerm_hasPermissionRationale() { + installPackageWithInstallSourceAndMetadata(APP_APK_NAME_31) + + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + + requestAppPermissionsForNoResult(ACCESS_FINE_LOCATION) { + assertPermissionRationaleContainerOnGrantDialogIsVisible(true) + } + } + + @Test + fun requestLocationPerm_clicksPermissionRationale_startsPermissionRationaleActivity() { + installPackageWithInstallSourceAndMetadata(APP_APK_NAME_31) + + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + + requestAppPermissionsForNoResult(ACCESS_FINE_LOCATION) { + clickPermissionRationaleViewInGrantDialog() + assertPermissionRationaleDialogIsVisible(true) + assertPermissionRationaleContainerOnGrantDialogIsVisible(false) + } + } + + @Test + fun requestLocationPerm_clicksPermissionRationale_startsPermissionRationaleActivity_comesBack() { + installPackageWithInstallSourceAndMetadata(APP_APK_NAME_31) + + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + + requestAppPermissionsForNoResult(ACCESS_FINE_LOCATION) { + clickPermissionRationaleViewInGrantDialog() + assertPermissionRationaleDialogIsVisible(true) + pressBack() + assertPermissionRationaleDialogIsVisible(false) + assertPermissionRationaleContainerOnGrantDialogIsVisible(true) + } + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/PermissionRationaleTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/PermissionRationaleTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..e20fdeffdb3a3b4838b4943dec3c6fb67c417ad4 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/PermissionRationaleTest.kt @@ -0,0 +1,385 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.Manifest +import android.app.ActivityManager +import android.content.Context +import android.content.Intent +import android.os.Build +import android.provider.DeviceConfig +import android.safetylabel.SafetyLabelConstants.PERMISSION_RATIONALE_ENABLED +import android.text.Spanned +import android.text.style.ClickableSpan +import android.util.Log +import android.view.View +import androidx.test.filters.FlakyTest +import androidx.test.filters.SdkSuppress +import androidx.test.uiautomator.By +import com.android.compatibility.common.util.DeviceConfigStateChangerRule +import com.android.compatibility.common.util.SystemUtil +import com.android.compatibility.common.util.SystemUtil.eventually +import com.android.modules.utils.build.SdkLevel +import org.junit.After +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue +import org.junit.Assume +import org.junit.Before +import org.junit.Ignore +import org.junit.Rule +import org.junit.Test + +/** Permission rationale activity tests. Permission rationale is only available on U+ */ +@SdkSuppress(minSdkVersion = Build.VERSION_CODES.UPSIDE_DOWN_CAKE, codeName = "UpsideDownCake") +@FlakyTest +class PermissionRationaleTest : BaseUsePermissionTest() { + + private var activityManager: ActivityManager? = null + + @get:Rule + val deviceConfigPermissionRationaleEnabled = + DeviceConfigStateChangerRule( + context, + DeviceConfig.NAMESPACE_PRIVACY, + PERMISSION_RATIONALE_ENABLED, + true.toString() + ) + + @Before + fun setup() { + Assume.assumeTrue("Permission rationale is only available on U+", SdkLevel.isAtLeastU()) + Assume.assumeFalse(isAutomotive) + Assume.assumeFalse(isTv) + Assume.assumeFalse(isWatch) + + activityManager = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager + + enableComponent(TEST_INSTALLER_ACTIVITY_COMPONENT_NAME) + + installPackageWithInstallSourceAndMetadata(APP_APK_NAME_31) + + assertAppHasPermission(Manifest.permission.ACCESS_FINE_LOCATION, false) + } + + @After + fun disableTestInstallerActivity() { + disableComponent(TEST_INSTALLER_ACTIVITY_COMPONENT_NAME) + } + + @Test + fun startsPermissionRationaleActivity_failedByNullMetadata() { + installPackageWithInstallSourceAndNoMetadata(APP_APK_NAME_31) + navigateToPermissionRationaleActivity_failedShowPermissionRationaleContainer() + } + + @Test + fun startsPermissionRationaleActivity_failedByEmptyMetadata() { + installPackageWithInstallSourceAndEmptyMetadata(APP_APK_NAME_31) + navigateToPermissionRationaleActivity_failedShowPermissionRationaleContainer() + } + + @Test + fun startsPermissionRationaleActivity_failedByNoTopLevelVersion() { + installPackageWithInstallSourceAndMetadataWithoutTopLevelVersion(APP_APK_NAME_31) + navigateToPermissionRationaleActivity_failedShowPermissionRationaleContainer() + } + + @Test + fun startsPermissionRationaleActivity_failedByInvalidTopLevelVersion() { + installPackageWithInstallSourceAndMetadataWithInvalidTopLevelVersion(APP_APK_NAME_31) + navigateToPermissionRationaleActivity_failedShowPermissionRationaleContainer() + } + + @Test + fun startsPermissionRationaleActivity_failedByNoSafetyLabelVersion() { + installPackageWithInstallSourceAndMetadataWithoutSafetyLabelVersion(APP_APK_NAME_31) + navigateToPermissionRationaleActivity_failedShowPermissionRationaleContainer() + } + + @Test + fun startsPermissionRationaleActivity_failedByInvalidSafetyLabelVersion() { + installPackageWithInstallSourceAndMetadataWithInvalidSafetyLabelVersion(APP_APK_NAME_31) + navigateToPermissionRationaleActivity_failedShowPermissionRationaleContainer() + } + + @Test + fun startsPermissionRationaleActivity() { + navigateToPermissionRationaleActivity() + + assertPermissionRationaleDialogIsVisible(true) + } + + @Test + fun linksToInstallSource() { + navigateToPermissionRationaleActivity() + + assertPermissionRationaleDialogIsVisible(true) + + clickInstallSourceLink() + + eventually { + assertStoreLinkClickSuccessful(installerPackageName = TEST_INSTALLER_PACKAGE_NAME) + } + } + + @Ignore("b/282063206") + @Test + fun clickLinkToHelpCenter_opensHelpCenter() { + Assume.assumeFalse(getPermissionControllerResString(HELP_CENTER_URL_ID).isNullOrEmpty()) + + navigateToPermissionRationaleActivity() + + assertPermissionRationaleActivityTitleIsVisible(true) + assertHelpCenterLinkAvailable(true) + + clickHelpCenterLink() + + eventually({ assertHelpCenterLinkClickSuccessful() }, NEW_WINDOW_TIMEOUT_MILLIS) + } + + @Test + fun noHelpCenterLinkAvailable_noHelpCenterClickAction() { + Assume.assumeTrue(getPermissionControllerResString(HELP_CENTER_URL_ID).isNullOrEmpty()) + + navigateToPermissionRationaleActivity() + + assertPermissionRationaleActivityTitleIsVisible(true) + assertHelpCenterLinkAvailable(false) + } + + @Test + fun linksToSettings_noOp_dialogsNotClosed() { + navigateToPermissionRationaleActivity() + + assertPermissionRationaleDialogIsVisible(true) + + clicksSettings_doesNothing_leaves() + + eventually { assertPermissionRationaleDialogIsVisible(true) } + } + + @Test + fun linksToSettings_grants_dialogsClose() { + navigateToPermissionRationaleActivity() + + assertPermissionRationaleDialogIsVisible(true) + + clicksSettings_allowsForeground_leaves() + + // Setting, Permission rationale and Grant dialog should be dismissed + eventually { + assertPermissionSettingsVisible(false) + assertPermissionRationaleDialogIsVisible(false) + assertPermissionRationaleContainerOnGrantDialogIsVisible(false) + } + + assertAppHasPermission(Manifest.permission.ACCESS_FINE_LOCATION, true) + } + + @Test + fun linksToSettings_denies_dialogsClose() { + navigateToPermissionRationaleActivity() + + assertPermissionRationaleDialogIsVisible(true) + + clicksSettings_denies_leaves() + + // Setting, Permission rationale and Grant dialog should be dismissed + eventually { + assertPermissionSettingsVisible(false) + assertPermissionRationaleDialogIsVisible(false) + assertPermissionRationaleContainerOnGrantDialogIsVisible(false) + } + + assertAppHasPermission(Manifest.permission.ACCESS_FINE_LOCATION, false) + } + + private fun navigateToPermissionRationaleActivity_failedShowPermissionRationaleContainer() { + requestAppPermissionsForNoResult(Manifest.permission.ACCESS_FINE_LOCATION) { + assertPermissionRationaleContainerOnGrantDialogIsVisible(false) + } + } + + private fun navigateToPermissionRationaleActivity() { + requestAppPermissionsForNoResult(Manifest.permission.ACCESS_FINE_LOCATION) { + assertPermissionRationaleContainerOnGrantDialogIsVisible(true) + clickPermissionRationaleViewInGrantDialog() + } + } + + private fun clickInstallSourceLink() { + findView(By.res(DATA_SHARING_SOURCE_MESSAGE_ID), true) + + eventually { + // UiObject2 doesn't expose CharSequence. + val node = + uiAutomation.rootInActiveWindow + .findAccessibilityNodeInfosByViewId(DATA_SHARING_SOURCE_MESSAGE_ID)[0] + assertTrue(node.isVisibleToUser) + val text = node.text as Spanned + val clickableSpan = text.getSpans(0, text.length, ClickableSpan::class.java)[0] + // We could pass in null here in Java, but we need an instance in Kotlin. + doAndWaitForWindowTransition { clickableSpan.onClick(View(context)) } + } + } + + private fun clickHelpCenterLink() { + findView(By.res(LEARN_MORE_MESSAGE_ID), true) + + eventually { + // UiObject2 doesn't expose CharSequence. + val node = + uiAutomation.rootInActiveWindow + .findAccessibilityNodeInfosByViewId(LEARN_MORE_MESSAGE_ID)[0] + assertTrue(node.isVisibleToUser) + val text = node.text as Spanned + val clickableSpan = text.getSpans(0, text.length, ClickableSpan::class.java)[0] + // We could pass in null here in Java, but we need an instance in Kotlin. + doAndWaitForWindowTransition { clickableSpan.onClick(View(context)) } + } + } + + private fun clickSettingsLink() { + findView(By.res(SETTINGS_MESSAGE_ID), true) + + eventually { + // UiObject2 doesn't expose CharSequence. + val node = + uiAutomation.rootInActiveWindow + .findAccessibilityNodeInfosByViewId(SETTINGS_MESSAGE_ID)[0] + assertTrue(node.isVisibleToUser) + val text = node.text as Spanned + val clickableSpan = text.getSpans(0, text.length, ClickableSpan::class.java)[0] + // We could pass in null here in Java, but we need an instance in Kotlin. + doAndWaitForWindowTransition { clickableSpan.onClick(View(context)) } + } + } + + private fun clicksSettings_doesNothing_leaves() { + clickSettingsLink() + eventually { assertPermissionSettingsVisible(true) } + pressBack() + } + + private fun clicksSettings_allowsForeground_leaves() { + clickSettingsLink() + eventually { clickAllowForegroundInSettings() } + pressBack() + } + + private fun clicksSettings_denies_leaves() { + clickSettingsLink() + eventually { clicksDenyInSettings() } + pressBack() + } + + private fun assertHelpCenterLinkAvailable(expected: Boolean) { + // Message should always be visible + findView(By.res(LEARN_MORE_MESSAGE_ID), true) + + // Verify the link is (or isn't) in message + eventually { + // UiObject2 doesn't expose CharSequence. + val node = + uiAutomation.rootInActiveWindow + .findAccessibilityNodeInfosByViewId(LEARN_MORE_MESSAGE_ID)[0] + assertTrue(node.isVisibleToUser) + val text = node.text as Spanned + val clickableSpans = text.getSpans(0, text.length, ClickableSpan::class.java) + + if (expected) { + assertFalse("Expected help center link, but none found", clickableSpans.isEmpty()) + } else { + assertTrue("Expected no links, but found one", clickableSpans.isEmpty()) + } + } + } + + private fun assertPermissionSettingsVisible(expected: Boolean) { + findView(By.res(DENY_RADIO_BUTTON), expected = expected) + } + + private fun assertStoreLinkClickSuccessful( + installerPackageName: String, + packageName: String? = null + ) { + SystemUtil.runWithShellPermissionIdentity { + val runningTasks = activityManager!!.getRunningTasks(1) + + assertFalse("Expected runningTasks to not be empty", runningTasks.isEmpty()) + + val taskInfo = runningTasks[0] + val observedIntentAction = taskInfo.baseIntent.action + val observedPackageName = taskInfo.baseIntent.getStringExtra(Intent.EXTRA_PACKAGE_NAME) + val observedInstallerPackageName = taskInfo.topActivity?.packageName + + assertEquals( + "Unexpected intent action", + Intent.ACTION_SHOW_APP_INFO, + observedIntentAction + ) + assertEquals( + "Unexpected installer package name", + installerPackageName, + observedInstallerPackageName + ) + assertEquals("Unexpected package name", packageName, observedPackageName) + } + } + + private fun assertHelpCenterLinkClickSuccessful() { + SystemUtil.runWithShellPermissionIdentity { + val runningTasks = activityManager!!.getRunningTasks(5) + + Log.v(TAG, "# running tasks: ${runningTasks.size}") + assertFalse("Expected runningTasks to not be empty", runningTasks.isEmpty()) + + runningTasks.forEachIndexed { index, runningTaskInfo -> + Log.v(TAG, "task $index ${runningTaskInfo.baseIntent}") + } + + val taskInfo = runningTasks[0] + val observedIntentAction = taskInfo.baseIntent.action + val observedIntentDataString = taskInfo.baseIntent.dataString + val observedIntentScheme: String? = taskInfo.baseIntent.scheme + + Log.v(TAG, "task base intent: ${taskInfo.baseIntent}") + assertEquals("Unexpected intent action", Intent.ACTION_VIEW, observedIntentAction) + + val expectedUrl = getPermissionControllerResString(HELP_CENTER_URL_ID)!! + assertFalse(observedIntentDataString.isNullOrEmpty()) + assertTrue(observedIntentDataString?.startsWith(expectedUrl) ?: false) + + assertFalse(observedIntentScheme.isNullOrEmpty()) + assertEquals("https", observedIntentScheme) + } + } + + companion object { + private val TAG = PermissionRationaleTest::class.java.simpleName + + private const val DATA_SHARING_SOURCE_MESSAGE_ID = + "com.android.permissioncontroller:id/data_sharing_source_message" + private const val LEARN_MORE_MESSAGE_ID = + "com.android.permissioncontroller:id/learn_more_message" + private const val SETTINGS_MESSAGE_ID = + "com.android.permissioncontroller:id/settings_message" + + private const val HELP_CENTER_URL_ID = "data_sharing_help_center_link" + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/PermissionReviewTapjackingTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/PermissionReviewTapjackingTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..a75f089162d5f31f1750fd8157f9d9dd6db68018 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/PermissionReviewTapjackingTest.kt @@ -0,0 +1,98 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.content.ComponentName +import android.content.Intent +import androidx.test.filters.FlakyTest +import androidx.test.uiautomator.By +import com.android.compatibility.common.util.SystemUtil +import java.lang.Exception +import org.junit.After +import org.junit.Assert +import org.junit.Assume.assumeFalse +import org.junit.Before +import org.junit.Test + +/** Tests permission review screen can't be tapjacked */ +@FlakyTest +class PermissionReviewTapjackingTest : BaseUsePermissionTest() { + + companion object { + const val HELPER_APP_OVERLAY = "$APK_DIRECTORY/CtsHelperAppOverlay.apk" + private const val HELPER_PACKAGE_NAME = "android.permissionui.cts.helper.overlay" + } + + @Before + fun installApp22AndApprovePermissionReview() { + assumeFalse(packageManager.arePermissionsIndividuallyControlled()) + + installPackage(APP_APK_PATH_22) + installPackage(HELPER_APP_OVERLAY) + + SystemUtil.runShellCommandOrThrow( + "appops set $HELPER_PACKAGE_NAME android:system_alert_window allow" + ) + } + + @After + fun uninstallPackages() { + SystemUtil.runShellCommandOrThrow("pm uninstall $APP_PACKAGE_NAME") + SystemUtil.runShellCommandOrThrow("pm uninstall $HELPER_PACKAGE_NAME") + } + + @Test + fun testOverlaysAreHidden() { + context.startActivity( + Intent() + .setComponent( + ComponentName(HELPER_PACKAGE_NAME, "$HELPER_PACKAGE_NAME.OverlayActivity") + ) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + ) + findOverlay() + + context.startActivity( + Intent() + .setComponent( + ComponentName(APP_PACKAGE_NAME, "$APP_PACKAGE_NAME.FinishOnCreateActivity") + ) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + ) + + if (isWatch) { + waitFindObject( + By.text(getPermissionControllerString("review_button_cancel")), + TIMEOUT_MILLIS * 2 + ) + } else { + waitFindObject(By.res("com.android.permissioncontroller:id/permissions_message")) + } + + try { + findOverlay() + Assert.fail("Overlay was displayed") + } catch (e: Exception) { + // expected + } + + pressHome() + findOverlay() + } + + private fun findOverlay() = waitFindObject(By.text("Find me!")) +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/PermissionReviewTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/PermissionReviewTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..5ca23fea2ce53932efdbeb3012b1cd42f64045ae --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/PermissionReviewTest.kt @@ -0,0 +1,176 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.app.Activity +import android.content.ComponentName +import android.content.Intent +import android.content.pm.PackageManager +import android.os.Build +import android.os.Bundle +import android.os.Handler +import android.os.Looper +import android.os.ResultReceiver +import androidx.test.filters.FlakyTest +import androidx.test.filters.SdkSuppress +import androidx.test.rule.ActivityTestRule +import androidx.test.runner.AndroidJUnit4 +import androidx.test.uiautomator.By +import java.util.concurrent.LinkedBlockingQueue +import java.util.concurrent.TimeUnit +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNull +import org.junit.Assume +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +@FlakyTest +class PermissionReviewTest : BaseUsePermissionTest() { + + @Before + fun assumeNotIndividuallyControlled() { + Assume.assumeFalse(packageManager.arePermissionsIndividuallyControlled()) + } + + @Before + fun installApp22CalendarOnly() { + installPackage(APP_APK_PATH_22_CALENDAR_ONLY) + } + + @get:Rule val activityRule = ActivityTestRule(StartForFutureActivity::class.java, false, false) + + @Test + fun testDenyCalendarDuringReview() { + startAppActivityAndAssertResultCode(Activity.RESULT_OK) { + // Deny + clickPermissionControllerUi(By.text("Calendar")) + // Confirm deny + click(By.res("android:id/button1")) + + clickPermissionReviewContinue() + } + + clearTargetSdkWarning() + assertAppHasCalendarAccess(false) + } + + @Test + fun testDenyGrantCalendarDuringReview() { + startAppActivityAndAssertResultCode(Activity.RESULT_OK) { + // Deny + clickPermissionControllerUi(By.text("Calendar")) + // Confirm deny + click(By.res("android:id/button1")) + + // Grant + clickPermissionControllerUi(By.text("Calendar")) + + clickPermissionReviewContinue() + } + + clearTargetSdkWarning() + assertAppHasCalendarAccess(true) + } + + @Test + fun testDenyGrantDenyCalendarDuringReview() { + startAppActivityAndAssertResultCode(Activity.RESULT_OK) { + // Deny + clickPermissionControllerUi(By.text("Calendar")) + + // Confirm deny + click(By.res("android:id/button1")) + + // Grant + clickPermissionControllerUi(By.text("Calendar")) + + // Deny + clickPermissionControllerUi(By.text("Calendar")) + + clickPermissionReviewContinue() + } + + clearTargetSdkWarning() + assertAppHasCalendarAccess(false) + } + + @Test + fun testCancelReview() { + // Start APK_22_ONLY_CALENDAR, but cancel review + cancelPermissionReview() + + // Start APK_22_ONLY_CALENDAR again, now approve review + approvePermissionReview() + + assertAppDoesNotNeedPermissionReview() + } + + @Test + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.TIRAMISU, codeName = "TIRAMISU") + fun testNotificationPermissionAddedToReview() { + startAppActivityAndAssertResultCode(Activity.RESULT_CANCELED) { + waitFindObject(By.text("Notifications"), 5000L) + clickPermissionReviewCancel() + } + } + + @Test + fun testReviewPermissionWhenServiceIsBound() { + val results = LinkedBlockingQueue() + // We are starting a activity instead of the service directly, because + // the service comes from a different app than the CTS tests. + // This app will be considered idle on devices that have idling enabled (automotive), + // and the service wouldn't be allowed to be started without the activity. + activityRule + .launchActivity(null) + .startActivity( + Intent().apply { + component = + ComponentName( + APP_PACKAGE_NAME, + "$APP_PACKAGE_NAME.StartCheckPermissionServiceActivity" + ) + putExtra( + "$APP_PACKAGE_NAME.RESULT", + object : ResultReceiver(Handler(Looper.getMainLooper())) { + override fun onReceiveResult(resultCode: Int, resultData: Bundle?) { + results.offer(resultCode) + } + } + ) + putExtra( + "$APP_PACKAGE_NAME.PERMISSION", + android.Manifest.permission.READ_CALENDAR + ) + } + ) + + // Service is not started before permission are reviewed + assertNull(results.poll(UNEXPECTED_TIMEOUT_MILLIS.toLong(), TimeUnit.MILLISECONDS)) + + clickPermissionReviewContinueAndClearSdkWarning() + + // Service should be started after permission review + assertEquals( + PackageManager.PERMISSION_GRANTED, + results.poll(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS) + ) + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/PermissionSplitTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/PermissionSplitTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..927b9833b5c01deabb4033c88048ab872ae9f386 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/PermissionSplitTest.kt @@ -0,0 +1,114 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.os.Build +import androidx.test.filters.FlakyTest +import androidx.test.filters.SdkSuppress +import org.junit.Assume.assumeFalse +import org.junit.Before +import org.junit.Test + +/** Runtime permission behavior tests for permission splits. */ +@FlakyTest +class PermissionSplitTest : BaseUsePermissionTest() { + @Before + fun assumeNotTv() { + assumeFalse(isTv) + } + + @Test + fun testPermissionSplit28() { + installPackage(APP_APK_PATH_28) + testLocationPermissionSplit(true) + } + + @Test + fun testPermissionNotSplit29() { + installPackage(APP_APK_PATH_29) + testLocationPermissionSplit(false) + } + + @Test + fun testPermissionNotSplit30() { + installPackage(APP_APK_PATH_30) + testLocationPermissionSplit(false) + } + + @Test + fun testPermissionNotSplitLatest() { + installPackage(APP_APK_PATH_LATEST) + testLocationPermissionSplit(false) + } + + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.TIRAMISU, codeName = "Tiramisu") + @Test + fun testBodySensorSplit() { + installPackage(APP_APK_PATH_31) + testBodySensorPermissionSplit(true) + } + + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.TIRAMISU, codeName = "Tiramisu") + @Test + fun testBodySensorSplit32() { + installPackage(APP_APK_PATH_32) + testBodySensorPermissionSplit(true) + } + + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.TIRAMISU, codeName = "Tiramisu") + @Test + fun testBodySensorNonSplit() { + installPackage(APP_APK_PATH_LATEST) + testBodySensorPermissionSplit(false) + } + + private fun testLocationPermissionSplit(expectSplit: Boolean) { + assertAppHasPermission(android.Manifest.permission.ACCESS_FINE_LOCATION, false) + assertAppHasPermission(android.Manifest.permission.ACCESS_BACKGROUND_LOCATION, false) + + requestAppPermissionsAndAssertResult( + android.Manifest.permission.ACCESS_FINE_LOCATION to true, + waitForWindowTransition = false + ) { + if (expectSplit) { + clickPermissionRequestSettingsLinkAndAllowAlways() + } else { + doAndWaitForWindowTransition { clickPermissionRequestAllowForegroundButton() } + } + } + + assertAppHasPermission(android.Manifest.permission.ACCESS_BACKGROUND_LOCATION, expectSplit) + } + + private fun testBodySensorPermissionSplit(expectSplit: Boolean) { + assertAppHasPermission(android.Manifest.permission.BODY_SENSORS, false) + assertAppHasPermission(android.Manifest.permission.BODY_SENSORS_BACKGROUND, false) + + requestAppPermissionsAndAssertResult( + android.Manifest.permission.BODY_SENSORS to true, + waitForWindowTransition = false + ) { + if (expectSplit) { + clickPermissionRequestSettingsLinkAndAllowAlways() + } else { + doAndWaitForWindowTransition { clickPermissionRequestAllowForegroundButton() } + } + } + + assertAppHasPermission(android.Manifest.permission.BODY_SENSORS_BACKGROUND, expectSplit) + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/PermissionTapjackingTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/PermissionTapjackingTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..3a8a6a838d7e9b4abd9b4ec63e478e1e2564a39b --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/PermissionTapjackingTest.kt @@ -0,0 +1,144 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.Manifest.permission.ACCESS_FINE_LOCATION +import android.content.Intent +import android.content.pm.PackageManager +import android.graphics.Point +import android.os.Build +import androidx.test.filters.FlakyTest +import androidx.test.filters.SdkSuppress +import androidx.test.uiautomator.By +import com.android.compatibility.common.util.SystemUtil +import org.junit.Assume.assumeFalse +import org.junit.Before +import org.junit.Test + +/** Tests permissions can't be tapjacked */ +@FlakyTest +class PermissionTapjackingTest : BaseUsePermissionTest() { + + @Before + fun installAppLatest() { + installPackage(APP_APK_PATH_WITH_OVERLAY) + } + + @Test + fun testTapjackGrantDialog_fullOverlay() { + // PermissionController for television uses a floating window. + assumeFalse(isTv) + + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + requestAppPermissionsForNoResult(ACCESS_FINE_LOCATION) {} + + val buttonCenter = + waitFindObject(By.text(getPermissionControllerString(ALLOW_FOREGROUND_BUTTON_TEXT))) + .visibleCenter + + // Wait for overlay to hide the dialog + context.sendBroadcast(Intent(ACTION_SHOW_OVERLAY).putExtra(EXTRA_FULL_OVERLAY, true)) + waitFindObject(By.res("android.permissionui.cts.usepermission:id/overlay")) + + tryClicking(buttonCenter) + } + + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.S) + @Test + fun testTapjackGrantDialog_partialOverlay() { + // PermissionController for television uses a floating window. + assumeFalse(isTv) + + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + requestAppPermissionsForNoResult(ACCESS_FINE_LOCATION) {} + + val foregroundButtonCenter = + waitFindObject(By.text(getPermissionControllerString(ALLOW_FOREGROUND_BUTTON_TEXT))) + .visibleCenter + val oneTimeButton = + waitFindObjectOrNull(By.text(getPermissionControllerString(ALLOW_ONE_TIME_BUTTON_TEXT))) + // If one-time button is not available, fallback to deny button + val overlayButtonBounds = + oneTimeButton?.visibleBounds + ?: waitFindObject(By.text(getPermissionControllerString(DENY_BUTTON_TEXT))) + .visibleBounds + + // Wait for overlay to hide the dialog + context.sendBroadcast( + Intent(ACTION_SHOW_OVERLAY) + .putExtra(EXTRA_FULL_OVERLAY, false) + .putExtra(OVERLAY_LEFT, overlayButtonBounds.left) + .putExtra(OVERLAY_TOP, overlayButtonBounds.top) + .putExtra(OVERLAY_RIGHT, overlayButtonBounds.right) + .putExtra(OVERLAY_BOTTOM, overlayButtonBounds.bottom) + ) + waitFindObject(By.res("android.permissionui.cts.usepermission:id/overlay")) + + tryClicking(foregroundButtonCenter) + } + + private fun tryClicking(buttonCenter: Point) { + try { + // Try to grant the permission, this should fail + SystemUtil.eventually( + { + if ( + packageManager.checkPermission(ACCESS_FINE_LOCATION, APP_PACKAGE_NAME) == + PackageManager.PERMISSION_DENIED + ) { + uiDevice.click(buttonCenter.x, buttonCenter.y) + Thread.sleep(100) + } + assertAppHasPermission(ACCESS_FINE_LOCATION, true) + }, + 10000 + ) + } catch (e: RuntimeException) { + // expected + } + // Permission should not be granted + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + + // Verify that clicking the dialog without the overlay still works + context.sendBroadcast(Intent(ACTION_HIDE_OVERLAY)) + SystemUtil.eventually( + { + if ( + packageManager.checkPermission(ACCESS_FINE_LOCATION, APP_PACKAGE_NAME) == + PackageManager.PERMISSION_DENIED + ) { + uiDevice.click(buttonCenter.x, buttonCenter.y) + Thread.sleep(100) + } + assertAppHasPermission(ACCESS_FINE_LOCATION, true) + }, + 10000 + ) + } + + companion object { + const val ACTION_SHOW_OVERLAY = "android.permissionui.cts.usepermission.ACTION_SHOW_OVERLAY" + const val ACTION_HIDE_OVERLAY = "android.permissionui.cts.usepermission.ACTION_HIDE_OVERLAY" + + const val EXTRA_FULL_OVERLAY = "android.permissionui.cts.usepermission.extra.FULL_OVERLAY" + + const val OVERLAY_LEFT = "android.permissionui.cts.usepermission.extra.OVERLAY_LEFT" + const val OVERLAY_TOP = "android.permissionui.cts.usepermission.extra.OVERLAY_TOP" + const val OVERLAY_RIGHT = "android.permissionui.cts.usepermission.extra.OVERLAY_RIGHT" + const val OVERLAY_BOTTOM = "android.permissionui.cts.usepermission.extra.OVERLAY_BOTTOM" + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/PermissionTest22.kt b/tests/cts/permissionui/src/android/permissionui/cts/PermissionTest22.kt new file mode 100755 index 0000000000000000000000000000000000000000..b6d5887d6dd4866c5f04f8cc58d4f970bb0b0bdc --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/PermissionTest22.kt @@ -0,0 +1,66 @@ +/* + * 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 android.permissionui.cts + +import androidx.test.filters.FlakyTest +import org.junit.Assume +import org.junit.Before +import org.junit.Test + +/** Runtime permission behavior tests for apps targeting API 22. */ +@FlakyTest +class PermissionTest22 : BaseUsePermissionTest() { + + @Before + fun installApp22AndApprovePermissionReview() { + Assume.assumeFalse(packageManager.arePermissionsIndividuallyControlled()) + + installPackage(APP_APK_PATH_22) + approvePermissionReview() + } + + @Test + fun testCompatDefault() { + // Legacy permission model appears granted + assertAppHasPermission(android.Manifest.permission.READ_CALENDAR, true) + assertAppHasPermission(android.Manifest.permission.WRITE_CALENDAR, true) + assertAppHasCalendarAccess(true) + } + + @Test + fun testCompatRevoked() { + // Revoke the permission + revokeAppPermissionsByUi(android.Manifest.permission.WRITE_CALENDAR, isLegacyApp = true) + + // Legacy permission model appears granted + assertAppHasPermission(android.Manifest.permission.READ_CALENDAR, true) + assertAppHasPermission(android.Manifest.permission.WRITE_CALENDAR, true) + // Read/write access should be ignored + assertAppHasCalendarAccess(false) + } + + @Test + fun testNoRuntimePrompt() { + // Request the permission and do nothing + // Expect the permission is not granted + requestAppPermissionsAndAssertResult( + arrayOf(android.Manifest.permission.SEND_SMS), + emptyArray(), + waitForWindowTransition = false + ) {} + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/PermissionTest23.kt b/tests/cts/permissionui/src/android/permissionui/cts/PermissionTest23.kt new file mode 100644 index 0000000000000000000000000000000000000000..01993adc56f801e754d561caff8fd49f9efb0a99 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/PermissionTest23.kt @@ -0,0 +1,403 @@ +/* + * 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 android.permissionui.cts + +import android.content.pm.PackageManager +import android.permission.cts.MtsIgnore +import androidx.test.filters.FlakyTest +import com.android.compatibility.common.util.SystemUtil +import org.junit.Assert +import org.junit.Assume +import org.junit.Before +import org.junit.Test + +/** Runtime permission behavior tests for apps targeting API 23. */ +@FlakyTest +class PermissionTest23 : BaseUsePermissionTest() { + companion object { + private const val NON_EXISTENT_PERMISSION = "permission.does.not.exist" + private const val INVALID_PERMISSION = "$APP_PACKAGE_NAME.abadname" + } + + @Before + fun installApp23() { + installPackage(APP_APK_PATH_23) + } + + @Test + fun testDefault() { + // New permission model is denied by default + assertAppHasAllOrNoPermissions(false) + } + + @Test + fun testGranted() { + grantAppPermissionsByUi(android.Manifest.permission.READ_CALENDAR) + + // Read/write access should be allowed + assertAppHasPermission(android.Manifest.permission.READ_CALENDAR, true) + assertAppHasPermission(android.Manifest.permission.WRITE_CALENDAR, true) + assertAppHasCalendarAccess(true) + } + + @Test + fun testInteractiveGrant() { + // Start out without permission + assertAppHasPermission(android.Manifest.permission.READ_CALENDAR, false) + assertAppHasPermission(android.Manifest.permission.WRITE_CALENDAR, false) + assertAppHasCalendarAccess(false) + + // Go through normal grant flow + requestAppPermissionsAndAssertResult( + android.Manifest.permission.READ_CALENDAR to true, + android.Manifest.permission.WRITE_CALENDAR to true + ) { + clickPermissionRequestAllowButton() + } + + // We should have permission now! + assertAppHasCalendarAccess(true) + } + + @Test + fun testRuntimeGroupGrantSpecificity() { + // Start out without permission + assertAppHasPermission(android.Manifest.permission.READ_CONTACTS, false) + assertAppHasPermission(android.Manifest.permission.WRITE_CONTACTS, false) + + // Request only one permission from the 'contacts' permission group + // Expect the permission is granted + requestAppPermissionsAndAssertResult(android.Manifest.permission.WRITE_CONTACTS to true) { + clickPermissionRequestAllowButton() + } + + // Make sure no undeclared as used permissions are granted + assertAppHasPermission(android.Manifest.permission.READ_CONTACTS, false) + } + + @Test + fun testCancelledPermissionRequest() { + // Make sure we don't have the permission + assertAppHasPermission(android.Manifest.permission.WRITE_CONTACTS, false) + + // Request the permission and cancel the request + // Expect the permission is not granted + requestAppPermissionsAndAssertResult(android.Manifest.permission.WRITE_CONTACTS to false) { + clickPermissionRequestDenyButton() + } + } + + @Test + fun testRequestGrantedPermission() { + // Make sure we don't have the permission + assertAppHasPermission(android.Manifest.permission.WRITE_CONTACTS, false) + + // Request the permission and allow it + // Expect the permission is granted + requestAppPermissionsAndAssertResult(android.Manifest.permission.WRITE_CONTACTS to true) { + clickPermissionRequestAllowButton() + } + + // Request the permission and do nothing + // Expect the permission is granted + requestAppPermissionsAndAssertResult( + android.Manifest.permission.WRITE_CONTACTS to true, + waitForWindowTransition = false + ) {} + } + + @Test + fun testDenialWithPrejudice() { + // Make sure we don't have the permission + assertAppHasPermission(android.Manifest.permission.WRITE_CONTACTS, false) + + // Request the permission and deny it twice + // Expect the permission is not granted + requestAppPermissionsAndAssertResult( + android.Manifest.permission.WRITE_CONTACTS to false, + askTwice = true + ) { + clickPermissionRequestDenyButton() + denyPermissionRequestWithPrejudice() + } + + // Request the permission and do nothing + // Expect the permission is not granted + requestAppPermissionsAndAssertResult( + android.Manifest.permission.WRITE_CONTACTS to false, + waitForWindowTransition = false + ) {} + } + + @FlakyTest + @MtsIgnore + @Test + fun testRevokeAffectsWholeGroup() { + // Grant the group + grantAppPermissionsByUi(android.Manifest.permission.READ_CALENDAR) + + // Make sure we have the permissions + assertAppHasPermission(android.Manifest.permission.READ_CALENDAR, true) + assertAppHasPermission(android.Manifest.permission.WRITE_CALENDAR, true) + + // Revoke the group + revokeAppPermissionsByUi(android.Manifest.permission.READ_CALENDAR) + + // Make sure we don't have the permissions + assertAppHasPermission(android.Manifest.permission.READ_CALENDAR, false) + assertAppHasPermission(android.Manifest.permission.WRITE_CALENDAR, false) + } + + @Test + fun testGrantPreviouslyRevokedWithPrejudiceShowsPrompt() { + // Make sure we don't have the permission + assertAppHasPermission(android.Manifest.permission.READ_CALENDAR, false) + + // Request the permission and deny it twice + // Expect the permission is not granted + requestAppPermissionsAndAssertResult( + android.Manifest.permission.READ_CALENDAR to false, + askTwice = true + ) { + clickPermissionRequestDenyButton() + denyPermissionRequestWithPrejudice() + } + + // Clear the denial with prejudice + uiAutomation.grantRuntimePermission( + APP_PACKAGE_NAME, + android.Manifest.permission.READ_CALENDAR + ) + revokeAppPermissionsByUi(android.Manifest.permission.READ_CALENDAR) + + // Make sure we don't have the permission + assertAppHasPermission(android.Manifest.permission.READ_CALENDAR, false) + + // Request the permission and allow it + // Make sure the permission is granted + requestAppPermissionsAndAssertResult(android.Manifest.permission.READ_CALENDAR to true) { + clickPermissionRequestAllowButton() + } + } + + @Test + fun testRequestNonRuntimePermission() { + // Make sure we don't have the permission + assertAppHasPermission(android.Manifest.permission.BIND_PRINT_SERVICE, false) + + // Request the permission and do nothing + // Expect the permission is not granted + requestAppPermissionsAndAssertResult( + android.Manifest.permission.BIND_PRINT_SERVICE to false, + waitForWindowTransition = false + ) {} + } + + @Test + fun testRequestNonExistentPermission() { + // Make sure we don't have the permission + assertAppHasPermission(NON_EXISTENT_PERMISSION, false) + + // Request the permission and do nothing + // Expect the permission is not granted + requestAppPermissionsAndAssertResult( + NON_EXISTENT_PERMISSION to false, + waitForWindowTransition = false + ) {} + } + + @Test + fun testRequestPermissionFromTwoGroups() { + // Make sure we don't have the permissions + assertAppHasPermission(android.Manifest.permission.WRITE_CONTACTS, false) + assertAppHasPermission(android.Manifest.permission.WRITE_CALENDAR, false) + assertAppHasPermission(android.Manifest.permission.READ_CALENDAR, false) + + // Request the permission and allow it + // Expect the permission are granted + val result = + requestAppPermissionsAndAssertResult( + android.Manifest.permission.WRITE_CONTACTS to true, + android.Manifest.permission.WRITE_CALENDAR to true + ) { + clickPermissionRequestAllowButton() + clickPermissionRequestAllowButton() + } + + // In API < N_MR1 all permissions of a group are granted. I.e. the grant was "expanded" + assertAppHasPermission(android.Manifest.permission.READ_CALENDAR, true) + // Even the contacts group was expanded, the read-calendar permission is not in the + // manifest, hence not granted. + assertAppHasPermission(android.Manifest.permission.READ_CONTACTS, false) + } + + @Test(timeout = 180000) + @FlakyTest + @MtsIgnore + fun testNoResidualPermissionsOnUninstall() { + Assume.assumeFalse(packageManager.arePermissionsIndividuallyControlled()) + + // Grant one permission via UI, and the rest via automation + grantAppPermissionsByUi(android.Manifest.permission.WRITE_CALENDAR) + grantRuntimePermissions( + android.Manifest.permission.WRITE_CONTACTS, + android.Manifest.permission.READ_SMS, + android.Manifest.permission.CALL_PHONE, + android.Manifest.permission.RECORD_AUDIO, + android.Manifest.permission.CAMERA, + android.Manifest.permission.READ_EXTERNAL_STORAGE, + android.Manifest.permission.ACCESS_FINE_LOCATION, + android.Manifest.permission.ACCESS_COARSE_LOCATION, + android.Manifest.permission.ACCESS_BACKGROUND_LOCATION, + android.Manifest.permission.ACCESS_FINE_LOCATION, + android.Manifest.permission.BODY_SENSORS, + ) + uninstallPackage(APP_PACKAGE_NAME) + installPackage(APP_APK_PATH_23) + + // Make no permissions are granted after uninstalling and installing the app + assertAppHasAllOrNoPermissions(false) + } + + @Test + fun testNullPermissionRequest() { + val permissions: Array = arrayOf(null) + val results: Array> = arrayOf() + // Go through normal grant flow + requestAppPermissionsAndAssertResult( + permissions, + results, + waitForWindowTransition = false + ) {} + } + + @Test + fun testNullAndRealPermission() { + // Make sure we don't have the permissions + assertAppHasPermission(android.Manifest.permission.WRITE_CONTACTS, false) + assertAppHasPermission(android.Manifest.permission.RECORD_AUDIO, false) + + // Request the permission and allow it + // Expect the permission are granted + requestAppPermissionsAndAssertResult( + arrayOf( + android.Manifest.permission.WRITE_CONTACTS, + null, + android.Manifest.permission.RECORD_AUDIO, + null + ), + arrayOf( + android.Manifest.permission.WRITE_CONTACTS to true, + android.Manifest.permission.RECORD_AUDIO to true + ) + ) { + clickPermissionRequestAllowForegroundButton() + clickPermissionRequestAllowButton() + } + } + + @Test + fun testInvalidPermission() { + // Request the permission and allow it + // Expect the permission is not granted + requestAppPermissionsAndAssertResult( + INVALID_PERMISSION to false, + waitForWindowTransition = false + ) {} + } + + @Test + fun testAskButtonSetsFlags() { + Assume.assumeFalse( + "other form factors might not support the ask button", + isTv || isAutomotive || isWatch + ) + + grantAppPermissionsByUi(android.Manifest.permission.ACCESS_BACKGROUND_LOCATION) + assertAppHasPermission(android.Manifest.permission.ACCESS_BACKGROUND_LOCATION, true) + assertAppHasPermission(android.Manifest.permission.ACCESS_FINE_LOCATION, true) + assertAppHasPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION, true) + + revokeAppPermissionsByUi(android.Manifest.permission.ACCESS_BACKGROUND_LOCATION) + SystemUtil.runWithShellPermissionIdentity { + val perms = + listOf( + android.Manifest.permission.ACCESS_BACKGROUND_LOCATION, + android.Manifest.permission.ACCESS_FINE_LOCATION, + android.Manifest.permission.ACCESS_COARSE_LOCATION + ) + for (perm in perms) { + var flags = packageManager.getPermissionFlags(perm, APP_PACKAGE_NAME, context.user) + Assert.assertEquals( + "USER_SET should not be set for $perm", + 0, + flags and PackageManager.FLAG_PERMISSION_USER_SET + ) + Assert.assertEquals( + "USER_FIXED should not be set for $perm", + 0, + flags and PackageManager.FLAG_PERMISSION_USER_FIXED + ) + Assert.assertEquals( + "ONE_TIME should be set for $perm", + PackageManager.FLAG_PERMISSION_ONE_TIME, + flags and PackageManager.FLAG_PERMISSION_ONE_TIME + ) + } + } + } + + private fun denyPermissionRequestWithPrejudice() { + if (isTv || isWatch) { + clickPermissionRequestDontAskAgainButton() + } else { + clickPermissionRequestDenyAndDontAskAgainButton() + } + } + + private fun assertAppHasAllOrNoPermissions(expectPermissions: Boolean) { + arrayOf( + android.Manifest.permission.SEND_SMS, + android.Manifest.permission.RECEIVE_SMS, + android.Manifest.permission.RECEIVE_WAP_PUSH, + android.Manifest.permission.RECEIVE_MMS, + android.Manifest.permission.READ_CALENDAR, + android.Manifest.permission.WRITE_CALENDAR, + android.Manifest.permission.WRITE_CONTACTS, + android.Manifest.permission.READ_SMS, + android.Manifest.permission.READ_PHONE_STATE, + android.Manifest.permission.READ_CALL_LOG, + android.Manifest.permission.WRITE_CALL_LOG, + android.Manifest.permission.ADD_VOICEMAIL, + android.Manifest.permission.CALL_PHONE, + android.Manifest.permission.USE_SIP, + android.Manifest.permission.PROCESS_OUTGOING_CALLS, + android.Manifest.permission.RECORD_AUDIO, + android.Manifest.permission.ACCESS_FINE_LOCATION, + android.Manifest.permission.ACCESS_COARSE_LOCATION, + android.Manifest.permission.CAMERA, + android.Manifest.permission.BODY_SENSORS, + android.Manifest.permission.READ_CELL_BROADCASTS, + // Split permissions + android.Manifest.permission.ACCESS_BACKGROUND_LOCATION, + // Storage permissions + android.Manifest.permission.READ_EXTERNAL_STORAGE, + android.Manifest.permission.WRITE_EXTERNAL_STORAGE + ) + .forEach { assertAppHasPermission(it, expectPermissions) } + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/PermissionTest29.kt b/tests/cts/permissionui/src/android/permissionui/cts/PermissionTest29.kt new file mode 100644 index 0000000000000000000000000000000000000000..892cae5c62a89d83f22e20de16df4515e935cb78 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/PermissionTest29.kt @@ -0,0 +1,205 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.permission.cts.MtsIgnore +import androidx.test.filters.FlakyTest +import androidx.test.uiautomator.By +import com.android.compatibility.common.util.SystemUtil.eventually +import org.junit.Assume.assumeFalse +import org.junit.Before +import org.junit.Test + +/** Runtime permission behavior tests for apps targeting API 29. */ +@FlakyTest +class PermissionTest29 : BaseUsePermissionTest() { + @Before + fun assumeNotTv() { + assumeFalse(isTv) + } + + @Before + fun installApp29() { + installPackage(APP_APK_PATH_29) + } + + @Before + fun assertAppHasNoPermissions() { + assertAppHasPermission(android.Manifest.permission.ACCESS_FINE_LOCATION, false) + assertAppHasPermission(android.Manifest.permission.ACCESS_BACKGROUND_LOCATION, false) + } + + @Test + fun testRequestOnlyBackgroundNotPossible() { + requestAppPermissionsAndAssertResult( + android.Manifest.permission.ACCESS_BACKGROUND_LOCATION to false, + waitForWindowTransition = false + ) {} + + assertAppHasPermission(android.Manifest.permission.ACCESS_BACKGROUND_LOCATION, false) + } + + @Test + fun testRequestBoth() { + requestAppPermissionsAndAssertResult( + android.Manifest.permission.ACCESS_FINE_LOCATION to true, + android.Manifest.permission.ACCESS_BACKGROUND_LOCATION to true, + waitForWindowTransition = false + ) { + clickPermissionRequestSettingsLinkAndAllowAlways() + } + } + + @Test + fun testRequestBothInSequence() { + // Step 1: request foreground only + requestAppPermissionsAndAssertResult( + android.Manifest.permission.ACCESS_FINE_LOCATION to true + ) { + clickPermissionRequestAllowForegroundButton() + } + + assertAppHasPermission(android.Manifest.permission.ACCESS_BACKGROUND_LOCATION, false) + + // Step 2: request background only + requestAppPermissionsAndAssertResult( + android.Manifest.permission.ACCESS_BACKGROUND_LOCATION to true, + waitForWindowTransition = false + ) { + clickPermissionRequestSettingsLinkAndAllowAlways() + } + + assertAppHasPermission(android.Manifest.permission.ACCESS_FINE_LOCATION, true) + } + + @Test + fun testRequestBothButGrantInSequence() { + // Step 1: grant foreground only + requestAppPermissionsAndAssertResult( + android.Manifest.permission.ACCESS_FINE_LOCATION to true, + android.Manifest.permission.ACCESS_BACKGROUND_LOCATION to false + ) { + clickPermissionRequestAllowForegroundButton() + } + + // Step 2: grant background + requestAppPermissionsAndAssertResult( + android.Manifest.permission.ACCESS_FINE_LOCATION to true, + android.Manifest.permission.ACCESS_BACKGROUND_LOCATION to true, + waitForWindowTransition = false + ) { + clickPermissionRequestSettingsLinkAndAllowAlways() + } + } + + @FlakyTest + @MtsIgnore + @Test + fun testDenyBackgroundWithPrejudice() { + // Step 1: deny the first time + requestAppPermissionsAndAssertResult( + android.Manifest.permission.ACCESS_FINE_LOCATION to false, + android.Manifest.permission.ACCESS_BACKGROUND_LOCATION to false + ) { + clickPermissionRequestDenyButton() + } + + // Step 2: deny with prejudice + requestAppPermissionsAndAssertResult( + android.Manifest.permission.ACCESS_FINE_LOCATION to false, + android.Manifest.permission.ACCESS_BACKGROUND_LOCATION to false + ) { + clickPermissionRequestDenyAndDontAskAgainButton() + } + + // Step 3: All further requests should be denied automatically + requestAppPermissionsAndAssertResult( + android.Manifest.permission.ACCESS_FINE_LOCATION to false, + android.Manifest.permission.ACCESS_BACKGROUND_LOCATION to false, + waitForWindowTransition = false + ) {} + } + + @FlakyTest + @MtsIgnore + @Test + fun testGrantDialogToSettingsNoOp() { + // Step 1: Request both, go to settings, do nothing + requestAppPermissionsAndAssertResult( + android.Manifest.permission.ACCESS_FINE_LOCATION to true, + android.Manifest.permission.ACCESS_BACKGROUND_LOCATION to false, + waitForWindowTransition = false + ) { + openSettingsThenDoNothingThenLeave() + + assertAppHasPermission(android.Manifest.permission.ACCESS_FINE_LOCATION, false) + assertAppHasPermission(android.Manifest.permission.ACCESS_BACKGROUND_LOCATION, false) + + doAndWaitForWindowTransition { clickPermissionRequestAllowForegroundButton() } + } + + // Step 2: Upgrade foreground to background, go to settings, do nothing + requestAppPermissionsAndAssertResult( + android.Manifest.permission.ACCESS_FINE_LOCATION to true, + android.Manifest.permission.ACCESS_BACKGROUND_LOCATION to false, + waitForWindowTransition = false + ) { + openSettingsThenDoNothingThenLeave() + + assertAppHasPermission(android.Manifest.permission.ACCESS_FINE_LOCATION, true) + assertAppHasPermission(android.Manifest.permission.ACCESS_BACKGROUND_LOCATION, false) + + doAndWaitForWindowTransition { clickPermissionRequestNoUpgradeAndDontAskAgainButton() } + } + } + + private fun openSettingsThenDoNothingThenLeave() { + clickPermissionRequestSettingsLink() + eventually { + pressBack() + if (isAutomotive) { + waitFindObject(By.textContains("Allow in settings."), 100) + } else { + waitFindObject(By.res("com.android.permissioncontroller:id/grant_dialog"), 100) + } + } + } + + @FlakyTest + @Test + fun testGrantDialogToSettingsDowngrade() { + // Request upgrade, downgrade permission to denied in settings + requestAppPermissionsAndAssertResult( + android.Manifest.permission.ACCESS_FINE_LOCATION to true, + android.Manifest.permission.ACCESS_BACKGROUND_LOCATION to false + ) { + clickPermissionRequestAllowForegroundButton() + } + + requestAppPermissions( + android.Manifest.permission.ACCESS_FINE_LOCATION, + android.Manifest.permission.ACCESS_BACKGROUND_LOCATION, + waitForWindowTransition = false + ) { + clickPermissionRequestSettingsLinkAndDeny() + pressBack() + } + + assertAppHasPermission(android.Manifest.permission.ACCESS_FINE_LOCATION, false) + assertAppHasPermission(android.Manifest.permission.ACCESS_BACKGROUND_LOCATION, false) + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/PermissionTest30.kt b/tests/cts/permissionui/src/android/permissionui/cts/PermissionTest30.kt new file mode 100644 index 0000000000000000000000000000000000000000..25bdab29849a08764abe63d98ceca4c87e757e4e --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/PermissionTest30.kt @@ -0,0 +1,93 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.Manifest.permission.ACCESS_BACKGROUND_LOCATION +import android.Manifest.permission.ACCESS_COARSE_LOCATION +import android.Manifest.permission.ACCESS_FINE_LOCATION +import androidx.test.filters.FlakyTest +import androidx.test.uiautomator.By +import org.junit.Assert.assertNull +import org.junit.Test + +/** Runtime permission behavior apps targeting API 30 */ +@FlakyTest +class PermissionTest30 : BaseUsePermissionTest() { + + @Test + fun testCantRequestFgAndBgAtOnce() { + // TODO(b/280542662): This delay is a temporary mitigation for an intermittent failure + Thread.sleep(500) + installPackage(APP_APK_PATH_30_WITH_BACKGROUND) + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + assertAppHasPermission(ACCESS_BACKGROUND_LOCATION, false) + + requestAppPermissionsAndAssertResult( + ACCESS_FINE_LOCATION to false, + ACCESS_BACKGROUND_LOCATION to false, + waitForWindowTransition = false + ) { + // Do nothing, should be automatically denied + } + } + + @Test + fun testRequestBothInSequence() { + installPackage(APP_APK_PATH_30_WITH_BACKGROUND) + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + assertAppHasPermission(ACCESS_BACKGROUND_LOCATION, false) + + requestAppPermissionsAndAssertResult(ACCESS_FINE_LOCATION to true) { + clickPermissionRequestAllowForegroundButton() + } + + requestAppPermissionsAndAssertResult( + ACCESS_BACKGROUND_LOCATION to true, + waitForWindowTransition = false + ) { + clickAllowAlwaysInSettings() + pressBack() + } + } + + @Test + fun testRequestFgLocationAndNoAccuracyOptions() { + installPackage(APP_APK_PATH_30) + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + + requestAppPermissionsAndAssertResult( + ACCESS_FINE_LOCATION to false, + ACCESS_COARSE_LOCATION to false + ) { + // Verify there's no location accuracy options + val locationAccuracyOptions = + waitFindObjectOrNull( + By.res("com.android.permissioncontroller:id/permission_location_accuracy"), + 1000L + ) + assertNull( + "For apps targetSDK < 31, location permission dialog shouldn't show " + + "accuracy options. Please update the system with " + + "the latest (at least Oct, 2021) mainline modules.", + locationAccuracyOptions + ) + // Close dialog + clickPermissionRequestDenyButton() + } + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/PermissionTest30WithBluetooth.kt b/tests/cts/permissionui/src/android/permissionui/cts/PermissionTest30WithBluetooth.kt new file mode 100644 index 0000000000000000000000000000000000000000..493aa60fb862bf5b271df4e3dd0ab16937d8fc68 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/PermissionTest30WithBluetooth.kt @@ -0,0 +1,225 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.Manifest.permission.ACCESS_BACKGROUND_LOCATION +import android.Manifest.permission.ACCESS_FINE_LOCATION +import android.Manifest.permission.BLUETOOTH_SCAN +import android.app.AppOpsManager +import android.bluetooth.BluetoothAdapter +import android.bluetooth.BluetoothManager +import android.bluetooth.cts.BTAdapterUtils +import android.content.Intent +import android.content.pm.PackageManager +import android.content.pm.PackageManager.FLAG_PERMISSION_REVOKED_COMPAT +import android.location.LocationManager +import android.os.Build +import android.os.Process +import android.os.UserHandle +import android.util.Log +import androidx.test.InstrumentationRegistry +import androidx.test.filters.FlakyTest +import androidx.test.filters.SdkSuppress +import com.android.compatibility.common.util.SystemUtil.runShellCommandOrThrow +import com.android.compatibility.common.util.SystemUtil.runWithShellPermissionIdentity +import junit.framework.Assert.assertEquals +import junit.framework.Assert.assertTrue +import junit.framework.AssertionFailedError +import org.junit.After +import org.junit.Assert.assertNotEquals +import org.junit.Assume.assumeTrue +import org.junit.Before +import org.junit.Test + +private const val LOG_TAG = "PermissionTest30WithBluetooth" + +/** Runtime Bluetooth-permission behavior of apps targeting API 30 */ +@SdkSuppress(minSdkVersion = Build.VERSION_CODES.S, codeName = "S") +@FlakyTest +class PermissionTest30WithBluetooth : BaseUsePermissionTest() { + + private val TEST_APP_AUTHORITY = + "android.permissionui.cts.usepermission.AccessBluetoothOnCommand" + private val TEST_APP_PKG = "android.permissionui.cts.usepermission" + private lateinit var bluetoothAdapter: BluetoothAdapter + private var bluetoothAdapterWasEnabled: Boolean = false + private val locationManager = context.getSystemService(LocationManager::class.java)!! + private var locationWasEnabled: Boolean = false + + private enum class BluetoothScanResult { + UNKNOWN, + ERROR, + EXCEPTION, + EMPTY, + FILTERED, + FULL + } + + @Before + fun installApp() { + installPackage(APP_APK_PATH_30_WITH_BLUETOOTH) + } + + private fun reinstallApp() { + installPackage(APP_APK_PATH_30_WITH_BLUETOOTH, reinstall = true) + } + + @Before + fun enableBluetooth() { + assumeTrue(supportsBluetooth()) + bluetoothAdapter = context.getSystemService(BluetoothManager::class.java).adapter + bluetoothAdapterWasEnabled = bluetoothAdapter.isEnabled() + runWithShellPermissionIdentity { + assertTrue(BTAdapterUtils.enableAdapter(bluetoothAdapter, context)) + } + enableTestMode() + } + + @Before + fun enableLocation() { + val userHandle: UserHandle = Process.myUserHandle() + locationWasEnabled = locationManager.isLocationEnabledForUser(userHandle) + if (!locationWasEnabled) { + runWithShellPermissionIdentity { + locationManager.setLocationEnabledForUser(true, userHandle) + } + } + } + + @After + fun disableLocation() { + val userHandle: UserHandle = Process.myUserHandle() + + if (!locationWasEnabled) { + runWithShellPermissionIdentity { + locationManager.setLocationEnabledForUser(false, userHandle) + } + } + } + + @After + fun disableBluetooth() { + assumeTrue(supportsBluetooth()) + disableTestMode() + if (!bluetoothAdapterWasEnabled) { + runWithShellPermissionIdentity { + assertTrue(BTAdapterUtils.disableAdapter(bluetoothAdapter, context)) + } + } + } + + // TODO:(b/220030722) Remove verbose logging (after test is stabilized) + @Test + fun testGivenBluetoothIsDeniedWhenScanIsAttemptedThenThenGetEmptyScanResult() { + assumeTrue(supportsBluetoothLe()) + + assertTrue( + "Please enable location to run this test. Bluetooth scanning " + + "requires location to be enabled.", + locationManager.isLocationEnabled() + ) + assertBluetoothRevokedCompatState(revoked = false) + + Log.v( + LOG_TAG, + "Testing for: Given {BLUETOOTH_SCAN, !BLUETOOTH_SCAN.COMPAT_REVOKE, " + + "!ACCESS_*_LOCATION}, expect EMPTY" + ) + assertEquals(BluetoothScanResult.EMPTY, scanForBluetoothDevices()) + + Log.v( + LOG_TAG, + "Testing for: Given {BLUETOOTH_SCAN, !BLUETOOTH_SCAN.COMPAT_REVOKE, " + + "ACCESS_*_LOCATION}, expect FULL" + ) + uiAutomation.grantRuntimePermission(TEST_APP_PKG, ACCESS_FINE_LOCATION) + uiAutomation.grantRuntimePermission(TEST_APP_PKG, ACCESS_BACKGROUND_LOCATION) + setAppOp(context.packageName, AppOpsManager.OPSTR_FINE_LOCATION, AppOpsManager.MODE_ALLOWED) + assertEquals(BluetoothScanResult.FULL, scanForBluetoothDevices()) + + Log.v( + LOG_TAG, + "Testing for: Given {BLUETOOTH_SCAN, BLUETOOTH_SCAN.COMPAT_REVOKE, " + + "ACCESS_*_LOCATION}, expect ERROR" + ) + revokeAppPermissionsByUi(BLUETOOTH_SCAN, isLegacyApp = true) + assertBluetoothRevokedCompatState(revoked = true) + val res = scanForBluetoothDevices() + if (res != BluetoothScanResult.ERROR && res != BluetoothScanResult.EMPTY) { + throw AssertionFailedError("Expected to be EMPTY or ERROR, but was $res") + } + } + + private fun setAppOp(packageName: String, appOp: String, appOpMode: Int) { + runWithShellPermissionIdentity { + context + .getSystemService(AppOpsManager::class.java)!! + .setUidMode(appOp, packageManager.getPackageUid(packageName, 0), appOpMode) + } + } + + @Test + fun testRevokedCompatPersistsOnReinstall() { + assertBluetoothRevokedCompatState(revoked = false) + revokeAppPermissionsByUi(BLUETOOTH_SCAN, isLegacyApp = true) + assertBluetoothRevokedCompatState(revoked = true) + reinstallApp() + assertBluetoothRevokedCompatState(revoked = true) + installApp() + assertBluetoothRevokedCompatState(revoked = true) + } + + private fun assertBluetoothRevokedCompatState(revoked: Boolean = true) { + runWithShellPermissionIdentity { + val flag = + context.packageManager.getPermissionFlags( + BLUETOOTH_SCAN, + TEST_APP_PKG, + Process.myUserHandle() + ) and FLAG_PERMISSION_REVOKED_COMPAT + if (revoked) { + assertNotEquals(0, flag) + } else { + assertEquals(0, flag) + } + } + } + + private fun scanForBluetoothDevices(): BluetoothScanResult { + val resolver = InstrumentationRegistry.getTargetContext().getContentResolver() + val result = resolver.call(TEST_APP_AUTHORITY, "", null, null) + return BluetoothScanResult.values()[result!!.getInt(Intent.EXTRA_INDEX)] + } + + private fun supportsBluetooth(): Boolean = + context.packageManager.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH) + + private fun supportsBluetoothLe(): Boolean = + context.packageManager.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE) + + private fun enableTestMode() = + runShellCommandOrThrow( + "dumpsys activity service" + + " com.android.bluetooth.btservice.AdapterService set-test-mode enabled" + ) + + private fun disableTestMode() = + runShellCommandOrThrow( + "dumpsys activity service" + + " com.android.bluetooth.btservice.AdapterService set-test-mode disabled" + ) +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/PermissionUpgradeTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/PermissionUpgradeTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..3948e984f3f2f8b808dbe1312a0b7461443e7efd --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/PermissionUpgradeTest.kt @@ -0,0 +1,154 @@ +/* + * 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 android.permissionui.cts + +import androidx.test.filters.FlakyTest +import org.junit.Assume +import org.junit.Test + +/** Runtime permission behavior tests for upgrading apps. */ +@FlakyTest +class PermissionUpgradeTest : BaseUsePermissionTest() { + + @Test + fun testUpgradeKeepsPermissions() { + Assume.assumeFalse(packageManager.arePermissionsIndividuallyControlled()) + + installPackage(APP_APK_PATH_22) + + approvePermissionReview() + + assertAllPermissionsGrantedByDefault() + + installPackage(APP_APK_PATH_23, reinstall = true, skipClearLowSdkDialog = true) + + assertAllPermissionsGrantedOnUpgrade() + } + + private fun assertAllPermissionsGrantedByDefault() { + arrayOf( + android.Manifest.permission.SEND_SMS, + android.Manifest.permission.RECEIVE_SMS, + // The APK does not request READ_CONTACTS because of other tests + android.Manifest.permission.WRITE_CONTACTS, + android.Manifest.permission.READ_CALENDAR, + android.Manifest.permission.WRITE_CALENDAR, + android.Manifest.permission.READ_SMS, + android.Manifest.permission.RECEIVE_WAP_PUSH, + android.Manifest.permission.RECEIVE_MMS, + "android.permission.READ_CELL_BROADCASTS", + android.Manifest.permission.READ_EXTERNAL_STORAGE, + android.Manifest.permission.WRITE_EXTERNAL_STORAGE, + android.Manifest.permission.ACCESS_FINE_LOCATION, + android.Manifest.permission.ACCESS_COARSE_LOCATION, + android.Manifest.permission.READ_PHONE_STATE, + android.Manifest.permission.CALL_PHONE, + android.Manifest.permission.READ_CALL_LOG, + android.Manifest.permission.WRITE_CALL_LOG, + android.Manifest.permission.ADD_VOICEMAIL, + android.Manifest.permission.USE_SIP, + android.Manifest.permission.PROCESS_OUTGOING_CALLS, + android.Manifest.permission.CAMERA, + android.Manifest.permission.BODY_SENSORS, + // Split permissions + android.Manifest.permission.ACCESS_BACKGROUND_LOCATION + ) + .forEach { assertAppHasPermission(it, true) } + } + + private fun assertAllPermissionsGrantedOnUpgrade() { + assertAppHasAllOrNoPermissions(true) + } + + @Test + fun testNoDowngradePermissionModel() { + installPackage(APP_APK_PATH_23, skipClearLowSdkDialog = true) + installPackage(APP_APK_PATH_22, reinstall = true, expectSuccess = false) + } + + @Test + fun testRevokePropagatedOnUpgradeOldToNewModel() { + Assume.assumeFalse(packageManager.arePermissionsIndividuallyControlled()) + + installPackage(APP_APK_PATH_22) + + approvePermissionReview() + + // Revoke a permission + revokeAppPermissionsByUi(android.Manifest.permission.WRITE_CALENDAR, isLegacyApp = true) + + installPackage(APP_APK_PATH_23, reinstall = true, skipClearLowSdkDialog = true) + + assertAppHasPermission(android.Manifest.permission.WRITE_CALENDAR, false) + } + + @Test + fun testRevokePropagatedOnUpgradeNewToNewModel() { + installPackage(APP_APK_PATH_23) + + // Make sure we don't have the permission + assertAppHasPermission(android.Manifest.permission.READ_CALENDAR, false) + assertAppHasPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE, false) + + // Request the permission and allow it + // Make sure the permission is granted + requestAppPermissionsAndAssertResult( + android.Manifest.permission.READ_CALENDAR to true, + ) { + clickPermissionRequestAllowButton() + } + + installPackage(APP_APK_PATH_23, reinstall = true, skipClearLowSdkDialog = true) + + // Make sure the permission is still granted after the upgrade + assertAppHasPermission(android.Manifest.permission.READ_CALENDAR, true) + // Also make sure one of the not granted permissions is still not granted + assertAppHasPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE, false) + } + + private fun assertAppHasAllOrNoPermissions(expectPermissions: Boolean) { + arrayOf( + android.Manifest.permission.SEND_SMS, + android.Manifest.permission.RECEIVE_SMS, + android.Manifest.permission.RECEIVE_WAP_PUSH, + android.Manifest.permission.RECEIVE_MMS, + android.Manifest.permission.READ_CALENDAR, + android.Manifest.permission.WRITE_CALENDAR, + android.Manifest.permission.WRITE_CONTACTS, + android.Manifest.permission.READ_SMS, + android.Manifest.permission.READ_PHONE_STATE, + android.Manifest.permission.READ_CALL_LOG, + android.Manifest.permission.WRITE_CALL_LOG, + android.Manifest.permission.ADD_VOICEMAIL, + android.Manifest.permission.CALL_PHONE, + android.Manifest.permission.USE_SIP, + android.Manifest.permission.PROCESS_OUTGOING_CALLS, + android.Manifest.permission.RECORD_AUDIO, + android.Manifest.permission.ACCESS_FINE_LOCATION, + android.Manifest.permission.ACCESS_COARSE_LOCATION, + android.Manifest.permission.CAMERA, + android.Manifest.permission.BODY_SENSORS, + android.Manifest.permission.READ_CELL_BROADCASTS, + // Split permissions + android.Manifest.permission.ACCESS_BACKGROUND_LOCATION, + // Storage permissions + android.Manifest.permission.READ_EXTERNAL_STORAGE, + android.Manifest.permission.WRITE_EXTERNAL_STORAGE + ) + .forEach { assertAppHasPermission(it, expectPermissions) } + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/PermissionUsageInfoTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/PermissionUsageInfoTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..80e3dfaed1f19a053375ff7468d37db3c489f697 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/PermissionUsageInfoTest.kt @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.content.Intent +import androidx.test.filters.FlakyTest +import androidx.test.uiautomator.By +import com.android.compatibility.common.util.SystemUtil.runWithShellPermissionIdentity +import org.junit.Assume.assumeFalse +import org.junit.Before +import org.junit.Test + +/** Tests permission usage info action. */ +@FlakyTest +class PermissionUsageInfoTest : BaseUsePermissionTest() { + @Before + fun assumeHandheld() { + assumeFalse(isAutomotive) + assumeFalse(isTv) + assumeFalse(isWatch) + } + + @Before + fun installApp() { + installPackage(APP_APK_PATH_LATEST) + } + + @Test + fun testPermissionUsageInfo() { + doAndWaitForWindowTransition { + runWithShellPermissionIdentity { + context.startActivity( + Intent(Intent.ACTION_MANAGE_APP_PERMISSIONS).apply { + putExtra(Intent.EXTRA_PACKAGE_NAME, APP_PACKAGE_NAME) + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + } + ) + } + } + click(By.res("com.android.permissioncontroller:id/icon")) + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/PhotoPickerPermissionTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/PhotoPickerPermissionTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..018a6e4867dd451748daf0eb2395d5d505ea4d35 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/PhotoPickerPermissionTest.kt @@ -0,0 +1,502 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.Manifest.permission.ACCESS_MEDIA_LOCATION +import android.Manifest.permission.READ_MEDIA_IMAGES +import android.Manifest.permission.READ_MEDIA_VIDEO +import android.Manifest.permission.READ_MEDIA_VISUAL_USER_SELECTED +import android.content.pm.PackageManager +import android.content.pm.PackageManager.FLAG_PERMISSION_ONE_TIME +import android.content.pm.PackageManager.FLAG_PERMISSION_REVOKED_COMPAT +import android.content.pm.PackageManager.FLAG_PERMISSION_USER_FIXED +import android.content.pm.PackageManager.FLAG_PERMISSION_USER_SET +import android.net.Uri +import android.os.Build +import android.provider.DeviceConfig +import android.provider.DeviceConfig.NAMESPACE_PRIVACY +import androidx.test.filters.FlakyTest +import androidx.test.filters.SdkSuppress +import androidx.test.uiautomator.By +import com.android.compatibility.common.util.SystemUtil.eventually +import com.android.compatibility.common.util.SystemUtil.runWithShellPermissionIdentity +import com.android.compatibility.common.util.UiAutomatorUtils2 +import org.junit.AfterClass +import org.junit.Assert.assertFalse +import org.junit.Assert.assertNotNull +import org.junit.Assert.assertTrue +import org.junit.Assume.assumeTrue +import org.junit.Before +import org.junit.BeforeClass +import org.junit.Test + +@SdkSuppress(minSdkVersion = Build.VERSION_CODES.UPSIDE_DOWN_CAKE, codeName = "UpsideDownCake") +@FlakyTest +class PhotoPickerPermissionTest : BaseUsePermissionTest() { + + companion object { + private var photoUri: Uri? = null + private var videoUri: Uri? = null + private var oldEnableState: Boolean = true + + @BeforeClass + @JvmStatic + fun enablePickerAndAddMedia() { + // Initialize media provider package name + PhotoPickerUtils.getMediaProviderPkgName(context) + oldEnableState = isPhotoPickerPermissionPromptEnabled() + runWithShellPermissionIdentity { + if (!oldEnableState) { + DeviceConfig.setProperty( + NAMESPACE_PRIVACY, + PICKER_ENABLED_SETTING, + true.toString(), + false + ) + } + photoUri = PhotoPickerUtils.createImage(context) + videoUri = PhotoPickerUtils.createVideo(context) + } + } + + @AfterClass + @JvmStatic + fun resetPickerAndRemoveMedia() { + if (!oldEnableState) { + runWithShellPermissionIdentity { + DeviceConfig.setProperty( + NAMESPACE_PRIVACY, + PICKER_ENABLED_SETTING, + false.toString(), + false + ) + } + } + + PhotoPickerUtils.deleteMedia(context, photoUri) + PhotoPickerUtils.deleteMedia(context, videoUri) + } + } + + @Before + fun assumeEnabled() { + assumeTrue(isPhotoPickerPermissionPromptEnabled()) + } + + @Test + fun testAppWithoutStoragePermsDoesntHaveUserSelectedAdded() { + installPackage(APP_APK_PATH_LATEST_NONE) + runWithShellPermissionIdentity { + val packageInfo = + packageManager.getPackageInfo(APP_PACKAGE_NAME, PackageManager.GET_PERMISSIONS) + assertNotNull(packageInfo) + val permissions = packageInfo.requestedPermissions?.toList() ?: emptyList() + assertFalse( + "Expected app to not request READ_MEDIA_VISUAL_USER_SELECTED", + permissions.contains(READ_MEDIA_VISUAL_USER_SELECTED) + ) + } + } + + @Test + fun testAppWithStoragePermsHasUserSelectedAdded() { + installPackage(APP_APK_PATH_IMPLICIT_USER_SELECT_STORAGE) + runWithShellPermissionIdentity { + val packageInfo = + packageManager.getPackageInfo(APP_PACKAGE_NAME, PackageManager.GET_PERMISSIONS) + assertNotNull(packageInfo) + val permissions = packageInfo.requestedPermissions?.toList() ?: emptyList() + assertTrue( + "Expected app to request READ_MEDIA_VISUAL_USER_SELECTED", + permissions.contains(READ_MEDIA_VISUAL_USER_SELECTED) + ) + } + } + + @Test + fun testAppWithUserSelectedPermShowsSelectOption() { + installPackage(APP_APK_PATH_IMPLICIT_USER_SELECT_STORAGE) + requestAppPermissions(READ_MEDIA_IMAGES) { + assertNotNull(waitFindObjectOrNull(By.res(SELECT_BUTTON))) + click(By.res(DENY_BUTTON)) + } + } + + @Test + fun testNoPhotoSelectionTreatedAsCancel() { + installPackage(APP_APK_PATH_IMPLICIT_USER_SELECT_STORAGE) + requestAppPermissionsAndAssertResult( + arrayOf(READ_MEDIA_IMAGES, READ_MEDIA_VISUAL_USER_SELECTED), + arrayOf(READ_MEDIA_IMAGES to false, READ_MEDIA_VISUAL_USER_SELECTED to false), + waitForWindowTransition = false + ) { + doAndWaitForWindowTransition { click(By.res(SELECT_BUTTON)) } + findImageOrVideo(expected = true) + uiDevice.pressBack() + } + assertPermissionFlags(READ_MEDIA_IMAGES, FLAG_PERMISSION_USER_SET to false) + assertPermissionFlags(READ_MEDIA_VISUAL_USER_SELECTED, FLAG_PERMISSION_USER_SET to false) + } + + @Test + fun testImplicitUserSelectHasOneTimeGrantsWithoutAppOp() { + installPackage(APP_APK_PATH_IMPLICIT_USER_SELECT_STORAGE) + requestAppPermissionsAndAssertResult( + arrayOf(READ_MEDIA_IMAGES), + arrayOf(READ_MEDIA_IMAGES to true), + waitForWindowTransition = false + ) { + doAndWaitForWindowTransition { click(By.res(SELECT_BUTTON)) } + clickImageOrVideo() + clickAllow() + } + eventually { + // USER_SELECTED should be granted, but not returned in the result + assertAppHasPermission(READ_MEDIA_VISUAL_USER_SELECTED, expectPermission = true) + assertAppHasPermission(READ_MEDIA_VIDEO, expectPermission = true) + assertPermissionFlags( + READ_MEDIA_IMAGES, + FLAG_PERMISSION_ONE_TIME to true, + FLAG_PERMISSION_REVOKED_COMPAT to true + ) + assertPermissionFlags( + READ_MEDIA_VIDEO, + FLAG_PERMISSION_ONE_TIME to true, + FLAG_PERMISSION_REVOKED_COMPAT to true + ) + assertPermissionFlags( + READ_MEDIA_VISUAL_USER_SELECTED, + FLAG_PERMISSION_ONE_TIME to false, + FLAG_PERMISSION_REVOKED_COMPAT to false + ) + } + } + + @Test + fun testImplicitShowsMorePhotosOnceSet() { + installPackage(APP_APK_PATH_IMPLICIT_USER_SELECT_STORAGE) + eventually { + uiAutomation.grantRuntimePermission(APP_PACKAGE_NAME, READ_MEDIA_VISUAL_USER_SELECTED) + assertAppHasPermission(READ_MEDIA_VISUAL_USER_SELECTED, true) + } + + requestAppPermissions(READ_MEDIA_IMAGES, waitForWindowTransition = false) { + waitFindObject(By.res(DONT_SELECT_MORE_BUTTON)) + uiDevice.pressBack() + } + } + + @Test + fun testNonImplicitDoesntGrantOtherPermsWhenUserSelected() { + installPackage(APP_APK_PATH_LATEST) + requestAppPermissionsAndAssertResult( + arrayOf(READ_MEDIA_IMAGES, READ_MEDIA_VISUAL_USER_SELECTED), + arrayOf(READ_MEDIA_IMAGES to false, READ_MEDIA_VISUAL_USER_SELECTED to true), + waitForWindowTransition = false + ) { + doAndWaitForWindowTransition { click(By.res(SELECT_BUTTON)) } + clickImageOrVideo() + clickAllow() + } + + assertPermissionFlags(READ_MEDIA_IMAGES, FLAG_PERMISSION_USER_SET to true) + assertPermissionFlags(READ_MEDIA_VISUAL_USER_SELECTED, FLAG_PERMISSION_USER_SET to true) + } + + @Test + fun testNonImplicitAutomaticallyShowsPickerWhenUserFixed() { + installPackage(APP_APK_PATH_LATEST) + requestAppPermissions(READ_MEDIA_IMAGES, waitForWindowTransition = false) { + doAndWaitForWindowTransition { click(By.res(SELECT_BUTTON)) } + clickImageOrVideo() + doAndWaitForWindowTransition { clickAllow() } + } + + requestAppPermissions(READ_MEDIA_IMAGES, waitForWindowTransition = false) { + doAndWaitForWindowTransition { click(By.res(SELECT_BUTTON)) } + clickImageOrVideo() + doAndWaitForWindowTransition { clickAllow() } + } + + assertPermissionFlags(READ_MEDIA_VISUAL_USER_SELECTED, FLAG_PERMISSION_USER_FIXED to true) + + requestAppPermissions(READ_MEDIA_IMAGES, waitForWindowTransition = false) { + findImageOrVideo(expected = true) + uiDevice.pressBack() + } + } + + @Test + fun testRequestedPermsFilterMediaType() { + installPackage(APP_APK_PATH_LATEST) + requestAppPermissions(READ_MEDIA_IMAGES, waitForWindowTransition = false) { + doAndWaitForWindowTransition { click(By.res(SELECT_BUTTON)) } + findImageOrVideo(expected = true) + findVideo(expected = false) + uiDevice.pressBack() + } + + requestAppPermissions(READ_MEDIA_VIDEO, waitForWindowTransition = false) { + doAndWaitForWindowTransition { click(By.res(SELECT_BUTTON)) } + findVideo(expected = true) + uiDevice.pressBack() + } + } + + @Test + fun testGrantAllPhotosStateSameForImplicitAndNot() { + installPackage(APP_APK_PATH_IMPLICIT_USER_SELECT_STORAGE) + requestAppPermissionsAndAssertResult( + arrayOf(READ_MEDIA_IMAGES), + arrayOf(READ_MEDIA_IMAGES to true) + ) { + click(By.res(ALLOW_ALL_BUTTON)) + } + + eventually { + assertAppHasPermission(READ_MEDIA_VISUAL_USER_SELECTED, expectPermission = true) + } + + uninstallPackage(APP_PACKAGE_NAME) + installPackage(APP_APK_PATH_LATEST) + requestAppPermissionsAndAssertResult( + arrayOf(READ_MEDIA_IMAGES, READ_MEDIA_VISUAL_USER_SELECTED), + arrayOf(READ_MEDIA_IMAGES to true, READ_MEDIA_VISUAL_USER_SELECTED to true) + ) { + click(By.res(ALLOW_ALL_BUTTON)) + } + } + + @Test + fun testGrantAllPhotosInSettings() { + installPackage(APP_APK_PATH_IMPLICIT_USER_SELECT_STORAGE) + navigateToIndividualPermissionSetting(READ_MEDIA_IMAGES) + click(By.res(ALLOW_RADIO_BUTTON)) + + eventually { + assertAppHasPermission(READ_MEDIA_IMAGES, expectPermission = true) + assertAppHasPermission(READ_MEDIA_VIDEO, expectPermission = true) + assertAppHasPermission(ACCESS_MEDIA_LOCATION, expectPermission = true) + assertAppHasPermission(READ_MEDIA_VISUAL_USER_SELECTED, expectPermission = true) + } + } + + @Test + fun testSelectPhotosInSettingsImplicit() { + installPackage(APP_APK_PATH_IMPLICIT_USER_SELECT_STORAGE) + navigateToIndividualPermissionSetting(READ_MEDIA_IMAGES) + click(By.res(SELECT_RADIO_BUTTON)) + + eventually { + assertAppHasPermission(READ_MEDIA_IMAGES, expectPermission = false) + assertAppHasPermission(READ_MEDIA_VIDEO, expectPermission = false) + assertAppHasPermission(ACCESS_MEDIA_LOCATION, expectPermission = false) + assertAppHasPermission(READ_MEDIA_VISUAL_USER_SELECTED, expectPermission = true) + } + } + + @Test + fun testSelectPhotosInSettingsExplicit() { + installPackage(APP_APK_PATH_LATEST) + navigateToIndividualPermissionSetting(READ_MEDIA_IMAGES) + click(By.res(SELECT_RADIO_BUTTON)) + + eventually { + assertAppHasPermission(READ_MEDIA_IMAGES, expectPermission = false) + assertAppHasPermission(READ_MEDIA_VIDEO, expectPermission = false) + assertAppHasPermission(ACCESS_MEDIA_LOCATION, expectPermission = true) + assertAppHasPermission(READ_MEDIA_VISUAL_USER_SELECTED, expectPermission = true) + } + } + + @Test + @Throws(PackageManager.NameNotFoundException::class) + fun testPre33AppDoesntShowSelect() { + installPackage(APP_APK_PATH_30) + runWithShellPermissionIdentity { + val requestedPerms = + packageManager + .getPackageInfo(APP_PACKAGE_NAME, PackageManager.GET_PERMISSIONS) + .requestedPermissions!! + .toList() + assertTrue( + "Expected package to have USER_SELECTED", + requestedPerms.contains(READ_MEDIA_VISUAL_USER_SELECTED) + ) + } + + requestAppPermissions(READ_MEDIA_IMAGES, waitForWindowTransition = false) { + findView(By.res(SELECT_BUTTON), expected = false) + pressBack() + } + + navigateToIndividualPermissionSetting(READ_MEDIA_IMAGES) + findView(By.res(SELECT_RADIO_BUTTON), expected = false) + } + + @Test + fun test33AppWithImplicitUserSelectDoesntShowSelect() { + installPackage(APP_APK_PATH_STORAGE_33) + + runWithShellPermissionIdentity { + val requestedPerms = + packageManager + .getPackageInfo(APP_PACKAGE_NAME, PackageManager.GET_PERMISSIONS) + .requestedPermissions!! + .toList() + assertTrue( + "Expected package to have USER_SELECTED", + requestedPerms.contains(READ_MEDIA_VISUAL_USER_SELECTED) + ) + } + + requestAppPermissions(READ_MEDIA_IMAGES, waitForWindowTransition = false) { + findView(By.res(SELECT_BUTTON), expected = false) + pressBack() + } + + navigateToIndividualPermissionSetting(READ_MEDIA_IMAGES) + findView(By.res(SELECT_RADIO_BUTTON), expected = false) + } + + @Test + fun testAppCantRequestOnlyPartialStoragePerms() { + installPackage(APP_APK_PATH_IMPLICIT_USER_SELECT_STORAGE) + requestAppPermissionsAndAssertResult( + READ_MEDIA_VISUAL_USER_SELECTED to false, + waitForWindowTransition = false + ) {} + uninstallPackage(APP_PACKAGE_NAME) + installPackage(APP_APK_PATH_LATEST) + requestAppPermissionsAndAssertResult( + READ_MEDIA_VISUAL_USER_SELECTED to false, + ACCESS_MEDIA_LOCATION to false, + waitForWindowTransition = false + ) {} + } + + @Test + fun testImplicitAppCanExpandAccessMediaLocation() { + installPackage(APP_APK_PATH_IMPLICIT_USER_SELECT_STORAGE) + requestAppPermissions(ACCESS_MEDIA_LOCATION) { click(By.res(ALLOW_ALL_BUTTON)) } + requestAppPermissionsAndAssertResult( + READ_MEDIA_IMAGES to true, + READ_MEDIA_VIDEO to true, + waitForWindowTransition = false + ) {} + } + + @Test + fun testExplicitAppCannotExpandAccessMediaLocation() { + installPackage(APP_APK_PATH_LATEST) + requestAppPermissionsAndAssertResult( + READ_MEDIA_IMAGES to false, + ACCESS_MEDIA_LOCATION to true, + READ_MEDIA_VISUAL_USER_SELECTED to true, + waitForWindowTransition = false + ) { + doAndWaitForWindowTransition { click(By.res(SELECT_BUTTON)) } + clickImageOrVideo() + clickAllow() + } + requestAppPermissions(READ_MEDIA_IMAGES, READ_MEDIA_VIDEO) { + click(By.res(ALLOW_ALL_BUTTON)) + } + } + + @Test + fun testExplicitAppCannotRequestOnlyPartialAccess() { + installPackage(APP_APK_PATH_LATEST) + requestAppPermissionsAndAssertResult( + ACCESS_MEDIA_LOCATION to false, + READ_MEDIA_VISUAL_USER_SELECTED to false, + waitForWindowTransition = false + ) { + findView(By.res(SELECT_BUTTON), expected = false) + } + } + + @Test + fun testMorePhotosDialogShowsAfterClickingSelect() { + installPackage(APP_APK_PATH_LATEST) + requestAppPermissionsAndAssertResult( + READ_MEDIA_IMAGES to false, + ACCESS_MEDIA_LOCATION to true, + READ_MEDIA_VISUAL_USER_SELECTED to true, + waitForWindowTransition = false + ) { + doAndWaitForWindowTransition { click(By.res(SELECT_BUTTON)) } + clickImageOrVideo() + doAndWaitForWindowTransition { clickAllow() } + } + + requestAppPermissions(READ_MEDIA_IMAGES, READ_MEDIA_VIDEO) { + findView(By.res(DONT_SELECT_MORE_BUTTON), expected = true) + click(By.res(ALLOW_ALL_BUTTON)) + } + } + + @Test + fun testAMLNotGrantedIfNotRequested() { + installPackage(APP_APK_PATH_LATEST) + requestAppPermissionsAndAssertResult( + READ_MEDIA_IMAGES to false, + READ_MEDIA_VISUAL_USER_SELECTED to true, + waitForWindowTransition = false + ) { + doAndWaitForWindowTransition { click(By.res(SELECT_BUTTON)) } + clickImageOrVideo() + doAndWaitForWindowTransition { clickAllow() } + } + assertAppHasPermission(ACCESS_MEDIA_LOCATION, false) + } + + @Test + fun testCanSelectPhotosInSettings() { + installPackage(APP_APK_PATH_LATEST) + navigateToIndividualPermissionSetting(READ_MEDIA_IMAGES) + click(By.res(SELECT_RADIO_BUTTON)) + doAndWaitForWindowTransition { + click(By.res(EDIT_PHOTOS_BUTTON)) + } + clickImageOrVideo() + clickAllow() + } + + @Test + fun testEditButtonNotShownInSettingsWhenNoPhotosRequested() { + installPackage(APP_APK_PATH_LATEST) + navigateToIndividualPermissionSetting(READ_MEDIA_IMAGES) + UiAutomatorUtils2.waitUntilObjectGone(By.res(EDIT_PHOTOS_BUTTON)) + } + + private fun clickImageOrVideo() { + click(By.res(PhotoPickerUtils.getImageOrVideoResId(context))) + } + + private fun clickAllow() { + click(By.res(PhotoPickerUtils.getAllowId(context))) + } + + private fun findImageOrVideo(expected: Boolean) { + findView(By.res(PhotoPickerUtils.getImageOrVideoResId(context)), expected) + } + + private fun findVideo(expected: Boolean) { + findView(By.res(PhotoPickerUtils.getVideoResId(context)), expected) + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/PhotoPickerUtils.kt b/tests/cts/permissionui/src/android/permissionui/cts/PhotoPickerUtils.kt new file mode 100644 index 0000000000000000000000000000000000000000..9a6de151468a30fc080419c1240f1f2484982db0 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/PhotoPickerUtils.kt @@ -0,0 +1,128 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.content.Context +import android.content.pm.PackageManager +import android.net.Uri +import android.os.Bundle +import android.os.FileUtils +import android.provider.MediaStore +import android.provider.cts.ProviderTestUtils +import android.provider.cts.media.MediaStoreUtils +import com.android.compatibility.common.util.SystemUtil.callWithShellPermissionIdentity +import java.io.IOException + +object PhotoPickerUtils { + private const val DISPLAY_NAME_PREFIX = "ctsPermissionPhotoPicker" + private const val VIDEO_ICON_ID = ":id/icon_video" + private const val IMAGE_CHECK_BOX_ID = ":id/icon_check" + private const val ALLOW_ID = ":id/button_add" + private var mediaProviderPkgName: String? = null + + fun getImageOrVideoResId(context: Context): String { + return "${getMediaProviderPkgName(context)!!}$IMAGE_CHECK_BOX_ID" + } + + fun getVideoResId(context: Context): String { + return "${getMediaProviderPkgName(context)!!}$VIDEO_ICON_ID" + } + + fun getAllowId(context: Context): String { + return "${getMediaProviderPkgName(context)!!}$ALLOW_ID" + } + + fun getMediaProviderPkgName(context: Context): String? { + return mediaProviderPkgName + ?: callWithShellPermissionIdentity { + val pkgs = context.packageManager.getInstalledPackages(PackageManager.GET_PROVIDERS) + for (pkg in pkgs) { + pkg.providers?.let { providerInfos -> + for (providerInfo in providerInfos) { + if (providerInfo.authority == "media") { + mediaProviderPkgName = pkg.packageName + return@callWithShellPermissionIdentity mediaProviderPkgName + } + } + } + } + null + } + } + + @Throws(java.lang.Exception::class) + fun createImage(context: Context): Uri { + return getPermissionAndStageMedia( + context, + R.raw.lg_g4_iso_800_jpg, + MediaStore.Images.Media.EXTERNAL_CONTENT_URI, + "image/jpeg" + ) + .first + } + + @Throws(java.lang.Exception::class) + fun createVideo(context: Context): Uri { + return getPermissionAndStageMedia( + context, + R.raw.test_video, + MediaStore.Video.Media.EXTERNAL_CONTENT_URI, + "video/mp4" + ) + .first + } + + @Throws(Exception::class) + fun deleteMedia(context: Context, uri: Uri?) { + if (uri == null) { + return + } + try { + ProviderTestUtils.setOwner(uri, context.packageName) + context.contentResolver.delete(uri, Bundle.EMPTY) + } catch (ignored: Exception) {} + } + + @Throws(java.lang.Exception::class) + private fun getPermissionAndStageMedia( + context: Context, + resId: Int, + collectionUri: Uri, + mimeType: String, + ): Pair { + return callWithShellPermissionIdentity { + stageMedia(context, resId, collectionUri, mimeType) + } + } + @Throws(IOException::class) + private fun stageMedia( + context: Context, + resId: Int, + collectionUri: Uri, + mimeType: String, + ): Pair { + val displayName = DISPLAY_NAME_PREFIX + System.nanoTime() + val params = MediaStoreUtils.PendingParams(collectionUri, displayName, mimeType) + val pendingUri = MediaStoreUtils.createPending(context, params) + MediaStoreUtils.openPending(context, pendingUri).use { session -> + context.resources.openRawResource(resId).use { source -> + session.openOutputStream().use { target -> FileUtils.copy(source, target) } + } + return session.publish() to displayName + } + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/ReviewAccessibilityServicesTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/ReviewAccessibilityServicesTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..03151c9febd42ecbf9b420f7c562b3eb30cf6936 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/ReviewAccessibilityServicesTest.kt @@ -0,0 +1,241 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.accessibility.cts.common.InstrumentedAccessibilityService +import android.accessibility.cts.common.InstrumentedAccessibilityServiceTestRule +import android.app.UiAutomation +import android.content.Context +import android.content.Intent +import android.content.pm.PackageManager +import android.platform.test.annotations.AppModeFull +import androidx.test.filters.FlakyTest +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.runner.AndroidJUnit4 +import androidx.test.uiautomator.By +import androidx.test.uiautomator.Configurator +import androidx.test.uiautomator.StaleObjectException +import androidx.test.uiautomator.UiDevice +import androidx.test.uiautomator.UiObject2 +import androidx.test.uiautomator.Until +import com.android.compatibility.common.util.SystemUtil +import com.android.compatibility.common.util.UiAutomatorUtils2.waitFindObjectOrNull +import java.util.regex.Pattern +import org.junit.After +import org.junit.Assert.assertEquals +import org.junit.Assume +import org.junit.Before +import org.junit.Ignore +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +@AppModeFull(reason = "Instant apps cannot be a11y services") +@FlakyTest +class ReviewAccessibilityServicesTest { + + private val context: Context = InstrumentationRegistry.getInstrumentation().context + private val uiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) + private val testService1String = context.getString(R.string.test_accessibility_service) + private val testService2String = context.getString(R.string.test_accessibility_service_2) + private val packageName = context.packageManager.permissionControllerPackageName + + companion object { + private const val EXPECTED_TIMEOUT_MS = 500L + private const val NEW_WINDOW_TIMEOUT_MILLIS: Long = 20_000 + } + + @get:Rule + val accessibilityServiceRule = + InstrumentedAccessibilityServiceTestRule(AccessibilityTestService1::class.java, false) + + @get:Rule + val accessibilityServiceRule2 = + InstrumentedAccessibilityServiceTestRule(AccessibilityTestService2::class.java, false) + + init { + Configurator.getInstance().uiAutomationFlags = + UiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES + } + + @Before + fun assumeNotAutoTvOrWear() { + Assume.assumeFalse(context.packageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK)) + Assume.assumeFalse( + context.packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE) + ) + Assume.assumeFalse(context.packageManager.hasSystemFeature(PackageManager.FEATURE_WATCH)) + } + + @After + fun cleanUp() { + uiDevice.pressHome() + } + + @Test + fun testActivityShowsSingleEnabledAccessibilityService() { + accessibilityServiceRule.enableService() + startAccessibilityActivity() + findTestService(true) + findTestService2(false) + } + + @Test + fun testActivityShowsMultipleEnabledAccessibilityServices() { + accessibilityServiceRule.enableService() + accessibilityServiceRule2.enableService() + startAccessibilityActivity() + findTestService(true) + findTestService2(true) + } + + @Test + fun testClickingSettingsGoesToIndividualSettingsWhenOneServiceEnabled() { + accessibilityServiceRule.enableService() + startAccessibilityActivity() + clickSettings() + waitForSettingsButtonToDisappear() + findTestService(true) + findTestService2(false) + } + + @Test + @Ignore("b/293507233") + fun testClickingSettingsGoesToGeneralSettingsWhenMultipleServicesEnabled() { + accessibilityServiceRule.enableService() + accessibilityServiceRule2.enableService() + startAccessibilityActivity() + clickSettings() + waitForSettingsButtonToDisappear() + findTestService(true) + findTestService2(true) + } + + @Test + fun testClickingIndividualGoesToIndividualSettingsWhenMultipleServicesEnabled() { + accessibilityServiceRule.enableService() + accessibilityServiceRule2.enableService() + startAccessibilityActivity() + findTestService2(true)!!.click() + waitForSettingsButtonToDisappear() + findTestService2(true) + findTestService(false) + } + + private fun startAccessibilityActivity() { + val automan = + InstrumentationRegistry.getInstrumentation() + .getUiAutomation(UiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES) + doAndWaitForWindowTransition { + automan.adoptShellPermissionIdentity() + try { + context.startActivity( + Intent(Intent.ACTION_REVIEW_ACCESSIBILITY_SERVICES) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) + ) + } catch (e: Exception) { + throw RuntimeException("Caught exception", e) + } finally { + automan.dropShellPermissionIdentity() + } + } + } + + private inline fun doAndWaitForWindowTransition(crossinline block: () -> Unit) { + val timeoutOccurred: Boolean = + !uiDevice.performActionAndWait( + { block() }, + Until.newWindow(), + NEW_WINDOW_TIMEOUT_MILLIS + ) + + if (timeoutOccurred) { + throw RuntimeException("Timed out waiting for window transition.") + } + } + + private fun findTestService(shouldBePresent: Boolean): UiObject2? { + return findObjectByText(shouldBePresent, testService1String) + } + + private fun findTestService2(shouldBePresent: Boolean): UiObject2? { + return findObjectByText(shouldBePresent, testService2String) + } + + private fun clickSettings() { + findObjectByText(true, "Settings")?.click() + } + + private fun waitForSettingsButtonToDisappear() { + SystemUtil.eventually { + findPCObjectByClassAndText(false, + "android.widget.Button", + "Settings" + ) + } + } + + private fun findObjectByTextWithoutRetry( + shouldBePresent: Boolean, + text: String, + ): UiObject2? { + val containsWithoutCaseSelector = + By.text(Pattern.compile(".*$text.*", Pattern.CASE_INSENSITIVE)) + val view = + if (shouldBePresent) { + waitFindObjectOrNull(containsWithoutCaseSelector) + } else { + waitFindObjectOrNull(containsWithoutCaseSelector, EXPECTED_TIMEOUT_MS) + } + + assertEquals( + "Expected to find view with text $text: $shouldBePresent", + shouldBePresent, + view != null + ) + return view + } + + private fun findObjectByText(expected: Boolean, text: String): UiObject2? { + try { + return findObjectByTextWithoutRetry(expected, text) + } catch (stale: StaleObjectException) { + return findObjectByTextWithoutRetry(expected, text) + } + } + + private fun findPCObjectByClassAndText( + shouldBePresent: Boolean, + className: String, + text: String + ): UiObject2? { + val selector = By.pkg(packageName) + .clazz(className) + .text(text) + val view = waitFindObjectOrNull(selector) + assertEquals( + "Expected to find view with packageName '$packageName' className '$className' " + + "text '$text' : $shouldBePresent", shouldBePresent, view != null) + return view + } +} + +/** Test Accessibility Services */ +class AccessibilityTestService1 : InstrumentedAccessibilityService() + +class AccessibilityTestService2 : InstrumentedAccessibilityService() diff --git a/tests/cts/permissionui/src/android/permissionui/cts/SafetyLabelChangesJobServiceTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/SafetyLabelChangesJobServiceTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..690d76729d627da059988fd55b562237de5bf3b7 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/SafetyLabelChangesJobServiceTest.kt @@ -0,0 +1,507 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.app.Instrumentation +import android.app.UiAutomation +import android.content.Context +import android.content.pm.PackageInstaller.PACKAGE_SOURCE_DOWNLOADED_FILE +import android.content.pm.PackageInstaller.PACKAGE_SOURCE_LOCAL_FILE +import android.content.pm.PackageInstaller.PACKAGE_SOURCE_OTHER +import android.content.pm.PackageInstaller.PACKAGE_SOURCE_STORE +import android.content.pm.PackageInstaller.PACKAGE_SOURCE_UNSPECIFIED +import android.content.pm.PackageManager +import android.os.Build +import android.os.PersistableBundle +import android.os.Process +import android.permission.cts.CtsNotificationListenerHelperRule +import android.permission.cts.CtsNotificationListenerServiceUtils +import android.permission.cts.CtsNotificationListenerServiceUtils.getNotification +import android.permission.cts.CtsNotificationListenerServiceUtils.getNotificationForPackageAndId +import android.permission.cts.PermissionUtils +import android.permission.cts.TestUtils +import android.permissionui.cts.AppMetadata.createAppMetadataWithLocationSharingNoAds +import android.permissionui.cts.AppMetadata.createAppMetadataWithNoSharing +import android.provider.DeviceConfig +import android.safetylabel.SafetyLabelConstants +import android.safetylabel.SafetyLabelConstants.SAFETY_LABEL_CHANGE_NOTIFICATIONS_ENABLED +import androidx.test.InstrumentationRegistry +import androidx.test.filters.FlakyTest +import androidx.test.filters.SdkSuppress +import androidx.test.uiautomator.By +import com.android.compatibility.common.util.DeviceConfigStateChangerRule +import com.android.compatibility.common.util.SystemUtil +import com.android.compatibility.common.util.SystemUtil.eventually +import com.android.compatibility.common.util.SystemUtil.waitForBroadcasts +import com.google.common.truth.Truth.assertThat +import org.junit.After +import org.junit.Assume +import org.junit.Before +import org.junit.ClassRule +import org.junit.Rule +import org.junit.Test + +/** End-to-end test for SafetyLabelChangesJobService. */ +@SdkSuppress(minSdkVersion = Build.VERSION_CODES.UPSIDE_DOWN_CAKE, codeName = "UpsideDownCake") +@FlakyTest +class SafetyLabelChangesJobServiceTest : BaseUsePermissionTest() { + + @get:Rule + val safetyLabelChangeNotificationsEnabledConfig = + DeviceConfigStateChangerRule( + context, + DeviceConfig.NAMESPACE_PRIVACY, + SafetyLabelConstants.SAFETY_LABEL_CHANGE_NOTIFICATIONS_ENABLED, + true.toString() + ) + + /** + * This rule serves to limit the max number of safety labels that can be persisted, so that + * repeated tests don't overwhelm the disk storage on the device. + */ + @get:Rule + val deviceConfigMaxSafetyLabelsPersistedPerApp = + DeviceConfigStateChangerRule( + context, + DeviceConfig.NAMESPACE_PRIVACY, + PROPERTY_MAX_SAFETY_LABELS_PERSISTED_PER_APP, + "2" + ) + + @get:Rule + val deviceConfigDataSharingUpdatesPeriod = + DeviceConfigStateChangerRule( + BasePermissionTest.context, + DeviceConfig.NAMESPACE_PRIVACY, + PROPERTY_DATA_SHARING_UPDATE_PERIOD_MILLIS, + "600000" + ) + + @Before + fun setup() { + val packageManager = context.packageManager + Assume.assumeFalse(packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)) + Assume.assumeFalse(packageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK)) + Assume.assumeFalse(packageManager.hasSystemFeature(PackageManager.FEATURE_WATCH)) + + SystemUtil.runShellCommand("input keyevent KEYCODE_WAKEUP") + SystemUtil.runShellCommand("wm dismiss-keyguard") + + // Bypass battery saving restrictions + SystemUtil.runShellCommand( + "cmd tare set-vip " + + "${Process.myUserHandle().identifier} $permissionControllerPackageName true" + ) + CtsNotificationListenerServiceUtils.cancelNotifications(permissionControllerPackageName) + resetPermissionControllerAndSimulateReboot() + } + + @After + fun cancelJobsAndNotifications() { + cancelJob(SAFETY_LABEL_CHANGES_DETECT_UPDATES_JOB_ID) + cancelJob(SAFETY_LABEL_CHANGES_PERIODIC_NOTIFICATION_JOB_ID) + CtsNotificationListenerServiceUtils.cancelNotifications(permissionControllerPackageName) + // Reset battery saving restrictions + SystemUtil.runShellCommand( + "cmd tare set-vip " + + "${Process.myUserHandle().identifier} $permissionControllerPackageName default" + ) + } + + @Test + fun runDetectUpdatesJob_initializesSafetyLabelsHistoryForApps() { + installPackageNoBroadcast(APP_APK_NAME_31, createAppMetadataWithNoSharing()) + grantLocationPermission(APP_PACKAGE_NAME) + + // Run the job to check whether the missing safety label for the above app install is + // identified and recorded. + runDetectUpdatesJob() + installPackageViaSession(APP_APK_NAME_31, createAppMetadataWithLocationSharingNoAds()) + waitForBroadcasts() + + assertNotificationNotShown() + assertDataSharingScreenHasUpdates() + } + + @Test + fun runNotificationJob_initializesSafetyLabelsHistoryForApps() { + installPackageNoBroadcast(APP_APK_NAME_31, createAppMetadataWithNoSharing()) + grantLocationPermission(APP_PACKAGE_NAME) + + // Run the job to check whether the missing safety label for the above app install is + // identified and recorded. + runNotificationJob() + installPackageViaSession(APP_APK_NAME_31, createAppMetadataWithLocationSharingNoAds()) + waitForBroadcasts() + + assertDataSharingScreenHasUpdates() + } + + @Test + fun runDetectUpdatesJob_updatesSafetyLabelHistoryForApps() { + installPackageViaSession(APP_APK_NAME_31, createAppMetadataWithNoSharing()) + waitForBroadcastReceiverFinished() + installPackageNoBroadcast(APP_APK_NAME_31, createAppMetadataWithLocationSharingNoAds()) + grantLocationPermission(APP_PACKAGE_NAME) + + // Run the job to check whether the missing safety label for the above app update is + // identified and recorded. + runDetectUpdatesJob() + + assertNotificationNotShown() + assertDataSharingScreenHasUpdates() + } + + @Test + fun runNotificationJob_updatesSafetyLabelHistoryForApps() { + installPackageViaSession(APP_APK_NAME_31, createAppMetadataWithNoSharing()) + waitForBroadcastReceiverFinished() + installPackageNoBroadcast(APP_APK_NAME_31, createAppMetadataWithLocationSharingNoAds()) + grantLocationPermission(APP_PACKAGE_NAME) + + // Run the job to check whether the missing safety label for the above app update is + // identified and recorded. + runNotificationJob() + + assertDataSharingScreenHasUpdates() + } + + @Test + fun runNotificationJob_whenLocationSharingUpdatesForLocationGrantedApps_showsNotification() { + installPackageViaSession(APP_APK_NAME_31, createAppMetadataWithNoSharing()) + waitForBroadcasts() + // TODO(b/279455955): Investigate why this is necessary and remove if possible. + Thread.sleep(500) + installPackageViaSession(APP_APK_NAME_31, createAppMetadataWithLocationSharingNoAds()) + waitForBroadcasts() + grantLocationPermission(APP_PACKAGE_NAME) + + runNotificationJob() + + waitForNotificationShown() + + val statusBarNotification = + getNotification(permissionControllerPackageName, SAFETY_LABEL_CHANGES_NOTIFICATION_ID) + val contentIntent = statusBarNotification!!.notification.contentIntent + contentIntent.send() + + assertDataSharingScreenHasUpdates() + } + + @Test + fun runNotificationJob_whenNoLocationGrantedApps_doesNotShowNotification() { + installPackageViaSession(APP_APK_NAME_31, createAppMetadataWithNoSharing()) + waitForBroadcasts() + installPackageViaSession(APP_APK_NAME_31, createAppMetadataWithLocationSharingNoAds()) + waitForBroadcasts() + + runNotificationJob() + + assertNotificationNotShown() + } + + @Test + fun runNotificationJob_whenNoLocationSharingUpdates_doesNotShowNotification() { + installPackageViaSession(APP_APK_NAME_31, createAppMetadataWithNoSharing()) + waitForBroadcasts() + grantLocationPermission(APP_PACKAGE_NAME) + + runNotificationJob() + + assertNotificationNotShown() + } + + @Test + fun runNotificationJob_packageSourceUnspecified_updatesSafetyLabelHistoryForApps() { + installPackageViaSession( + APP_APK_NAME_31, + createAppMetadataWithNoSharing(), + PACKAGE_SOURCE_UNSPECIFIED + ) + waitForBroadcastReceiverFinished() + installPackageNoBroadcast( + APP_APK_NAME_31, + createAppMetadataWithLocationSharingNoAds(), + PACKAGE_SOURCE_UNSPECIFIED + ) + grantLocationPermission(APP_PACKAGE_NAME) + + // Run the job to check whether the missing safety label for the above app update is + // identified and recorded. + runNotificationJob() + + assertDataSharingScreenHasUpdates() + } + + @Test + fun runNotificationJob_packageSourceOther_doesNotShowNotification() { + installPackageViaSession( + APP_APK_NAME_31, + createAppMetadataWithNoSharing(), + PACKAGE_SOURCE_OTHER + ) + waitForBroadcastReceiverFinished() + installPackageNoBroadcast( + APP_APK_NAME_31, + createAppMetadataWithLocationSharingNoAds(), + PACKAGE_SOURCE_OTHER + ) + grantLocationPermission(APP_PACKAGE_NAME) + + // Run the job to check whether the missing safety label for the above app update is + // identified and recorded. + runNotificationJob() + + assertNotificationNotShown() + } + + @Test + fun runNotificationJob_packageSourceStore_updatesSafetyLabelHistoryForApps() { + installPackageViaSession( + APP_APK_NAME_31, + createAppMetadataWithNoSharing(), + PACKAGE_SOURCE_STORE + ) + waitForBroadcastReceiverFinished() + installPackageNoBroadcast( + APP_APK_NAME_31, + createAppMetadataWithLocationSharingNoAds(), + PACKAGE_SOURCE_STORE + ) + grantLocationPermission(APP_PACKAGE_NAME) + + // Run the job to check whether the missing safety label for the above app update is + // identified and recorded. + runNotificationJob() + + assertDataSharingScreenHasUpdates() + } + + @Test + fun runNotificationJob_packageSourceLocalFile_doesNotShowNotification() { + installPackageViaSession( + APP_APK_NAME_31, + createAppMetadataWithNoSharing(), + PACKAGE_SOURCE_LOCAL_FILE + ) + waitForBroadcastReceiverFinished() + installPackageNoBroadcast( + APP_APK_NAME_31, + createAppMetadataWithLocationSharingNoAds(), + PACKAGE_SOURCE_LOCAL_FILE + ) + grantLocationPermission(APP_PACKAGE_NAME) + + // Run the job to check whether the missing safety label for the above app update is + // identified and recorded. + runNotificationJob() + + assertNotificationNotShown() + } + + @Test + fun runNotificationJob_packageSourceDownloadedFile_udoesNotShowNotification() { + installPackageViaSession( + APP_APK_NAME_31, + createAppMetadataWithNoSharing(), + PACKAGE_SOURCE_DOWNLOADED_FILE + ) + waitForBroadcastReceiverFinished() + installPackageNoBroadcast( + APP_APK_NAME_31, + createAppMetadataWithLocationSharingNoAds(), + PACKAGE_SOURCE_DOWNLOADED_FILE + ) + grantLocationPermission(APP_PACKAGE_NAME) + + // Run the job to check whether the missing safety label for the above app update is + // identified and recorded. + runNotificationJob() + + assertNotificationNotShown() + } + + private fun grantLocationPermission(packageName: String) { + uiAutomation.grantRuntimePermission( + packageName, + android.Manifest.permission.ACCESS_FINE_LOCATION + ) + } + + private fun installPackageNoBroadcast( + apkName: String, + appMetadata: PersistableBundle? = null, + packageSource: Int? = null + ) { + // Disable the safety labels feature during install to simulate installing an app without + // receiving an update about the change to its safety label. + setDeviceConfigPrivacyProperty(SAFETY_LABEL_CHANGE_NOTIFICATIONS_ENABLED, false.toString()) + installPackageViaSession(apkName, appMetadata, packageSource) + waitForBroadcastReceiverFinished() + setDeviceConfigPrivacyProperty(SAFETY_LABEL_CHANGE_NOTIFICATIONS_ENABLED, true.toString()) + } + + private fun assertDataSharingScreenHasUpdates() { + startAppDataSharingUpdatesActivity() + try { + findView(By.descContains(DATA_SHARING_UPDATES), true) + findView(By.textContains(DATA_SHARING_UPDATES_SUBTITLE), true) + findView(By.textContains(UPDATES_IN_LAST_30_DAYS), true) + findView(By.textContains(APP_PACKAGE_NAME_SUBSTRING), true) + findView(By.textContains(DATA_SHARING_UPDATES_FOOTER_MESSAGE), true) + } finally { + pressBack() + } + } + + companion object { + private const val TIMEOUT_TIME_MS = 60_000L + private const val SHORT_SLEEP_MS = 2000L + + private const val SAFETY_LABEL_CHANGES_DETECT_UPDATES_JOB_ID = 8 + private const val SAFETY_LABEL_CHANGES_PERIODIC_NOTIFICATION_JOB_ID = 9 + private const val SET_UP_SAFETY_LABEL_CHANGES_JOB = + "com.android.permissioncontroller.action.SET_UP_SAFETY_LABEL_CHANGES_JOB" + private const val SAFETY_LABEL_CHANGES_JOB_SERVICE_RECEIVER_CLASS = + "com.android.permissioncontroller.permission.service.v34" + + ".SafetyLabelChangesJobService\$Receiver" + private const val SAFETY_LABEL_CHANGES_NOTIFICATION_ID = 5 + private const val JOB_STATUS_UNKNOWN = "unknown" + private const val JOB_STATUS_ACTIVE = "active" + private const val JOB_STATUS_WAITING = "waiting" + + private val context: Context = InstrumentationRegistry.getTargetContext() + private val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation() + private fun uiAutomation(): UiAutomation = instrumentation.uiAutomation + private val permissionControllerPackageName = + context.packageManager.permissionControllerPackageName + private val userId = Process.myUserHandle().identifier + + @get:ClassRule + @JvmStatic + val ctsNotificationListenerHelper = + CtsNotificationListenerHelperRule( + InstrumentationRegistry.getInstrumentation().targetContext + ) + + private fun waitForNotificationShown() { + eventually { + val notification = getNotification(false) + assertThat(notification).isNotNull() + } + } + + private fun assertNotificationNotShown() { + eventually { + val notification = getNotification(false) + assertThat(notification).isNull() + } + } + + private fun getNotification(cancelNotification: Boolean) = + getNotificationForPackageAndId( + permissionControllerPackageName, + SAFETY_LABEL_CHANGES_NOTIFICATION_ID, + cancelNotification + ) + ?.notification + + private fun cancelJob(jobId: Int) { + SystemUtil.runShellCommandOrThrow( + "cmd jobscheduler cancel -u $userId $permissionControllerPackageName $jobId" + ) + TestUtils.awaitJobUntilRequestedState( + permissionControllerPackageName, + jobId, + TIMEOUT_TIME_MS, + uiAutomation(), + JOB_STATUS_UNKNOWN + ) + } + + private fun runDetectUpdatesJob() { + startJob(SAFETY_LABEL_CHANGES_DETECT_UPDATES_JOB_ID) + TestUtils.awaitJobUntilRequestedState( + permissionControllerPackageName, + SAFETY_LABEL_CHANGES_DETECT_UPDATES_JOB_ID, + TIMEOUT_TIME_MS, + uiAutomation(), + JOB_STATUS_ACTIVE + ) + TestUtils.awaitJobUntilRequestedState( + permissionControllerPackageName, + SAFETY_LABEL_CHANGES_DETECT_UPDATES_JOB_ID, + TIMEOUT_TIME_MS, + uiAutomation(), + JOB_STATUS_UNKNOWN + ) + } + + private fun runNotificationJob() { + startJob(SAFETY_LABEL_CHANGES_PERIODIC_NOTIFICATION_JOB_ID) + TestUtils.awaitJobUntilRequestedState( + permissionControllerPackageName, + SAFETY_LABEL_CHANGES_PERIODIC_NOTIFICATION_JOB_ID, + TIMEOUT_TIME_MS, + uiAutomation(), + JOB_STATUS_ACTIVE + ) + // TODO(b/266449833): In theory we should only have to wait for "waiting" here, but + // sometimes jobscheduler returns "unknown". + TestUtils.awaitJobUntilRequestedState( + permissionControllerPackageName, + SAFETY_LABEL_CHANGES_PERIODIC_NOTIFICATION_JOB_ID, + TIMEOUT_TIME_MS, + uiAutomation(), + JOB_STATUS_WAITING, + JOB_STATUS_UNKNOWN + ) + } + + private fun startJob(jobId: Int) { + val runJobCmd = + "cmd jobscheduler run -u $userId -f " + "$permissionControllerPackageName $jobId" + try { + SystemUtil.runShellCommandOrThrow(runJobCmd) + } catch (e: Throwable) { + throw RuntimeException(e) + } + } + + private fun resetPermissionControllerAndSimulateReboot() { + PermissionUtils.resetPermissionControllerJob( + uiAutomation(), + permissionControllerPackageName, + SAFETY_LABEL_CHANGES_DETECT_UPDATES_JOB_ID, + TIMEOUT_TIME_MS, + SET_UP_SAFETY_LABEL_CHANGES_JOB, + SAFETY_LABEL_CHANGES_JOB_SERVICE_RECEIVER_CLASS + ) + } + + private fun waitForBroadcastReceiverFinished() { + waitForBroadcasts() + // Add a short sleep to ensure that the SafetyLabelChangedBroadcastReceiver finishes its + // work based according to the current feature flag value before changing the flag + // value. + // While `waitForBroadcasts()` waits for broadcasts to be dispatched, it will not wait + // for + // the receivers' `onReceive` to finish. + Thread.sleep(SHORT_SLEEP_MS) + } + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/SafetyProtectionTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/SafetyProtectionTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..541ea9d165feaabaf34f8e12edbf2103f4bc7e04 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/SafetyProtectionTest.kt @@ -0,0 +1,120 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package android.permissionui.cts + +import android.Manifest.permission.ACCESS_COARSE_LOCATION +import android.Manifest.permission.ACCESS_FINE_LOCATION +import android.content.res.Resources +import android.provider.DeviceConfig +import androidx.test.filters.FlakyTest +import androidx.test.uiautomator.By +import com.android.compatibility.common.util.DeviceConfigStateChangerRule +import com.android.modules.utils.build.SdkLevel +import org.junit.Assume.assumeFalse +import org.junit.Assume.assumeTrue +import org.junit.Before +import org.junit.Ignore +import org.junit.Rule +import org.junit.Test + +/** Tests for Safety Protection related features. This feature should only be enabled on T+. */ +@FlakyTest +class SafetyProtectionTest : BaseUsePermissionTest() { + @get:Rule + val safetyProtectionEnabled = + DeviceConfigStateChangerRule( + context, + DeviceConfig.NAMESPACE_PRIVACY, + SAFETY_PROTECTION_ENABLED_FLAG, + true.toString() + ) + + @Before + fun setup() { + assumeFalse(isAutomotive) + assumeFalse(isTv) + assumeFalse(isWatch) + } + + @Ignore("b/276944839") + @Test + fun testSafetyProtectionSectionView_safetyProtection_belowT() { + assumeFalse("Safety Protection should only be enabled on T+", SdkLevel.isAtLeastT()) + installPackageViaSession(APP_APK_NAME_31) + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + requestAppPermissionsForNoResult(ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION) { + findView(By.res(SAFETY_PROTECTION_DISPLAY_TEXT), false) + } + } + + @Test + fun testSafetyProtectionSectionView_safetyProtectionDisabled_aboveT() { + assumeTrue("Safety Protection should only be enabled on T+", SdkLevel.isAtLeastT()) + setDeviceConfigPrivacyProperty(SAFETY_PROTECTION_ENABLED_FLAG, false.toString()) + installPackageViaSession(APP_APK_NAME_31) + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + requestAppPermissionsForNoResult(ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION) { + findView(By.res(SAFETY_PROTECTION_DISPLAY_TEXT), false) + } + } + + @Test + fun testSafetyProtectionSectionView_safetyProtectionEnabled_aboveT() { + assumeTrue("Safety Protection should only be enabled on T+", SdkLevel.isAtLeastT()) + assumeTrue(safetyProtectionResourcesExist) + installPackageViaSession(APP_APK_NAME_31) + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + requestAppPermissionsForNoResult(ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION) { + findView(By.res(SAFETY_PROTECTION_DISPLAY_TEXT), true) + } + } + + @Test + fun testSafetyProtectionSectionView_safetyProtectionResourcesNotExist_aboveT() { + assumeTrue("Safety Protection should only be enabled on T+", SdkLevel.isAtLeastT()) + assumeFalse(safetyProtectionResourcesExist) + installPackageViaSession(APP_APK_NAME_31) + assertAppHasPermission(ACCESS_COARSE_LOCATION, false) + assertAppHasPermission(ACCESS_FINE_LOCATION, false) + requestAppPermissionsForNoResult(ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION) { + findView(By.res(SAFETY_PROTECTION_DISPLAY_TEXT), false) + } + } + + companion object { + private const val SAFETY_PROTECTION_ENABLED_FLAG = "safety_protection_enabled" + private const val SAFETY_PROTECTION_DISPLAY_TEXT = + "com.android.permissioncontroller:id/safety_protection_display_text" + private val safetyProtectionResourcesExist = + try { + context + .getResources() + .getBoolean( + Resources.getSystem() + .getIdentifier("config_safetyProtectionEnabled", "bool", "android") + ) && + context.getDrawable(android.R.drawable.ic_safety_protection) != null && + !context + .getString(android.R.string.safety_protection_display_text) + .isNullOrEmpty() + } catch (e: Resources.NotFoundException) { + false + } + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/SensorBlockedBannerTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/SensorBlockedBannerTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..f8c7d4f5138e492631b727e0c1aee95c5d6ee3f7 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/SensorBlockedBannerTest.kt @@ -0,0 +1,178 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.Manifest.permission_group.CAMERA as CAMERA_PERMISSION_GROUP +import android.Manifest.permission_group.LOCATION as LOCATION_PERMISSION_GROUP +import android.Manifest.permission_group.MICROPHONE as MICROPHONE_PERMISSION_GROUP +import android.content.Intent +import android.hardware.SensorPrivacyManager +import android.hardware.SensorPrivacyManager.Sensors.CAMERA +import android.hardware.SensorPrivacyManager.Sensors.MICROPHONE +import android.location.LocationManager +import android.os.Build +import android.safetycenter.SafetyCenterManager +import androidx.test.filters.FlakyTest +import androidx.test.filters.SdkSuppress +import androidx.test.uiautomator.By +import com.android.compatibility.common.util.SystemUtil.callWithShellPermissionIdentity +import com.android.compatibility.common.util.SystemUtil.runWithShellPermissionIdentity +import java.util.regex.Pattern +import org.junit.Assert.assertTrue +import org.junit.Assume +import org.junit.Before +import org.junit.Test + +/** Banner card display tests on sensors being blocked */ +@SdkSuppress(minSdkVersion = Build.VERSION_CODES.S) +@FlakyTest +class SensorBlockedBannerTest : BaseUsePermissionTest() { + companion object { + const val LOCATION = -1 + const val DELAY_MILLIS = 3000L + private const val CHANGE_BUTTON = "com.android.permissioncontroller:id/button_id" + private const val CAMERA_TOGGLE_LABEL = "Camera access" + } + + private val sensorPrivacyManager = context.getSystemService(SensorPrivacyManager::class.java)!! + private val locationManager = context.getSystemService(LocationManager::class.java)!! + private val safetyCenterManager = context.getSystemService(SafetyCenterManager::class.java)!! + + private val sensorToPermissionGroup = + mapOf( + CAMERA to CAMERA_PERMISSION_GROUP, + MICROPHONE to MICROPHONE_PERMISSION_GROUP, + LOCATION to LOCATION_PERMISSION_GROUP + ) + + private val permToTitle = + mapOf( + CAMERA to "blocked_camera_title", + MICROPHONE to "blocked_microphone_title", + LOCATION to "blocked_location_title" + ) + + @Before + fun setup() { + Assume.assumeFalse(isTv) + Assume.assumeFalse(isWatch) + // TODO(b/203784852) Auto will eventually support the blocked sensor banner, but there won't + // be support in T or below + Assume.assumeFalse(isAutomotive) + installPackage(APP_APK_PATH_31) + } + + private fun navigateAndTest(sensor: Int) { + val permissionGroup = sensorToPermissionGroup.getOrDefault(sensor, "Break") + val intent = + Intent(Intent.ACTION_MANAGE_PERMISSION_APPS) + .putExtra(Intent.EXTRA_PERMISSION_GROUP_NAME, permissionGroup) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) + runWithShellPermissionIdentity { context.startActivity(intent) } + val bannerTitle = permToTitle.getOrDefault(sensor, "Break") + waitFindObject(By.text(getPermissionControllerString(bannerTitle))) + } + + private fun runSensorTest(sensor: Int) { + var blocked = false + try { + blocked = isSensorPrivacyEnabled(sensor) + if (!blocked) { + setSensor(sensor, true) + } + navigateAndTest(sensor) + } finally { + if (!blocked) { + setSensor(sensor, false) + } + } + } + + @Test + fun testCameraCardDisplayed() { + Assume.assumeTrue(sensorPrivacyManager.supportsSensorToggle(CAMERA)) + runSensorTest(CAMERA) + } + + @Test + fun testMicCardDisplayed() { + Assume.assumeTrue(sensorPrivacyManager.supportsSensorToggle(MICROPHONE)) + runSensorTest(MICROPHONE) + } + + @Test + fun testLocationCardDisplayed() { + runSensorTest(LOCATION) + } + + @Test + fun testCardClickOpenPrivacyControls() { + Assume.assumeTrue(sensorPrivacyManager.supportsSensorToggle(CAMERA)) + var isSafetyCenterEnabled = false + runWithShellPermissionIdentity { + isSafetyCenterEnabled = safetyCenterManager.isSafetyCenterEnabled + } + Assume.assumeTrue(isSafetyCenterEnabled) + // Disable global camera toggle + val blocked = isSensorPrivacyEnabled(CAMERA) + if (!blocked) { + setSensor(CAMERA, true) + } + // verify sensor card is shown for blocked camera + navigateAndTest(CAMERA) + click(By.res(CHANGE_BUTTON)) + // Enable global camera toggle and verify + waitFindObject(By.text(CAMERA_TOGGLE_LABEL)).click() + assertTrue(!isSensorPrivacyEnabled(CAMERA)) + } + + private fun setSensor(sensor: Int, enable: Boolean) { + if (sensor == LOCATION) { + runWithShellPermissionIdentity { + locationManager.setLocationEnabledForUser( + !enable, + android.os.Process.myUserHandle() + ) + if (enable) { + try { + val closePattern = Pattern.compile("close", Pattern.CASE_INSENSITIVE) + waitFindObjectOrNull(By.text(closePattern), DELAY_MILLIS)?.click() + } catch (e: Exception) { + // Do nothing, warning didn't show up so test can proceed + } + } + } + } else { + runWithShellPermissionIdentity { + sensorPrivacyManager.setSensorPrivacy( + SensorPrivacyManager.Sources.OTHER, + sensor, + enable + ) + } + } + } + + private fun isSensorPrivacyEnabled(sensor: Int): Boolean { + return if (sensor == LOCATION) { + callWithShellPermissionIdentity { !locationManager.isLocationEnabled() } + } else { + callWithShellPermissionIdentity { sensorPrivacyManager.isSensorPrivacyEnabled(sensor) } + } + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/StartForFutureActivity.kt b/tests/cts/permissionui/src/android/permissionui/cts/StartForFutureActivity.kt new file mode 100644 index 0000000000000000000000000000000000000000..8caa4e6bfdd703abbef0b1f3bd40b7fcd4771787 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/StartForFutureActivity.kt @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.app.Activity +import android.app.Instrumentation +import android.content.Intent +import android.os.Bundle +import android.util.Log +import java.util.concurrent.CompletableFuture + +class StartForFutureActivity : Activity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + if (savedInstanceState != null) { + Log.w(TAG, "Activity was recreated. (Perhaps due to a configuration change?)") + } + } + + fun startActivityForFuture( + intent: Intent, + future: CompletableFuture + ) { + if (StartForFutureActivity.future != null) { + throw RuntimeException( + "StartForFutureActivity only supports launching one " + + "concurrent activity, but more than one was attempted." + ) + } + + startActivityForResult(intent, 1) + StartForFutureActivity.future = future + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + future!!.complete(Instrumentation.ActivityResult(resultCode, data)) + future = null + finish() + } + + companion object { + private var future: CompletableFuture? = null + private val TAG = StartForFutureActivity::class.simpleName + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/TestInstallerActivity.kt b/tests/cts/permissionui/src/android/permissionui/cts/TestInstallerActivity.kt new file mode 100644 index 0000000000000000000000000000000000000000..bae332a3cd66be90bcee4510de5275a6b6977081 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/TestInstallerActivity.kt @@ -0,0 +1,21 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.app.Activity + +class TestInstallerActivity : Activity() diff --git a/tests/cts/role/Android.bp b/tests/cts/role/Android.bp new file mode 100644 index 0000000000000000000000000000000000000000..368a4526304582c2bfb7c42f55053bbdca1807a6 --- /dev/null +++ b/tests/cts/role/Android.bp @@ -0,0 +1,49 @@ +// 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 { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +android_test { + name: "CtsRoleTestCases", + defaults: ["mts-target-sdk-version-current"], + sdk_version: "test_current", + min_sdk_version: "30", + + srcs: [ + "src/**/*.java", + "src/**/*.kt", + ], + + static_libs: [ + "androidx.test.rules", + "compatibility-device-util-axt", + "ctstestrunner-axt", + "truth", + "platform-test-annotations", + ], + + test_suites: [ + "cts", + "general-tests", + "mts-permission", + ], + + data: [ + ":CtsRoleTestApp", + ":CtsRoleTestApp28", + ":CtsRoleTestApp33WithoutInCallService", + ], +} diff --git a/tests/cts/role/AndroidManifest.xml b/tests/cts/role/AndroidManifest.xml new file mode 100644 index 0000000000000000000000000000000000000000..a8c8c8e3d599b90a351d93a454e7a7c29c26e667 --- /dev/null +++ b/tests/cts/role/AndroidManifest.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/cts/role/AndroidTest.xml b/tests/cts/role/AndroidTest.xml new file mode 100644 index 0000000000000000000000000000000000000000..527ac3d32934389394f82bba2fa8de2ae94f326b --- /dev/null +++ b/tests/cts/role/AndroidTest.xml @@ -0,0 +1,51 @@ + + + + + + +