diff options
124 files changed, 1354 insertions, 271 deletions
diff --git a/PermissionController/res/values-af/strings.xml b/PermissionController/res/values-af/strings.xml index dbaaeffdc..8dab94a16 100644 --- a/PermissionController/res/values-af/strings.xml +++ b/PermissionController/res/values-af/strings.xml @@ -27,7 +27,7 @@ <string name="on" msgid="280241003226755921">"Aan"</string> <string name="off" msgid="1438489226422866263">"Af"</string> <string name="uninstall_or_disable" msgid="4496612999740858933">"Deïnstalleer of deaktiveer"</string> - <string name="app_not_found_dlg_title" msgid="6029482906093859756">"Program nie gevind nie"</string> + <string name="app_not_found_dlg_title" msgid="6029482906093859756">"App nie gevind nie"</string> <string name="grant_dialog_button_deny" msgid="88262611492697192">"Moenie toelaat nie"</string> <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Moenie toelaat nie en moenie weer vra nie"</string> <string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Hou \"Terwyl die app gebruik word\""</string> @@ -44,7 +44,7 @@ <string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> van <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="permission_warning_template" msgid="2247087781222679458">"Laat <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toe om <xliff:g id="ACTION">%2$s</xliff:g>?"</string> <string name="permission_add_background_warning_template" msgid="1812914855915092273">"Laat <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> altyd toe om <xliff:g id="ACTION">%2$s</xliff:g>?"</string> - <string name="allow_permission_foreground_only" msgid="116465816039675404">"Net terwyl program gebruik word"</string> + <string name="allow_permission_foreground_only" msgid="116465816039675404">"Net terwyl app gebruik word"</string> <string name="allow_permission_always" msgid="5194342531206054051">"Altyd"</string> <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Moenie toelaat nie en moenie weer vra nie"</string> <string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> is gedeaktiveer"</string> @@ -80,7 +80,7 @@ <string name="additional_permissions" msgid="5801285469338873430">"Bykomende toestemmings"</string> <string name="app_permissions_info_button_label" msgid="7633312050729974623">"Maak programinligting oop"</string> <string name="additional_permissions_more" msgid="5681220714755304407">"{count,plural, =1{Nog #}other{Nog #}}"</string> - <string name="old_sdk_deny_warning" msgid="2382236998845153919">"Hierdie program is vir \'n ouer weergawe van Android ontwerp. As toestemming geweier word, kan dit veroorsaak dat dit dalk nie meer soos bedoel werk nie."</string> + <string name="old_sdk_deny_warning" msgid="2382236998845153919">"Hierdie app is vir \'n ouer weergawe van Android ontwerp. As toestemming geweier word, kan dit veroorsaak dat dit dalk nie meer soos bedoel werk nie."</string> <string name="storage_supergroup_warning_allow" msgid="103093462784523190">"Hierdie app is vir \'n ouer weergawe van Android ontwerp. As jy hierdie toestemming toelaat, sal toegang tot alle berging (insluitend foto\'s, video\'s, musiek, oudio en ander lêers) toegelaat word."</string> <string name="storage_supergroup_warning_deny" msgid="6420765672683284347">"Hierdie app is vir \'n ouer weergawe van Android ontwerp. As jy hierdie toestemming weier, sal toegang tot alle berging (insluitend foto\'s, video\'s, musiek, oudio en ander lêers) geweier word."</string> <string name="default_permission_description" msgid="4624464917726285203">"voer \'n onbekende handeling uit"</string> @@ -97,7 +97,7 @@ <string name="system_warning" msgid="1173400963234358816">"As jy hierdie toestemming weier, sal basiese kenmerke van jou toestel dalk nie meer soos bedoel werk nie."</string> <string name="deny_read_media_visual_warning" msgid="3982586279917232827">"Hierdie app is vir \'n ouer weergawe van Android ontwerp. As jy nie vir hierdie app toegang tot foto\'s en video\'s gee nie, sal dit ook nie toegang tot musiek en ander oudio hê nie."</string> <string name="deny_read_media_aural_warning" msgid="8928699919508646732">"Hierdie app is vir \'n ouer weergawe van Android ontwerp. As jy nie vir hierdie app toegang tot musiek en ander oudio gee nie, sal dit ook nie toegang tot foto\'s en video\'s hê nie."</string> - <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"As jy hierdie toestemming weier, sal sommige kenmerke van jou toestel wat deur hierdie program bestuur word dalk nie meer soos bedoel werk nie."</string> + <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"As jy hierdie toestemming weier, sal sommige kenmerke van jou toestel wat deur hierdie app bestuur word dalk nie meer soos bedoel werk nie."</string> <string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Afgedwing deur beleid"</string> <string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Agtergrondtoegang is gedeaktiveer volgens beleid"</string> <string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Agtergrondtoegang is geaktiveer volgens beleid"</string> @@ -118,12 +118,12 @@ <string name="other_permissions" msgid="2901186127193849594">"Ander programvermoëns"</string> <string name="permission_request_title" msgid="8790310151025020126">"Toestemmingsversoek"</string> <string name="permission_review_title_template_install" msgid="1284337937156289081">"Kies waartoe <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang mag kry"</string> - <string name="permission_review_title_template_update" msgid="3232333580548588657">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> is opgedateer. Kies waartoe hierdie program toegang mag kry."</string> + <string name="permission_review_title_template_update" msgid="3232333580548588657">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> is opgedateer. Kies waartoe hierdie app toegang mag kry."</string> <string name="review_button_cancel" msgid="2191147944056548886">"Kanselleer"</string> <string name="review_button_continue" msgid="2527918375047602199">"Gaan voort"</string> <string name="new_permissions_category" msgid="552995090178417611">"Nuwe toestemmings"</string> <string name="current_permissions_category" msgid="4292990083585728880">"Huidige toestemmings"</string> - <string name="message_staging" msgid="9110563899955511866">"Voer tans program uit …"</string> + <string name="message_staging" msgid="9110563899955511866">"Voer tans app uit …"</string> <string name="app_name_unknown" msgid="1319665005754048952">"Onbekend"</string> <string name="permission_usage_title" msgid="1568233336351734538">"Privaatheidkontroleskerm"</string> <string name="auto_permission_usage_summary" msgid="7335667266743337075">"Bekyk watter programme onlangs toestemmings gebruik het"</string> @@ -133,7 +133,7 @@ <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> en nog <xliff:g id="NUM">%3$s</xliff:g>"</string> <string name="permission_group_usage_subtitle_24h" msgid="5120155996322114181">"Tydlyn van wanneer programme jou <xliff:g id="PERMGROUP">%1$s</xliff:g> in die afgelope 24 uur gebruik het"</string> <string name="permission_group_usage_subtitle_7d" msgid="1465828402260324654">"Tydlyn van wanneer programme jou <xliff:g id="PERMGROUP">%1$s</xliff:g> in die afgelope 7 dae gebruik het"</string> - <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Wanneer hierdie program jou <xliff:g id="PERMGROUP">%1$s</xliff:g>-toestemming gebruik het"</string> + <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Wanneer hierdie app jou <xliff:g id="PERMGROUP">%1$s</xliff:g>-toestemming gebruik het"</string> <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Kom meer te wete"</string> <string name="learn_more_content_description" msgid="8673699744544502539">"Kom meer te wete oor <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string> <string name="manage_permission_summary" msgid="4117555482684114317">"Beheer apptoegang tot jou <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string> @@ -204,17 +204,17 @@ <string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Sien alle apps met hierdie toestemming"</string> <string name="assistant_mic_label" msgid="1011432357152323896">"Wys Assistent-mikrofoongebruik"</string> <string name="unused_apps_category_title" msgid="2988455616845243901">"Instellings vir ongebruikte apps"</string> - <string name="auto_revoke_label" msgid="5068393642936571656">"Verwyder toestemmings as program nie gebruik word nie"</string> + <string name="auto_revoke_label" msgid="5068393642936571656">"Verwyder toestemmings as app nie gebruik word nie"</string> <string name="unused_apps_label" msgid="2595428768404901064">"Verwyder toestemmings en maak spasie beskikbaar"</string> <string name="unused_apps_label_v2" msgid="7058776770056517980">"Onderbreek appaktiwiteit as ongebruik"</string> <string name="unused_apps_label_v3" msgid="693340578642156657">"Bestuur app indien ongebruik"</string> <string name="unused_apps_summary" msgid="8839466950318403115">"Verwyder toestemmings, vee tydelike lêers uit, en stop kennisgewings"</string> <string name="unused_apps_summary_v2" msgid="5011313200815115802">"Verwyder toestemmings, vee tydelike lêers uit, stop kennisgewings en argiveer die app"</string> - <string name="auto_revoke_summary" msgid="5867548789805911683">"Om jou data te beskerm, sal toestemmings vir hierdie program verwyder word as die program \'n paar maande nie gebruik word nie."</string> + <string name="auto_revoke_summary" msgid="5867548789805911683">"Om jou data te beskerm, sal toestemmings vir hierdie app verwyder word as die app \'n paar maande nie gebruik word nie."</string> <string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Om jou data te beskerm, sal die volgende toestemmings verwyder word as dit vir \'n paar maande nie gebruik word nie: <xliff:g id="PERMS">%1$s</xliff:g>."</string> <string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Om jou data te beskerm, is toestemmings verwyder van programme wat jy \'n paar maande gelede laas gebruik het."</string> - <string name="auto_revoke_open_app_message" msgid="8075556291711205039">"Maak die program oop as jy toestemmings weer wil toelaat."</string> - <string name="auto_revoke_disabled" msgid="8697684442991567188">"Outomatiese verwydering is tans gedeaktiveer vir hierdie program."</string> + <string name="auto_revoke_open_app_message" msgid="8075556291711205039">"Maak die app oop as jy toestemmings weer wil toelaat."</string> + <string name="auto_revoke_disabled" msgid="8697684442991567188">"Outomatiese verwydering is tans gedeaktiveer vir hierdie app."</string> <string name="auto_revocable_permissions_none" msgid="8334929619113991466">"Geen toestemmings wat outomaties herroep kan word, is tans verleen nie"</string> <string name="auto_revocable_permissions_one" msgid="5299112369449458176">"<xliff:g id="PERM">%1$s</xliff:g> toestemming sal verwyder word."</string> <string name="auto_revocable_permissions_two" msgid="4874067408752041716">"<xliff:g id="PERM_0">%1$s</xliff:g> en <xliff:g id="PERM_1">%2$s</xliff:g> toestemmings sal verwyder word."</string> @@ -227,10 +227,10 @@ <string name="unused_apps_page_summary" msgid="1867593913217272155">"As \'n app vir \'n paar maande nie gebruik word nie:\n\n• Word toestemmings verwyder om jou privaatheid te beskerm\n• Word kennisgewings gestop om batterykrag te bespaar\n• Word tydelike lêers verwyder om spasie beskikbaar te maak\n\nMaak die app oop om weer toestemmings en kennisgewings toe te laat."</string> <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"As ’n app ’n maand lank nie gebruik is nie:\n\n• Toestemmings word verwyder om jou data te beskerm\n• Tydelike lêers word verwyder om spasie beskikbaar te maak\n\nMaak die app oop om weer toestemmings te gee."</string> <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Meer as # maand gelede laas oopgemaak}other{Meer as # maande gelede laas oopgemaak}}"</string> - <string name="last_opened_summary" msgid="5248984030024968808">"Program is <xliff:g id="DATE">%s</xliff:g> laas oopgemaak"</string> + <string name="last_opened_summary" msgid="5248984030024968808">"App is <xliff:g id="DATE">%s</xliff:g> laas oopgemaak"</string> <string name="last_opened_summary_short" msgid="1646067226191176825">"<xliff:g id="DATE">%s</xliff:g> laas oopgemaak"</string> - <string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"As jy toelaat dat alle lêers bestuur word, kan hierdie program enige lêers in gedeelde bergingspasie op hierdie toestel en gekoppelde bergingtoestelle kry, wysig en uitvee. Die program kan toegang tot lêers kry sonder om jou te vra."</string> - <string name="special_file_access_dialog" msgid="583804114020740610">"Laat hierdie program toe om lêers op die toestel en enige gekoppelde bergingtoestelle te kry, te wysig en uit te vee? Hierdie program kan toegang tot lêers kry sonder om jou te vra."</string> + <string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"As jy toelaat dat alle lêers bestuur word, kan hierdie app enige lêers in gedeelde bergingspasie op hierdie toestel en gekoppelde bergingtoestelle kry, wysig en uitvee. Die app kan toegang tot lêers kry sonder om jou te vra."</string> + <string name="special_file_access_dialog" msgid="583804114020740610">"Laat hierdie app toe om lêers op die toestel en enige gekoppelde bergingtoestelle te kry, te wysig en uit te vee? Hierdie app kan toegang tot lêers kry sonder om jou te vra."</string> <string name="permission_description_summary_generic" msgid="5401399408814903391">"Apps met hierdie toestemming <xliff:g id="DESCRIPTION">%1$s</xliff:g>"</string> <string name="permission_description_summary_activity_recognition" msgid="2652850576497070146">"Programme met hierdie toestemming kan ingaan by fisieke aktiwiteit, soos stap, fietsry, ry, treëtelling, en meer"</string> <string name="permission_description_summary_calendar" msgid="103329982944411010">"Programme met hierdie toestemming kan toegang tot jou kalender kry"</string> @@ -264,12 +264,12 @@ <string name="minutes" msgid="4868414855445375753">"{count,plural, =1{# minuut}other{# minute}}"</string> <string name="seconds" msgid="5893958182059842734">"{count,plural, =1{# sekonde}other{# sekondes}}"</string> <string name="permission_reminders" msgid="6528257957664832636">"Toestemmingonthounotas"</string> - <string name="auto_revoke_permission_reminder_notification_title_one" msgid="6690347469376854137">"1 ongebruikte program"</string> + <string name="auto_revoke_permission_reminder_notification_title_one" msgid="6690347469376854137">"1 ongebruikte app"</string> <string name="auto_revoke_permission_reminder_notification_title_many" msgid="6062217713645069960">"<xliff:g id="NUMBER_OF_APPS">%s</xliff:g> ongebruikte programme"</string> <string name="auto_revoke_permission_reminder_notification_content" msgid="4492228990462107487">"Toestemmings is verwyder om jou privaatheid te beskerm. Tik om na te gaan"</string> <string name="auto_revoke_permission_notification_title" msgid="2629844160853454657">"Toestemmings vir ongebruikte programme verwyder"</string> <string name="auto_revoke_permission_notification_content" msgid="5125990886047799375">"Sommige programme is \'n paar maande laas gebruik. Tik om te na te gaan."</string> - <string name="unused_apps_notification_title" msgid="4314832015894238019">"{count,plural, =1{# ongebruikte program}other{# ongebruikte programme}}"</string> + <string name="unused_apps_notification_title" msgid="4314832015894238019">"{count,plural, =1{# ongebruikte app}other{# ongebruikte apps}}"</string> <string name="unused_apps_notification_content" msgid="9195026773244581246">"Toestemmings en tydelike lêers is verwyder en kennisgewings is gestop. Tik om na te gaan."</string> <string name="unused_apps_safety_center_card_title" msgid="5638409355530099149">"Gaan programme na waarvoor toestemmings verwyder is"</string> <string name="unused_apps_safety_center_card_content" msgid="1088557243627427820">"Toestemmings en tydelike lêers is verwyder en kennisgewings is gestop vir programme wat jy ’n ruk lank nie gebruik het nie."</string> @@ -278,7 +278,7 @@ <string name="post_drive_permission_decision_reminder_summary_1_app_1_permission" msgid="670521503734140711">"Terwyl jy bestuur het, het jy <xliff:g id="APP">%1$s</xliff:g> toegang gegee tot <xliff:g id="PERMISSION">%2$s</xliff:g>"</string> <string name="post_drive_permission_decision_reminder_summary_1_app_2_permissions" msgid="671791184670801301">"Terwyl jy bestuur het, het jy <xliff:g id="APP">%1$s</xliff:g> toegang gegee tot <xliff:g id="PERMISSION_1">%2$s</xliff:g> en <xliff:g id="PERMISSION_2">%3$s</xliff:g>"</string> <string name="post_drive_permission_decision_reminder_summary_1_app_multi_permission" msgid="4080701771111456927">"Terwyl jy bestuur het, het jy <xliff:g id="COUNT">%1$d</xliff:g> toestemmings aan <xliff:g id="APP">%2$s</xliff:g> gegee"</string> - <string name="post_drive_permission_decision_reminder_summary_multi_apps" msgid="5253882771252863902">"{count,plural, =1{Terwyl jy bestuur het, het jy <xliff:g id="APP_0">%1$s</xliff:g> en # ander program toegang gegee}other{Terwyl jy bestuur het, het jy <xliff:g id="APP_1">%1$s</xliff:g> en # ander programme toegang gegee}}"</string> + <string name="post_drive_permission_decision_reminder_summary_multi_apps" msgid="5253882771252863902">"{count,plural, =1{Terwyl jy bestuur het, het jy <xliff:g id="APP_0">%1$s</xliff:g> en # ander app toegang gegee}other{Terwyl jy bestuur het, het jy <xliff:g id="APP_1">%1$s</xliff:g> en # ander apps toegang gegee}}"</string> <string name="go_to_settings" msgid="1053735612211228335">"Gaan na Instellings"</string> <string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Sommige programme is \'n paar maande laas gebruik"</string> <string name="permissions_removed_category_title" msgid="1064754271178447643">"Toestemmings wat verwyder is"</string> @@ -287,7 +287,7 @@ <string name="months_ago" msgid="1766026492610646354">"<xliff:g id="COUNT">%1$d</xliff:g> maande gelede"</string> <string name="auto_revoke_preference_summary" msgid="5517958331781391481">"Toestemmings is verwyder om jou privaatheid te beskerm"</string> <string name="background_location_access_reminder_notification_title" msgid="1140797924301941262">"<xliff:g id="APP_NAME">%s</xliff:g> het jou ligging op die agtergrond gekry"</string> - <string name="background_location_access_reminder_notification_content" msgid="7787084707336546245">"Hierdie program het altyd toegang tot jou ligging. Tik om te verander."</string> + <string name="background_location_access_reminder_notification_content" msgid="7787084707336546245">"Hierdie app het altyd toegang tot jou ligging. Tik om te verander."</string> <string name="notification_listener_reminder_notification_title" msgid="3747210460187479091">"Gaan app met toegang tot jou kennisgewings na"</string> <string name="notification_listener_reminder_notification_content" msgid="831476101108863427">"<xliff:g id="APP_NAME">%s</xliff:g> kan inhoud in jou kennisgewings toemaak, daarop reageer en toegang daartoe kry"</string> <string name="notification_listener_warning_card_content" msgid="7840973324284115893">"Hierdie app kan inhoud in jou kennisgewings toemaak, daarop reageer en toegang daartoe kry. Sommige apps het hierdie toegang nodig om te werk soos hulle moet."</string> @@ -303,7 +303,7 @@ <string name="safety_center_notification_app_label" msgid="2457720616141926534">"Android-stelsel"</string> <string name="auto_revoke_after_notification_title" msgid="5417761027669887431">"Programtoestemmings is verwyder om privaatheid te beskerm"</string> <string name="auto_revoke_after_notification_content_one" msgid="6804038707453662753">"<xliff:g id="APP_NAME">%s</xliff:g> is vir \'n paar maande nie gebruik nie. Tik om te kontroleer."</string> - <string name="auto_revoke_after_notification_content_two" msgid="9108709764831425172">"<xliff:g id="APP_NAME">%s</xliff:g> en 1 ander program is vir \'n paar maande nie gebruik nie. Tik om te kontroleer."</string> + <string name="auto_revoke_after_notification_content_two" msgid="9108709764831425172">"<xliff:g id="APP_NAME">%s</xliff:g> en 1 ander app is vir \'n paar maande nie gebruik nie. Tik om te kontroleer."</string> <string name="auto_revoke_after_notification_content_many" msgid="4774106206289751220">"<xliff:g id="APP_NAME">%1$s</xliff:g> en <xliff:g id="NUMBER_OF_APPS">%2$s</xliff:g> ander programme is vir \'n paar maande nie gebruik nie. Tik om te kontroleer."</string> <string name="auto_revoke_before_notification_title_one" msgid="6758024954464359876">"1 app is ongebruik"</string> <string name="auto_revoke_before_notification_title_many" msgid="4415543943846385685">"<xliff:g id="NUMBER_OF_APPS">%s</xliff:g> programme is ongebruik"</string> @@ -315,7 +315,7 @@ <string name="unused_permissions_subtitle_many" msgid="4387289202207450238">"<xliff:g id="PERM_NAME_0">%1$s</xliff:g>, <xliff:g id="PERM_NAME_1">%2$s</xliff:g> en nog <xliff:g id="NUMBER_OF_PERMISSIONS">%3$s</xliff:g>"</string> <string name="unused_app_permissions_removed_summary" msgid="6779039455326071033">"Toestemmings is verwyder uit programme wat jy vir \'n paar maande nie gebruik het nie om jou data te beskerm"</string> <string name="unused_app_permissions_removed_summary_some" msgid="5080490037831563441">"Om jou data te beskerm, is toestemmings verwyder uit sekere programme wat jy \'n paar maande gelede laas gebruik het"</string> - <string name="one_unused_app_summary" msgid="7831913934488881991">"1 program is \'n paar maande gelede laas gebruik"</string> + <string name="one_unused_app_summary" msgid="7831913934488881991">"1 app is \'n paar maande gelede laas gebruik"</string> <string name="num_unused_apps_summary" msgid="1870719749940571227">"<xliff:g id="NUMBER_OF_APPS">%s</xliff:g> programme is \'n paar maande gelede laas gebruik."</string> <string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Net terwyl die app gebruik word"</string> <string name="permission_subtitle_media_only" msgid="8917869683764720717">"Media"</string> @@ -370,8 +370,8 @@ <string name="role_sms_label" msgid="8456999857547686640">"Verstek-SMS-app"</string> <string name="role_sms_short_label" msgid="4371444488034692243">"SMS-app"</string> <string name="role_sms_description" msgid="3424020199148153513">"Apps wat jou toelaat om jou foonnommer te gebruik om kort SMS\'e, foto\'s, video\'s en meer te stuur en te ontvang"</string> - <string name="role_sms_request_title" msgid="7953552109601185602">"Stel <xliff:g id="APP_NAME">%1$s</xliff:g> as jou verstek-SMS-program?"</string> - <string name="role_sms_request_description" msgid="2691004766132144886">"Hierdie program sal toegang tot jou kamera, kontakte, lêers en media, mikrofoon, foon en SMS\'e kry"</string> + <string name="role_sms_request_title" msgid="7953552109601185602">"Stel <xliff:g id="APP_NAME">%1$s</xliff:g> as jou verstek-SMS-app?"</string> + <string name="role_sms_request_description" msgid="2691004766132144886">"Hierdie app sal toegang tot jou kamera, kontakte, lêers en media, mikrofoon, foon en SMS\'e kry"</string> <string name="role_sms_search_keywords" msgid="8022048144395047352">"sms, teksboodskappe, boodskappe, boodskappe"</string> <string name="role_emergency_label" msgid="7028825857206842366">"Versteknoodprogram"</string> <string name="role_emergency_short_label" msgid="2388431453335350348">"Noodprogram"</string> @@ -449,7 +449,7 @@ <string name="no_special_app_access" msgid="6950277571805106247">"Geen spesiale apptoegang nie"</string> <string name="special_app_access_no_apps" msgid="4102911722787886970">"Geen apps nie"</string> <string name="home_missing_work_profile_support" msgid="1756855847669387977">"Steun nie werkprofiel nie"</string> - <string name="encryption_unaware_confirmation_message" msgid="8274491794636402484">"Let wel: As jy jou toestel herbegin en \'n skermslot is gestel, kan hierdie program nie begin totdat jy jou toestel ontsluit nie."</string> + <string name="encryption_unaware_confirmation_message" msgid="8274491794636402484">"Let wel: As jy jou toestel herbegin en \'n skermslot is gestel, kan hierdie app nie begin totdat jy jou toestel ontsluit nie."</string> <string name="assistant_confirmation_message" msgid="7476540402884416212">"Die assistent sal inligting oor programme wat tans op jou stelsel gebruik word, kan lees, insluitend inligting wat op jou skerm sigbaar is of toeganklik is binne die programme."</string> <string name="incident_report_channel_name" msgid="3144954065936288440">"Deel ontfoutingsdata"</string> <string name="incident_report_notification_title" msgid="4635984625656519773">"Deel gedetailleerde ontfoutingsdata?"</string> @@ -473,13 +473,13 @@ <string name="permgrouprequest_device_aware_contacts" msgid="731025863972535928">"Gee <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang tot jou kontakte op <b><xliff:g id="DEVICE_NAME">%2$s</xliff:g></b>?"</string> <string name="permgrouprequest_location" msgid="6990232580121067883">"Gee <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang tot hierdie toestel se ligging?"</string> <string name="permgrouprequest_device_aware_location" msgid="6075412127429878638">"Gee <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang tot <b><xliff:g id="DEVICE_NAME">%2$s</xliff:g></b> se ligging?"</string> - <string name="permgrouprequestdetail_location" msgid="2635935335778429894">"Die program sal net toegang tot die ligging hê terwyl jy die program gebruik"</string> + <string name="permgrouprequestdetail_location" msgid="2635935335778429894">"Die app sal net toegang tot die ligging hê terwyl jy die app gebruik"</string> <string name="permgroupbackgroundrequest_location" msgid="1085680897265734809">"Gee <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang tot hierdie toestel se ligging?"</string> <string name="permgroupbackgroundrequest_device_aware_location" msgid="1264484517831380016">"Gee <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang tot <b><xliff:g id="DEVICE_NAME">%2$s</xliff:g></b> se ligging?"</string> - <string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Hierdie program wil dalk die hele tyd toegang tot jou ligging hê, selfs wanneer jy nie die program gebruik nie. "<annotation id="link">"Laat toe in instellings."</annotation></string> + <string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Hierdie app wil dalk die hele tyd toegang tot jou ligging hê, selfs wanneer jy nie die app gebruik nie. "<annotation id="link">"Laat toe in instellings."</annotation></string> <string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Verander liggingtoegang vir <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>?"</string> <string name="permgroupupgraderequest_device_aware_location" msgid="1812338666887726191">"Verander liggingtoegang vir <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> op <b><xliff:g id="DEVICE_NAME">%2$s</xliff:g></b>?"</string> - <string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Hierdie program wil die hele tyd toegang tot jou ligging hê, selfs wanneer jy nie die program gebruik nie. "<annotation id="link">"Laat toe in instellings."</annotation></string> + <string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Hierdie app wil die hele tyd toegang tot jou ligging hê, selfs wanneer jy nie die app gebruik nie. "<annotation id="link">"Laat toe in instellings."</annotation></string> <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Laat <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toe om toestelle in die omtrek te soek, aan hulle te koppel en hul relatiewe posisie te bepaal?"</string> <string name="permgrouprequest_device_aware_nearby_devices" msgid="5293478278408567442">"Laat <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toestelle in die omtrek op <b><xliff:g id="DEVICE_NAME">%2$s</xliff:g></b> soek, aan hulle koppel, en hul relatiewe posisie bepaal?"</string> <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Laat <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toe om toestelle in die omtrek te soek, aan hulle te koppel en hul relatiewe posisie te bepaal? "<annotation id="link">"Laat toe in Instellings."</annotation></string> @@ -505,24 +505,24 @@ <string name="permgrouprequest_device_aware_more_photos" msgid="1703469013613723053">"Gee <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang tot meer foto’s en video’s op <b><xliff:g id="DEVICE_NAME">%2$s</xliff:g></b>?"</string> <string name="permgrouprequest_microphone" msgid="2825208549114811299">"Laat <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toe om oudio op te neem?"</string> <string name="permgrouprequest_device_aware_microphone" msgid="8821701550505437951">"Gee <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang om oudio op te neem op <b><xliff:g id="DEVICE_NAME">%2$s</xliff:g></b>?"</string> - <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Die program sal net kan oudio opneem terwyl jy die program gebruik"</string> + <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Die app sal net kan oudio opneem terwyl jy die app gebruik"</string> <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Laat <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toe om oudio op te neem?"</string> <string name="permgroupbackgroundrequest_device_aware_microphone" msgid="3321823187623762958">"Gee <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang om oudio op te neem op <b><xliff:g id="DEVICE_NAME">%2$s</xliff:g></b>?"</string> - <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Hierdie program wil dalk die hele tyd oudio opneem, selfs wanneer jy nie die program gebruik nie. "<annotation id="link">"Laat toe in instellings."</annotation></string> + <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Hierdie app wil dalk die hele tyd oudio opneem, selfs wanneer jy nie die app gebruik nie. "<annotation id="link">"Laat toe in instellings."</annotation></string> <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Verander mikrofoontoegang vir <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>?"</string> <string name="permgroupupgraderequest_device_aware_microphone" msgid="8722411173971679806">"Verander mikrofoontoegang vir <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> op <b><xliff:g id="DEVICE_NAME">%2$s</xliff:g></b>?"</string> - <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Hierdie program wil die hele tyd oudio opneem, selfs wanneer jy nie die program gebruik nie. "<annotation id="link">"Laat toe in instellings."</annotation></string> + <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Hierdie app wil die hele tyd oudio opneem, selfs wanneer jy nie die app gebruik nie. "<annotation id="link">"Laat toe in instellings."</annotation></string> <string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Gee <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang tot jou fisieke aktiwiteit?"</string> <string name="permgrouprequest_device_aware_activityRecognition" msgid="1243869530588745374">"Gee <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang tot jou fisieke aktiwiteit op <b><xliff:g id="DEVICE_NAME">%2$s</xliff:g></b>?"</string> <string name="permgrouprequest_camera" msgid="5123097035410002594">"Laat <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toe om foto\'s te neem en video\'s op te neem?"</string> <string name="permgrouprequest_device_aware_camera" msgid="5340173564041615494">"Gee <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang om foto’s te neem en video’s op te neem op <b><xliff:g id="DEVICE_NAME">%2$s</xliff:g></b>?"</string> - <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Die program sal net kan foto\'s neem en video\'s opneem terwyl jy die program gebruik"</string> + <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Die app sal net kan foto\'s neem en video\'s opneem terwyl jy die app gebruik"</string> <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Laat <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toe om foto\'s te neem en video\'s op te neem?"</string> <string name="permgroupbackgroundrequest_device_aware_camera" msgid="8533353179594971475">"Gee <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang om foto’s te neem en video’s op te neem op <b><xliff:g id="DEVICE_NAME">%2$s</xliff:g></b>?"</string> - <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Hierdie program wil dalk die hele tyd foto\'s neem en video\'s opneem, selfs wanneer jy nie die program gebruik nie. "<annotation id="link">"Laat toe in instellings."</annotation></string> + <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Hierdie app wil dalk die hele tyd foto\'s neem en video\'s opneem, selfs wanneer jy nie die app gebruik nie. "<annotation id="link">"Laat toe in instellings."</annotation></string> <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Verander kameratoegang vir <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>?"</string> <string name="permgroupupgraderequest_device_aware_camera" msgid="3290160912843715236">"Verander kameratoegang vir <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> op <b><xliff:g id="DEVICE_NAME">%2$s</xliff:g></b>?"</string> - <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Hierdie program wil die hele tyd foto\'s neem en video\'s opneem, selfs wanneer jy nie die program gebruik nie. "<annotation id="link">"Laat toe in instellings."</annotation></string> + <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Hierdie app wil die hele tyd foto\'s neem en video\'s opneem, selfs wanneer jy nie die app gebruik nie. "<annotation id="link">"Laat toe in instellings."</annotation></string> <string name="permgrouprequest_calllog" msgid="2065327180175371397">"Gee <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang tot jou foonoproeprekords?"</string> <string name="permgrouprequest_device_aware_calllog" msgid="8220927190376843309">"Gee <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang tot jou foon se oproeprekords op <b><xliff:g id="DEVICE_NAME">%2$s</xliff:g></b>?"</string> <string name="permgrouprequest_phone" msgid="1829234136997316752">"Laat <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toe om foonoproepe te maak en te bestuur?"</string> @@ -553,8 +553,8 @@ <string name="privdash_label_24h" msgid="1512532123865375319">"Afgelope\n24 uur"</string> <string name="privdash_label_7d" msgid="5645301995348656931">"Afgelope\n7 dae"</string> <string name="privdash_usage_percent" msgid="6893824766124414127">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> <xliff:g id="PERCENT">%2$d</xliff:g> persent"</string> - <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> word deur Android beskerm. Hierdie program se toestemminggebruik word nie op die statusbalk of jou privaatheidkontroleskerm gewys nie omdat jou data op hierdie toestel verwerk word."</string> - <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> word deur Android beskerm. Hierdie program se toestemminggebruik word nie op jou privaatheidkontroleskerm gewys nie omdat jou data op hierdie toestel verwerk word."</string> + <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> word deur Android beskerm. Hierdie app se toestemminggebruik word nie op die statusbalk of jou privaatheidkontroleskerm gewys nie omdat jou data op hierdie toestel verwerk word."</string> + <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> word deur Android beskerm. Hierdie app se toestemminggebruik word nie op jou privaatheidkontroleskerm gewys nie omdat jou data op hierdie toestel verwerk word."</string> <string name="blocked_camera_title" msgid="1128510551791284384">"Toestelkamera is geblokkeer"</string> <string name="blocked_microphone_title" msgid="1631517143648232585">"Toestelmikrofoon is geblokkeer"</string> <string name="blocked_location_title" msgid="2005608279812892383">"Toestelligging is af"</string> @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Laat beperkte instellings toe"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Beperkte instelling"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Hierdie instelling is vir jou veiligheid tans onbeskikbaar."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Toegang tot <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> is geweier vir die app"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Die app het toegang tot toestemming vir sensitiewe inligting versoek wat jou persoonlike en finansiële inligting in gevaar kan stel.<xliff:g id="ID_1"><br><br></xliff:g>Dit is moontlik dat die app nie reg sal werk sonder hierdie beperkte toestemming nie. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Kry meer inligting oor hoe om toegang toe te laat</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Toegang is geweier vir app om die verstek <xliff:g id="ROLE_NAME">%1$s</xliff:g> te wees"</string> diff --git a/PermissionController/res/values-am/strings.xml b/PermissionController/res/values-am/strings.xml index f49db7957..bdd2fa1fb 100644 --- a/PermissionController/res/values-am/strings.xml +++ b/PermissionController/res/values-am/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"የተገደቡ ቅንብሮችን ፍቀድ"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"የተገደበ ቅንብር"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"ለእርስዎ ደህንነት ሲባል ይህ ቅንብር በአሁኑ ጊዜ አይገኝም።"</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"መተግበሪያ የ<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> መዳረሻ ተከልክሏል"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"መተግበሪያው የእርስዎን የግል እና የፋይናንስ መረጃ አደጋ ላይ የሚጥል አደገኛ ፈቃድ እንዲደርስ ጠይቋል።<xliff:g id="ID_1"><br><br></xliff:g>ያለዚህ የተገደበ ፈቃድ መተግበሪያው በትክክል ላይሰራ ይችላል። <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>እንዴት መዳረሻን እንደሚፈቅዱ ይረዱ</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"መተግበሪያ ነባሪ <xliff:g id="ROLE_NAME">%1$s</xliff:g> የመሆን መዳረሻ ተከልክሏል"</string> diff --git a/PermissionController/res/values-ar/strings.xml b/PermissionController/res/values-ar/strings.xml index 90fce2d06..2d1d39868 100644 --- a/PermissionController/res/values-ar/strings.xml +++ b/PermissionController/res/values-ar/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"السماح بالإعدادات المحظورة"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"الإعداد محظور"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"للحفاظ على أمانك، هذا الإعداد غير متوفِّر حاليًا."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"تم منع التطبيق من الوصول إلى <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"طلب التطبيق أحد أذونات الوصول إلى المعلومات الحساسة، ما قد يعرّض معلوماتك الشخصية والمالية للخطر.<xliff:g id="ID_1"><br><br></xliff:g>من المحتمل ألا يعمل التطبيق بشكل صحيح إذا لم يحصل على هذا الإذن المقيَّد. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>مزيد من المعلومات حول كيفية منح الأذونات</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"لم يُسمَح للتطبيق بأن يكون <xliff:g id="ROLE_NAME">%1$s</xliff:g> التلقائي"</string> diff --git a/PermissionController/res/values-as/strings.xml b/PermissionController/res/values-as/strings.xml index ef3d28e5a..9cfbeb1b8 100644 --- a/PermissionController/res/values-as/strings.xml +++ b/PermissionController/res/values-as/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"প্ৰতিবন্ধিত ছেটিঙৰ অনুমতি দিয়ক"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"প্ৰতিবন্ধিত ছেটিং"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"আপোনাৰ সুৰক্ষাৰ বাবে, এই ছেটিংটো বৰ্তমান উপলব্ধ নহয়।"</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"এপ্টোক <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>ৰ এক্সেছ প্ৰত্যাখ্যান কৰা হৈছে"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"এপ্টোৱে সংবেদনশীল অনুমতি এক্সেছ কৰিবলৈ অনুৰোধ কৰিছে, যিটোৱে আপোনাৰ ব্যক্তিগত আৰু বিত্তীয় তথ্য বিপদাপন্ন কৰিব পাৰে।<xliff:g id="ID_1"><br><br></xliff:g>এপ্টোৱে এই প্ৰতিবন্ধিত অনুমতিটোৰ অবিহনে সঠিককৈ কাম নকৰাটো সম্ভৱ হ’ব পাৰে। <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>কেনেকৈ এক্সেছৰ অনুমতি দিব লাগে জানক</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"এপ্টোক ডিফ’ল্ট <xliff:g id="ROLE_NAME">%1$s</xliff:g>ৰ এক্সেছ প্ৰত্যাখ্যান কৰা হৈছে"</string> diff --git a/PermissionController/res/values-az/strings.xml b/PermissionController/res/values-az/strings.xml index a33e4c27e..8fe6c482f 100644 --- a/PermissionController/res/values-az/strings.xml +++ b/PermissionController/res/values-az/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Məhdudlaşdırılmış ayarlara icazə verin"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Məhdudlaşdırılmış ayar"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Güvənlik üçün bu ayar əlçatan deyil."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Tətbiqə <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> icazəsinə giriş verilmədi"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Tətbiq şəxsi və maliyyə məlumatlarınızı riskə ata biləcək həssas məlumat icazəsinə giriş istədi.<xliff:g id="ID_1"><br><br></xliff:g>Bu məhdud icazə olmadan tətbiq düzgün işləməyə bilər. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Girişə icazə vermək haqqında ətraflı</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Tətbiqə defolt <xliff:g id="ROLE_NAME">%1$s</xliff:g> roluna giriş verilmədi"</string> diff --git a/PermissionController/res/values-b+sr+Latn/strings.xml b/PermissionController/res/values-b+sr+Latn/strings.xml index 75e5a94d3..441952277 100644 --- a/PermissionController/res/values-b+sr+Latn/strings.xml +++ b/PermissionController/res/values-b+sr+Latn/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Dozvoli ograničena podešavanja"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Ograničeno podešavanje"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Ovo podešavanje je trenutno nedostupno radi vaše bezbednosti."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Aplikaciji nije dozvoljen pristup dozvoli: <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Aplikacija je zatražila pristup osetljivoj dozvoli, što može da ugrozi bezbednost ličnih i finansijskih podataka.<xliff:g id="ID_1"><br><br></xliff:g>Aplikacija možda neće raditi ispravno bez ove ograničene dozvole. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Saznajte kako da dozvolite pristup</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Aplikaciji nije dozvoljen pristup da postane podrazumevana: <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-be/strings.xml b/PermissionController/res/values-be/strings.xml index b009b68d3..aa8c6a5b6 100644 --- a/PermissionController/res/values-be/strings.xml +++ b/PermissionController/res/values-be/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Дазволіць абмежаваныя налады"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Налада з абмежаваным доступам"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"У мэтах бяспекі гэта налада цяпер недаступная."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Праграме адмоўлена ў дазволе \"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>\""</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Праграма запытала дазвол на доступ да канфідэнцыяльнай інфармацыі. Калі вы яго дасце, ваша асабістая і фінансавая інфармацыя можа аказацца ў небяспецы.<xliff:g id="ID_1"><br><br></xliff:g>Магчыма, без гэтага абмежаванага дазволу праграма не будзе працаваць належным чынам. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Даведацца, як дазволіць доступ</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Праграме адмоўлена ў дазволе стандартна выконваць наступную ролю: <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-bg/strings.xml b/PermissionController/res/values-bg/strings.xml index aad55e46f..5d7b5b782 100644 --- a/PermissionController/res/values-bg/strings.xml +++ b/PermissionController/res/values-bg/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Разрешаване на ограничените настройки"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Ограничена настройка"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"От съображения за сигурност понастоящем тази настройка не е налице."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"На приложението бе отказан достъп до <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Приложението поиска разрешение за достъп до поверителни данни, което може да изложи на риск личната или финансовата ви информация.<xliff:g id="ID_1"><br><br></xliff:g>Възможно е приложението да не работи правилно без това ограничено разрешение. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Научете как да разрешите достъпа</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Приложението не получи разрешение да бъде по подразбиране: <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-bn/strings.xml b/PermissionController/res/values-bn/strings.xml index 4d7e6a55e..f848ea4bc 100644 --- a/PermissionController/res/values-bn/strings.xml +++ b/PermissionController/res/values-bn/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"বিধিনিষেধযুক্ত সেটিংসের অনুমতি দিন"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"বিধিনিষেধযুক্ত সেটিংস"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"আপনার নিরাপত্তার জন্য, এই সেটিং বর্তমানে উপলভ্য নেই।"</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"অ্যাপকে <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> অ্যাক্সেস করতে দেওয়া হয়নি"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"অ্যাপটি সংবেদনশীল অনুমতি অ্যাক্সেস করার অনুরোধ জানিয়েছে, যার জন্য আপনার ব্যক্তিগত ও আর্থিক অবস্থা সম্পর্কিত তথ্যের ক্ষেত্রে ঝুঁকির সম্ভাবনা থাকতে পারে।<xliff:g id="ID_1"><br><br></xliff:g>এই সীমাবদ্ধ অনুমতি ছাড়া অ্যাপটি সঠিকভাবে কাজ না করার সম্ভাবনাও আছে। <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>কীভাবে অ্যাক্সেস করার অনুমতি দেবেন সেই সম্পর্কে জানুন</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"অ্যাপকে ডিফল্ট <xliff:g id="ROLE_NAME">%1$s</xliff:g> হিসেবে কাজ করার অ্যাক্সেস দেওয়া হয়নি"</string> diff --git a/PermissionController/res/values-bs/strings.xml b/PermissionController/res/values-bs/strings.xml index fe036961d..b44611ce4 100644 --- a/PermissionController/res/values-bs/strings.xml +++ b/PermissionController/res/values-bs/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Dozvoli ograničene postavke"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Ograničena postavka"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Radi vaše sigurnosti postavka trenutno nije dostupna."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Aplikaciji je odbijen pristup odobrenju <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Aplikacija je zatražila pristup osjetljivom odobrenju, što može ugroziti vaše lične i finansijske informacije.<xliff:g id="ID_1"><br><br></xliff:g>Moguće je da aplikacija neće ispravno raditi bez ovog ograničenog odobrenja. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Saznajte kako dozvoliti pristup</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Aplikaciji je odbijen pristup da bude zadana <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-ca/strings.xml b/PermissionController/res/values-ca/strings.xml index c0bd6cb8a..f3cbcb154 100644 --- a/PermissionController/res/values-ca/strings.xml +++ b/PermissionController/res/values-ca/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Permet la configuració restringida"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Opció de configuració restringida"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Per a la teva seguretat, aquesta opció de configuració no està disponible en aquests moments."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"A l\'aplicació se li ha denegat l\'accés a <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"L\'aplicació ha demanat accés a un permís sensible, el qual pot posar en risc la teva informació personal o financera.<xliff:g id="ID_1"><br><br></xliff:g>És possible que l\'aplicació no funcioni correctament sense aquest permís restringit. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Més informació sobre com pots permetre l\'accés</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"A l\'aplicació se li ha denegat l\'accés per ser <xliff:g id="ROLE_NAME">%1$s</xliff:g> de manera predeterminada"</string> diff --git a/PermissionController/res/values-cs/strings.xml b/PermissionController/res/values-cs/strings.xml index 48996724a..40c995c26 100644 --- a/PermissionController/res/values-cs/strings.xml +++ b/PermissionController/res/values-cs/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Povolit omezená nastavení"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Blokované nastavení"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Z důvodu vaší bezpečnosti toto nastavení momentálně není dostupné."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Aplikaci byl odepřen přístup k oprávnění <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Aplikace požádala o přístup k citlivému oprávnění, které může ohrozit vaše osobní a finanční údaje.<xliff:g id="ID_1"><br><br></xliff:g>Je možné, že aplikace bez tohoto oprávnění nebude fungovat správně. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Jak povolit přístup</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Aplikaci byla odepřena role výchozí <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-da/strings.xml b/PermissionController/res/values-da/strings.xml index 6a2456bd6..7f32ec706 100644 --- a/PermissionController/res/values-da/strings.xml +++ b/PermissionController/res/values-da/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Tillad begrænsede indstillinger"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Begrænset indstilling"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Af hensyn til din sikkerhed er denne indstilling i øjeblikket ikke tilgængelig."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Appen blev nægtet adgang til <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Appen anmodede om adgang til en følsom tilladelse, der kan kompromittere dine personlige eller økonomiske oplysninger.<xliff:g id="ID_1"><br><br></xliff:g>Appen fungerer muligvis ikke korrekt uden denne begrænsede tilladelse. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Se, hvordan du giver tilladelse</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Appen blev nægtet adgang til at være <xliff:g id="ROLE_NAME">%1$s</xliff:g> som standard"</string> diff --git a/PermissionController/res/values-de/strings.xml b/PermissionController/res/values-de/strings.xml index efb3062d6..75c7c5a95 100644 --- a/PermissionController/res/values-de/strings.xml +++ b/PermissionController/res/values-de/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Eingeschränkte Einstellungen zulassen"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Eingeschränkte Einstellung"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Aus Sicherheitsgründen ist diese Einstellung derzeit nicht verfügbar."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"App wurde Zugriff auf „<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>“ verweigert"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Die App hat Zugriff auf eine vertrauliche Berechtigung angefordert. Wenn du diesen zulässt, sind deine privaten Daten und Finanzdaten eventuell gefährdet.<xliff:g id="ID_1"><br><br></xliff:g>Die App funktioniert ohne diese eingeschränkte Berechtigung aber möglicherweise nicht richtig. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Informationen dazu, wie du den Zugriff erlaubst</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"App wurde der Zugriff verweigert, die standardmäßige <xliff:g id="ROLE_NAME">%1$s</xliff:g> zu sein"</string> diff --git a/PermissionController/res/values-el/strings.xml b/PermissionController/res/values-el/strings.xml index e000a2ac2..ec75dbfcb 100644 --- a/PermissionController/res/values-el/strings.xml +++ b/PermissionController/res/values-el/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Επιτρέπονται περιορισμένες ρυθμίσεις"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Περιορισμένη ρύθμιση"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Για την ασφάλειά σας, αυτή η ρύθμιση δεν είναι διαθέσιμη αυτή τη στιγμή."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Απορρίφθηκε η πρόσβαση της εφαρμογής στην άδεια <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Η εφαρμογή ζήτησε πρόσβαση σε μια άδεια πρόσβασης σε ευαίσθητες πληροφορίες, γεγονός που μπορεί να θέσει σε κίνδυνο τα προσωπικά και οικονομικά στοιχεία σας.<xliff:g id="ID_1"><br><br></xliff:g>Είναι πιθανό η εφαρμογή να μην λειτουργεί σωστά χωρίς αυτή την περιορισμένη άδεια. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Μάθετε πώς μπορείτε να επιτρέψετε την πρόσβαση</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Δεν επιτράπηκε στην εφαρμογή να οριστεί ως η προεπιλεγμένη <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-en-rAU/strings.xml b/PermissionController/res/values-en-rAU/strings.xml index d15cb526b..c9ebf5e8e 100644 --- a/PermissionController/res/values-en-rAU/strings.xml +++ b/PermissionController/res/values-en-rAU/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Allow restricted settings"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Restricted setting"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"For your security, this setting is currently unavailable."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"App was denied access to <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"The app requested access to a sensitive permission which can put your personal and financial info at risk.<xliff:g id="ID_1"><br><br></xliff:g>It\'s possible that the app won\'t work properly without this restricted permission. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Learn how to allow access</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"App was denied access to be default <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-en-rCA/strings.xml b/PermissionController/res/values-en-rCA/strings.xml index bf9058a8c..d39bcf96a 100644 --- a/PermissionController/res/values-en-rCA/strings.xml +++ b/PermissionController/res/values-en-rCA/strings.xml @@ -674,6 +674,8 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Allow restricted settings"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Restricted setting"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"For your security, this setting is currently unavailable."</string> + <string name="enhanced_confirmation_phone_state_dialog_title" msgid="5230100829862738467">"Action not available while on a phone call"</string> + <string name="enhanced_confirmation_phone_state_dialog_desc" msgid="8782160971908273849">"Allowing apps to install other apps is not allowed during a phone call.\n\n Scammers often request this type of action during phone call conversations, so it’s blocked to protect you. If you are being guided to take this action by someone you don’t know, it might be a scam."</string> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"App was denied access to <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"The app requested access to a sensitive permission which can put your personal and financial info at risk.<xliff:g id="ID_1"><br><br></xliff:g>It\'s possible the app won\'t work properly without this restricted permission. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Learn how to allow access</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"App was denied access to be default <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-en-rGB/strings.xml b/PermissionController/res/values-en-rGB/strings.xml index 93508b04a..3b1a91c7f 100644 --- a/PermissionController/res/values-en-rGB/strings.xml +++ b/PermissionController/res/values-en-rGB/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Allow restricted settings"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Restricted setting"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"For your security, this setting is currently unavailable."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"App was denied access to <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"The app requested access to a sensitive permission which can put your personal and financial info at risk.<xliff:g id="ID_1"><br><br></xliff:g>It\'s possible that the app won\'t work properly without this restricted permission. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Learn how to allow access</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"App was denied access to be default <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-en-rIN/strings.xml b/PermissionController/res/values-en-rIN/strings.xml index 93508b04a..3b1a91c7f 100644 --- a/PermissionController/res/values-en-rIN/strings.xml +++ b/PermissionController/res/values-en-rIN/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Allow restricted settings"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Restricted setting"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"For your security, this setting is currently unavailable."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"App was denied access to <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"The app requested access to a sensitive permission which can put your personal and financial info at risk.<xliff:g id="ID_1"><br><br></xliff:g>It\'s possible that the app won\'t work properly without this restricted permission. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Learn how to allow access</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"App was denied access to be default <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-es-rUS/strings.xml b/PermissionController/res/values-es-rUS/strings.xml index 1247b2d3e..bc3561735 100644 --- a/PermissionController/res/values-es-rUS/strings.xml +++ b/PermissionController/res/values-es-rUS/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Permitir configuración restringida"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Parámetro restringido"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Por seguridad, este parámetro de configuración no está disponible actualmente."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"A la app se le negó el acceso a <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"La app solicitó acceso a un permiso sensible, lo que puede poner en riesgo tu información financiera y personal.<xliff:g id="ID_1"><br><br></xliff:g>Es posible que la app no funcione como corresponde sin este permiso restringido. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Descubre cómo permitir el acceso</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"A la app se le negó el acceso para usarse como <xliff:g id="ROLE_NAME">%1$s</xliff:g> de forma predeterminada"</string> diff --git a/PermissionController/res/values-es/strings.xml b/PermissionController/res/values-es/strings.xml index 402bd5214..d8ddd73e1 100644 --- a/PermissionController/res/values-es/strings.xml +++ b/PermissionController/res/values-es/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Permitir ajustes restringidos"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Ajuste restringido"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Por seguridad, este ajuste no está disponible actualmente."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Se ha denegado el acceso a <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> a la aplicación"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"La aplicación ha solicitado acceso a un permiso sensible que puede poner en riesgo tu información personal y financiera.<xliff:g id="ID_1"><br><br></xliff:g>Es posible que la aplicación no funcione correctamente sin este permiso restringido. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Consulta cómo permitir el acceso</a>."</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Se ha denegado el acceso para que la aplicación sea <xliff:g id="ROLE_NAME">%1$s</xliff:g> predeterminada"</string> diff --git a/PermissionController/res/values-et/strings.xml b/PermissionController/res/values-et/strings.xml index 4d93ac4c0..cd8b34d8a 100644 --- a/PermissionController/res/values-et/strings.xml +++ b/PermissionController/res/values-et/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Piiratud seadete lubamine"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Piiratud seade"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Teie turvalisuse huvides pole see seade praegu saadaval."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Rakendusele ei antud luba <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Rakendus taotles tundlikku luba, mis võib teie isikuandmed ja finantsteabe ohtu seada.<xliff:g id="ID_1"><br><br></xliff:g>Võimalik, et rakendus ei tööta ilma selle piiratud loata korralikult. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>> Teave juurdepääsu andmise kohta</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Rakendusele ei antud luba olla vaikimisi <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-eu/strings.xml b/PermissionController/res/values-eu/strings.xml index 6e9242d35..87eabfd5b 100644 --- a/PermissionController/res/values-eu/strings.xml +++ b/PermissionController/res/values-eu/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Eman ezarpen mugatuak erabiltzeko baimena"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Murriztapenak ditu ezarpenak"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Zure segurtasuna bermatzeko, ezarpena ez dago erabilgarri une honetan."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Aplikazioari <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> erabiltzeko baimena ukatu zaio"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Kontuzko informazioa erabiltzeko baimen bat eskatu du aplikazioak, eta agian horrek arriskuan jarriko ditu zure informazio pertsonala eta finantzei buruzko informazioa.<xliff:g id="ID_1"><br><br></xliff:g>Baliteke aplikazioak behar bezala ez funtzionatzea baimen murriztu hori gabe. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Lortu baimena emateko argibideak</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Aplikazioari <xliff:g id="ROLE_NAME">%1$s</xliff:g> lehenetsia izateko baimena ukatu zaio"</string> diff --git a/PermissionController/res/values-fa/strings.xml b/PermissionController/res/values-fa/strings.xml index ae6063dcc..44d6609b6 100644 --- a/PermissionController/res/values-fa/strings.xml +++ b/PermissionController/res/values-fa/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"مجاز کردن تنظیمات محدودشده"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"تنظیم محدودشده"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"برای حفظ امنیت شما، درحالحاضر این تنظیم دردسترس نیست."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"درخواست برنامه برای دسترسی به <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> رد شد"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"این برنامه درخواست دسترسی به اجازهای حساس را داشته است که میتواند اطلاعات شخصی و مالیتان را درمعرض خطر قرار دهد.<xliff:g id="ID_1"><br><br></xliff:g>ممکن است برنامه بدون این اجازه محدودشده بهدرستی کار نکند. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>با نحوه اعطای دسترسی آشنا شوید</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"درخواست دسترسی برنامه برای تبدیل شدن به <xliff:g id="ROLE_NAME">%1$s</xliff:g> پیشفرض رد شد"</string> diff --git a/PermissionController/res/values-fi/strings.xml b/PermissionController/res/values-fi/strings.xml index e47b603d3..3222ccf46 100644 --- a/PermissionController/res/values-fi/strings.xml +++ b/PermissionController/res/values-fi/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Salli rajoitetut asetukset"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Rajoitettu asetus"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Asetus ei ole tällä hetkellä käytettävissä turvallisuussyistä."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Sovellukselta on evätty pääsy: <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Sovellus on pyytänyt pääsyä arkaluontoiseen lupaan, joka voi vaarantaa henkilökohtaisia tietojasi ja taloustietojasi.<xliff:g id="ID_1"><br><br></xliff:g>Sovellus ei välttämättä toimi oikein ilman tätä rajoitettua lupaa. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Lue, miten voit sallia pääsyn</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Sovellus ei saa olla oletuksena <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-fr-rCA/strings.xml b/PermissionController/res/values-fr-rCA/strings.xml index 31b6bdbec..93cd155ac 100644 --- a/PermissionController/res/values-fr-rCA/strings.xml +++ b/PermissionController/res/values-fr-rCA/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Autoriser les paramètres restreints"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Paramètre restreint"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Pour protéger votre sécurité, ce paramètre n\'est pas accessible actuellement."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"L\'appli n\'a pas obtenu l\'accès à <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"L\'appli a demandé l\'accès à une autorisation sensible qui pose un risque pour vos renseignements personnels et financiers.<xliff:g id="ID_1"><br><br></xliff:g>Il est possible que l\'appli ne fonctionne pas correctement sans cette autorisation limitée. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Découvrir comment autoriser l\'accès</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"L\'appli n\'a pas obtenu l\'accès pour avoir le rôle<xliff:g id="ROLE_NAME">%1$s</xliff:g> par défaut"</string> diff --git a/PermissionController/res/values-fr/strings.xml b/PermissionController/res/values-fr/strings.xml index 14c29125e..d84cae1e8 100644 --- a/PermissionController/res/values-fr/strings.xml +++ b/PermissionController/res/values-fr/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Autoriser les paramètres restreints"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Paramètre restreint"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Pour votre sécurité, ce paramètre est actuellement indisponible."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"L\'appli s\'est vu refuser l\'accès à <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Cette appli a demandé l\'accès à une autorisation sensible susceptible d\'exposer vos informations financières et personnelles à un risque.<xliff:g id="ID_1"><br><br></xliff:g>Si elle ne dispose pas d\'un accès à cette autorisation restreinte, l\'appli peut ne pas fonctionner correctement. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Découvrez comment autoriser l\'accès</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"L\'appli s\'est vu refuser l\'accès au statut de <xliff:g id="ROLE_NAME">%1$s</xliff:g> par défaut"</string> diff --git a/PermissionController/res/values-gl/strings.xml b/PermissionController/res/values-gl/strings.xml index 8ceeab1a6..0b35078d9 100644 --- a/PermissionController/res/values-gl/strings.xml +++ b/PermissionController/res/values-gl/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Permitir opcións restrinxidas"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Opción de configuración restrinxida"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Pola túa seguranza, esta opción de configuración non está dispoñible nestes momentos."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Denegóuselle á aplicación o acceso ao permiso: <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"A aplicación solicitou acceso a un permiso confidencial que pode poñer en perigo a túa información persoal e financeira.<xliff:g id="ID_1"><br><br></xliff:g>É posible que a aplicación non funcione correctamente sen este permiso restrinxido. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Máis información sobre como permitir o acceso</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Denegóuselle á aplicación o acceso para actuar como <xliff:g id="ROLE_NAME">%1$s</xliff:g> de forma predeterminada"</string> diff --git a/PermissionController/res/values-gu/strings.xml b/PermissionController/res/values-gu/strings.xml index b65a5c582..2764e1f19 100644 --- a/PermissionController/res/values-gu/strings.xml +++ b/PermissionController/res/values-gu/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"પ્રતિબંધિત સેટિંગને મંજૂરી આપો"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"પ્રતિબંધિત સેટિંગ"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"તમારી સુરક્ષા માટે, આ સેટિંગ હાલમાં ઉપલબ્ધ નથી."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"ઍપને <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>નો ઍક્સેસ નકારવામાં આવ્યો"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"આ ઍપ દ્વારા કોઈ સંવેદનશીલ માહિતીની પરવાનગીના ઍક્સેસની વિનંતી કરવામાં આવી છે, જેને કારણે તમારી વ્યક્તિગત અને નાણાકીય માહિતી જોખમમાં આવી શકે છે.<xliff:g id="ID_1"><br><br></xliff:g>એ પણ શક્ય છે કે આ પ્રતિબંધિત પરવાનગી વિના ઍપ કદાચ યોગ્ય રીતે કામ ન પણ કરી શકે. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>ઍક્સેસ મંજૂર કરવાની રીત જાણો</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"ઍપને ડિફૉલ્ટ <xliff:g id="ROLE_NAME">%1$s</xliff:g> બનવાનો ઍક્સેસ નકારવામાં આવ્યો"</string> diff --git a/PermissionController/res/values-hi/strings.xml b/PermissionController/res/values-hi/strings.xml index 2557708bc..58fbfca64 100644 --- a/PermissionController/res/values-hi/strings.xml +++ b/PermissionController/res/values-hi/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"पाबंदी वाली सेटिंग को अनुमति दें"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"इस सेटिंग पर पाबंदी लगाई गई है"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"आपकी सुरक्षा के लिए, यह सेटिंग फ़िलहाल उपलब्ध नहीं है."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"ऐप्लिकेशन को, <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> को ऐक्सेस करने की अनुमति नहीं मिली"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"इस ऐप्लिकेशन ने संवेदनशील जानकारी ऐक्सेस करने का अनुरोध किया है. इसे अनुमति देने पर, आपकी निजी और वित्तीय जानकारी की सुरक्षा को खतरा हो सकता है.<xliff:g id="ID_1"><br><br></xliff:g>हालांकि, हो सकता है कि पाबंदी वाली अनुमति न मिलने पर, ऐप्लिकेशन सही तरह से काम न करें. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>ऐक्सेस देने का तरीका जानें</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"ऐप्लिकेशन को डिफ़ॉल्ट <xliff:g id="ROLE_NAME">%1$s</xliff:g> के तौर पर सेट करने की अनुमति नहीं दी गई"</string> diff --git a/PermissionController/res/values-hr/strings.xml b/PermissionController/res/values-hr/strings.xml index c0b9d935e..c17081b3a 100644 --- a/PermissionController/res/values-hr/strings.xml +++ b/PermissionController/res/values-hr/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Dopusti ograničene postavke"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Ograničena postavka"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Radi vaše sigurnosti ova postavka trenutačno nije dostupna."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Aplikaciji je odbijen pristup dopuštenju <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Aplikacija je zatražila pristup dopuštenju za osjetljive podatke koje može ugroziti vaše osobne i financijske podatke.<xliff:g id="ID_1"><br><br></xliff:g>Moguće je da aplikacija neće pravilno funkcionirati bez tog uskraćenog dopuštenja. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Saznajte kako omogućiti pristup</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Aplikaciji je uskraćeno da bude zadana <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-hu/strings.xml b/PermissionController/res/values-hu/strings.xml index 32bfb9660..6c6437cd9 100644 --- a/PermissionController/res/values-hu/strings.xml +++ b/PermissionController/res/values-hu/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Korlátozott beállítások engedélyezése"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Korlátozott beállítás"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Biztonsága érdekében ez a beállítás jelenleg nem használható."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Az app nem kapott hozzáférést a következőhöz: <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Az alkalmazás hozzáférési engedélyt kért a bizalmas adatokhoz, ami veszélybe sodorhatja az Ön személyes és pénzügyi adatait.<xliff:g id="ID_1"><br><br></xliff:g>Lehetséges, hogy az alkalmazás nem működik megfelelően enélkül a korlátozott engedély nélkül. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>További információ a hozzáférés megadásának módjáról.</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Az app nem kapott hozzáférést a következőhöz: alapértelmezett <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-hy/strings.xml b/PermissionController/res/values-hy/strings.xml index 88c8d8d28..5037e0cba 100644 --- a/PermissionController/res/values-hy/strings.xml +++ b/PermissionController/res/values-hy/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Թույլատրել սահմանափակ ռեժիմի կարգավորումները"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Սահմանափակումներով կարգավորում"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Անվտանգության նկատառումներից ելնելով՝ այս կարգավորումը ներկայումս անհասանելի է։"</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Հավելվածին մերժվել է <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>ի օգտագործման թույլտվությունը"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Հավելվածը հայցել է կոնֆիդենցիալ տեղեկությունների օգտագործման թույլտվություն, որը կարող է վտանգի ենթարկել ձեր անձնական և ֆինանսական տեղեկությունները։<xliff:g id="ID_1"><br><br></xliff:g>Հնարավոր է, որ առանց այս սահմանափակված թույլտվության՝ հավելվածը չաշխատի պատշաճ կերպով։ <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Ինչպես տրամադրել տվյալների օգտագործման թույլտվություն</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Հավելվածին մերժվել է «<xliff:g id="ROLE_NAME">%1$s</xliff:g>» կատեգորիայում կանխադրված լինելու թույլտվությունը"</string> diff --git a/PermissionController/res/values-in/strings.xml b/PermissionController/res/values-in/strings.xml index e409aabd9..9922f132b 100644 --- a/PermissionController/res/values-in/strings.xml +++ b/PermissionController/res/values-in/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Izinkan setelan terbatas"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Setelan terbatas"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Demi keamanan Anda, setelan ini tidak tersedia untuk saat ini."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Aplikasi ditolak aksesnya ke <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Aplikasi meminta akses ke izin sensitif yang dapat membahayakan info pribadi dan keuangan Anda.<xliff:g id="ID_1"><br><br></xliff:g>Aplikasi mungkin tidak dapat berfungsi dengan baik tanpa izin terbatas ini. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>&gtPelajari cara mengizinkan akses</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Aplikasi ditolak aksesnya untuk menjadi <xliff:g id="ROLE_NAME">%1$s</xliff:g> default"</string> diff --git a/PermissionController/res/values-is/strings.xml b/PermissionController/res/values-is/strings.xml index ee49e777d..596baff0f 100644 --- a/PermissionController/res/values-is/strings.xml +++ b/PermissionController/res/values-is/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Leyfa takmarkaðar stillingar"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Takmörkuð stilling"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Til að tryggja öryggi þitt er þessi stilling ekki tiltæk eins og er."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Forritið fékk ekki aðgang að <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Forritið bað um aðgang að heimild fyrir viðkvæmu efni sem getur stofnað persónu- og fjármálaupplýsingum þínum í hættu.<xliff:g id="ID_1"><br><br></xliff:g>Forritið virkar hugsanlega ekki sem skyldi án þessarar takmörkuðu heimildar. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Kynntu þér hvernig þú leyfir aðgang</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Forritið fékk ekki aðgang að sjálfgefnu <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-it/strings.xml b/PermissionController/res/values-it/strings.xml index c855b4ce6..df7a62b8f 100644 --- a/PermissionController/res/values-it/strings.xml +++ b/PermissionController/res/values-it/strings.xml @@ -674,6 +674,8 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Consenti impostazioni con limitazioni"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Impostazione con limitazioni"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Per la tua sicurezza, questa impostazione non è al momento disponibile."</string> + <string name="enhanced_confirmation_phone_state_dialog_title" msgid="5230100829862738467">"Azione non disponibile durante una telefonata"</string> + <string name="enhanced_confirmation_phone_state_dialog_desc" msgid="8782160971908273849">"È vietato consentire alle app di installare altre app durante una telefonata.\n\n I truffatori richiedono spesso questo tipo di azione durante le conversazioni telefoniche, quindi è bloccata per proteggerti. Se qualcuno che non conosci ti guida a compiere questa azione, potrebbe trattarsi di una truffa."</string> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"All\'app è stato negato l\'accesso a <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"L\'app ha richiesto l\'accesso a un\'autorizzazione sensibile che può mettere a rischio le tue informazioni finanziarie e personali.<xliff:g id="ID_1"><br><br></xliff:g>È possibile che l\'app non funzioni correttamente senza questa autorizzazione limitata. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Scopri di più su come consentire l\'accesso</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"All\'app è stato negato l\'accesso al ruolo <xliff:g id="ROLE_NAME">%1$s</xliff:g> predefinita"</string> diff --git a/PermissionController/res/values-iw/strings.xml b/PermissionController/res/values-iw/strings.xml index 0fc33a62b..72eabe8a6 100644 --- a/PermissionController/res/values-iw/strings.xml +++ b/PermissionController/res/values-iw/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"הרשאה להגדרות מוגבלות"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"הגדרה מוגבלת"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"מטעמי אבטחה, ההגדרה הזו לא זמינה כרגע."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"בקשת הגישה של האפליקציה ל<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> נדחתה"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"האפליקציה ביקשה הרשאת גישה למידע רגיש שעלולה לסכן את המידע האישי והפיננסי שלך.<xliff:g id="ID_1"><br><br></xliff:g>יכול להיות שהאפליקציה לא תעבוד כמו שצריך ללא ההרשאה המוגבלת הזו. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>מידע נוסף על מתן גישה להרשאות</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"בקשת הגישה של האפליקציה לשמש כברירת המחדל של <xliff:g id="ROLE_NAME">%1$s</xliff:g> נדחתה"</string> diff --git a/PermissionController/res/values-ja/strings.xml b/PermissionController/res/values-ja/strings.xml index d706f9174..3f982cadc 100644 --- a/PermissionController/res/values-ja/strings.xml +++ b/PermissionController/res/values-ja/strings.xml @@ -211,7 +211,7 @@ <string name="unused_apps_summary" msgid="8839466950318403115">"権限と一時ファイルを削除し、通知を停止します"</string> <string name="unused_apps_summary_v2" msgid="5011313200815115802">"権限と一時ファイルを削除し、通知を停止し、アプリをアーカイブします"</string> <string name="auto_revoke_summary" msgid="5867548789805911683">"データ保護のため、このアプリが数か月使用されていない場合はアプリの権限が取り消されます。"</string> - <string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"データ保護のため、アプリが数か月使用されていない場合は以下の権限が取り消されます。<xliff:g id="PERMS">%1$s</xliff:g>"</string> + <string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"データ保護のため、アプリが数か月使用されていない場合は次の権限が取り消されます。<xliff:g id="PERMS">%1$s</xliff:g>"</string> <string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"データ保護のため、数か月使用していないアプリの権限を削除しました。"</string> <string name="auto_revoke_open_app_message" msgid="8075556291711205039">"もう一度権限を許可するには、アプリを開いてください。"</string> <string name="auto_revoke_disabled" msgid="8697684442991567188">"このアプリでは現在、自動削除は無効になっています。"</string> @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"制限付き設定を許可"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"制限付き設定"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"セキュリティ保護のため、この設定は現在利用できません。"</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"アプリは<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>へのアクセスを拒否されました"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"機密情報に関わる権限へのアクセスをアプリがリクエストしました。この権限へのアクセスは、あなたの個人情報や財務情報を危険にさらす恐れがあります。<xliff:g id="ID_1"><br><br></xliff:g>この制限付きの権限がないとアプリは正しく動作しない可能性があります。<a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>アクセスを許可する方法の詳細</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"アプリはデフォルトの<xliff:g id="ROLE_NAME">%1$s</xliff:g>としてのアクセスを拒否されました"</string> diff --git a/PermissionController/res/values-ka/strings.xml b/PermissionController/res/values-ka/strings.xml index 3f836afdf..af62a2c8f 100644 --- a/PermissionController/res/values-ka/strings.xml +++ b/PermissionController/res/values-ka/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"შეზღუდული პარამეტრების დაშვება"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"შეზღუდული პარამეტრი"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"თქვენივე უსაფრთხოებისთვის ეს პარამეტრი ამჟამად მიუწვდომელია."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"აპისთვის უარყოფილია ნებართვაზე წვდომა: <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"აპმა სენსიტიურ ინფორმაციაზე წვდომა მოითხოვა, რაც თქვენს პირად და ფინანსურ ინფორმაციას საფრთხის ქვეშ აყენებს.<xliff:g id="ID_1"><br><br></xliff:g>შესაძლოა აპმა ამ შეზღუდული ნებართვის გარეშე სათანადოდ ვერ იმუშაოს. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>შეიტყვეთ მეტი ნებართვის დაშვების შესახებ</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"აპისთვის ნაგულისხმევ როლზე (<xliff:g id="ROLE_NAME">%1$s</xliff:g>) წვდომა უარყოფილია"</string> diff --git a/PermissionController/res/values-kk/strings.xml b/PermissionController/res/values-kk/strings.xml index ee9e14a6a..ccd38f941 100644 --- a/PermissionController/res/values-kk/strings.xml +++ b/PermissionController/res/values-kk/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Шектелген параметрлерге рұқсат беру"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Шектелген параметр"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Қауіпсіздік мақсатында бұл параметрді қазір пайдалану мүмкін емес."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Қолданбаға <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> рұқсаты берілмеді"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Қолданба жеке және қаржылық ақпаратыңызға қауіп төндіруі мүмкін құпия ақпарат рұқсатын сұрады.<xliff:g id="ID_1"><br><br></xliff:g>Қолданба бұл шектеулі рұқсатсыз дұрыс жұмыс істемеуі мүмкін. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Рұқсат беру туралы ақпарат</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Қолданбаға әдепкі <xliff:g id="ROLE_NAME">%1$s</xliff:g> болу рұқсаты берілмеді"</string> diff --git a/PermissionController/res/values-km/strings.xml b/PermissionController/res/values-km/strings.xml index 60e0590ce..ebd7bb08a 100644 --- a/PermissionController/res/values-km/strings.xml +++ b/PermissionController/res/values-km/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"អនុញ្ញាតការកំណត់ដែលបានដាក់កំហិត"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"ការកំណត់ដែលបានដាក់កំហិត"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"ដើម្បីសុវត្ថិភាពរបស់អ្នក បច្ចុប្បន្នមិនអាចប្រើការកំណត់នេះបានទេ។"</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"កម្មវិធីត្រូវបានបដិសេធមិនឱ្យចូលប្រើ<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"កម្មវិធីបានស្នើសុំសិទ្ធិចូលប្រើការអនុញ្ញាតដែលមានលក្ខណៈរសើប ដែលអាចធ្វើឱ្យព័ត៌មានហិរញ្ញវត្ថុ និងព័ត៌មានផ្ទាល់ខ្លួនរបស់អ្នកប្រឈមនឹងហានិភ័យ។<xliff:g id="ID_1"><br><br></xliff:g>កម្មវិធីអាចនឹងមិនដំណើរការបានត្រឹមត្រូវទេ ប្រសិនបើគ្មានការអនុញ្ញាតដែលមានការរឹតបន្តឹងនេះ។ <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>ស្វែងយល់អំពីរបៀបផ្ដល់សិទ្ធិចូលប្រើ</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"កម្មវិធីត្រូវបានបដិសេធមិនឱ្យចូលប្រើជា<xliff:g id="ROLE_NAME">%1$s</xliff:g>លំនាំដើម"</string> diff --git a/PermissionController/res/values-kn/strings.xml b/PermissionController/res/values-kn/strings.xml index 43ce0a8b9..41d02a284 100644 --- a/PermissionController/res/values-kn/strings.xml +++ b/PermissionController/res/values-kn/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"ನಿರ್ಬಂಧಿಸಲಾದ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಅನುಮತಿಸಿ"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"ನಿರ್ಬಂಧಿಸಲಾದ ಸೆಟ್ಟಿಂಗ್"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"ನಿಮ್ಮ ಸುರಕ್ಷತೆಗಾಗಿ, ಈ ಸೆಟ್ಟಿಂಗ್ ಪ್ರಸ್ತುತ ಲಭ್ಯವಿಲ್ಲ."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> ಅನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು ಆ್ಯಪ್ಗೆ ನಿರಾಕರಿಸಲಾಗಿದೆ"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"ನಿಮ್ಮ ವೈಯಕ್ತಿಕ ಮತ್ತು ಹಣಕಾಸಿನ ಮಾಹಿತಿಯನ್ನು ಅಪಾಯಕ್ಕೆ ಸಿಲುಕಿಸಬಹುದಾದ ಸೂಕ್ಷ್ಮ ಅನುಮತಿಗೆ ಆ್ಯಪ್ ಆ್ಯಕ್ಸೆಸ್ ಅನ್ನು ವಿನಂತಿಸಿದೆ.<xliff:g id="ID_1"><br><br></xliff:g>.ಈ ನಿರ್ಬಂಧಿತ ಅನುಮತಿಯಿಲ್ಲದೆ ಆ್ಯಪ್ ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸದಿರುವ ಸಾಧ್ಯತೆಯಿದೆ. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>ಆ್ಯಕ್ಸೆಸ್ ಅನ್ನು ಹೇಗೆ ಅನುಮತಿಸುವುದು ಎಂಬುದನ್ನು ತಿಳಿಯಿರಿ</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"ಡೀಫಾಲ್ಟ್ <xliff:g id="ROLE_NAME">%1$s</xliff:g> ಆಗಿರಲು ಆ್ಯಪ್ಗೆ ಆ್ಯಕ್ಸೆಸ್ ಅನ್ನು ನಿರಾಕರಿಸಲಾಗಿದೆ"</string> diff --git a/PermissionController/res/values-ko/strings.xml b/PermissionController/res/values-ko/strings.xml index d611cdf9d..e5617df05 100644 --- a/PermissionController/res/values-ko/strings.xml +++ b/PermissionController/res/values-ko/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"제한된 설정 허용"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"제한된 설정"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"보안을 위해 이 설정은 현재 사용할 수 없습니다."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>에 대한 앱의 액세스가 거부됨"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"앱에서 개인 정보 및 금융 정보가 위험에 노출될 수 있는 민감한 권한에 대한 액세스를 요청했습니다.<xliff:g id="ID_1"><br><br></xliff:g>이 제한된 권한 없이는 앱이 제대로 작동하지 않을 수 있습니다. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>액세스 허용 방법 알아보기</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"앱을 기본 <xliff:g id="ROLE_NAME">%1$s</xliff:g>으로 사용하기 위한 액세스가 거부됨"</string> diff --git a/PermissionController/res/values-ky/strings.xml b/PermissionController/res/values-ky/strings.xml index f72d72a1e..be5b65975 100644 --- a/PermissionController/res/values-ky/strings.xml +++ b/PermissionController/res/values-ky/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Чектелген параметрлерге уруксат берүү"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Чектелген функция"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Коопсуздук максатында бул параметр азырынча иштебейт."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Колдонмого <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> параметрин колдонууга тыюу салынды"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Колдонмо жеке жана каржы маалыматыңызга коркунуч жаратышы мүмкүн болгон купуя маалыматты көрүүгө уруксат сурады.<xliff:g id="ID_1"><br><br></xliff:g>Мындай уруксатсыз колдонмо ойдогудай иштебей коюшу мүмкүн. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Мүмкүнчүлүк берүү жөнүндө кеңири маалымат</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Колдонмого демейки <xliff:g id="ROLE_NAME">%1$s</xliff:g> ролуна тыюу салынды"</string> diff --git a/PermissionController/res/values-lo/strings.xml b/PermissionController/res/values-lo/strings.xml index f71900d86..2c36f2b73 100644 --- a/PermissionController/res/values-lo/strings.xml +++ b/PermissionController/res/values-lo/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"ອະນຸຍາດການຕັ້ງຄ່າທີ່ຈຳກັດ"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"ການຕັ້ງຄ່າທີ່ຈຳກັດ"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"ເພື່ອຄວາມປອດໄພຂອງທ່ານ, ຕອນນີ້ຈຶ່ງບໍ່ສາມາດໃຊ້ການຕັ້ງຄ່ານີ້ໄດ້."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"ແອັບຖືກປະຕິເສດສິດເຂົ້າເຖິງຫາ <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"ແອັບໄດ້ຮ້ອງຂໍການສິດເຖິງການອະນຸຍາດທີ່ລະອຽດອ່ອນ ເຊິ່ງສາມາດເຮັດໃຫ້ຂໍ້ມູນສ່ວນຕົວ ແລະ ຂໍ້ມູນການເງິນຂອງທ່ານມີຄວາມສ່ຽງ.<xliff:g id="ID_1"><br><br></xliff:g>ມັນເປັນໄປໄດ້ວ່າແອັບດັ່ງກ່າວຈະບໍ່ເຮັດວຽກຢ່າງຖືກຕ້ອງໂດຍບໍ່ມີການອະນຸຍາດທີ່ຖືກຈຳກັດໄວ້ນີ້. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>ສຶກສາວິທີອະນຸຍາດສິດເຂົ້າເຖິງ</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"ແອັບຖືກປະຕິເສດສິດເຂົ້າເຖິງໃຫ້ເປັນ <xliff:g id="ROLE_NAME">%1$s</xliff:g> ຄ່າເລີ່ມຕົ້ນ"</string> diff --git a/PermissionController/res/values-lt/strings.xml b/PermissionController/res/values-lt/strings.xml index 59cd88b5b..b17daa177 100644 --- a/PermissionController/res/values-lt/strings.xml +++ b/PermissionController/res/values-lt/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Leisti apribotus nustatymus"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Apribotas nustatymas"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Šis nustatymas šiuo metu nepasiekiamas dėl jūsų saugumo."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Programai prieiga nesuteikta:<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Programa pateikė leidimo pasiekti neskelbtiną informaciją, dėl kurio gali kilti pavojus jūsų asmens ir finansinei informacijai, užklausą.<xliff:g id="ID_1"><br><br></xliff:g>Gali būti, kad be šio apriboto leidimo programa neveiks tinkamai. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Sužinokite, kaip suteikti prieigą</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Programai nesuteikta prieiga kaip numatytojo šio vaidmens: <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-lv/strings.xml b/PermissionController/res/values-lv/strings.xml index 297279e73..b91cd0081 100644 --- a/PermissionController/res/values-lv/strings.xml +++ b/PermissionController/res/values-lv/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Atļaut ierobežotos iestatījumus"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Ierobežots iestatījums"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Drošības apsvērumu dēļ šis iestatījums pašlaik nav pieejams."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Lietotnes piekļuve atļaujai “<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>” tika liegta"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Lietotne ir pieprasījusi piekļuvi sensitīvai atļaujai, kas var apdraudēt jūsu personas un finanšu informāciju.<xliff:g id="ID_1"><br><br></xliff:g>Iespējams, lietotne nedarbosies pareizi bez šīs ierobežotās atļaujas. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Uzziniet, kā piešķirt piekļuvi.</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Lietotnes piekļuve noklusējuma lomai “<xliff:g id="ROLE_NAME">%1$s</xliff:g>” tika liegta"</string> diff --git a/PermissionController/res/values-mk/strings.xml b/PermissionController/res/values-mk/strings.xml index 2fdd35649..338aee5aa 100644 --- a/PermissionController/res/values-mk/strings.xml +++ b/PermissionController/res/values-mk/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Дозволете ограничени поставки"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Ограничена поставка"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"За ваша безбедност, поставкава е недостапна во моментов."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Барањето за пристап на апликацијата до <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> е одбиено"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Апликацијата побара пристап до дозвола за чувствителни податоци што може да ја загрози безбедноста на вашите лични и финансиски податоци.<xliff:g id="ID_1"><br><br></xliff:g>Можно е апликацијата да не функционира правилно без ограниченава дозвола. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Дознајте како да дозволите пристап</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Барањето на апликацијата да биде стандарднa <xliff:g id="ROLE_NAME">%1$s</xliff:g> е одбиено"</string> diff --git a/PermissionController/res/values-ml/strings.xml b/PermissionController/res/values-ml/strings.xml index 09ea9e376..a614e29ba 100644 --- a/PermissionController/res/values-ml/strings.xml +++ b/PermissionController/res/values-ml/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"നിയന്ത്രിത ക്രമീകരണം അനുവദിക്കുക"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"നിയന്ത്രിത ക്രമീകരണം"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"നിങ്ങളുടെ സുരക്ഷയ്ക്ക്, ഈ ക്രമീകരണം നിലവിൽ ലഭ്യമല്ല."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"ആപ്പിന് <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> എന്നതിലേക്കുള്ള ആക്സസ് നിരസിച്ചു"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"ആപ്പ് സെൻസിറ്റീവ് വിവരങ്ങൾക്കുള്ള അനുമതിയിലേക്ക് ആക്സസ് അഭ്യർത്ഥിച്ചു, ഇത് നിങ്ങളുടെ വ്യക്തിപരവും സാമ്പത്തികവുമായ വിവരങ്ങളെ അപകടത്തിലാക്കിയേക്കാം.<xliff:g id="ID_1"><br><br></xliff:g>ഈ നിയന്ത്രിത അനുമതിയില്ലാതെ ആപ്പ് ശരിയായി പ്രവർത്തിച്ചേക്കില്ല. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>ആക്സസ് എങ്ങനെ അനുവദിക്കുന്നുവെന്നറിയുക</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"ആപ്പിന് ഡിഫോൾട്ട് <xliff:g id="ROLE_NAME">%1$s</xliff:g> ആകാനുള്ള ആക്സസ് നിരസിച്ചു"</string> diff --git a/PermissionController/res/values-mn/strings.xml b/PermissionController/res/values-mn/strings.xml index c705e388b..b310e9546 100644 --- a/PermissionController/res/values-mn/strings.xml +++ b/PermissionController/res/values-mn/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Хязгаарлагдсан тохиргоог зөвшөөрөх"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Хязгаарлагдсан тохиргоо"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Таны аюулгүй байдлын үүднээс энэ тохиргоо одоогоор боломжгүй байна."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Аппад <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>-д хандах эрх олгохоос татгалзсан"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Апп нь таны хувийн болон санхүүгийн мэдээллийг эрсдэлд оруулж болох эмзэг зөвшөөрөлд хандах эрх хүссэн.<xliff:g id="ID_1"><br><br></xliff:g>Энэ хязгаарлагдмал зөвшөөрөлгүйгээр уг апп зохих ёсоор ажиллахгүй байх боломжтой. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Хандах эрхийг хэрхэн зөвшөөрөх талаар мэдэж авах</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Аппад өгөгдмөл <xliff:g id="ROLE_NAME">%1$s</xliff:g> болох эрх олгохоос татгалзсан"</string> diff --git a/PermissionController/res/values-mr/strings.xml b/PermissionController/res/values-mr/strings.xml index c8c259d93..201d16ffb 100644 --- a/PermissionController/res/values-mr/strings.xml +++ b/PermissionController/res/values-mr/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"प्रतिबंधित सेटिंग्जना अनुमती द्या"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"प्रतिबंधित सेटिंग"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"तुमच्या सुरक्षेसाठी, हे सेटिंग सध्या उपलब्ध नाही."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"अॅपचा <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> साठीचा अॅक्सेस नाकारला गेला आहे"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"ॲपने संवेदनशील परवानगीसाठी अॅक्सेसची विनंती केली आहे, ज्यामुळे तुमची वैयक्तिक आणि आर्थिक माहिती धोक्यात येऊ शकते.<xliff:g id="ID_1"><br><br></xliff:g>या प्रतिबंधित परवानगीशिवाय ॲप कदाचित योग्यरीत्या काम करणार नाही. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>अॅक्सेसला अनुमती कशी द्यावी हे जाणून घ्या</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"अॅपचा डीफॉल्ट <xliff:g id="ROLE_NAME">%1$s</xliff:g> असण्यासाठीचा अॅक्सेस नाकारला गेला आहे"</string> diff --git a/PermissionController/res/values-ms/strings.xml b/PermissionController/res/values-ms/strings.xml index 39bf0b7b3..2a7b9a563 100644 --- a/PermissionController/res/values-ms/strings.xml +++ b/PermissionController/res/values-ms/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Benarkan tetapan terhad"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Tetapan terhad"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Untuk keselamatan anda, tetapan ini tidak tersedia pada masa ini."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Akses apl kepada <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> telah ditolak"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Apl meminta akses kepada kebenaran sensitif yang boleh mengakibatkan risiko terhadap maklumat peribadi dan kewangan anda.<xliff:g id="ID_1"><br><br></xliff:g>Apl tersebut mungkin tidak dapat berfungsi dengan betul tanpa kebenaran terhad ini. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Ketahui cara membenarkan akses</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Akses apl untuk menjadi <xliff:g id="ROLE_NAME">%1$s</xliff:g> lalai telah ditolak"</string> diff --git a/PermissionController/res/values-my/strings.xml b/PermissionController/res/values-my/strings.xml index c488a296c..2843231b2 100644 --- a/PermissionController/res/values-my/strings.xml +++ b/PermissionController/res/values-my/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"ကန့်သတ်ဆက်တင်များ ခွင့်ပြုရန်"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"ကန့်သတ်ဆက်တင်"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"သင့်လုံခြုံရေးအတွက် ဤဆက်တင်ကို လောလောဆယ် မရနိုင်ပါ။"</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"အက်ပ်ကို <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> သုံးခွင့် ငြင်းပယ်ထားသည်"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"အက်ပ်သည် သင်၏ ပုဂ္ဂိုလ်ရေးနှင့် ငွေကြေးဆိုင်ရာ အချက်အလက်များကို အန္တရာယ်ဖြစ်စေနိုင်သော သတိထားရမည့် ခွင့်ပြုချက်သုံးရန် တောင်းဆိုထားသည်။<xliff:g id="ID_1"><br><br></xliff:g>အက်ပ်သည် ဤကန့်သတ်ထားသော ခွင့်ပြုချက်မရှိပါက ကောင်းစွာမလုပ်ဆောင်ခြင်း ဖြစ်နိုင်သည်။ <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>သုံးခွင့်ပြုနည်းကို လေ့လာရန်</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"အက်ပ်အား မူရင်း <xliff:g id="ROLE_NAME">%1$s</xliff:g> အဖြစ် လုပ်ဆောင်ခွင့် ငြင်းပယ်ထားသည်"</string> diff --git a/PermissionController/res/values-nb/strings.xml b/PermissionController/res/values-nb/strings.xml index bb6cb00d5..f03d20c18 100644 --- a/PermissionController/res/values-nb/strings.xml +++ b/PermissionController/res/values-nb/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Tillat begrensede innstillinger"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Begrenset innstilling"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Av sikkerhetshensyn er denne innstillingen utilgjengelig for øyeblikket."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Appens tilgang til <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> ble avvist"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Appen ba om tilgang til en sensitiv tillatelse som kan utsette den personlige og økonomiske informasjonen din for fare.<xliff:g id="ID_1"><br><br></xliff:g>Det kan hende at appen ikke fungerer skikkelig uten denne begrensede tillatelsen. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Finn ut hvordan du gir tilgang</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Appen fikk ikke tillatelse til å være standard <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-ne/strings.xml b/PermissionController/res/values-ne/strings.xml index 70d474bfc..d3c63dc6b 100644 --- a/PermissionController/res/values-ne/strings.xml +++ b/PermissionController/res/values-ne/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"प्रतिबन्ध लगाइएका सेटिङ अनलक गर्नुहोस्"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"प्रतिबन्ध लगाइएका सेटिङ"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"तपाईंको खाताको सुरक्षार्थ यो सेटिङ हाल उपलब्ध छैन।"</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"एपले <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> प्रयोग गर्न मागेको अनुमति अस्वीकार गरिएको छ"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"यो एपले तपाईंको व्यक्तिगत तथा वित्तीय जानकारी जोखिममा पार्न सक्ने खालको संवेदनशील अनुमति मागेको छ।<xliff:g id="ID_1"><br><br></xliff:g>तपाईले उक्त प्रतिबन्धित अनुमति नदिएका खण्डमा यो एपले राम्रोसँग काम नगर्न सक्छ। <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>अनुमति दिने तरिका सिक्नुहोस्</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"यो एपले डिफल्ट <xliff:g id="ROLE_NAME">%1$s</xliff:g> का रूपमा काम गर्न मागेको अनुमति अस्वीकार गरिएको छ"</string> diff --git a/PermissionController/res/values-nl/strings.xml b/PermissionController/res/values-nl/strings.xml index 64cba5c57..fe5cb49f6 100644 --- a/PermissionController/res/values-nl/strings.xml +++ b/PermissionController/res/values-nl/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Beperkte instellingen toestaan"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Beperkte instelling"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Ter beveiliging is deze instelling op dit moment niet beschikbaar."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"App heeft geen toegang gekregen tot <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"De app heeft toegang gevraagd tot een gevoelig recht, waardoor je persoonlijke en financiële informatie risico kunnen lopen.<xliff:g id="ID_1"><br><br></xliff:g>Het is mogelijk dat de app niet goed werkt zonder dit beperkte recht. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Meer informatie over hoe je toegang geeft</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"App heeft geen toegang gekregen om de standaard <xliff:g id="ROLE_NAME">%1$s</xliff:g> te worden"</string> diff --git a/PermissionController/res/values-or/strings.xml b/PermissionController/res/values-or/strings.xml index 69f4fded7..0ed05ef28 100644 --- a/PermissionController/res/values-or/strings.xml +++ b/PermissionController/res/values-or/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"ପ୍ରତିବନ୍ଧିତ ସେଟିଂସକୁ ଅନୁମତି ଦିଅନ୍ତୁ"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"ପ୍ରତିବନ୍ଧିତ ସେଟିଂ"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"ଆପଣଙ୍କ ସୁରକ୍ଷା ପାଇଁ ଏହି ସେଟିଂ ବର୍ତ୍ତମାନ ଅନୁପଲବ୍ଧ ଅଟେ।"</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>କୁ ଆପର ଆକ୍ସେସକୁ ଅଗ୍ରାହ୍ୟ କରାଯାଇଛି"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"ଆପଣଙ୍କ ବ୍ୟକ୍ତିଗତ ଏବଂ ଆର୍ଥିକ ସୂଚନାକୁ ବିପଦରେ ପକାଇପାରୁଥିବା ଏକ ସମ୍ବେଦନଶୀଳ ଅନୁମତିକୁ ଆକ୍ସେସ କରିବା ପାଇଁ ଏହି ଆପଟି ଅନୁରୋଧ କରିଛି।<xliff:g id="ID_1"><br><br></xliff:g>ଏହା ସମ୍ଭବ ଯେ ଏହି ପ୍ରତିବନ୍ଧିତ ଅନୁମତି ବିନା ଆପ ସଠିକ ଭାବେ କାର୍ଯ୍ୟ କରିବ ନାହିଁ। <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>ଆକ୍ସେସକୁ କିପରି ଅନୁମତି ଦେବେ ତାହା ଜାଣନ୍ତୁ</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"ଡିଫଲ୍ଟ <xliff:g id="ROLE_NAME">%1$s</xliff:g> ହେବା ପାଇଁ ଆପର ଆକ୍ସେସକୁ ଅଗ୍ରାହ୍ୟ କରାଯାଇଛି"</string> diff --git a/PermissionController/res/values-pa/strings.xml b/PermissionController/res/values-pa/strings.xml index f2f099d61..22ec6cf3a 100644 --- a/PermissionController/res/values-pa/strings.xml +++ b/PermissionController/res/values-pa/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"ਪ੍ਰਤਿਬੰਧਿਤ ਸੈਟਿੰਗਾਂ ਦੀ ਆਗਿਆ ਦਿਓ"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"ਪ੍ਰਤਿਬੰਧਿਤ ਸੈਟਿੰਗਾਂ"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"ਤੁਹਾਡੀ ਸੁਰੱਖਿਆ ਲਈ, ਫ਼ਿਲਹਾਲ ਇਹ ਸੈਟਿੰਗ ਉਪਲਬਧ ਨਹੀਂ ਹੈ।"</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"ਐਪ ਨੂੰ <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਨਹੀਂ ਦਿੱਤੀ ਗਈ"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"ਐਪ ਨੇ ਸੰਵੇਦਨਸ਼ੀਲ ਇਜਾਜ਼ਤ ਤੱਕ ਪਹੁੰਚ ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਹੈ, ਜਿਸ ਨਾਲ ਤੁਹਾਡੀ ਨਿੱਜੀ ਅਤੇ ਵਿੱਤੀ ਜਾਣਕਾਰੀ ਜੋਖਮ ਵਿੱਚ ਪੈ ਸਕਦੀ ਹੈ।<xliff:g id="ID_1"><br><br></xliff:g>ਇਹ ਸੰਭਵ ਹੈ, ਕਿ ਐਪ ਇਸ ਪ੍ਰਤਿਬੰਧਿਤ ਇਜਾਜ਼ਤ ਤੋਂ ਬਿਨਾਂ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਨਾ ਕਰੇ। <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਦੇਣ ਦੇ ਤਰੀਕੇ ਬਾਰੇ ਜਾਣੋ</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"ਐਪ ਨੂੰ ਪੂਰਵ-ਨਿਰਧਾਰਿਤ <xliff:g id="ROLE_NAME">%1$s</xliff:g> ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਨਹੀਂ ਦਿੱਤੀ ਗਈ"</string> diff --git a/PermissionController/res/values-pl/strings.xml b/PermissionController/res/values-pl/strings.xml index 0b40b41f6..39bf54570 100644 --- a/PermissionController/res/values-pl/strings.xml +++ b/PermissionController/res/values-pl/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Zezwól na ustawienia z ograniczonym dostępem"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Ustawienie z ograniczonym dostępem"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Ze względów bezpieczeństwa to ustawienie jest obecnie niedostępne."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Aplikacja nie otrzymała dostępu do uprawnień <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Aplikacja wymaga dostępu do uprawnień newralgicznych, co może zagrażać Twoim danym osobowym i informacjom finansowym.<xliff:g id="ID_1"><br><br></xliff:g>Możliwe, że bez tego uprawnienia z ograniczeniami aplikacja nie będzie działać poprawnie. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Jak zezwolić na dostęp</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Aplikacja nie otrzymała dostępu jako domyślna <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-pt-rBR/strings.xml b/PermissionController/res/values-pt-rBR/strings.xml index fea62d7e7..87d18f3e6 100644 --- a/PermissionController/res/values-pt-rBR/strings.xml +++ b/PermissionController/res/values-pt-rBR/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Permitir configurações restritas"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Configuração restrita"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Para sua segurança, essa configuração está indisponível no momento."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"O app não recebeu a seguinte permissão de acesso: <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"O app solicitou acesso a uma permissão sensível que pode colocar suas informações pessoais e financeiras em risco.<xliff:g id="ID_1"><br><br></xliff:g>É possível que o app não funcione corretamente sem essa permissão restrita. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Aprenda a conceder acesso</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"O app não recebeu o acesso para ser a escolha padrão de: <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-pt-rPT/strings.xml b/PermissionController/res/values-pt-rPT/strings.xml index 0ad01f7a5..2334a0b5d 100644 --- a/PermissionController/res/values-pt-rPT/strings.xml +++ b/PermissionController/res/values-pt-rPT/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Permitir definições restritas"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Definição restrita"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Para sua segurança, esta definição está indisponível atualmente."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"O acesso a <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> foi negado à app"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"A app pediu acesso a uma autorização confidencial que pode pôr em risco as suas informações pessoais e financeiras.<xliff:g id="ID_1"><br><br></xliff:g>É possível que a app não funcione corretamente sem esta autorização restrita. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Saiba como permitir o acesso</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"O acesso à função predefinida <xliff:g id="ROLE_NAME">%1$s</xliff:g> foi negado à app"</string> diff --git a/PermissionController/res/values-pt/strings.xml b/PermissionController/res/values-pt/strings.xml index fea62d7e7..87d18f3e6 100644 --- a/PermissionController/res/values-pt/strings.xml +++ b/PermissionController/res/values-pt/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Permitir configurações restritas"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Configuração restrita"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Para sua segurança, essa configuração está indisponível no momento."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"O app não recebeu a seguinte permissão de acesso: <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"O app solicitou acesso a uma permissão sensível que pode colocar suas informações pessoais e financeiras em risco.<xliff:g id="ID_1"><br><br></xliff:g>É possível que o app não funcione corretamente sem essa permissão restrita. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Aprenda a conceder acesso</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"O app não recebeu o acesso para ser a escolha padrão de: <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-ro/strings.xml b/PermissionController/res/values-ro/strings.xml index 5f88c1376..bb40a8170 100644 --- a/PermissionController/res/values-ro/strings.xml +++ b/PermissionController/res/values-ro/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Permite setările restricționate"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Setare restricționată"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Pentru securitatea ta, setarea este momentan indisponibilă."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Accesul aplicației la <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> a fost refuzat"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Aplicația a solicitat acces la o permisiune de accesare a informațiilor sensibile care îți poate pune în pericol informațiile financiare și cu caracter personal.<xliff:g id="ID_1"><br><br></xliff:g>Este posibil ca aplicația să nu funcționeze corect fără această permisiune restricționată. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Află cum să permiți accesul</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Accesul aplicației pentru a deveni <xliff:g id="ROLE_NAME">%1$s</xliff:g> prestabilită a fost refuzat"</string> diff --git a/PermissionController/res/values-ru/strings.xml b/PermissionController/res/values-ru/strings.xml index 07ad9f710..d92129a22 100644 --- a/PermissionController/res/values-ru/strings.xml +++ b/PermissionController/res/values-ru/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Разрешить доступ к настройкам"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Настройки с ограниченным доступом"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"В целях безопасности эти настройки пока недоступны."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Для приложения заблокировано разрешение \"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>\""</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Приложение запрашивает разрешение на доступ к конфиденциальной информации. Если вы предоставите его, ваши личные и финансовые данные могут оказаться под угрозой.<xliff:g id="ID_1"><br><br></xliff:g>Без такого разрешения приложение может работать неправильно. Узнайте, <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>как предоставить доступ к данным</a>."</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Запрос на использование в качестве приложения по умолчанию (<xliff:g id="ROLE_NAME">%1$s</xliff:g>) отклонен"</string> diff --git a/PermissionController/res/values-si/strings.xml b/PermissionController/res/values-si/strings.xml index fbec1af4f..7c41b5770 100644 --- a/PermissionController/res/values-si/strings.xml +++ b/PermissionController/res/values-si/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"සීමා කළ සැකසීම්වලට ඉඩ දෙන්න"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"සීමා කළ සැකසීම"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"ඔබේ ආරක්ෂාව සඳහා, මෙම සැකසීම දැනට නොමැත."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"යෙදුම <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> වෙත ප්රවේශය ප්රතික්ෂේප කරන ලදි"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"යෙදුම ඔබේ පුද්ගලික සහ මූල්ය තොරතුරු අවදානමට ලක් කළ හැකි සංවේදී අවසරයකට ප්රවේශය ඉල්ලා ඇත.<xliff:g id="ID_1"><br><br></xliff:g>මෙම සීමා කළ අවසරය නොමැතිව යෙදුම නිසි ලෙස ක්රියා නොකරනු ඇත. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>ප්රවේශයට ඉඩ දෙන ආකාරය දැන ගන්න</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"යෙදුම පෙරනිමි <xliff:g id="ROLE_NAME">%1$s</xliff:g> වීමට ප්රවේශය ප්රතික්ෂේප කරන ලදි"</string> diff --git a/PermissionController/res/values-sk/strings.xml b/PermissionController/res/values-sk/strings.xml index 2b0c845c5..378a2068b 100644 --- a/PermissionController/res/values-sk/strings.xml +++ b/PermissionController/res/values-sk/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Povoliť obmedzené nastavenia"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Obmedzené nastavenie"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Z bezpečnostných dôvodov nie je toto nastavenie momentálne k dispozícii."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Aplikácii bol prístup k povoleniu <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> zamietnutý"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Táto aplikácia vyžaduje prístup k citlivému povoleniu, čo môže ohroziť vaše osobné údaje a finančné informácie.<xliff:g id="ID_1"><br><br></xliff:g>Je možné, že bez tohto obmedzeného povolenia nebude aplikácia správne fungovať. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Ako povoliť prístup</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Aplikácii bol zamietnutý prístup a predvolene nemôže byť <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-sl/strings.xml b/PermissionController/res/values-sl/strings.xml index 0e83c0d1f..7a91af514 100644 --- a/PermissionController/res/values-sl/strings.xml +++ b/PermissionController/res/values-sl/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Dovoli omejene nastavitve"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Omejena nastavitev"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Zaradi vaše varnosti ta nastavitev trenutno ni na voljo."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Aplikaciji je bil zavrnjen dostop do dovoljenja »<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>«"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Aplikacija je zahtevala dostop do občutljivega dovoljenja, ki lahko ogrozi vaše osebne in finančne podatke.<xliff:g id="ID_1"><br><br></xliff:g>Aplikacija morda ne bo pravilno delovala brez tega omejenega dovoljenja. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Preberite, kako omogočite dostop</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Aplikaciji je bil zavrnjen dostop do privzete vloge »<xliff:g id="ROLE_NAME">%1$s</xliff:g>«"</string> diff --git a/PermissionController/res/values-sq/strings.xml b/PermissionController/res/values-sq/strings.xml index 4cca434cb..1a8925237 100644 --- a/PermissionController/res/values-sq/strings.xml +++ b/PermissionController/res/values-sq/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Lejo cilësimet e kufizuara"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Cilësim i kufizuar"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Për sigurinë tënde, ky cilësim nuk ofrohet për momentin."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Aplikacionit iu refuzua qasja te: <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Aplikacioni kërkoi qasje në një leje delikate që mund t\'i vendosë në rrezik informacionet e tua personale dhe financiare.<xliff:g id="ID_1"><br><br></xliff:g>Ka mundësi që aplikacioni të mos funksionojë si duhet pa këtë leje të kufizuar. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Mëso se si të lejosh qasjen</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Aplikacionit iu refuzua qasja për të qenë parazgjedhja për: <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-sr/strings.xml b/PermissionController/res/values-sr/strings.xml index d89ebba68..0d8f172e4 100644 --- a/PermissionController/res/values-sr/strings.xml +++ b/PermissionController/res/values-sr/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Дозволи ограничена подешавања"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Ограничено подешавање"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Ово подешавање је тренутно недоступно ради ваше безбедности."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Апликацији није дозвољен приступ дозволи: <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Апликација је затражила приступ осетљивој дозволи, што може да угрози безбедност личних и финансијских података.<xliff:g id="ID_1"><br><br></xliff:g>Апликација можда неће радити исправно без ове ограничене дозволе. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Сазнајте како да дозволите приступ</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Апликацији није дозвољен приступ да постане подразумевана: <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-sv/strings.xml b/PermissionController/res/values-sv/strings.xml index c5d3969de..207179b54 100644 --- a/PermissionController/res/values-sv/strings.xml +++ b/PermissionController/res/values-sv/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Tillåt blockerade inställningar"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Begränsad inställning"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Av säkerhetsskäl är den här inställningen inte tillgänglig för närvarande."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Appen nekades åtkomst till <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Appen begärde åtkomstbehörighet till känsliga uppgifter, vilket kan utsätta din personliga och finansiella information för risk.<xliff:g id="ID_1"><br><br></xliff:g>Appen kanske inte fungerar som den ska utan denna begränsade behörighet. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>&gtLäs mer om hur du tillåter åtkomst</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Appen nekades åtkomst till standardrollen för <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-sw/strings.xml b/PermissionController/res/values-sw/strings.xml index e774d92c1..16885eece 100644 --- a/PermissionController/res/values-sw/strings.xml +++ b/PermissionController/res/values-sw/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Ruhusu mipangilio yenye mipaka"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Mipangilio imezuiwa"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Ili kulinda usalama wako, mipangilio hii haipatikani kwa sasa."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Programu haijapewa idhini ya kufikia <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Programu imeomba kufikia ruhusa nyeti, hali ambayo inaweza kuhatarisha maelezo yako ya kifedha na ya binafsi.<xliff:g id="ID_1"><br><br></xliff:g>Kuna uwezekano kuwa programu haitafanya kazi vizuri bila ruhusa hii inayodhibitiwa. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Pata maelezo kuhusu jinsi ya kuruhusu ufikiaji</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Programu haijapewa idhini ya kuwa <xliff:g id="ROLE_NAME">%1$s</xliff:g> chaguomsingi"</string> diff --git a/PermissionController/res/values-ta/strings.xml b/PermissionController/res/values-ta/strings.xml index e4f158e6f..41806da2a 100644 --- a/PermissionController/res/values-ta/strings.xml +++ b/PermissionController/res/values-ta/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"கட்டுப்படுத்தப்பட்ட அமைப்பை அனுமதி"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"கட்டுப்படுத்தப்பட்ட அமைப்பு"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"உங்கள் பாதுகாப்பிற்காக, இந்த அமைப்பு தற்போது இல்லை."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>க்கான ஆப்ஸ் அணுகல் நிராகரிக்கப்பட்டது"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"பாதுகாக்க வேண்டிய தகவல்களுக்கான அனுமதியை வழங்க ஆப்ஸ் கேட்டுள்ளது, இது உங்கள் தனிப்பட்ட மற்றும் நிதித் தகவல்களை ஆபத்துக்குள்ளாக்கலாம்.<xliff:g id="ID_1"><br><br></xliff:g>இந்தக் கட்டுப்படுத்தப்பட்ட அனுமதி இல்லாமல் ஆப்ஸ் சரியாக வேலை செய்யாமல் போகக்கூடும். <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>எப்படி அணுகல் வழங்குவதென அறிக</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"இயல்புநிலை <xliff:g id="ROLE_NAME">%1$s</xliff:g>க்கான ஆப்ஸ் அணுகல் நிராகரிக்கப்பட்டது"</string> diff --git a/PermissionController/res/values-te/strings.xml b/PermissionController/res/values-te/strings.xml index a461319a4..175ff31f6 100644 --- a/PermissionController/res/values-te/strings.xml +++ b/PermissionController/res/values-te/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"పరిమితం చేసిన సెట్టింగ్లను అనుమతించండి"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"పరిమితం చేయబడిన సెట్టింగ్"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"మీ సెక్యూరిటీ కోసం, ఈ సెట్టింగ్ ప్రస్తుతం అందుబాటులో లేదు."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"యాప్ <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>కు యాక్సెస్ తిరస్కరించబడింది"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"మీ వ్యక్తిగత, ఆర్థిక సమాచారాన్ని ప్రమాదంలో పడేసే గోప్యమైన సమాచార యాక్సెస్ అనుమతికి యాప్ యాక్సెస్ను రిక్వెస్ట్ చేయడం జరిగింది.<xliff:g id="ID_1"><br><br></xliff:g>ఈ అదనపు అవసరాలు గల అనుమతి లేకుండా యాప్ సరిగ్గా పని చేయకపోయే అవకాశం ఉంది. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>యాక్సెస్ను అనుమతించడం ఎలాగో తెలుసుకోండి</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"ఆటోమేటిక్ <xliff:g id="ROLE_NAME">%1$s</xliff:g>గా ఉండటానికి యాప్నకు యాక్సెస్ నిరాకరించబడింది"</string> diff --git a/PermissionController/res/values-th/strings.xml b/PermissionController/res/values-th/strings.xml index 0943c6011..22db84cae 100644 --- a/PermissionController/res/values-th/strings.xml +++ b/PermissionController/res/values-th/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"อนุญาตการตั้งค่าที่จำกัด"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"การตั้งค่าที่จำกัด"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"การตั้งค่านี้ใช้ไม่ได้ในตอนนี้เพื่อความปลอดภัยของคุณ"</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"แอปถูกปฏิเสธไม่ให้เข้าถึง <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"แอปขอเข้าถึงสิทธิ์ที่มีความละเอียดอ่อนซึ่งอาจทำให้ข้อมูลส่วนบุคคลและข้อมูลทางการเงินของคุณมีความเสี่ยง<xliff:g id="ID_1"><br><br></xliff:g>แอปอาจทำงานได้ไม่ถูกต้องหากไม่มีสิทธิ์ที่จำกัดนี้ <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>ดูวิธีอนุญาตให้เข้าถึง</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"แอปถูกปฏิเสธไม่ให้เข้าถึงเพื่อเป็น<xliff:g id="ROLE_NAME">%1$s</xliff:g> เริ่มต้น"</string> diff --git a/PermissionController/res/values-tl/strings.xml b/PermissionController/res/values-tl/strings.xml index f08b97531..0d203bd18 100644 --- a/PermissionController/res/values-tl/strings.xml +++ b/PermissionController/res/values-tl/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Payagan ang mga pinaghihigpitang setting"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Pinaghihigpitang setting"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Para sa iyong seguridad, hindi available ang setting na ito sa ngayon."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Tinanggihan ang access ng appp sa <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Humiling ang app ng access sa pahintulot sa sensitibong impormasyon na posibleng maglagay ng iyong personal at pinansyal na impormasyon sa panganib.<xliff:g id="ID_1"><br><br></xliff:g>Posibleng hindi gumana nang maayos ang app kung wala ang pinaghihigpitang pahintulot na ito. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Alamin kung paano payagan ang pag-access</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Tinanggihan ang access ng app na maging default na <xliff:g id="ROLE_NAME">%1$s</xliff:g>"</string> diff --git a/PermissionController/res/values-tr/strings.xml b/PermissionController/res/values-tr/strings.xml index 467d98bdc..fbb42e780 100644 --- a/PermissionController/res/values-tr/strings.xml +++ b/PermissionController/res/values-tr/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Kısıtlanmış ayarlara izin verme"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Kısıtlanmış ayar"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Güvenliğiniz için bu ayar şu anda kullanılamıyor."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Uygulamanın <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> iznine erişimi reddedildi"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Uygulama, kişisel ve finansal bilgilerinizi riske atabilecek hassas bir izne erişim istedi.<xliff:g id="ID_1"><br><br></xliff:g>Bu kısıtlı izin olmadan uygulama düzgün çalışmayabilir. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Erişime nasıl izin vereceğinizi öğrenin</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Uygulamanın varsayılan <xliff:g id="ROLE_NAME">%1$s</xliff:g> olarak kullanılma erişimi reddedildi"</string> diff --git a/PermissionController/res/values-uk/strings.xml b/PermissionController/res/values-uk/strings.xml index b05fb81e4..5f0c1563b 100644 --- a/PermissionController/res/values-uk/strings.xml +++ b/PermissionController/res/values-uk/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Дозволити налаштування з обмеженнями"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Налаштування з обмеженнями"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"З міркувань безпеки це налаштування наразі недоступне."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Додатку не надано дозвіл \"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>\""</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Додаток запитав дозвіл на доступ до чутливих даних, що може поставити під загрозу вашу особисту й фінансову інформацію.<xliff:g id="ID_1"><br><br></xliff:g>Без цього обмеженого дозволу додаток може не працювати належним чином. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Як надати доступ</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Додатку не надано доступ до ролі \"<xliff:g id="ROLE_NAME">%1$s</xliff:g>\" за умовчанням"</string> diff --git a/PermissionController/res/values-ur/strings.xml b/PermissionController/res/values-ur/strings.xml index 3b4fa91db..c143fcf7d 100644 --- a/PermissionController/res/values-ur/strings.xml +++ b/PermissionController/res/values-ur/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"پابندی والی ترتیبات کی اجازت دیں"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"محدود ترتیب"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"آپ کی سیکیورٹی کیلئے، یہ ترتیب فی الحال دستیاب نہیں ہے۔"</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> تک ایپ کی رسائی کو مسترد کر دیا گیا"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"ایپ نے ایک حساس اجازت تک رسائی کی درخواست کی ہے جو آپ کی ذاتی اور مالی معلومات کو خطرے میں ڈال سکتی ہے۔<xliff:g id="ID_1"><br><br></xliff:g>یہ ممکن ہے کہ اس محدود اجازت کے بغیر ایپ ٹھیک سے کام نہ کرے۔ <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>رسائی کی اجازت دینے کا طریقہ جانیں</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"ڈیفالٹ <xliff:g id="ROLE_NAME">%1$s</xliff:g> ہونے کے لیے ایپ کی رسائی کو مسترد کر دیا گیا"</string> diff --git a/PermissionController/res/values-uz/strings.xml b/PermissionController/res/values-uz/strings.xml index a1f04e4cf..8d52af2a3 100644 --- a/PermissionController/res/values-uz/strings.xml +++ b/PermissionController/res/values-uz/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Cheklangan sozlamalarga ruxsat berish"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Cheklangan sozlama"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Xavfsizlik maqsadida bu sozlama hozir ishlamaydi."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Ilovaga <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> ruxsati berilmadi"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Ilova maxfiy maʼlumotlarga kirish uchun ruxsat soʻramoqda. Ruxsat bersangiz, shaxsiy va moliyaviy maʼlumotlaringiz xavf ostida qolishi mumkin.<xliff:g id="ID_1"><br><br></xliff:g> Bu cheklangan ruxsatsiz ilova toʻgʻri ishlamasligi mumkin. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Qanday ruxsat berish haqida batafsil</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Ilovadan <xliff:g id="ROLE_NAME">%1$s</xliff:g> turkumidagi standart sifatida foydalanish taqiqlangan"</string> diff --git a/PermissionController/res/values-vi/strings.xml b/PermissionController/res/values-vi/strings.xml index b9a077e77..189962a8d 100644 --- a/PermissionController/res/values-vi/strings.xml +++ b/PermissionController/res/values-vi/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Cho phép các chế độ cài đặt bị hạn chế"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Chế độ cài đặt bị hạn chế"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Để đảm bảo an toàn cho bạn, chế độ cài đặt này hiện không dùng được."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"Ứng dụng đã bị từ chối cấp quyền truy cập vào <xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Ứng dụng này yêu cầu quyền truy cập vào thông tin nhạy cảm. Việc đó có thể khiến thông tin cá nhân và thông tin tài chính của bạn gặp rủi ro.<xliff:g id="ID_1"><br><br></xliff:g>Có thể ứng dụng sẽ hoạt động không đúng cách nếu không được cấp quyền bị hạn chế này. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Tìm hiểu cách cấp quyền</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"Ứng dụng đã bị từ chối cấp quyền để làm <xliff:g id="ROLE_NAME">%1$s</xliff:g> mặc định"</string> diff --git a/PermissionController/res/values-zh-rCN/strings.xml b/PermissionController/res/values-zh-rCN/strings.xml index ccd1d3183..0b571d8bd 100644 --- a/PermissionController/res/values-zh-rCN/strings.xml +++ b/PermissionController/res/values-zh-rCN/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"允许受限制的设置"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"受限制的设置"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"出于安全考虑,此设置目前不可用。"</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"系统已拒绝向此应用授予<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>访问权限"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"该应用请求获得敏感权限,授予这项权限可能会导致您的个人信息和财务信息面临风险。<xliff:g id="ID_1"><br><br></xliff:g>如果不授予这项受限权限,该应用可能无法正常运行。<a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>了解如何授予访问权限</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"系统已拒绝向此应用授予作为默认<xliff:g id="ROLE_NAME">%1$s</xliff:g>的访问权限"</string> diff --git a/PermissionController/res/values-zh-rHK/strings.xml b/PermissionController/res/values-zh-rHK/strings.xml index c195fd722..0e123a9ad 100644 --- a/PermissionController/res/values-zh-rHK/strings.xml +++ b/PermissionController/res/values-zh-rHK/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"允許受限設定"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"受限設定"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"為安全起見,系統目前不提供此設定。"</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"系統已拒絕授予應用程式「<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>」存取權"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"應用程式要求存取敏感資料權限,授予此權限可能會危害你的個人和財務資料。<xliff:g id="ID_1"><br><br></xliff:g>如沒有此受限制權限,應用程式可能無法正常運作。<a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>進一步瞭解如何授予存取權</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"系統已拒絕授予應用程式作為預設<xliff:g id="ROLE_NAME">%1$s</xliff:g>的存取權"</string> diff --git a/PermissionController/res/values-zh-rTW/strings.xml b/PermissionController/res/values-zh-rTW/strings.xml index 408107f8a..6eb1dd932 100644 --- a/PermissionController/res/values-zh-rTW/strings.xml +++ b/PermissionController/res/values-zh-rTW/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"解除受限制的設定"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"受限制的設定"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"為了安全起見,目前無法使用這項設定。"</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"系統已拒絕授予應用程式「<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>」存取權"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"這個應用程式要求取得私密資訊權限,授予這項權限可能導致你的個人資訊和財務資訊面臨風險。<xliff:g id="ID_1"><br><br></xliff:g>如果未取得這項受限制權限,應用程式可能無法正常運作。<a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>瞭解如何授予權限</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"系統已拒絕授予應用程式做為預設「<xliff:g id="ROLE_NAME">%1$s</xliff:g>」的存取權"</string> diff --git a/PermissionController/res/values-zu/strings.xml b/PermissionController/res/values-zu/strings.xml index 4669b2506..15fadf2e8 100644 --- a/PermissionController/res/values-zu/strings.xml +++ b/PermissionController/res/values-zu/strings.xml @@ -674,6 +674,10 @@ <string name="allow_restricted_settings" msgid="8073000189478396881">"Vumela amasethingi akhawulelwe"</string> <string name="enhanced_confirmation_dialog_title" msgid="7562437438040966351">"Amasethingi akhawulelwe"</string> <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Ukuze uphephe, leli sethingi okwamanje alitholakali."</string> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_title (5230100829862738467) --> + <skip /> + <!-- no translation found for enhanced_confirmation_phone_state_dialog_desc (8782160971908273849) --> + <skip /> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"I-app inqatshelwe ukufinyelela ku-<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"I-app icele ukufinyelela emvumweni ezwelayo okungabeka imininingwane yakho siqu neyezimali engozini.<xliff:g id="ID_1"><br><br></xliff:g>Kungenzeka ukuthi i-app ingasebenzi kahle ngaphandle kwemvume enomkhawulo. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Funda ukuthi ungakuvumela kanjani ukufinyelela</a>"</string> <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"I-app iye yanqatshelwa ukufinyelela ukuze ibe yi-<xliff:g id="ROLE_NAME">%1$s</xliff:g> ezenzakalelayo"</string> diff --git a/PermissionController/res/xml/roles.xml b/PermissionController/res/xml/roles.xml index 3d858a9c5..704925601 100644 --- a/PermissionController/res/xml/roles.xml +++ b/PermissionController/res/xml/roles.xml @@ -1886,6 +1886,7 @@ requestTitle="@string/role_for_testing_profile_group_exclusivity_request_title" shortLabel="@string/role_for_testing_profile_group_exclusivity_short_label" showNone="true" + uiBehavior="ReservedForTestingProfileGroupExclusivityRoleUiBehavior" visible="true"/> <!--- @@ -1926,4 +1927,20 @@ featureFlag="android.app.appfunctions.flags.Flags.enableAppFunctionManager" /> </permissions> </role> + + <role + name="android.app.role.COMPANION_DEVICE_SENSOR_DEVICE_STREAMING" + allowBypassingQualification="true" + exclusive="false" + exclusivity="none" + featureFlag="android.companion.virtualdevice.flags.Flags.enableLimitedVdmRole" + systemOnly="true" + visible="false"> + <permissions> + <permission-set name="nearby_devices" /> + <permission-set name="notifications" /> + <permission name="android.permission.CREATE_VIRTUAL_DEVICE"/> + </permissions> + </role> + </roles> diff --git a/PermissionController/role-controller/java/com/android/role/controller/behavior/ReservedForTestingProfileGroupExclusivityRoleBehavior.java b/PermissionController/role-controller/java/com/android/role/controller/behavior/ReservedForTestingProfileGroupExclusivityRoleBehavior.java index a9be00806..f02b4d90c 100644 --- a/PermissionController/role-controller/java/com/android/role/controller/behavior/ReservedForTestingProfileGroupExclusivityRoleBehavior.java +++ b/PermissionController/role-controller/java/com/android/role/controller/behavior/ReservedForTestingProfileGroupExclusivityRoleBehavior.java @@ -18,6 +18,7 @@ package com.android.role.controller.behavior; import android.app.role.RoleManager; import android.content.Context; +import android.content.pm.ApplicationInfo; import android.os.UserHandle; import androidx.annotation.NonNull; @@ -25,11 +26,14 @@ import androidx.annotation.Nullable; import com.android.role.controller.model.Role; import com.android.role.controller.model.RoleBehavior; +import com.android.role.controller.util.PackageUtils; import com.android.role.controller.util.RoleFlags; import com.android.role.controller.util.UserUtils; +import java.util.ArrayList; import java.util.List; +// TODO(b/383538899): make minSdk36 public class ReservedForTestingProfileGroupExclusivityRoleBehavior implements RoleBehavior { @Nullable @Override @@ -37,8 +41,8 @@ public class ReservedForTestingProfileGroupExclusivityRoleBehavior implements Ro @NonNull Context context) { if (RoleFlags.isProfileGroupExclusivityAvailable()) { Context userContext = UserUtils.getUserContext(context, user); - RoleManager roleManager = userContext.getSystemService(RoleManager.class); - return roleManager.getDefaultHoldersForTest(role.getName()); + RoleManager userRoleManager = userContext.getSystemService(RoleManager.class); + return userRoleManager.getDefaultHoldersForTest(role.getName()); } else { return null; } @@ -49,10 +53,37 @@ public class ReservedForTestingProfileGroupExclusivityRoleBehavior implements Ro @NonNull Context context) { if (RoleFlags.isProfileGroupExclusivityAvailable()) { Context userContext = UserUtils.getUserContext(context, user); - RoleManager roleManager = userContext.getSystemService(RoleManager.class); - return roleManager.isRoleVisibleForTest(role.getName()); + RoleManager userRoleManager = userContext.getSystemService(RoleManager.class); + return userRoleManager.isRoleVisibleForTest(role.getName()); } else { return false; } } + + @Nullable + @Override + public List<String> getQualifyingPackagesAsUser(@NonNull Role role, @NonNull UserHandle user, + @NonNull Context context) { + if (RoleFlags.isProfileGroupExclusivityAvailable()) { + Context userContext = UserUtils.getUserContext(context, user); + RoleManager userRoleManager = userContext.getSystemService(RoleManager.class); + List<String> qualifyingPackageNames = + userRoleManager.getDefaultHoldersForTest(role.getName()); + + // When getQualifyingPackagesAsUser returns a package that isn't installed, Default App + // Settings fails to load. Only return available packages. + List<String> availableQualifyingPackageNames = new ArrayList<>(); + for (int i = 0; i < qualifyingPackageNames.size(); i++) { + String qualifyingPackage = qualifyingPackageNames.get(i); + ApplicationInfo applicationInfo = + PackageUtils.getApplicationInfoAsUser(qualifyingPackage, user, context); + if (applicationInfo != null) { + availableQualifyingPackageNames.add(qualifyingPackage); + } + } + return availableQualifyingPackageNames; + } else { + return null; + } + } } diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/ScrollableScreen.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/ScrollableScreen.kt index d1b7e899b..6ce7df125 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/ScrollableScreen.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/ScrollableScreen.kt @@ -36,6 +36,7 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalContext @@ -220,6 +221,7 @@ internal fun Wear2Scaffold( if (isLoading) { CircularProgressIndicator(modifier = Modifier.align(Alignment.Center)) } else { + val iconColor = chipDefaultColors().iconColor(true).value ScalingLazyColumn( modifier = Modifier.fillMaxWidth(), state = listState, @@ -245,6 +247,7 @@ internal fun Wear2Scaffold( contentDescription = null, contentScale = ContentScale.Crop, modifier = imageModifier, + colorFilter = ColorFilter.tint(iconColor), ) } is Drawable -> @@ -254,6 +257,7 @@ internal fun Wear2Scaffold( contentDescription = null, contentScale = ContentScale.Crop, modifier = imageModifier, + colorFilter = ColorFilter.tint(iconColor), ) } else -> {} diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/ToggleChip.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/ToggleChip.kt index 4f4201748..2e89586c9 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/ToggleChip.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/ToggleChip.kt @@ -125,7 +125,12 @@ fun ToggleChip( ToggleChip( checked = checked, - onCheckedChange = onCheckedChanged, + onCheckedChange = { newChecked -> + // Radio buttons cannot be toggled off by tapping on it again. + if (toggleControl != ToggleChipToggleControl.Radio || newChecked) { + onCheckedChanged.invoke(newChecked) + } + }, label = labelParam, toggleControl = toggleControlParam, modifier = modifier.fillMaxWidth().toggleControlSemantics(toggleControl, checked), diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionButton.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionButton.kt index 1d660ca35..79a8963d8 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionButton.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionButton.kt @@ -22,6 +22,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.requiredSizeIn import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Shape import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.Hyphens import androidx.compose.ui.unit.Dp @@ -95,6 +96,7 @@ internal fun WearPermissionButtonInternal( colors: ButtonColors = ButtonDefaults.filledTonalButtonColors(), contentPadding: PaddingValues = ButtonDefaults.ContentPadding, requiresMinimumHeight: Boolean = true, + shape: Shape = ButtonDefaults.shape, ) { val minHeight: Dp = if (requiresMinimumHeight) { @@ -139,5 +141,6 @@ internal fun WearPermissionButtonInternal( modifier = modifier.requiredSizeIn(minHeight = minHeight).fillMaxWidth(), contentPadding = contentPadding, colors = colors, + shape = shape, ) } diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionListFooter.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionListFooter.kt index 10125c873..cd18b5b09 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionListFooter.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionListFooter.kt @@ -18,6 +18,7 @@ package com.android.permissioncontroller.permission.ui.wear.elements.material3 import androidx.compose.foundation.layout.PaddingValues import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.RectangleShape import androidx.compose.ui.unit.dp import androidx.wear.compose.material3.ButtonDefaults import com.android.permissioncontroller.permission.ui.wear.elements.ListFooter @@ -46,6 +47,7 @@ fun WearPermissionListFooter( contentPadding = PaddingValues(0.dp), colors = ButtonDefaults.childButtonColors(), requiresMinimumHeight = false, + shape = RectangleShape, ) } } diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionScaffold.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionScaffold.kt index bd7636273..9a926f5a3 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionScaffold.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionScaffold.kt @@ -27,6 +27,7 @@ import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalConfiguration @@ -248,11 +249,13 @@ private fun Modifier.optionalTestTag(tag: String?): Modifier { private fun ScalingLazyListScope.iconItem(painter: Painter?, modifier: Modifier = Modifier) = painter?.let { item { + val iconColor = WearPermissionButtonStyle.Secondary.material3ButtonColors().iconColor Image( painter = it, contentDescription = null, contentScale = ContentScale.Crop, modifier = modifier, + colorFilter = ColorFilter.tint(iconColor), ) } } diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionToggleControl.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionToggleControl.kt index 4a139f91f..9841ca521 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionToggleControl.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionToggleControl.kt @@ -129,7 +129,13 @@ private fun WearPermissionToggleControlInternal( ToggleChipToggleControl.Radio -> RadioButton( selected = checked, - onSelect = { onCheckedChanged(true) }, + onSelect = { + // We do not want to call if it is already checked. + // Radio button can't be toggled off + if (!checked) { + onCheckedChanged(true) + } + }, modifier = updatedModifier, enabled = enabled, icon = iconParam, diff --git a/PermissionController/src/com/android/permissioncontroller/role/TEST_MAPPING b/PermissionController/src/com/android/permissioncontroller/role/TEST_MAPPING index 46b148e68..93ad3d31b 100644 --- a/PermissionController/src/com/android/permissioncontroller/role/TEST_MAPPING +++ b/PermissionController/src/com/android/permissioncontroller/role/TEST_MAPPING @@ -46,6 +46,9 @@ "postsubmit": [ { "name": "CtsRoleTestCases" + }, + { + "name": "CtsRoleMultiUserTestCases" } ], "mainline-postsubmit": [ @@ -60,6 +63,9 @@ "exclude-filter": "android.app.role.cts.RoleManagerTest#removeSmsRoleHolderThenPermissionIsRevoked" } ] + }, + { + "name": "CtsRoleMultiUserTestCases[com.google.android.permission.apex]" } ] } diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppChildFragment.java b/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppChildFragment.java index 2f515f02c..400e1f162 100644 --- a/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppChildFragment.java +++ b/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppChildFragment.java @@ -69,6 +69,10 @@ public class DefaultAppChildFragment<PF extends PreferenceFragmentCompat + ".preference.DESCRIPTION"; private static final String PREFERENCE_KEY_OTHER_NFC_SERVICES = DefaultAppChildFragment.class.getName() + ".preference.OTHER_NFC_SERVICES"; + private static final String PREFERENCE_EXTRA_PACKAGE_NAME = + DefaultAppChildFragment.class.getName() + ".extra.PACKAGE_NAME"; + private static final String PREFERENCE_EXTRA_USER = DefaultAppChildFragment.class.getName() + + ".extra.USER"; @NonNull private String mRoleName; @@ -133,7 +137,6 @@ public class DefaultAppChildFragment<PF extends PreferenceFragmentCompat Context context = preferenceManager.getContext(); PreferenceScreen preferenceScreen = preferenceFragment.getPreferenceScreen(); - Preference oldDescriptionPreference = null; ArrayMap<String, Preference> oldPreferences = new ArrayMap<>(); if (preferenceScreen == null) { preferenceScreen = preferenceManager.createPreferenceScreen(context); @@ -162,7 +165,9 @@ public class DefaultAppChildFragment<PF extends PreferenceFragmentCompat ApplicationInfo qualifyingApplicationInfo = qualifyingApplication.first; boolean isHolderApplication = qualifyingApplication.second; - String key = qualifyingApplicationInfo.packageName; + int userId = + UserHandle.getUserHandleForUid(qualifyingApplicationInfo.uid).getIdentifier(); + String key = qualifyingApplicationInfo.packageName + "@" + userId; Drawable icon = Utils.getBadgedIcon(context, qualifyingApplicationInfo); String title = Utils.getFullAppLabel(qualifyingApplicationInfo, context); addPreference(key, icon, title, isHolderApplication, qualifyingApplicationInfo, @@ -205,6 +210,16 @@ public class DefaultAppChildFragment<PF extends PreferenceFragmentCompat preference.setPersistent(false); preference.setOnPreferenceChangeListener((preference2, newValue) -> false); preference.setOnPreferenceClickListener(this); + // In the cases we need this (see #onPreferenceClick()), this should never be null. + // This method (addPreference) is used for both legitimate apps and the `NONE` item, + // the `NONE` item passes a null applicationinfo object. NFC uses a different preference + // method for adding, and a different onclick method + if (applicationInfo != null) { + Bundle extras = preference.getExtras(); + extras.putString(PREFERENCE_EXTRA_PACKAGE_NAME, applicationInfo.packageName); + extras.putParcelable(PREFERENCE_EXTRA_USER, + UserHandle.getUserHandleForUid(applicationInfo.uid)); + } } else { preference = roleApplicationPreference.asTwoStatePreference(); } @@ -243,22 +258,26 @@ public class DefaultAppChildFragment<PF extends PreferenceFragmentCompat if (Objects.equals(key, PREFERENCE_KEY_NONE)) { mViewModel.setNoneDefaultApp(); } else { - String packageName = key; + String packageName = + preference.getExtras().getString(PREFERENCE_EXTRA_PACKAGE_NAME); + UserHandle user = + preference.getExtras().getParcelable(PREFERENCE_EXTRA_USER); CharSequence confirmationMessage = RoleUiBehaviorUtils.getConfirmationMessage(mRole, packageName, requireContext()); if (confirmationMessage != null) { - DefaultAppConfirmationDialogFragment.show(packageName, confirmationMessage, this); + DefaultAppConfirmationDialogFragment.show(packageName, user, confirmationMessage, + this); } else { - setDefaultApp(packageName); + setDefaultApp(packageName, user); } } return true; } @Override - public void setDefaultApp(@NonNull String packageName) { - mViewModel.setDefaultApp(packageName); + public void setDefaultApp(@NonNull String packageName, @NonNull UserHandle user) { + mViewModel.setDefaultApp(packageName, user); } private void addNonPaymentNfcServicesPreference(@NonNull PreferenceScreen preferenceScreen, diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppConfirmationDialogFragment.java b/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppConfirmationDialogFragment.java index 843854bf4..5f399a0b8 100644 --- a/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppConfirmationDialogFragment.java +++ b/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppConfirmationDialogFragment.java @@ -20,9 +20,11 @@ import android.app.AlertDialog; import android.app.Dialog; import android.content.Intent; import android.os.Bundle; +import android.os.UserHandle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.core.os.BundleCompat; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.Fragment; @@ -32,24 +34,27 @@ import androidx.fragment.app.Fragment; public class DefaultAppConfirmationDialogFragment extends DialogFragment { private String mPackageName; + private UserHandle mUser; private CharSequence mMessage; /** * Create a new instance of this fragment. * * @param packageName the package name of the application + * @param user the user the specified package is running in * @param message the confirmation message * * @return a new instance of this fragment * - * @see #show(String, CharSequence, Fragment) + * @see #show(String, UserHandle, CharSequence, Fragment) */ @NonNull public static DefaultAppConfirmationDialogFragment newInstance(@NonNull String packageName, - @NonNull CharSequence message) { + @NonNull UserHandle user, @NonNull CharSequence message) { DefaultAppConfirmationDialogFragment fragment = new DefaultAppConfirmationDialogFragment(); Bundle arguments = new Bundle(); arguments.putString(Intent.EXTRA_PACKAGE_NAME, packageName); + arguments.putParcelable(Intent.EXTRA_USER, user); arguments.putCharSequence(Intent.EXTRA_TEXT, message); fragment.setArguments(arguments); return fragment; @@ -59,14 +64,15 @@ public class DefaultAppConfirmationDialogFragment extends DialogFragment { * Show a new instance of this fragment. * * @param packageName the package name of the application + * @param user the user the specified package is running in * @param message the confirmation message * @param fragment the parent fragment * - * @see #newInstance(String, CharSequence) + * @see #newInstance(String, UserHandle, CharSequence) */ - public static void show(@NonNull String packageName, @NonNull CharSequence message, - @NonNull Fragment fragment) { - newInstance(packageName, message).show(fragment.getChildFragmentManager(), null); + public static void show(@NonNull String packageName, @NonNull UserHandle user, + @NonNull CharSequence message, @NonNull Fragment fragment) { + newInstance(packageName, user, message).show(fragment.getChildFragmentManager(), null); } @Override @@ -75,6 +81,7 @@ public class DefaultAppConfirmationDialogFragment extends DialogFragment { Bundle arguments = getArguments(); mPackageName = arguments.getString(Intent.EXTRA_PACKAGE_NAME); + mUser = BundleCompat.getParcelable(arguments, Intent.EXTRA_USER, UserHandle.class); mMessage = arguments.getCharSequence(Intent.EXTRA_TEXT); } @@ -90,7 +97,7 @@ public class DefaultAppConfirmationDialogFragment extends DialogFragment { private void onOk() { Listener listener = (Listener) getParentFragment(); - listener.setDefaultApp(mPackageName); + listener.setDefaultApp(mPackageName, mUser); } /** @@ -103,6 +110,6 @@ public class DefaultAppConfirmationDialogFragment extends DialogFragment { * * @param packageName the package name of the application */ - void setDefaultApp(@NonNull String packageName); + void setDefaultApp(@NonNull String packageName, @NonNull UserHandle user); } } diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppListViewModel.java b/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppListViewModel.java index 5bc25df54..82253ed00 100644 --- a/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppListViewModel.java +++ b/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppListViewModel.java @@ -30,8 +30,11 @@ import androidx.lifecycle.ViewModel; import com.android.permissioncontroller.permission.utils.Utils; import com.android.permissioncontroller.role.utils.UserUtils; +import com.android.role.controller.model.Role; +import com.android.role.controller.util.RoleFlags; import java.util.List; +import java.util.function.Predicate; /** * {@link ViewModel} for the list of default apps. @@ -55,12 +58,34 @@ public class DefaultAppListViewModel extends AndroidViewModel { super(application); mUser = Process.myUserHandle(); + RoleListLiveData liveData = new RoleListLiveData(true, mUser, application); RoleListSortFunction sortFunction = new RoleListSortFunction(application); - mLiveData = Transformations.map(new RoleListLiveData(true, mUser, application), - sortFunction); mWorkProfile = UserUtils.getWorkProfile(application); - mWorkLiveData = mWorkProfile != null ? Transformations.map(new RoleListLiveData(true, - mWorkProfile, application), sortFunction) : null; + if (RoleFlags.isProfileGroupExclusivityAvailable()) { + if (mWorkProfile != null) { + // Show profile group exclusive roles from work profile in primary group. + RoleListLiveData workLiveData = + new RoleListLiveData(true, mWorkProfile, application); + Predicate<RoleItem> exclusivityPredicate = roleItem -> + roleItem.getRole().getExclusivity() == Role.EXCLUSIVITY_PROFILE_GROUP; + mLiveData = Transformations.map( + new MergeRoleListLiveData(liveData, + Transformations.map(workLiveData, + new RoleListFilterFunction(exclusivityPredicate))), + sortFunction); + mWorkLiveData = Transformations.map( + Transformations.map(workLiveData, + new RoleListFilterFunction(exclusivityPredicate.negate())), + sortFunction); + } else { + mLiveData = Transformations.map(liveData, sortFunction); + mWorkLiveData = null; + } + } else { + mLiveData = Transformations.map(liveData, sortFunction); + mWorkLiveData = mWorkProfile != null ? Transformations.map( + new RoleListLiveData(true, mWorkProfile, application), sortFunction) : null; + } UserHandle privateProfile = UserUtils.getPrivateProfile(application); if (privateProfile != null && Utils.shouldShowInSettings( diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppViewModel.java b/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppViewModel.java index c89e1f71e..c982f44c6 100644 --- a/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppViewModel.java +++ b/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppViewModel.java @@ -30,6 +30,7 @@ import androidx.lifecycle.Transformations; import androidx.lifecycle.ViewModel; import androidx.lifecycle.ViewModelProvider; +import com.android.permissioncontroller.role.utils.UserUtils; import com.android.role.controller.model.Role; import java.util.List; @@ -58,10 +59,23 @@ public class DefaultAppViewModel extends AndroidViewModel { super(application); mRole = role; - mUser = user; - - mRoleLiveData = Transformations.map(new RoleLiveData(mRole, mUser, application), - new RoleSortFunction(application)); + mUser = mRole.getExclusivity() == Role.EXCLUSIVITY_PROFILE_GROUP + ? UserUtils.getProfileParentOrSelf(user, application) + : user; + RoleLiveData liveData = new RoleLiveData(mRole, mUser, application); + RoleSortFunction sortFunction = new RoleSortFunction(application); + if (mRole.getExclusivity() == Role.EXCLUSIVITY_PROFILE_GROUP) { + UserHandle workProfile = UserUtils.getWorkProfile(application); + if (workProfile != null) { + RoleLiveData workLiveData = new RoleLiveData(role, workProfile, application); + mRoleLiveData = Transformations.map(new MergeRoleLiveData(liveData, workLiveData), + sortFunction); + } else { + mRoleLiveData = Transformations.map(liveData, sortFunction); + } + } else { + mRoleLiveData = Transformations.map(liveData, sortFunction); + } } @NonNull @@ -79,13 +93,13 @@ public class DefaultAppViewModel extends AndroidViewModel { * * @param packageName the package name of the application */ - public void setDefaultApp(@NonNull String packageName) { + public void setDefaultApp(@NonNull String packageName, @NonNull UserHandle user) { if (mManageRoleHolderStateLiveData.getValue() != ManageRoleHolderStateLiveData.STATE_IDLE) { Log.i(LOG_TAG, "Trying to set default app while another request is on-going"); return; } mManageRoleHolderStateLiveData.setRoleHolderAsUser(mRole.getName(), packageName, true, 0, - mUser, getApplication()); + user, getApplication()); } /** diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/MergeRoleListLiveData.java b/PermissionController/src/com/android/permissioncontroller/role/ui/MergeRoleListLiveData.java index 0318800f4..0c2d96b2c 100644 --- a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/MergeRoleListLiveData.java +++ b/PermissionController/src/com/android/permissioncontroller/role/ui/MergeRoleListLiveData.java @@ -14,16 +14,14 @@ * limitations under the License. */ -package com.android.permissioncontroller.role.ui.specialappaccess; +package com.android.permissioncontroller.role.ui; import android.util.ArrayMap; import androidx.annotation.NonNull; +import androidx.lifecycle.LiveData; import androidx.lifecycle.MediatorLiveData; -import com.android.permissioncontroller.role.ui.RoleItem; -import com.android.permissioncontroller.role.ui.RoleListLiveData; - import java.util.ArrayList; import java.util.List; @@ -33,14 +31,14 @@ import java.util.List; public class MergeRoleListLiveData extends MediatorLiveData<List<RoleItem>> { @NonNull - private final RoleListLiveData[] mLiveDatas; + private final LiveData<List<RoleItem>>[] mLiveDatas; - public MergeRoleListLiveData(@NonNull RoleListLiveData... liveDatas) { + public MergeRoleListLiveData(@NonNull LiveData<List<RoleItem>>... liveDatas) { mLiveDatas = liveDatas; int liveDatasLength = mLiveDatas.length; for (int i = 0; i < liveDatasLength; i++) { - RoleListLiveData liveData = mLiveDatas[i]; + LiveData<List<RoleItem>> liveData = mLiveDatas[i]; addSource(liveData, roleItems -> onRoleListChanged()); } @@ -50,7 +48,7 @@ public class MergeRoleListLiveData extends MediatorLiveData<List<RoleItem>> { ArrayMap<String, RoleItem> mergedRoleItemMap = new ArrayMap<>(); int liveDatasLength = mLiveDatas.length; for (int liveDatasIndex = 0; liveDatasIndex < liveDatasLength; liveDatasIndex++) { - RoleListLiveData liveData = mLiveDatas[liveDatasIndex]; + LiveData<List<RoleItem>> liveData = mLiveDatas[liveDatasIndex]; List<RoleItem> roleItems = liveData.getValue(); if (roleItems == null) { diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/MergeRoleLiveData.java b/PermissionController/src/com/android/permissioncontroller/role/ui/MergeRoleLiveData.java index dab59a1ab..31a02729a 100644 --- a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/MergeRoleLiveData.java +++ b/PermissionController/src/com/android/permissioncontroller/role/ui/MergeRoleLiveData.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.permissioncontroller.role.ui.specialappaccess; +package com.android.permissioncontroller.role.ui; import android.content.pm.ApplicationInfo; import android.util.Pair; @@ -22,8 +22,6 @@ import android.util.Pair; import androidx.annotation.NonNull; import androidx.lifecycle.MediatorLiveData; -import com.android.permissioncontroller.role.ui.RoleLiveData; - import java.util.ArrayList; import java.util.List; diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/RoleListFilterFunction.java b/PermissionController/src/com/android/permissioncontroller/role/ui/RoleListFilterFunction.java new file mode 100644 index 000000000..b84fa80b9 --- /dev/null +++ b/PermissionController/src/com/android/permissioncontroller/role/ui/RoleListFilterFunction.java @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.permissioncontroller.role.ui; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import kotlin.jvm.functions.Function1; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Predicate; + +/** + * A function for {@link androidx.lifecycle#map(androidx.lifecycle.LiveData, Function1)} + * that filters a live data for role list. + */ +public class RoleListFilterFunction implements Function1<List<RoleItem>, List<RoleItem>> { + private final Predicate<RoleItem> mPredicate; + + public RoleListFilterFunction(@NonNull Predicate<RoleItem> predicate) { + mPredicate = predicate; + } + + @NonNull + @Override + public List<RoleItem> invoke(@Nullable List<RoleItem> roleItems) { + List<RoleItem> filteredRoleItems = new ArrayList<>(); + if (roleItems != null) { + int roleItemsSize = roleItems.size(); + for (int i = 0; i < roleItemsSize; i++) { + RoleItem roleItem = roleItems.get(i); + if (mPredicate.test(roleItem)) { + filteredRoleItems.add(roleItem); + } + } + } + return filteredRoleItems; + } +} diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/behavior/ReservedForTestingProfileGroupExclusivityRoleUiBehavior.java b/PermissionController/src/com/android/permissioncontroller/role/ui/behavior/ReservedForTestingProfileGroupExclusivityRoleUiBehavior.java new file mode 100644 index 000000000..abc89edab --- /dev/null +++ b/PermissionController/src/com/android/permissioncontroller/role/ui/behavior/ReservedForTestingProfileGroupExclusivityRoleUiBehavior.java @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.permissioncontroller.role.ui.behavior; + +import android.content.Context; +import android.content.pm.ApplicationInfo; +import android.os.UserHandle; + +import androidx.annotation.NonNull; +import androidx.preference.Preference; + +import com.android.permissioncontroller.permission.utils.Utils; +import com.android.permissioncontroller.role.ui.TwoTargetPreference; +import com.android.role.controller.model.Role; +import com.android.role.controller.util.UserUtils; + +import java.util.List; + +public class ReservedForTestingProfileGroupExclusivityRoleUiBehavior implements RoleUiBehavior { + @Override + public void preparePreferenceAsUser(@NonNull Role role, @NonNull TwoTargetPreference preference, + @NonNull List<ApplicationInfo> applicationInfos, @NonNull UserHandle user, + @NonNull Context context) { + Context userContext = UserUtils.getUserContext(context, user); + if (!applicationInfos.isEmpty()) { + preparePreferenceInternal(preference.asPreference(), applicationInfos.get(0), + false, userContext); + } + } + + @Override + public void prepareApplicationPreferenceAsUser(@NonNull Role role, + @NonNull Preference preference, @NonNull ApplicationInfo applicationInfo, + @NonNull UserHandle user, @NonNull Context context) { + Context userContext = UserUtils.getUserContext(context, user); + preparePreferenceInternal(preference, applicationInfo, true, userContext); + } + + private void preparePreferenceInternal(@NonNull Preference preference, + @NonNull ApplicationInfo applicationInfo, boolean setTitle, @NonNull Context context) { + String title = Utils.getFullAppLabel(applicationInfo, context) + "@" + + UserHandle.getUserHandleForUid(applicationInfo.uid).getIdentifier(); + if (setTitle) { + preference.setTitle(title); + } else { + preference.setSummary(title); + } + } +} diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessListViewModel.java b/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessListViewModel.java index ee5a0dbbd..e96fb0943 100644 --- a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessListViewModel.java +++ b/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessListViewModel.java @@ -26,6 +26,7 @@ import androidx.lifecycle.LiveData; import androidx.lifecycle.Transformations; import androidx.lifecycle.ViewModel; +import com.android.permissioncontroller.role.ui.MergeRoleListLiveData; import com.android.permissioncontroller.role.ui.RoleItem; import com.android.permissioncontroller.role.ui.RoleListLiveData; import com.android.permissioncontroller.role.ui.RoleListSortFunction; diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessViewModel.java b/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessViewModel.java index 0cc00abc1..c12265d43 100644 --- a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessViewModel.java +++ b/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessViewModel.java @@ -33,6 +33,7 @@ import androidx.lifecycle.ViewModel; import androidx.lifecycle.ViewModelProvider; import com.android.permissioncontroller.role.ui.ManageRoleHolderStateLiveData; +import com.android.permissioncontroller.role.ui.MergeRoleLiveData; import com.android.permissioncontroller.role.ui.RoleLiveData; import com.android.permissioncontroller.role.ui.RoleSortFunction; import com.android.permissioncontroller.role.utils.UserUtils; diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/wear/WearDefaultAppHelper.kt b/PermissionController/src/com/android/permissioncontroller/role/ui/wear/WearDefaultAppHelper.kt index a47719cf7..610745674 100644 --- a/PermissionController/src/com/android/permissioncontroller/role/ui/wear/WearDefaultAppHelper.kt +++ b/PermissionController/src/com/android/permissioncontroller/role/ui/wear/WearDefaultAppHelper.kt @@ -34,7 +34,7 @@ class WearDefaultAppHelper( val user: UserHandle, val role: Role, val viewModel: DefaultAppViewModel, - val confirmDialogViewModel: DefaultAppConfirmDialogViewModel + val confirmDialogViewModel: DefaultAppConfirmDialogViewModel, ) { fun getTitle() = context.getString(role.labelResource) @@ -46,7 +46,7 @@ class WearDefaultAppHelper( context = context, defaultLabel = context.getString(R.string.default_app_none), checked = !hasHolderApplication(qualifyingApplications), - onDefaultCheckChanged = { _ -> viewModel.setNoneDefaultApp() } + onDefaultCheckChanged = { _ -> viewModel.setNoneDefaultApp() }, ) .apply { icon = context.getDrawable(R.drawable.ic_remove_circle) } } else { @@ -67,19 +67,24 @@ class WearDefaultAppHelper( onDefaultCheckChanged = { _ -> run { val packageName = appInfo.packageName + val user = UserHandle.getUserHandleForUid(appInfo.uid) val confirmationMessage = RoleUiBehaviorUtils.getConfirmationMessage( role, packageName, - context + context, ) if (confirmationMessage != null) { - showConfirmDialog(packageName, confirmationMessage.toString()) + showConfirmDialog( + packageName, + user, + confirmationMessage.toString(), + ) } else { - setDefaultApp(packageName) + setDefaultApp(packageName, user) } } - } + }, ) .apply { icon = appInfo.loadIcon(context.packageManager) @@ -91,22 +96,22 @@ class WearDefaultAppHelper( this, appInfo, user, - context + context, ) } } .toList() } - private fun showConfirmDialog(packageName: String, message: String) { + private fun showConfirmDialog(packageName: String, userHandle: UserHandle, message: String) { confirmDialogViewModel.confirmDialogArgs = ConfirmDialogArgs( message = message, onOkButtonClick = { - setDefaultApp(packageName) + setDefaultApp(packageName, userHandle) dismissConfirmDialog() }, - onCancelButtonClick = { dismissConfirmDialog() } + onCancelButtonClick = { dismissConfirmDialog() }, ) confirmDialogViewModel.showConfirmDialogLiveData.value = true } @@ -116,8 +121,8 @@ class WearDefaultAppHelper( confirmDialogViewModel.showConfirmDialogLiveData.value = false } - private fun setDefaultApp(packageName: String) { - viewModel.setDefaultApp(packageName) + private fun setDefaultApp(packageName: String, user: UserHandle) { + viewModel.setDefaultApp(packageName, user) } fun getDescription() = context.getString(role.descriptionResource) diff --git a/PermissionController/src/com/android/permissioncontroller/role/utils/UserUtils.java b/PermissionController/src/com/android/permissioncontroller/role/utils/UserUtils.java index 339b2a12a..f3ae21578 100644 --- a/PermissionController/src/com/android/permissioncontroller/role/utils/UserUtils.java +++ b/PermissionController/src/com/android/permissioncontroller/role/utils/UserUtils.java @@ -37,6 +37,16 @@ public class UserUtils { private UserUtils() {} /** + * Returns the parent of a given user, or user if it has no parent (e.g. it is the primary + * user) + */ + @NonNull + public static UserHandle getProfileParentOrSelf(@NonNull UserHandle user, + @NonNull Context context) { + return com.android.role.controller.util.UserUtils.getProfileParentOrSelf(user, context); + } + + /** * Get the work profile of current user, if any. * * @param context the {@code Context} to retrieve system services diff --git a/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/permission/domain/usecase/GetPermissionGroupUsageDetailsUseCaseTest.kt b/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/permission/domain/usecase/GetPermissionGroupUsageDetailsUseCaseTest.kt index e6a1c15c2..cb36de2b1 100644 --- a/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/permission/domain/usecase/GetPermissionGroupUsageDetailsUseCaseTest.kt +++ b/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/permission/domain/usecase/GetPermissionGroupUsageDetailsUseCaseTest.kt @@ -75,7 +75,7 @@ class GetPermissionGroupUsageDetailsUseCaseTest { private var mockitoSession: MockitoSession? = null private lateinit var packageInfos: MutableMap<String, PackageInfoModel> - private val currentUser = android.os.Process.myUserHandle() + private val currentUser = UserHandle.of(0) private val privateProfile = UserHandle.of(10) private val guestUser = UserHandle.of(20) diff --git a/PermissionController/tests/permissionui/Android.bp b/PermissionController/tests/permissionui/Android.bp index 6e1839d1d..5f177f40c 100644 --- a/PermissionController/tests/permissionui/Android.bp +++ b/PermissionController/tests/permissionui/Android.bp @@ -47,7 +47,7 @@ android_test { "androidx.test.ext.truth", "androidx.test.rules", "androidx.test.uiautomator_uiautomator", - "com.android.permission.flags-aconfig-java", + "com.android.permission.flags-aconfig-java-export", "compatibility-device-util-axt", "flag-junit", "permission-test-util-lib", diff --git a/framework-s/api/system-current.txt b/framework-s/api/system-current.txt index 025378e09..212996b24 100644 --- a/framework-s/api/system-current.txt +++ b/framework-s/api/system-current.txt @@ -54,7 +54,7 @@ package android.app.role { method @FlaggedApi("com.android.permission.flags.cross_user_role_enabled") @RequiresPermission(allOf={android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, android.Manifest.permission.MANAGE_ROLE_HOLDERS, android.Manifest.permission.MANAGE_DEFAULT_APPLICATIONS}, conditional=true) public void setActiveUserForRole(@NonNull String, @NonNull android.os.UserHandle, int); method @RequiresPermission(android.Manifest.permission.BYPASS_ROLE_QUALIFICATION) public void setBypassingRoleQualification(boolean); method @RequiresPermission(android.Manifest.permission.MANAGE_DEFAULT_APPLICATIONS) public void setDefaultApplication(@NonNull String, @Nullable String, int, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>); - method @FlaggedApi("com.android.permission.flags.cross_user_role_enabled") @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void setDefaultHoldersForTest(@NonNull String, @Nullable java.util.List<java.lang.String>); + method @FlaggedApi("com.android.permission.flags.cross_user_role_enabled") @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void setDefaultHoldersForTest(@NonNull String, @NonNull java.util.List<java.lang.String>); method @FlaggedApi("android.permission.flags.system_server_role_controller_enabled") @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void setRoleFallbackEnabled(@NonNull String, boolean); method @Deprecated @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public void setRoleNamesFromController(@NonNull java.util.List<java.lang.String>); method @FlaggedApi("com.android.permission.flags.cross_user_role_enabled") @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void setRoleVisibleForTest(@NonNull String, boolean); diff --git a/framework-s/java/android/app/role/IRoleManager.aidl b/framework-s/java/android/app/role/IRoleManager.aidl index dc5bc8cb4..cf98a6016 100644 --- a/framework-s/java/android/app/role/IRoleManager.aidl +++ b/framework-s/java/android/app/role/IRoleManager.aidl @@ -85,11 +85,12 @@ interface IRoleManager { boolean isApplicationVisibleForRoleAsUser(in String roleName, in String packageName, int userId); - List<String> getDefaultHoldersForTest(in String roleName); + List<String> getDefaultHoldersForTestAsUser(in String roleName, int userId); - void setDefaultHoldersForTest(in String roleName, in List<String> packageNames); + void setDefaultHoldersForTestAsUser(in String roleName, in List<String> packageNames, + int userId); - boolean isRoleVisibleForTest(in String roleName); + boolean isRoleVisibleForTestAsUser(in String roleName, int userId); - void setRoleVisibleForTest(in String roleName, boolean visible); + void setRoleVisibleForTestAsUser(in String roleName, boolean visible, int userId); } diff --git a/framework-s/java/android/app/role/RoleManager.java b/framework-s/java/android/app/role/RoleManager.java index 8e7eba283..70bcfbf36 100644 --- a/framework-s/java/android/app/role/RoleManager.java +++ b/framework-s/java/android/app/role/RoleManager.java @@ -1202,7 +1202,8 @@ public final class RoleManager { public List<String> getDefaultHoldersForTest(@NonNull String roleName) { Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty"); try { - return mService.getDefaultHoldersForTest(roleName); + return mService.getDefaultHoldersForTestAsUser(roleName, + mContext.getUser().getIdentifier()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -1216,9 +1217,10 @@ public final class RoleManager { * not persisted. * <p> * Throws {@link IllegalArgumentException} if role is not a test role + * Throws {@link NullPointerException} if packageNames is {@code null} * * @param roleName the name of the role to set test default holders for - * @param packageNames a list of package names of the default holders or {@code null} to unset + * @param packageNames a list of package names of the default holders, or an empty list to unset * * @hide */ @@ -1228,10 +1230,12 @@ public final class RoleManager { @UserHandleAware @FlaggedApi(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) public void setDefaultHoldersForTest( - @NonNull String roleName, @Nullable List<String> packageNames) { + @NonNull String roleName, @NonNull List<String> packageNames) { Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty"); + Objects.requireNonNull(packageNames, "packageNames cannot be null"); try { - mService.setDefaultHoldersForTest(roleName, packageNames); + mService.setDefaultHoldersForTestAsUser(roleName, packageNames, + mContext.getUser().getIdentifier()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -1258,7 +1262,8 @@ public final class RoleManager { public boolean isRoleVisibleForTest(@NonNull String roleName) { Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty"); try { - return mService.isRoleVisibleForTest(roleName); + return mService.isRoleVisibleForTestAsUser(roleName, + mContext.getUser().getIdentifier()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -1285,7 +1290,8 @@ public final class RoleManager { public void setRoleVisibleForTest(@NonNull String roleName, boolean visible) { Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty"); try { - mService.setRoleVisibleForTest(roleName, visible); + mService.setRoleVisibleForTestAsUser(roleName, visible, + mContext.getUser().getIdentifier()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } diff --git a/service/java/com/android/role/RoleService.java b/service/java/com/android/role/RoleService.java index 0fea33899..deb0cf3b0 100644 --- a/service/java/com/android/role/RoleService.java +++ b/service/java/com/android/role/RoleService.java @@ -16,8 +16,6 @@ package com.android.role; -import static android.app.role.RoleManager.ROLE_RESERVED_FOR_TESTING_PROFILE_GROUP_EXCLUSIVITY; - import android.Manifest; import android.annotation.AnyThread; import android.annotation.MainThread; @@ -52,7 +50,6 @@ import android.permission.flags.Flags; import android.permission.internal.compat.UserHandleCompat; import android.provider.Settings; import android.text.TextUtils; -import android.util.ArrayMap; import android.util.ArraySet; import android.util.IndentingPrintWriter; import android.util.Log; @@ -125,7 +122,8 @@ public class RoleService extends SystemService implements RoleUserState.Callback defaultApplicationRoles.add(RoleManager.ROLE_WALLET); } if (RoleFlags.isProfileGroupExclusivityAvailable()) { - defaultApplicationRoles.add(ROLE_RESERVED_FOR_TESTING_PROFILE_GROUP_EXCLUSIVITY); + defaultApplicationRoles.add( + RoleManager.ROLE_RESERVED_FOR_TESTING_PROFILE_GROUP_EXCLUSIVITY); } DEFAULT_APPLICATION_ROLES = defaultApplicationRoles.toArray(new String[0]); } @@ -134,7 +132,8 @@ public class RoleService extends SystemService implements RoleUserState.Callback static { if (RoleFlags.isProfileGroupExclusivityAvailable()) { - TEST_ROLES = new String[] {ROLE_RESERVED_FOR_TESTING_PROFILE_GROUP_EXCLUSIVITY}; + TEST_ROLES = + new String[] {RoleManager.ROLE_RESERVED_FOR_TESTING_PROFILE_GROUP_EXCLUSIVITY}; } else { TEST_ROLES = new String[0]; } @@ -185,14 +184,6 @@ public class RoleService extends SystemService implements RoleUserState.Callback private final SparseArray<ThrottledRunnable> mGrantDefaultRolesThrottledRunnables = new SparseArray<>(); - @GuardedBy("mLock") - @NonNull - private final Map<String, List<String>> mDefaultHoldersForTest = new ArrayMap<>(); - - @GuardedBy("mLock") - @NonNull - private final Set<String> mRolesVisibleForTest = new ArraySet<>(); - public RoleService(@NonNull Context context) { super(context); @@ -1192,8 +1183,10 @@ public class RoleService extends SystemService implements RoleUserState.Callback return getOrCreateController(userId).isApplicationVisibleForRole(roleName, packageName); } + @NonNull @Override - public List<String> getDefaultHoldersForTest(String roleName) { + public List<String> getDefaultHoldersForTestAsUser(@NonNull String roleName, + @UserIdInt int userId) { Preconditions.checkState(RoleFlags.isProfileGroupExclusivityAvailable(), "getDefaultHoldersForTest not available"); getContext().enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ROLE_HOLDERS, @@ -1201,31 +1194,25 @@ public class RoleService extends SystemService implements RoleUserState.Callback Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty"); Preconditions.checkArgumentIsSupported(TEST_ROLES, roleName); - synchronized (mLock) { - return mDefaultHoldersForTest.getOrDefault(roleName, Collections.emptyList()); - } + return getOrCreateUserState(userId).getDefaultHoldersForTest(roleName); } @Override - public void setDefaultHoldersForTest(String roleName, List<String> packageNames) { + public void setDefaultHoldersForTestAsUser(@NonNull String roleName, + @NonNull List<String> packageNames, @UserIdInt int userId) { Preconditions.checkState(RoleFlags.isProfileGroupExclusivityAvailable(), "setDefaultHoldersForTest not available"); getContext().enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ROLE_HOLDERS, "setDefaultHoldersForTest"); Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty"); Preconditions.checkArgumentIsSupported(TEST_ROLES, roleName); + Objects.requireNonNull(packageNames, "packageNames cannot be null"); - synchronized (mLock) { - if (packageNames == null || packageNames.isEmpty()) { - mDefaultHoldersForTest.remove(roleName); - } else { - mDefaultHoldersForTest.put(roleName, packageNames); - } - } + getOrCreateUserState(userId).setDefaultHoldersForTest(roleName, packageNames); } @Override - public boolean isRoleVisibleForTest(String roleName) { + public boolean isRoleVisibleForTestAsUser(@NonNull String roleName, @UserIdInt int userId) { Preconditions.checkState(RoleFlags.isProfileGroupExclusivityAvailable(), "isRoleVisibleForTest not available"); getContext().enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ROLE_HOLDERS, @@ -1233,13 +1220,12 @@ public class RoleService extends SystemService implements RoleUserState.Callback Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty"); Preconditions.checkArgumentIsSupported(TEST_ROLES, roleName); - synchronized (mLock) { - return mRolesVisibleForTest.contains(roleName); - } + return getOrCreateUserState(userId).isRoleVisibleForTest(roleName); } @Override - public void setRoleVisibleForTest(String roleName, boolean visible) { + public void setRoleVisibleForTestAsUser(@NonNull String roleName, boolean visible, + @UserIdInt int userId) { Preconditions.checkState(RoleFlags.isProfileGroupExclusivityAvailable(), "setRoleVisibleForTest not available"); getContext().enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ROLE_HOLDERS, @@ -1247,13 +1233,7 @@ public class RoleService extends SystemService implements RoleUserState.Callback Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty"); Preconditions.checkArgumentIsSupported(TEST_ROLES, roleName); - synchronized (mLock) { - if (visible) { - mRolesVisibleForTest.add(roleName); - } else { - mRolesVisibleForTest.remove(roleName); - } - } + getOrCreateUserState(userId).setRoleVisibleForTest(roleName, visible); } @Override diff --git a/service/java/com/android/role/RoleUserState.java b/service/java/com/android/role/RoleUserState.java index c94b58826..7f59f1385 100644 --- a/service/java/com/android/role/RoleUserState.java +++ b/service/java/com/android/role/RoleUserState.java @@ -102,6 +102,14 @@ class RoleUserState { private ArrayMap<String, Integer> mActiveUserIds = new ArrayMap<>(); @GuardedBy("mLock") + @NonNull + private final Map<String, List<String>> mDefaultHoldersForTest = new ArrayMap<>(); + + @GuardedBy("mLock") + @NonNull + private final Set<String> mRolesVisibleForTest = new ArraySet<>(); + + @GuardedBy("mLock") private boolean mWriteScheduled; @GuardedBy("mLock") @@ -464,6 +472,36 @@ class RoleUserState { } } + @NonNull + public List<String> getDefaultHoldersForTest(@NonNull String roleName) { + synchronized (mLock) { + return mDefaultHoldersForTest.getOrDefault(roleName, Collections.emptyList()); + } + } + + public void setDefaultHoldersForTest(@NonNull String roleName, + @NonNull List<String> packageNames) { + synchronized (mLock) { + mDefaultHoldersForTest.put(roleName, packageNames); + } + } + + public boolean isRoleVisibleForTest(@NonNull String roleName) { + synchronized (mLock) { + return mRolesVisibleForTest.contains(roleName); + } + } + + public void setRoleVisibleForTest(@NonNull String roleName, boolean visible) { + synchronized (mLock) { + if (visible) { + mRolesVisibleForTest.add(roleName); + } else { + mRolesVisibleForTest.remove(roleName); + } + } + } + /** * Schedule writing the state to file. */ diff --git a/tests/cts/permission/permissionTestUtilLib/src/android/permission/cts/PermissionUtils.java b/tests/cts/permission/permissionTestUtilLib/src/android/permission/cts/PermissionUtils.java index 29e97be51..aabdd8565 100644 --- a/tests/cts/permission/permissionTestUtilLib/src/android/permission/cts/PermissionUtils.java +++ b/tests/cts/permission/permissionTestUtilLib/src/android/permission/cts/PermissionUtils.java @@ -103,12 +103,23 @@ public class PermissionUtils { * @param apkFile The apk to install */ public static void install(@NonNull String apkFile) { + install(apkFile, false); + } + + /** + * Install an APK. + * + * @param apkFile The apk to install + * @param grantPermissions whether to grant requested runtime permissions + */ + public static void install(@NonNull String apkFile, boolean grantPermissions) { final int sdkVersion = Build.VERSION.SDK_INT + (Build.VERSION.RELEASE_OR_CODENAME.equals("REL") ? 0 : 1); boolean forceQueryable = sdkVersion > Build.VERSION_CODES.Q; runShellCommandOrThrow("pm install -r --force-sdk " + (SdkLevel.isAtLeastU() ? "--bypass-low-target-sdk-block " : "") + (forceQueryable ? "--force-queryable " : "") + + (grantPermissions ? "-g " : "") + apkFile); } diff --git a/tests/cts/permission/src/android/permission/cts/SplitPermissionTest.java b/tests/cts/permission/src/android/permission/cts/SplitPermissionTest.java index a509b3bfe..eda5346f7 100644 --- a/tests/cts/permission/src/android/permission/cts/SplitPermissionTest.java +++ b/tests/cts/permission/src/android/permission/cts/SplitPermissionTest.java @@ -27,6 +27,7 @@ import static android.permission.cts.PermissionUtils.getAppOp; import static android.permission.cts.PermissionUtils.getPermissionFlags; import static android.permission.cts.PermissionUtils.getPermissions; import static android.permission.cts.PermissionUtils.grantPermission; +import static android.permission.cts.PermissionUtils.install; import static android.permission.cts.PermissionUtils.isGranted; import static android.permission.cts.PermissionUtils.revokePermission; import static android.permission.cts.PermissionUtils.setPermissionFlags; @@ -139,15 +140,6 @@ public class SplitPermissionTest { assertWithMessage(permName + " is granted").that(isGranted(APP_PKG, permName)).isFalse(); } - /** - * Install an APK. - * - * @param apkFile The apk to install - */ - public void install(@NonNull String apkFile) { - PermissionUtils.install(apkFile); - } - @After public void uninstallTestApp() { uninstallApp(APP_PKG); @@ -173,7 +165,7 @@ public class SplitPermissionTest { */ @Test public void permissionsDoNotSplitWithHighTargetSDKPreM() throws Exception { - install(APK_CONTACTS_16); + install(APK_CONTACTS_16, true); assertRequestsPermission(READ_CONTACTS); assertNotRequestsPermission(READ_CALL_LOG); @@ -197,7 +189,7 @@ public class SplitPermissionTest { */ @Test public void permissionsSplitWithLowTargetSDKPreM() throws Exception { - install(APK_CONTACTS_15); + install(APK_CONTACTS_15, true); assertRequestsPermission(READ_CONTACTS); assertRequestsPermission(READ_CALL_LOG); @@ -218,7 +210,7 @@ public class SplitPermissionTest { */ @Test public void nonInheritedStateHighLowTargetSDKPreM() throws Exception { - install(APK_CONTACTS_15); + install(APK_CONTACTS_15, true); assertPermissionGranted(READ_CONTACTS); } @@ -245,7 +237,7 @@ public class SplitPermissionTest { Assume.assumeTrue("Secondary users have the DISALLOW_OUTGOING_CALLS user restriction", UserHandle.SYSTEM.equals(Process.myUserHandle())); - install(APK_CONTACTS_15); + install(APK_CONTACTS_15, true); assertPermissionGranted(READ_CONTACTS); assertPermissionGranted(READ_CALL_LOG); @@ -256,7 +248,7 @@ public class SplitPermissionTest { */ @Test public void backgroundLocationPermissionDefaultGrantPreM() throws Exception { - install(APK_LOCATION_22); + install(APK_LOCATION_22, true); assertPermissionGranted(ACCESS_COARSE_LOCATION); assertPermissionGranted(ACCESS_BACKGROUND_LOCATION); @@ -304,7 +296,7 @@ public class SplitPermissionTest { @MtsIgnore(bugId = 152580253) @Test public void inheritFlagsPreM() { - install(APK_CONTACTS_16); + install(APK_CONTACTS_16, true); setPermissionFlags(APP_PKG, READ_CONTACTS, FLAG_PERMISSION_USER_SET, FLAG_PERMISSION_USER_SET); @@ -344,7 +336,7 @@ public class SplitPermissionTest { Assume.assumeTrue("Secondary users have the DISALLOW_OUTGOING_CALLS user restriction", UserHandle.SYSTEM.equals(Process.myUserHandle())); - install(APK_CONTACTS_16); + install(APK_CONTACTS_16, true); install(APK_CONTACTS_15); @@ -374,7 +366,7 @@ public class SplitPermissionTest { */ @Test public void inheritRevokedPermissionStatePreM() throws Exception { - install(APK_CONTACTS_16); + install(APK_CONTACTS_16, true); revokePermission(APP_PKG, READ_CONTACTS); install(APK_CONTACTS_15); @@ -415,7 +407,7 @@ public class SplitPermissionTest { Assume.assumeTrue("Secondary users have the DISALLOW_OUTGOING_CALLS user restriction", UserHandle.SYSTEM.equals(Process.myUserHandle())); - install(APK_CONTACTS_15); + install(APK_CONTACTS_15, true); revokePermission(APP_PKG, READ_CONTACTS); grantPermission(APP_PKG, READ_CALL_LOG); @@ -446,7 +438,7 @@ public class SplitPermissionTest { */ @Test public void revokeNewSplitPermissionStatePreM() throws Exception { - install(APK_CONTACTS_15); + install(APK_CONTACTS_15, true); revokePermission(APP_PKG, READ_CALL_LOG); @@ -521,7 +513,7 @@ public class SplitPermissionTest { Assume.assumeTrue("Secondary users have the DISALLOW_OUTGOING_CALLS user restriction", UserHandle.SYSTEM.equals(Process.myUserHandle())); - install(APK_CONTACTS_15); + install(APK_CONTACTS_15, true); install(APK_CONTACTS_CALLLOG_16); @@ -548,7 +540,7 @@ public class SplitPermissionTest { */ @Test public void oldPermissionStaysGrantedOnUpgradePreM() throws Exception { - install(APK_CONTACTS_15); + install(APK_CONTACTS_15, true); install(APK_CONTACTS_CALLLOG_16); @@ -574,7 +566,7 @@ public class SplitPermissionTest { */ @Test public void oldPermissionStaysRevokedOnUpgradePreM() throws Exception { - install(APK_CONTACTS_15); + install(APK_CONTACTS_15, true); revokePermission(APP_PKG, READ_CONTACTS); install(APK_CONTACTS_CALLLOG_16); diff --git a/tests/cts/permissionpolicy/res/raw/android_manifest.xml b/tests/cts/permissionpolicy/res/raw/android_manifest.xml index 6f3c4b447..4e3b1fd3a 100644 --- a/tests/cts/permissionpolicy/res/raw/android_manifest.xml +++ b/tests/cts/permissionpolicy/res/raw/android_manifest.xml @@ -4339,11 +4339,11 @@ <permission android:name="android.permission.REQUEST_COMPANION_PROFILE_GLASSES" android:protectionLevel="normal" /> - <!-- Allows application to request to be associated with a virtual display capable of streaming + <!-- Allows application to request to be associated with a virtual device capable of streaming Android applications ({@link android.companion.AssociationRequest#DEVICE_PROFILE_APP_STREAMING}) by {@link android.companion.CompanionDeviceManager}. - <p>Not for use by third-party applications. + <p>Not for use by third-party applications. --> <permission android:name="android.permission.REQUEST_COMPANION_PROFILE_APP_STREAMING" android:protectionLevel="signature|privileged" /> @@ -4351,16 +4351,26 @@ <!-- Allows application to request to stream content from an Android host to a nearby device ({@link android.companion.AssociationRequest#DEVICE_PROFILE_NEARBY_DEVICE_STREAMING}) by {@link android.companion.CompanionDeviceManager}. - <p>Not for use by third-party applications. + <p>Not for use by third-party applications. --> <permission android:name="android.permission.REQUEST_COMPANION_PROFILE_NEARBY_DEVICE_STREAMING" android:protectionLevel="signature|privileged" /> + <!-- Allows application to request to stream sensor data such as camera, audio and IMU between + an Android host and a nearby device + ({@link android.companion.AssociationRequest#DEVICE_PROFILE_SENSOR_DEVICE_STREAMING}) + by {@link android.companion.CompanionDeviceManager}. + <p>Not for use by third-party applications. + --> + <permission android:name="android.permission.REQUEST_COMPANION_PROFILE_SENSOR_DEVICE_STREAMING" + android:protectionLevel="signature|privileged" + android:featureFlag="android.companion.virtualdevice.flags.enable_limited_vdm_role"/> + <!-- Allows application to request to be associated with a vehicle head unit capable of automotive projection ({@link android.companion.AssociationRequest#DEVICE_PROFILE_AUTOMOTIVE_PROJECTION}) by {@link android.companion.CompanionDeviceManager}. - <p>Not for use by third-party applications. + <p>Not for use by third-party applications. --> <permission android:name="android.permission.REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION" android:protectionLevel="internal|role" /> @@ -4369,7 +4379,7 @@ and/or data with other devices, such as notifications, photos and media ({@link android.companion.AssociationRequest#DEVICE_PROFILE_COMPUTER}) by {@link android.companion.CompanionDeviceManager}. - <p>Not for use by third-party applications. + <p>Not for use by third-party applications. --> <permission android:name="android.permission.REQUEST_COMPANION_PROFILE_COMPUTER" android:protectionLevel="signature|privileged" /> @@ -5441,12 +5451,23 @@ <permission android:name="android.permission.BIND_VISUAL_QUERY_DETECTION_SERVICE" android:protectionLevel="signature" /> - <!-- Allows an application to subscribe to keyguard locked (i.e., showing) state. - <p>Protection level: signature|role - <p>Intended for use by ROLE_ASSISTANT and signature apps only. + <!-- Allows an application to subscribe to device locked and keyguard locked (i.e., showing) + state. + <p>Protection level: signature|module|role + <p>Intended for use by ROLE_ASSISTANT, VDM, and signature apps only. + --> + <permission android:name="android.permission.SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE" + android:protectionLevel="signature|module|role" + android:featureFlag="!android.security.subscribe_to_keyguard_locked_state_perm_priv_flag"/> + + <!-- Allows an application to subscribe to device locked and keyguard locked (i.e., showing) + state. + <p>Protection level: signature|module|role|privileged + <p>Intended for use by ROLE_ASSISTANT, VDM, and signature / privileged apps only. --> <permission android:name="android.permission.SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE" - android:protectionLevel="signature|module|role"/> + android:protectionLevel="signature|module|role|privileged" + android:featureFlag="android.security.subscribe_to_keyguard_locked_state_perm_priv_flag"/> <!-- Must be required by a {@link android.service.autofill.AutofillService}, to ensure that only the system can bind to it. diff --git a/tests/cts/permissionpolicy/res/raw/automotive_android_manifest.xml b/tests/cts/permissionpolicy/res/raw/automotive_android_manifest.xml index 9114a1ecd..2b40d3ed7 100644 --- a/tests/cts/permissionpolicy/res/raw/automotive_android_manifest.xml +++ b/tests/cts/permissionpolicy/res/raw/automotive_android_manifest.xml @@ -80,6 +80,12 @@ android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_control_car_seats" android:description="@string/car_permission_desc_control_car_seats"/> + <permission android:name="android.car.permission.READ_CAR_SEATS" + android:permissionGroup="android.car.permission-group.CAR_MONITORING" + android:protectionLevel="dangerous" + android:label="@string/car_permission_label_read_car_seats" + android:description="@string/car_permission_desc_read_car_seats" + android:featureFlag="android.car.feature.vehicle_property_25q2_3p_permissions"/> <permission android:name="android.car.permission.CONTROL_CAR_AIRBAGS" android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_control_car_airbags" @@ -121,10 +127,22 @@ android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_car_tires" android:description="@string/car_permission_desc_car_tires"/> + <permission android:name="android.car.permission.CAR_TIRES_3P" + android:permissionGroup="android.car.permission-group.CAR_MONITORING" + android:protectionLevel="dangerous" + android:label="@string/car_permission_label_car_tires_3p" + android:description="@string/car_permission_desc_car_tires_3p" + android:featureFlag="android.car.feature.vehicle_property_25q2_3p_permissions"/> <permission android:name="android.car.permission.READ_CAR_STEERING" android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_car_steering" android:description="@string/car_permission_desc_car_steering"/> + <permission android:name="android.car.permission.READ_CAR_STEERING_3P" + android:permissionGroup="android.permission-group.LOCATION" + android:protectionLevel="dangerous" + android:label="@string/car_permission_label_read_car_steering_3p" + android:description="@string/car_permission_desc_read_car_steering_3p" + android:featureFlag="android.car.feature.vehicle_property_25q2_3p_permissions"/> <permission android:name="android.car.permission.READ_CAR_DISPLAY_UNITS" android:protectionLevel="normal" android:label="@string/car_permission_label_read_car_display_units" @@ -150,6 +168,12 @@ android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_car_engine_detailed" android:description="@string/car_permission_desc_car_engine_detailed"/> + <permission android:name="android.car.permission.CAR_ENGINE_DETAILED_3P" + android:permissionGroup="android.car.permission-group.CAR_MONITORING" + android:protectionLevel="dangerous" + android:label="@string/car_permission_label_car_engine_detailed_3p" + android:description="@string/car_permission_desc_car_engine_detailed_3p" + android:featureFlag="android.car.feature.vehicle_property_25q2_3p_permissions"/> <permission android:name="android.car.permission.CAR_DYNAMICS_STATE" android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_vehicle_dynamics_state" @@ -305,6 +329,12 @@ android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_driving_state" android:description="@string/car_permission_desc_driving_state"/> + <permission android:name="android.car.permission.CAR_DRIVING_STATE_3P" + android:permissionGroup="android.car.permission-group.CAR_MONITORING" + android:protectionLevel="dangerous" + android:label="@string/car_permission_label_driving_state_3p" + android:description="@string/car_permission_desc_driving_state_3p" + android:featureFlag="android.car.feature.vehicle_property_25q2_3p_permissions"/> <permission android:name="android.car.permission.USE_CAR_TELEMETRY_SERVICE" android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_use_telemetry_service" @@ -637,6 +667,12 @@ android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_read_windshield_wipers" android:description="@string/car_permission_desc_read_windshield_wipers"/> + <permission android:name="android.car.permission.READ_WINDSHIELD_WIPERS_3P" + android:permissionGroup="android.car.permission-group.CAR_MONITORING" + android:protectionLevel="dangerous" + android:label="@string/car_permission_label_read_windshield_wipers_3p" + android:description="@string/car_permission_desc_read_windshield_wipers_3p" + android:featureFlag="android.car.feature.vehicle_property_25q2_3p_permissions"/> <permission android:name="android.car.permission.CONTROL_WINDSHIELD_WIPERS" android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_control_windshield_wipers" diff --git a/tests/cts/permissionui/src/android/permissionui/cts/PermissionSplitTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/PermissionSplitTest.kt index da70fc186..e71ac32a5 100644 --- a/tests/cts/permissionui/src/android/permissionui/cts/PermissionSplitTest.kt +++ b/tests/cts/permissionui/src/android/permissionui/cts/PermissionSplitTest.kt @@ -17,8 +17,6 @@ package android.permissionui.cts import android.os.Build -import android.permission.flags.Flags -import android.platform.test.annotations.RequiresFlagsDisabled import android.platform.test.flag.junit.DeviceFlagsValueProvider import androidx.test.filters.FlakyTest import androidx.test.filters.SdkSuppress @@ -62,26 +60,32 @@ class PermissionSplitTest : BaseUsePermissionTest() { testLocationPermissionSplit(false) } - @SdkSuppress(minSdkVersion = Build.VERSION_CODES.TIRAMISU, codeName = "Tiramisu") - @RequiresFlagsDisabled(Flags.FLAG_REPLACE_BODY_SENSOR_PERMISSION_ENABLED) + @SdkSuppress( + minSdkVersion = Build.VERSION_CODES.TIRAMISU, + maxSdkVersion = Build.VERSION_CODES.VANILLA_ICE_CREAM, + ) @Test - fun testBodySensorSplit() { + fun testBodySensorSplitOnTToV() { installPackage(APP_APK_PATH_31) testBodySensorPermissionSplit(true) } - @SdkSuppress(minSdkVersion = Build.VERSION_CODES.TIRAMISU, codeName = "Tiramisu") - @RequiresFlagsDisabled(Flags.FLAG_REPLACE_BODY_SENSOR_PERMISSION_ENABLED) + @SdkSuppress( + minSdkVersion = Build.VERSION_CODES.TIRAMISU, + maxSdkVersion = Build.VERSION_CODES.VANILLA_ICE_CREAM, + ) @Test - fun testBodySensorSplit32() { + fun testBodySensorSplit32OnTToV() { installPackage(APP_APK_PATH_32) testBodySensorPermissionSplit(true) } - @SdkSuppress(minSdkVersion = Build.VERSION_CODES.TIRAMISU, codeName = "Tiramisu") - @RequiresFlagsDisabled(Flags.FLAG_REPLACE_BODY_SENSOR_PERMISSION_ENABLED) + @SdkSuppress( + minSdkVersion = Build.VERSION_CODES.TIRAMISU, + maxSdkVersion = Build.VERSION_CODES.VANILLA_ICE_CREAM, + ) @Test - fun testBodySensorNonSplit() { + fun testBodySensorNonSplitonTToV() { installPackage(APP_APK_PATH_LATEST) testBodySensorPermissionSplit(false) } @@ -92,7 +96,7 @@ class PermissionSplitTest : BaseUsePermissionTest() { requestAppPermissionsAndAssertResult( android.Manifest.permission.ACCESS_FINE_LOCATION to true, - waitForWindowTransition = false + waitForWindowTransition = false, ) { if (expectSplit) { clickPermissionRequestSettingsLinkAndAllowAlways() @@ -114,7 +118,7 @@ class PermissionSplitTest : BaseUsePermissionTest() { requestAppPermissionsAndAssertResult( android.Manifest.permission.BODY_SENSORS to true, - waitForWindowTransition = false + waitForWindowTransition = false, ) { if (expectSplit) { clickPermissionRequestSettingsLinkAndAllowAlways() diff --git a/tests/cts/role/src/android/app/role/cts/RoleManagerTest.java b/tests/cts/role/src/android/app/role/cts/RoleManagerTest.java index 00245a086..f26bc0eb5 100644 --- a/tests/cts/role/src/android/app/role/cts/RoleManagerTest.java +++ b/tests/cts/role/src/android/app/role/cts/RoleManagerTest.java @@ -1489,27 +1489,21 @@ public class RoleManagerTest { @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") @Test - public void setAndGetDefaultHolders() throws Exception { - List<String> testRoleHolders = List.of("a", "b", "c"); + public void cannotSetDefaultHoldersForTestNullPackageNames() throws Exception { runWithShellPermissionIdentity(() -> { - sRoleManager.setDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME, - testRoleHolders); - List<String> roleHolders = - sRoleManager.getDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME); - assertThat(roleHolders).isEqualTo(testRoleHolders); + assertThrows(NullPointerException.class, () -> + sRoleManager.setDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME, + null)); }); } @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") @Test - public void setAndGetDefaultHoldersNoRoleHolders() throws Exception { - List<String> initialRoleHolders = List.of("a", "b", "c"); - List<String> testRoleHolders = Collections.emptyList(); + public void setAndGetDefaultHolders() throws Exception { + List<String> testRoleHolders = List.of("a", "b", "c"); runWithShellPermissionIdentity(() -> { sRoleManager.setDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME, - initialRoleHolders); - sRoleManager.setDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME, testRoleHolders); List<String> roleHolders = sRoleManager.getDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME); @@ -1520,15 +1514,17 @@ public class RoleManagerTest { @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") @Test - public void setAndGetDefaultHoldersNullRoleHolders() throws Exception { + public void setAndGetDefaultHoldersNoRoleHolders() throws Exception { List<String> initialRoleHolders = List.of("a", "b", "c"); + List<String> testRoleHolders = Collections.emptyList(); runWithShellPermissionIdentity(() -> { sRoleManager.setDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME, initialRoleHolders); - sRoleManager.setDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME, null); + sRoleManager.setDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME, + testRoleHolders); List<String> roleHolders = sRoleManager.getDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME); - assertThat(roleHolders).isEqualTo(Collections.emptyList()); + assertThat(roleHolders).isEqualTo(testRoleHolders); }); } diff --git a/tests/cts/rolemultiuser/src/android/app/rolemultiuser/cts/RoleManagerMultiUserTest.kt b/tests/cts/rolemultiuser/src/android/app/rolemultiuser/cts/RoleManagerMultiUserTest.kt index 134f45131..9af594070 100644 --- a/tests/cts/rolemultiuser/src/android/app/rolemultiuser/cts/RoleManagerMultiUserTest.kt +++ b/tests/cts/rolemultiuser/src/android/app/rolemultiuser/cts/RoleManagerMultiUserTest.kt @@ -17,10 +17,14 @@ package android.app.rolemultiuser.cts import android.app.role.RoleManager import android.content.Context +import android.content.Intent +import android.content.pm.PackageManager import android.os.Build import android.os.Process import android.os.UserHandle +import android.provider.Settings import androidx.test.filters.SdkSuppress +import androidx.test.uiautomator.By import com.android.bedstead.enterprise.annotations.EnsureHasWorkProfile import com.android.bedstead.enterprise.annotations.RequireRunOnWorkProfile import com.android.bedstead.enterprise.workProfile @@ -43,8 +47,12 @@ import com.android.bedstead.permissions.CommonPermissions.MANAGE_DEFAULT_APPLICA import com.android.bedstead.permissions.CommonPermissions.MANAGE_ROLE_HOLDERS import com.android.bedstead.permissions.annotations.EnsureDoesNotHavePermission import com.android.bedstead.permissions.annotations.EnsureHasPermission +import com.android.compatibility.common.util.DisableAnimationRule +import com.android.compatibility.common.util.FreezeRotationRule import com.android.compatibility.common.util.SystemUtil import com.android.compatibility.common.util.SystemUtil.eventually +import com.android.compatibility.common.util.UiAutomatorUtils2.getUiDevice +import com.android.compatibility.common.util.UiAutomatorUtils2.waitFindObject import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertWithMessage import java.util.Objects @@ -246,17 +254,13 @@ class RoleManagerMultiUserTest { fun ensureOnlyActiveUserIsRoleHolder() { try { // Set test default role holder. Ensures fallbacks to a default holder - roleManager.setDefaultHoldersForTest( - PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, - listOf(APP_PACKAGE_NAME), - ) + setDefaultHoldersForTestForAllUsers() val activeUser = roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)!! // Test app install might take a moment eventually { assertExpectedProfileHasRoleUsingGetRoleHoldersAsUser(activeUser) } } finally { - // Clear test default role holder - roleManager.setDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, null) + clearDefaultHoldersForTestForAllUsers() } } @@ -318,10 +322,7 @@ class RoleManagerMultiUserTest { try { // Set test default role holder. Ensures fallbacks to a default holder - roleManager.setDefaultHoldersForTest( - PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, - listOf(APP_PACKAGE_NAME), - ) + setDefaultHoldersForTestForAllUsers() roleManager.setActiveUserForRole( PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, @@ -333,8 +334,7 @@ class RoleManagerMultiUserTest { // We can assume targetActiveUser is role holder since fallback is enabled eventually { assertExpectedProfileHasRoleUsingGetRoleHoldersAsUser(targetActiveUser) } } finally { - // Clear test default role holder - roleManager.setDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, null) + clearDefaultHoldersForTestForAllUsers() } } @@ -346,10 +346,7 @@ class RoleManagerMultiUserTest { fun setAndGetActiveUserForRoleSetWorkProfile() { try { // Set test default role holder. Ensures fallbacks to a default holder - roleManager.setDefaultHoldersForTest( - PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, - listOf(APP_PACKAGE_NAME), - ) + setDefaultHoldersForTestForAllUsers() val targetActiveUser = deviceState.workProfile().userHandle() roleManager.setActiveUserForRole( @@ -363,8 +360,7 @@ class RoleManagerMultiUserTest { // We can assume targetActiveUser is role holder since fallback is enabled eventually { assertExpectedProfileHasRoleUsingGetRoleHoldersAsUser(targetActiveUser) } } finally { - // Clear test default role holder - roleManager.setDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, null) + setDefaultHoldersForTestForAllUsers() } } @@ -567,15 +563,249 @@ class RoleManagerMultiUserTest { assertExpectedProfileHasRoleUsingGetDefaultApplication(targetActiveUser) } + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL, MANAGE_ROLE_HOLDERS) + @EnsureHasWorkProfile + @RequireRunOnPrimaryUser + @Test + @Throws(java.lang.Exception::class) + fun openDefaultAppListAndSetDefaultAppThenIsDefaultApp() { + try { + // Set test default role holder. Ensures fallbacks to a default holder + setDefaultHoldersForTestForAllUsers() + setRoleVisibleForTestForAllUsers() + + context.startActivity( + Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS) + .addCategory(Intent.CATEGORY_DEFAULT) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) + ) + getUiDevice().waitForIdle() + waitFindObject(By.text(PROFILE_GROUP_EXCLUSIVITY_ROLE_SHORT_LABEL)).click() + getUiDevice().waitForIdle() + + val targetActiveUser = users().current().userHandle() + val targetAppLabel = "$APP_LABEL@${targetActiveUser.identifier}" + if (isWatch) { + waitFindObject(By.clickable(true).hasDescendant(By.text(targetAppLabel))).click() + } else { + waitFindObject( + By.clickable(true) + .hasDescendant(By.checkable(true)) + .hasDescendant(By.text(targetAppLabel)) + ) + .click() + } + + if (isWatch) { + waitFindObject( + By.clickable(true).checked(true).hasDescendant(By.text(targetAppLabel)) + ) + } else { + waitFindObject( + By.clickable(true) + .hasDescendant(By.checkable(true).checked(true)) + .hasDescendant(By.text(targetAppLabel)) + ) + } + + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isEqualTo(targetActiveUser) + assertExpectedProfileHasRoleUsingGetRoleHoldersAsUser(targetActiveUser) + + pressBack() + pressBack() + } finally { + clearDefaultHoldersForTestForAllUsers() + clearRoleVisibleForTestForAllUsers() + } + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL, MANAGE_ROLE_HOLDERS) + @EnsureHasWorkProfile + @RequireRunOnPrimaryUser + @Test + @Throws(java.lang.Exception::class) + fun openDefaultAppListAndSetWorkDefaultAppThenIsDefaultApp() { + try { + // Set test default role holder. Ensures fallbacks to a default holder + setDefaultHoldersForTestForAllUsers() + setRoleVisibleForTestForAllUsers() + + context.startActivity( + Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS) + .addCategory(Intent.CATEGORY_DEFAULT) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) + ) + getUiDevice().waitForIdle() + waitFindObject(By.text(PROFILE_GROUP_EXCLUSIVITY_ROLE_SHORT_LABEL)).click() + getUiDevice().waitForIdle() + + val targetActiveUser = deviceState.workProfile().userHandle() + val targetAppLabel = "$APP_LABEL@${targetActiveUser.identifier}" + if (isWatch) { + waitFindObject(By.clickable(true).hasDescendant(By.text(targetAppLabel))).click() + } else { + waitFindObject( + By.clickable(true) + .hasDescendant(By.checkable(true)) + .hasDescendant(By.text(targetAppLabel)) + ) + .click() + } + + if (isWatch) { + waitFindObject( + By.clickable(true).checked(true).hasDescendant(By.text(targetAppLabel)) + ) + } else { + waitFindObject( + By.clickable(true) + .hasDescendant(By.checkable(true).checked(true)) + .hasDescendant(By.text(targetAppLabel)) + ) + } + + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isEqualTo(targetActiveUser) + assertExpectedProfileHasRoleUsingGetRoleHoldersAsUser(targetActiveUser) + + pressBack() + pressBack() + } finally { + clearDefaultHoldersForTestForAllUsers() + clearRoleVisibleForTestForAllUsers() + } + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL, MANAGE_ROLE_HOLDERS) + @EnsureHasWorkProfile + @RequireRunOnPrimaryUser + @Test + @Throws(java.lang.Exception::class) + fun openDefaultAppListAndSetDefaultAppThenIsDefaultAppInList() { + try { + // Set test default role holder. Ensures fallbacks to a default holder + setDefaultHoldersForTestForAllUsers() + setRoleVisibleForTestForAllUsers() + + context.startActivity( + Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS) + .addCategory(Intent.CATEGORY_DEFAULT) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) + ) + getUiDevice().waitForIdle() + waitFindObject(By.text(PROFILE_GROUP_EXCLUSIVITY_ROLE_SHORT_LABEL)).click() + getUiDevice().waitForIdle() + + val targetActiveUser = users().current().userHandle() + val targetAppLabel = "$APP_LABEL@${targetActiveUser.identifier}" + if (isWatch) { + waitFindObject(By.clickable(true).hasDescendant(By.text(targetAppLabel))).click() + waitFindObject( + By.clickable(true).checked(true).hasDescendant(By.text(targetAppLabel)) + ) + } else { + waitFindObject( + By.clickable(true) + .hasDescendant(By.checkable(true)) + .hasDescendant(By.text(targetAppLabel)) + ) + .click() + waitFindObject( + By.clickable(true) + .hasDescendant(By.checkable(true).checked(true)) + .hasDescendant(By.text(targetAppLabel)) + ) + } + pressBack() + + waitFindObject(By.text(targetAppLabel)) + + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isEqualTo(targetActiveUser) + assertExpectedProfileHasRoleUsingGetRoleHoldersAsUser(targetActiveUser) + + pressBack() + } finally { + clearDefaultHoldersForTestForAllUsers() + clearRoleVisibleForTestForAllUsers() + } + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL, MANAGE_ROLE_HOLDERS) + @EnsureHasWorkProfile + @RequireRunOnPrimaryUser + @Test + @Throws(java.lang.Exception::class) + fun openDefaultAppListAndSetWorkDefaultAppThenIsDefaultAppInList() { + try { + // Set test default role holder. Ensures fallbacks to a default holder + setDefaultHoldersForTestForAllUsers() + setRoleVisibleForTestForAllUsers() + + context.startActivity( + Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS) + .addCategory(Intent.CATEGORY_DEFAULT) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) + ) + getUiDevice().waitForIdle() + waitFindObject(By.text(PROFILE_GROUP_EXCLUSIVITY_ROLE_SHORT_LABEL)).click() + getUiDevice().waitForIdle() + + val targetActiveUser = deviceState.workProfile().userHandle() + val targetAppLabel = "$APP_LABEL@${targetActiveUser.identifier}" + if (isWatch) { + waitFindObject(By.clickable(true).hasDescendant(By.text(targetAppLabel))).click() + waitFindObject( + By.clickable(true).checked(true).hasDescendant(By.text(targetAppLabel)) + ) + } else { + waitFindObject( + By.clickable(true) + .hasDescendant(By.checkable(true)) + .hasDescendant(By.text(targetAppLabel)) + ) + .click() + waitFindObject( + By.clickable(true) + .hasDescendant(By.checkable(true).checked(true)) + .hasDescendant(By.text(targetAppLabel)) + ) + } + pressBack() + + waitFindObject(By.text(targetAppLabel)) + + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isEqualTo(targetActiveUser) + assertExpectedProfileHasRoleUsingGetRoleHoldersAsUser(targetActiveUser) + + pressBack() + } finally { + clearDefaultHoldersForTestForAllUsers() + clearRoleVisibleForTestForAllUsers() + } + } + @Throws(java.lang.Exception::class) private fun installAppForAllUsers() { SystemUtil.runShellCommandOrThrow("pm install -r --user all $APP_APK_PATH") + SystemUtil.waitForBroadcasts() } private fun uninstallAppForAllUsers() { SystemUtil.runShellCommand("pm uninstall $APP_PACKAGE_NAME") } + private fun pressBack() { + getUiDevice().pressBack() + getUiDevice().waitForIdle() + } + private fun assertExpectedProfileHasRoleUsingGetRoleHoldersAsUser( expectedActiveUser: UserHandle ) { @@ -633,6 +863,40 @@ class RoleManagerMultiUserTest { } } + private fun setDefaultHoldersForTestForAllUsers() { + // Set test default role holder. Ensures fallbacks to a default holder + for (userRoleManager in users().all().map { getRoleManagerForUser(it.userHandle()) }) { + userRoleManager.setDefaultHoldersForTest( + PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, + listOf(APP_PACKAGE_NAME), + ) + } + } + + private fun clearDefaultHoldersForTestForAllUsers() { + // Set test default role holder. Ensures fallbacks to a default holder + for (userRoleManager in users().all().map { getRoleManagerForUser(it.userHandle()) }) { + userRoleManager.setDefaultHoldersForTest( + PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, + emptyList(), + ) + } + } + + private fun setRoleVisibleForTestForAllUsers() { + // Set test default role holder. Ensures fallbacks to a default holder + for (userRoleManager in users().all().map { getRoleManagerForUser(it.userHandle()) }) { + userRoleManager.setRoleVisibleForTest(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, true) + } + } + + private fun clearRoleVisibleForTestForAllUsers() { + // Set test default role holder. Ensures fallbacks to a default holder + for (userRoleManager in users().all().map { getRoleManagerForUser(it.userHandle()) }) { + userRoleManager.setRoleVisibleForTest(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, false) + } + } + private fun getRoleManagerForUser(user: UserHandle): RoleManager { val userContext = context.createContextAsUser(user, 0) return userContext.getSystemService(RoleManager::class.java) @@ -648,13 +912,26 @@ class RoleManagerMultiUserTest { private const val TIMEOUT_MILLIS: Long = (15 * 1000).toLong() private const val PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME = RoleManager.ROLE_RESERVED_FOR_TESTING_PROFILE_GROUP_EXCLUSIVITY + private const val PROFILE_GROUP_EXCLUSIVITY_ROLE_SHORT_LABEL = + "Test profile group exclusive role app" private const val PRIVATE_PROFILE_TYPE_NAME = "android.os.usertype.profile.PRIVATE" private const val APP_APK_PATH: String = "/data/local/tmp/cts-role/CtsRoleMultiUserTestApp.apk" private const val APP_PACKAGE_NAME: String = "android.app.rolemultiuser.cts.app" + private const val APP_LABEL: String = "CtsRoleMultiUserTestApp" + private val context: Context = context().instrumentedContext() private val roleManager: RoleManager = context.getSystemService(RoleManager::class.java) + private val packageManager: PackageManager = context.packageManager + private val isWatch = packageManager.hasSystemFeature(PackageManager.FEATURE_WATCH) @JvmField @ClassRule @Rule val deviceState = DeviceState() + + @JvmField + @ClassRule + @Rule + var disableAnimationRule: DisableAnimationRule = DisableAnimationRule() + + @JvmField @ClassRule @Rule var freezeRotationRule: FreezeRotationRule = FreezeRotationRule() } } diff --git a/tests/functional/safetycenter/multiusers/src/android/safetycenter/functional/multiusers/SafetyCenterMultiUsersTest.kt b/tests/functional/safetycenter/multiusers/src/android/safetycenter/functional/multiusers/SafetyCenterMultiUsersTest.kt index 9dba6f9c2..041cc652f 100644 --- a/tests/functional/safetycenter/multiusers/src/android/safetycenter/functional/multiusers/SafetyCenterMultiUsersTest.kt +++ b/tests/functional/safetycenter/multiusers/src/android/safetycenter/functional/multiusers/SafetyCenterMultiUsersTest.kt @@ -374,7 +374,8 @@ class SafetyCenterMultiUsersTest { safetyCenterTestData.safetyCenterStatusUnknown, emptyList(), listOf( - SafetyCenterEntryOrGroup( + safetyCenterTestData.singletonSafetyCenterEntryOrGroup( + SINGLE_SOURCE_GROUP_ID, safetyCenterTestData.safetyCenterEntryDefault( SINGLE_SOURCE_ALL_PROFILE_ID, deviceState.additionalUser().id(), @@ -382,7 +383,8 @@ class SafetyCenterMultiUsersTest { createTestActivityRedirectPendingIntentForUser( deviceState.additionalUser().userHandle() ), - ) + ), + "No info yet", ) ), emptyList(), @@ -1227,8 +1229,10 @@ class SafetyCenterMultiUsersTest { safetyCenterTestData.safetyCenterStatusUnknown, emptyList(), listOf( - SafetyCenterEntryOrGroup( - safetyCenterTestData.safetyCenterEntryDefault(SINGLE_SOURCE_ALL_PROFILE_ID) + safetyCenterTestData.singletonSafetyCenterEntryOrGroup( + SINGLE_SOURCE_GROUP_ID, + safetyCenterTestData.safetyCenterEntryDefault(SINGLE_SOURCE_ALL_PROFILE_ID), + "No info yet", ) ), emptyList(), @@ -1298,8 +1302,10 @@ class SafetyCenterMultiUsersTest { safetyCenterTestData.safetyCenterStatusUnknown, emptyList(), listOf( - SafetyCenterEntryOrGroup( - safetyCenterTestData.safetyCenterEntryDefault(SINGLE_SOURCE_ALL_PROFILE_ID) + safetyCenterTestData.singletonSafetyCenterEntryOrGroup( + SINGLE_SOURCE_GROUP_ID, + safetyCenterTestData.safetyCenterEntryDefault(SINGLE_SOURCE_ALL_PROFILE_ID), + "No info yet", ) ), emptyList(), diff --git a/tests/functional/safetycenter/safetycenteractivity/src/android/safetycenter/functional/ui/SafetyCenterActivityTest.kt b/tests/functional/safetycenter/safetycenteractivity/src/android/safetycenter/functional/ui/SafetyCenterActivityTest.kt index 7e8205bd6..a88c458c1 100644 --- a/tests/functional/safetycenter/safetycenteractivity/src/android/safetycenter/functional/ui/SafetyCenterActivityTest.kt +++ b/tests/functional/safetycenter/safetycenteractivity/src/android/safetycenter/functional/ui/SafetyCenterActivityTest.kt @@ -74,6 +74,7 @@ import com.android.safetycenter.testing.UiTestHelper.waitSourceDataDisplayed import com.android.safetycenter.testing.UiTestHelper.waitSourceIssueDisplayed import com.android.safetycenter.testing.UiTestHelper.waitSourceIssueNotDisplayed import org.junit.After +import org.junit.Assume.assumeFalse import org.junit.Assume.assumeTrue import org.junit.Rule import org.junit.Test @@ -99,13 +100,13 @@ class SafetyCenterActivityTest { } @Test - fun launchActivity_allowingSettingsTrampoline() { + fun launchActivity_allowingSettingsTrampoline_showsSafetyCenter() { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) val dataToDisplay = safetySourceTestData.criticalWithResolvingGeneralIssue safetyCenterTestHelper.setData(SINGLE_SOURCE_ID, dataToDisplay) context.launchSafetyCenterActivity(preventTrampolineToSettings = false) { - waitSourceDataDisplayed(dataToDisplay) + waitSourceIssueDisplayed(dataToDisplay.issues[0]) } } @@ -131,7 +132,13 @@ class SafetyCenterActivityTest { val dataToDisplay = safetySourceTestData.criticalWithResolvingGeneralIssue safetyCenterTestHelper.setData(SINGLE_SOURCE_ID, dataToDisplay) - context.launchSafetyCenterActivity { waitSourceDataDisplayed(dataToDisplay) } + context.launchSafetyCenterActivity { + if (SafetyCenterFlags.showSubpages) { + waitSourceIssueDisplayed(dataToDisplay.issues[0]) + } else { + waitSourceDataDisplayed(dataToDisplay) + } + } } @Test @@ -276,6 +283,8 @@ class SafetyCenterActivityTest { @Test fun launchActivity_displaysGroupsOfSingleSourceAsEntity() { + // Single source groups are displayed in the subpage when subpages enabled + assumeFalse(SafetyCenterFlags.showSubpages) safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.multipleSourceGroupsConfig) context.launchSafetyCenterActivity { @@ -297,7 +306,11 @@ class SafetyCenterActivityTest { val dataToDisplay = safetySourceTestData.recommendationWithGeneralIssue safetyCenterTestHelper.setData(SINGLE_SOURCE_ID, dataToDisplay) - waitSourceDataDisplayed(dataToDisplay) + if (SafetyCenterFlags.showSubpages) { + waitSourceIssueDisplayed(dataToDisplay.issues[0]) + } else { + waitSourceDataDisplayed(dataToDisplay) + } } } @@ -338,6 +351,8 @@ class SafetyCenterActivityTest { @Test fun entryListWithEntryGroup_informationState_hasContentDescription() { + // No custom content descriptions when using subpages + assumeFalse(SafetyCenterFlags.showSubpages) safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.multipleSourcesConfig) safetyCenterTestHelper.setData(SOURCE_ID_1, safetySourceTestData.information) safetyCenterTestHelper.setData(SOURCE_ID_2, safetySourceTestData.information) @@ -355,6 +370,8 @@ class SafetyCenterActivityTest { @Test fun entryListWithEntryGroup_recommendationState_hasActionsNeededContentDescription() { + // No custom content descriptions when using subpages + assumeFalse(SafetyCenterFlags.showSubpages) safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.multipleSourcesConfig) safetyCenterTestHelper.setData( SOURCE_ID_1, @@ -394,6 +411,8 @@ class SafetyCenterActivityTest { @Test fun entryListWithEntryGroup_unclickableDisabledEntry_hasContentDescription() { + // No custom content descriptions when using subpages + assumeFalse(SafetyCenterFlags.showSubpages) safetyCenterTestHelper.setConfig( safetyCenterTestConfigs.multipleSourcesConfigWithSourceWithInvalidIntent ) @@ -424,6 +443,8 @@ class SafetyCenterActivityTest { @Test fun entryListWithEntryGroup_clickableDisabledEntry_hasContentDescription() { + // No custom content descriptions when using subpages + assumeFalse(SafetyCenterFlags.showSubpages) safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.multipleSourcesConfig) safetyCenterTestHelper.setData( SOURCE_ID_1, @@ -442,6 +463,8 @@ class SafetyCenterActivityTest { @Test fun entryListWithSingleSource_informationState_hasContentDescription() { + // No custom content descriptions when using subpages + assumeFalse(SafetyCenterFlags.showSubpages) safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData(SINGLE_SOURCE_ID, safetySourceTestData.information) @@ -456,6 +479,9 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) context.launchSafetyCenterActivity { + if (SafetyCenterFlags.showSubpages) { + waitDisplayed(By.text("OK")) { it.click() } // Open subpage + } waitDisplayed(By.text("OK")) { it.click() } waitButtonDisplayed("Exit test activity") { it.click() } waitDisplayed(By.text("OK")) @@ -467,6 +493,9 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.implicitIntentSingleSourceConfig) context.launchSafetyCenterActivity { + if (SafetyCenterFlags.showSubpages) { + waitDisplayed(By.text("OK")) { it.click() } // Open subpage + } waitDisplayed(By.text("OK")) { it.click() } waitButtonDisplayed("Exit test activity") { it.click() } } @@ -478,6 +507,9 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setData(SINGLE_SOURCE_ID, safetySourceTestData.information) context.launchSafetyCenterActivity { + if (SafetyCenterFlags.showSubpages) { + waitDisplayed(By.text("OK")) { it.click() } // Open subpage + } waitDisplayed(By.text("Ok title")) { it.click() } waitButtonDisplayed("Exit test activity") { it.click() } waitDisplayed(By.text("Ok title")) @@ -493,6 +525,9 @@ class SafetyCenterActivityTest { ) context.launchSafetyCenterActivity { + if (SafetyCenterFlags.showSubpages) { + waitDisplayed(By.text("OK")) { it.click() } // Open subpage + } waitDisplayed(By.desc("Information")) { it.click() } waitButtonDisplayed("Exit test activity") { it.click() } waitDisplayed(By.text("Ok title")) @@ -553,7 +588,6 @@ class SafetyCenterActivityTest { clickDismissIssueCard() waitSourceIssueNotDisplayed(safetySourceTestData.informationIssue) - waitSourceDataDisplayed(safetySourceTestData.information) waitButtonDisplayed(RESCAN_BUTTON_LABEL) } } @@ -1173,7 +1207,7 @@ class SafetyCenterActivityTest { } @Test - fun collapsedEntryGroup_expandsWhenClicked() { + fun entryGroup_showsEntriesWhenClicked() { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.multipleSourceGroupsConfig) with(safetyCenterTestHelper) { setConfig(safetyCenterTestConfigs.multipleSourceGroupsConfig) @@ -1245,6 +1279,7 @@ class SafetyCenterActivityTest { @Test fun expandedEntryGroup_collapsesWhenClicked() { + assumeFalse(SafetyCenterFlags.showSubpages) // No collapsible groups when using subpages with(safetyCenterTestHelper) { setConfig(safetyCenterTestConfigs.multipleSourceGroupsConfig) setData( @@ -1339,6 +1374,7 @@ class SafetyCenterActivityTest { @Test fun expandedEntryGroup_otherGroupRemainsCollapsed() { + assumeFalse(SafetyCenterFlags.showSubpages) // No collapsible groups when using subpages safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.multipleSourceGroupsConfig) with(safetyCenterTestHelper) { setConfig(safetyCenterTestConfigs.multipleSourceGroupsConfig) @@ -1444,6 +1480,9 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.implicitIntentSingleSourceConfig) context.launchSafetyCenterActivity { + if (SafetyCenterFlags.showSubpages) { + waitDisplayed(By.text("OK")) { it.click() } // Open subpage + } waitDisplayed(By.text("OK")) { it.click() } waitDisplayed(By.text("is_from_settings_homepage false")) waitButtonDisplayed("Exit test activity") { it.click() } diff --git a/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/SafetyCenterManagerTest.kt b/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/SafetyCenterManagerTest.kt index 985f15572..64db7d47a 100644 --- a/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/SafetyCenterManagerTest.kt +++ b/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/SafetyCenterManagerTest.kt @@ -104,6 +104,7 @@ import com.android.safetycenter.testing.SafetyCenterTestConfigs.Companion.MIXED_ import com.android.safetycenter.testing.SafetyCenterTestConfigs.Companion.MIXED_STATELESS_GROUP_ID import com.android.safetycenter.testing.SafetyCenterTestConfigs.Companion.MULTIPLE_SOURCES_GROUP_ID_1 import com.android.safetycenter.testing.SafetyCenterTestConfigs.Companion.MULTIPLE_SOURCES_GROUP_ID_2 +import com.android.safetycenter.testing.SafetyCenterTestConfigs.Companion.SINGLE_SOURCE_GROUP_ID import com.android.safetycenter.testing.SafetyCenterTestConfigs.Companion.SINGLE_SOURCE_ID import com.android.safetycenter.testing.SafetyCenterTestConfigs.Companion.SOURCE_ID_1 import com.android.safetycenter.testing.SafetyCenterTestConfigs.Companion.SOURCE_ID_2 @@ -309,14 +310,16 @@ class SafetyCenterManagerTest { private val safetyCenterEntryOrGroupRecommendation: SafetyCenterEntryOrGroup get() = - SafetyCenterEntryOrGroup( - safetyCenterTestData.safetyCenterEntryRecommendation(SINGLE_SOURCE_ID) + safetyCenterTestData.singletonSafetyCenterEntryOrGroup( + SINGLE_SOURCE_GROUP_ID, + safetyCenterTestData.safetyCenterEntryRecommendation(SINGLE_SOURCE_ID), ) private val safetyCenterEntryOrGroupCritical: SafetyCenterEntryOrGroup get() = - SafetyCenterEntryOrGroup( - safetyCenterTestData.safetyCenterEntryCritical(SINGLE_SOURCE_ID) + safetyCenterTestData.singletonSafetyCenterEntryOrGroup( + SINGLE_SOURCE_GROUP_ID, + safetyCenterTestData.safetyCenterEntryCritical(SINGLE_SOURCE_ID), ) private val safetyCenterEntryGroupMixedFromComplexConfig: SafetyCenterEntryOrGroup @@ -425,8 +428,10 @@ class SafetyCenterManagerTest { safetyCenterStatusUnknownScanning, emptyList(), listOf( - SafetyCenterEntryOrGroup( - safetyCenterTestData.safetyCenterEntryDefault(SINGLE_SOURCE_ID) + safetyCenterTestData.singletonSafetyCenterEntryOrGroup( + SINGLE_SOURCE_GROUP_ID, + safetyCenterTestData.safetyCenterEntryDefault(SINGLE_SOURCE_ID), + "No info yet", ) ), emptyList(), @@ -438,8 +443,10 @@ class SafetyCenterManagerTest { safetyCenterTestData.safetyCenterStatusUnknown, emptyList(), listOf( - SafetyCenterEntryOrGroup( - safetyCenterTestData.safetyCenterEntryDefault(SINGLE_SOURCE_ID) + safetyCenterTestData.singletonSafetyCenterEntryOrGroup( + SINGLE_SOURCE_GROUP_ID, + safetyCenterTestData.safetyCenterEntryDefault(SINGLE_SOURCE_ID), + "No info yet", ) ), emptyList(), @@ -451,8 +458,9 @@ class SafetyCenterManagerTest { safetyCenterStatusOk, emptyList(), listOf( - SafetyCenterEntryOrGroup( - safetyCenterTestData.safetyCenterEntryUnspecified(SINGLE_SOURCE_ID) + safetyCenterTestData.singletonSafetyCenterEntryOrGroup( + SINGLE_SOURCE_GROUP_ID, + safetyCenterTestData.safetyCenterEntryUnspecified(SINGLE_SOURCE_ID), ) ), emptyList(), @@ -464,8 +472,9 @@ class SafetyCenterManagerTest { safetyCenterStatusOk, emptyList(), listOf( - SafetyCenterEntryOrGroup( - safetyCenterTestData.safetyCenterEntryOk(SINGLE_SOURCE_ID) + safetyCenterTestData.singletonSafetyCenterEntryOrGroup( + SINGLE_SOURCE_GROUP_ID, + safetyCenterTestData.safetyCenterEntryOk(SINGLE_SOURCE_ID), ) ), emptyList(), @@ -477,14 +486,15 @@ class SafetyCenterManagerTest { safetyCenterStatusOk, emptyList(), listOf( - SafetyCenterEntryOrGroup( + safetyCenterTestData.singletonSafetyCenterEntryOrGroup( + SINGLE_SOURCE_GROUP_ID, safetyCenterTestData .safetyCenterEntryOkBuilder(SINGLE_SOURCE_ID) .setIconAction( ICON_ACTION_TYPE_INFO, safetySourceTestData.createTestActivityRedirectPendingIntent(), ) - .build() + .build(), ) ), emptyList(), @@ -496,8 +506,10 @@ class SafetyCenterManagerTest { safetyCenterStatusUnknownScanning, emptyList(), listOf( - SafetyCenterEntryOrGroup( - safetyCenterTestData.safetyCenterEntryError(SINGLE_SOURCE_ID) + safetyCenterTestData.singletonSafetyCenterEntryOrGroup( + SINGLE_SOURCE_GROUP_ID, + safetyCenterTestData.safetyCenterEntryError(SINGLE_SOURCE_ID), + "Couldn’t check setting", ) ), emptyList(), @@ -509,8 +521,10 @@ class SafetyCenterManagerTest { safetyCenterTestData.safetyCenterStatusUnknown, emptyList(), listOf( - SafetyCenterEntryOrGroup( - safetyCenterTestData.safetyCenterEntryError(SINGLE_SOURCE_ID) + safetyCenterTestData.singletonSafetyCenterEntryOrGroup( + SINGLE_SOURCE_GROUP_ID, + safetyCenterTestData.safetyCenterEntryError(SINGLE_SOURCE_ID), + "Couldn’t check setting", ) ), emptyList(), @@ -522,13 +536,33 @@ class SafetyCenterManagerTest { safetyCenterStatusOkOneAlert, listOf(safetyCenterTestData.safetyCenterIssueInformation(SINGLE_SOURCE_ID)), listOf( - SafetyCenterEntryOrGroup( - safetyCenterTestData.safetyCenterEntryOk(SINGLE_SOURCE_ID) + safetyCenterTestData.singletonSafetyCenterEntryOrGroup( + SINGLE_SOURCE_GROUP_ID, + safetyCenterTestData.safetyCenterEntryOk(SINGLE_SOURCE_ID), + "Ok summary", // When an issue is present, entry summary is used ) ), emptyList(), ) + private val safetyCenterDataOkOneDismissedAlert: SafetyCenterData + get() = + SafetyCenterData( + safetyCenterStatusOk, + emptyList(), + listOf( + safetyCenterTestData.singletonSafetyCenterEntryOrGroup( + SINGLE_SOURCE_GROUP_ID, + safetyCenterTestData.safetyCenterEntryOk(SINGLE_SOURCE_ID), + "Ok summary", // When an issue is present, entry summary is used + ) + ), + emptyList(), + ) + .withDismissedIssuesIfAtLeastU( + listOf(safetyCenterTestData.safetyCenterIssueInformation(SINGLE_SOURCE_ID)) + ) + private val safetyCenterDataOkReviewCriticalEntry: SafetyCenterData get() = SafetyCenterData( @@ -562,8 +596,9 @@ class SafetyCenterManagerTest { safetyCenterStatusGeneralRecommendationOneAlert, listOf(safetyCenterTestData.safetyCenterIssueRecommendation(SINGLE_SOURCE_ID)), listOf( - SafetyCenterEntryOrGroup( - safetyCenterTestData.safetyCenterEntryRecommendation(SINGLE_SOURCE_ID) + safetyCenterTestData.singletonSafetyCenterEntryOrGroup( + SINGLE_SOURCE_GROUP_ID, + safetyCenterTestData.safetyCenterEntryRecommendation(SINGLE_SOURCE_ID), ) ), emptyList(), @@ -580,8 +615,9 @@ class SafetyCenterManagerTest { ) ), listOf( - SafetyCenterEntryOrGroup( - safetyCenterTestData.safetyCenterEntryRecommendation(SINGLE_SOURCE_ID) + safetyCenterTestData.singletonSafetyCenterEntryOrGroup( + SINGLE_SOURCE_GROUP_ID, + safetyCenterTestData.safetyCenterEntryRecommendation(SINGLE_SOURCE_ID), ) ), emptyList(), @@ -593,8 +629,9 @@ class SafetyCenterManagerTest { safetyCenterStatusAccountRecommendationOneAlert, listOf(safetyCenterTestData.safetyCenterIssueRecommendation(SINGLE_SOURCE_ID)), listOf( - SafetyCenterEntryOrGroup( - safetyCenterTestData.safetyCenterEntryRecommendation(SINGLE_SOURCE_ID) + safetyCenterTestData.singletonSafetyCenterEntryOrGroup( + SINGLE_SOURCE_GROUP_ID, + safetyCenterTestData.safetyCenterEntryRecommendation(SINGLE_SOURCE_ID), ) ), emptyList(), @@ -606,8 +643,9 @@ class SafetyCenterManagerTest { safetyCenterStatusDeviceRecommendationOneAlert, listOf(safetyCenterTestData.safetyCenterIssueRecommendation(SINGLE_SOURCE_ID)), listOf( - SafetyCenterEntryOrGroup( - safetyCenterTestData.safetyCenterEntryRecommendation(SINGLE_SOURCE_ID) + safetyCenterTestData.singletonSafetyCenterEntryOrGroup( + SINGLE_SOURCE_GROUP_ID, + safetyCenterTestData.safetyCenterEntryRecommendation(SINGLE_SOURCE_ID), ) ), emptyList(), @@ -1024,6 +1062,12 @@ class SafetyCenterManagerTest { ) val defaultEntryPendingIntent = apiSafetyCenterData.entriesOrGroups.firstOrNull()?.entry?.pendingIntent + ?: apiSafetyCenterData.entriesOrGroups + .firstOrNull() + ?.entryGroup + ?.entries + ?.firstOrNull() + ?.pendingIntent val defaultEntryIntentFilterEqualsToExplicitIntent = callWithShellPermissionIdentity("android.permission.GET_INTENT_SENDER_INTENT") { expectedExplicitPendingIntent.intentFilterEquals(defaultEntryPendingIntent) @@ -1044,6 +1088,12 @@ class SafetyCenterManagerTest { ) val defaultEntryPendingIntent = apiSafetyCenterData.entriesOrGroups.firstOrNull()?.entry?.pendingIntent + ?: apiSafetyCenterData.entriesOrGroups + .firstOrNull() + ?.entryGroup + ?.entries + ?.firstOrNull() + ?.pendingIntent val defaultEntryIntentFilterEqualsToImplicitIntent = callWithShellPermissionIdentity("android.permission.GET_INTENT_SENDER_INTENT") { expectedImplicitPendingIntent.intentFilterEquals(defaultEntryPendingIntent) @@ -3115,12 +3165,14 @@ class SafetyCenterManagerTest { safetyCenterTestData.safetyCenterStatusUnknown, emptyList(), listOf( - SafetyCenterEntryOrGroup( + safetyCenterTestData.singletonSafetyCenterEntryOrGroup( + SINGLE_SOURCE_GROUP_ID, safetyCenterTestData .safetyCenterEntryDefaultBuilder(SINGLE_SOURCE_ID) .setPendingIntent(null) .setEnabled(false) - .build() + .build(), + "No info yet", ) ), emptyList(), @@ -3143,13 +3195,14 @@ class SafetyCenterManagerTest { safetyCenterStatusOk, emptyList(), listOf( - SafetyCenterEntryOrGroup( + safetyCenterTestData.singletonSafetyCenterEntryOrGroup( + SINGLE_SOURCE_GROUP_ID, safetyCenterTestData .safetyCenterEntryOkBuilder(SINGLE_SOURCE_ID) .setSeverityLevel(ENTRY_SEVERITY_LEVEL_UNSPECIFIED) .setPendingIntent(null) .setEnabled(false) - .build() + .build(), ) ), emptyList(), @@ -3446,15 +3499,11 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueId(SINGLE_SOURCE_ID, INFORMATION_ISSUE_ID) ) - val expectedSafetyCenterData = - safetyCenterDataOk.withDismissedIssuesIfAtLeastU( - listOf(safetyCenterTestData.safetyCenterIssueInformation(SINGLE_SOURCE_ID)) - ) assertFailsWith(TimeoutCancellationException::class) { waitForWithTimeout(timeout = TIMEOUT_SHORT) { val hasResurfaced = safetyCenterManager.getSafetyCenterDataWithPermission() != - expectedSafetyCenterData + safetyCenterDataOkOneDismissedAlert hasResurfaced } } @@ -3483,15 +3532,11 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueId(SINGLE_SOURCE_ID, INFORMATION_ISSUE_ID) ) - val expectedSafetyCenterData = - safetyCenterDataOk.withDismissedIssuesIfAtLeastU( - listOf(safetyCenterTestData.safetyCenterIssueInformation(SINGLE_SOURCE_ID)) - ) assertFailsWith(TimeoutCancellationException::class) { waitForWithTimeout(timeout = TIMEOUT_SHORT) { val hasResurfaced = safetyCenterManager.getSafetyCenterDataWithPermission() != - expectedSafetyCenterData + safetyCenterDataOkOneDismissedAlert hasResurfaced } } diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterFlags.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterFlags.kt index 26a66a1a3..7efbba7a0 100644 --- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterFlags.kt +++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterFlags.kt @@ -254,7 +254,7 @@ object SafetyCenterFlags { * expand-and-collapse list. */ private val showSubpagesFlag = - Flag("safety_center_show_subpages", defaultValue = false, BooleanParser()) + Flag("safety_center_show_subpages", defaultValue = SdkLevel.isAtLeastU(), BooleanParser()) private val overrideRefreshOnPageOpenSourcesFlag = Flag( diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestData.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestData.kt index 631aae65f..15f8d02ae 100644 --- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestData.kt +++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestData.kt @@ -32,6 +32,8 @@ import android.safetycenter.SafetyCenterEntry.ENTRY_SEVERITY_LEVEL_UNKNOWN import android.safetycenter.SafetyCenterEntry.ENTRY_SEVERITY_LEVEL_UNSPECIFIED import android.safetycenter.SafetyCenterEntry.SEVERITY_UNSPECIFIED_ICON_TYPE_NO_ICON import android.safetycenter.SafetyCenterEntry.SEVERITY_UNSPECIFIED_ICON_TYPE_NO_RECOMMENDATION +import android.safetycenter.SafetyCenterEntryGroup +import android.safetycenter.SafetyCenterEntryOrGroup import android.safetycenter.SafetyCenterIssue import android.safetycenter.SafetyCenterIssue.ISSUE_SEVERITY_LEVEL_CRITICAL_WARNING import android.safetycenter.SafetyCenterIssue.ISSUE_SEVERITY_LEVEL_OK @@ -279,6 +281,32 @@ class SafetyCenterTestData(context: Context) { .setSeverityUnspecifiedIconType(SEVERITY_UNSPECIFIED_ICON_TYPE_NO_RECOMMENDATION) .build() + fun singletonSafetyCenterEntryOrGroup( + groupId: String, + entry: SafetyCenterEntry, + groupSummary: String? = null, + ) = + // TODO: b/361404288 - Replace with platform version check + if (SafetyCenterFlags.showSubpages) { + val summary = + if (groupSummary == null && entry.severityLevel > ENTRY_SEVERITY_LEVEL_OK) { + entry.summary + } else groupSummary ?: "OK" + + SafetyCenterEntryOrGroup( + SafetyCenterEntryGroup.Builder(groupId, "OK") + .setSeverityLevel(entry.severityLevel) + .setSeverityUnspecifiedIconType( + SEVERITY_UNSPECIFIED_ICON_TYPE_NO_RECOMMENDATION + ) + .setSummary(summary) + .setEntries(listOf(entry)) + .build() + ) + } else { + SafetyCenterEntryOrGroup(entry) + } + /** * Returns an information [SafetyCenterIssue] for the given source and user id that is * consistent with information [SafetySourceIssue]s used in [SafetySourceTestData]. |