diff options
19 files changed, 117 insertions, 35 deletions
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index 0f685301..0b10db1b 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -178,7 +178,7 @@ <string name="app_permission_footer_not_available" msgid="7473636495733881225">"Даныя пра апошні доступ цяпер недаступныя для гэтага дазволу"</string> <string name="app_permission_footer_app_permissions_link" msgid="6074026408119212662">"Паказаць усе дазволы праграмы \"<xliff:g id="APP">%1$s</xliff:g>\""</string> <string name="app_permission_footer_permission_apps_link" msgid="3489066323918915073">"Паказаць усе праграмы з гэтым дазволам"</string> - <string name="permission_description_summary_generic" msgid="1134416469764865198">"Характарыстыка дазволу: <xliff:g id="DESCRIPTION">%1$s</xliff:g>"</string> + <string name="permission_description_summary_generic" msgid="1134416469764865198">"Праграмы з гэтым дазволам могуць выконваць наступныя дзеянні: <xliff:g id="DESCRIPTION">%1$s</xliff:g>"</string> <string name="permission_description_summary_activity_recognition" msgid="3371048800215659444">"Праграмы з гэтым дазволам могуць мець доступ да звестак пра вашу фізічную актыўнасць, напрыклад перамяшчэнні пешшу, язду на веласіпедзе, на аўтамабілі, колькасць крокаў і многае іншае"</string> <string name="permission_description_summary_calendar" msgid="7627624281615554407">"Праграмы з гэтым дазволам могуць мець доступ да календара"</string> <string name="permission_description_summary_call_log" msgid="4715804544768878751">"Праграмы з гэтым дазволам могуць чытаць журнал выклікаў тэлефона і рабіць у яго запісы"</string> diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index 2cf650d3..bca09ff2 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -97,20 +97,20 @@ <string name="permission_usage_summary_background" msgid="9179526841353882748">"Últim accés: <xliff:g id="TIME">%1$s</xliff:g>\nÚltim accés en segon pla"</string> <string name="permission_usage_any_permission" msgid="8832731783727406380">"Qualsevol permís"</string> <string name="permission_usage_any_time" msgid="1476491940247458210">"En qualsevol moment"</string> - <string name="permission_usage_last_7_days" msgid="4888188421845723880">"Últims 7 dies"</string> + <string name="permission_usage_last_7_days" msgid="4888188421845723880">"7 darrers dies"</string> <string name="permission_usage_last_day" msgid="8645320285604363072">"Últimes 24 hores"</string> <string name="permission_usage_last_hour" msgid="2604532770472032956">"Última hora"</string> <string name="permission_usage_last_15_minutes" msgid="5426881076086895200">"Últims 15 minuts"</string> <string name="permission_usage_last_minute" msgid="3067561801126564567">"Últim minut"</string> <string name="no_permission_usages" msgid="5322488885313825032">"Cap ús de permisos"</string> <string name="permission_usage_list_title_any_time" msgid="5231969131124312338">"Accés més recents en qualsevol moment"</string> - <string name="permission_usage_list_title_last_7_days" msgid="3481601827843295434">"Accés més recents durant els 7 últims dies"</string> + <string name="permission_usage_list_title_last_7_days" msgid="3481601827843295434">"Accés més recents durant els 7 darrers dies"</string> <string name="permission_usage_list_title_last_day" msgid="8004766042375735038">"Accés més recent durant les últimes 24 hores"</string> <string name="permission_usage_list_title_last_hour" msgid="5263636446126109595">"Accés més recent durant l\'última hora"</string> <string name="permission_usage_list_title_last_15_minutes" msgid="3842584491108496053">"Accés més recents durant els últims 15 minuts"</string> <string name="permission_usage_list_title_last_minute" msgid="6135511482448899737">"Accés més recents durant l\'últim minut"</string> <string name="permission_usage_bar_chart_title_any_time" msgid="2233750755422237444">"Ús de permisos en qualsevol moment"</string> - <string name="permission_usage_bar_chart_title_last_7_days" msgid="2505302271268657969">"Ús de permisos durant els últims 7 dies"</string> + <string name="permission_usage_bar_chart_title_last_7_days" msgid="2505302271268657969">"Ús de permisos durant els 7 darrers dies"</string> <string name="permission_usage_bar_chart_title_last_day" msgid="3929341411684348428">"Ús de permisos durant les últimes 24 hores"</string> <string name="permission_usage_bar_chart_title_last_hour" msgid="1473287216393833028">"Ús de permisos durant l\'última hora"</string> <string name="permission_usage_bar_chart_title_last_15_minutes" msgid="8394883927589032677">"Ús de permisos durant els últims 15 minuts"</string> @@ -225,7 +225,7 @@ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="99044354994789512">"Aquestes aplicacions poden veure la pantalla, les accions i el text que s\'introdueix, dur a terme accions i controlar la pantalla."</string> <string name="role_assistant_label" msgid="325607225419991524">"Aplicació d\'assistència predeterminada"</string> <string name="role_assistant_short_label" msgid="5324338887042810318">"Aplicació d\'assistència"</string> - <string name="role_assistant_description" msgid="5980622464037768572">"Les aplicacions d\'assistència et poden ajudar en funció de la informació que es mostri a la pantalla. Algunes aplicacions admeten tant els serveis de menú d\'aplicacions com els d\'entrada de veu per oferir-te una assistència integrada."</string> + <string name="role_assistant_description" msgid="5980622464037768572">"Les aplicacions d\'assistència et poden ajudar en funció de la informació que es mostri a la pantalla. Algunes aplicacions admeten tant el menú d\'aplicacions com els serveis d\'entrada de veu per oferir-te una assistència integrada."</string> <string name="role_assistant_request_title" msgid="2198246079117996249">"Vols establir <xliff:g id="APP_NAME">%1$s</xliff:g> com a aplicació d\'assistència predeterminada?"</string> <string name="role_assistant_request_description" msgid="9007538649849881727">"Tindrà accés als SMS i al registre de trucades"</string> <string name="role_browser_label" msgid="1452186785584890151">"Aplicació de navegador predeterminada"</string> diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index 450c2934..b7066234 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -98,7 +98,7 @@ <string name="permission_usage_any_permission" msgid="8832731783727406380">"Edozein baimen"</string> <string name="permission_usage_any_time" msgid="1476491940247458210">"Edonoiz"</string> <string name="permission_usage_last_7_days" msgid="4888188421845723880">"Azken 7 egunetan"</string> - <string name="permission_usage_last_day" msgid="8645320285604363072">"Azken 24 orduetan"</string> + <string name="permission_usage_last_day" msgid="8645320285604363072">"Azken 24 orduetakoak"</string> <string name="permission_usage_last_hour" msgid="2604532770472032956">"Azken orduan"</string> <string name="permission_usage_last_15_minutes" msgid="5426881076086895200">"Azken 15 minutuetan"</string> <string name="permission_usage_last_minute" msgid="3067561801126564567">"Azken minutuan"</string> diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index 9f3b5619..50b43856 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -224,7 +224,7 @@ <string name="accessibility_service_dialog_bottom_text_single" msgid="1201610224744125691">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ಸೇವೆಯು ನಿಮ್ಮ ಸ್ಕ್ರೀನ್, ಕ್ರಿಯೆಗಳು ಮತ್ತು ಇನ್ಪುಟ್ಗಳು, ಕೆಲಸ ನಿರ್ವಹಣೆ ಕ್ರಿಯೆಗಳು ಮತ್ತು ಡಿಸ್ಪ್ಲೇ ನಿಯಂತ್ರಣವನ್ನು ವೀಕ್ಷಿಸಬಹುದು."</string> <string name="accessibility_service_dialog_bottom_text_multiple" msgid="99044354994789512">"ಈ ಅಪ್ಲಿಕೇಶನ್ಗಳು ನಿಮ್ಮ ಪರದೆ, ಕ್ರಿಯೆಗಳು ಮತ್ತು ಇನ್ಪುಟ್ಗಳನ್ನು ವೀಕ್ಷಿಸಬಹುದು, ಕ್ರಿಯೆಗಳನ್ನು ನಿರ್ವಹಿಸಬಹುದು, ಮತ್ತು ಡಿಸ್ಪ್ಲೇ ಅನ್ನು ನಿಯಂತ್ರಿಸಬಹುದು."</string> <string name="role_assistant_label" msgid="325607225419991524">"ಡೀಫಾಲ್ಟ್ ಅಸಿಸ್ಟೆಂಟ್ ಆ್ಯಪ್"</string> - <string name="role_assistant_short_label" msgid="5324338887042810318">"ಸಹಾಯ ಅಪ್ಲಿಕೇಶನ್"</string> + <string name="role_assistant_short_label" msgid="5324338887042810318">"ಸಹಾಯಕ ಆ್ಯಪ್"</string> <string name="role_assistant_description" msgid="5980622464037768572">"ನೀವು ವೀಕ್ಷಿಸುತ್ತಿರುವ ಸ್ಕ್ರೀನ್ನ ಮಾಹಿತಿಯನ್ನು ಆಧರಿಸಿ ಅಸಿಸ್ಟೆಂಟ್ ಆ್ಯಪ್ಗಳು ನಿಮಗೆ ಸಹಾಯ ಮಾಡಬಹುದು. ಕೆಲವು ಆ್ಯಪ್ಗಳು ನಿಮಗೆ ಸಂಪೂರ್ಣ ಸಹಾಯವನ್ನು ಒದಗಿಸಲು ಲಾಂಚರ್ ಮತ್ತು ಧ್ವನಿ ಇನ್ಪುಟ್ ಸೇವೆಗಳೆರಡನ್ನೂ ಬೆಂಬಲಿಸುತ್ತವೆ."</string> <string name="role_assistant_request_title" msgid="2198246079117996249">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಆ್ಯಪ್ ಅನ್ನು ನಿಮ್ಮ ಡೀಫಾಲ್ಟ್ ಅಸಿಸ್ಟೆಂಟ್ ಆ್ಯಪ್ ಆಗಿ ಹೊಂದಿಸುವುದೇ?"</string> <string name="role_assistant_request_description" msgid="9007538649849881727">"SMS, ಕರೆ ಲಾಗ್ಗೆ ಪ್ರವೇಶವನ್ನು ಪಡೆದುಕೊಳ್ಳುತ್ತದೆ"</string> diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml index 977dd910..76fe778a 100644 --- a/res/values-mr/strings.xml +++ b/res/values-mr/strings.xml @@ -98,7 +98,7 @@ <string name="permission_usage_any_permission" msgid="8832731783727406380">"कोणतीही परवानगी"</string> <string name="permission_usage_any_time" msgid="1476491940247458210">"कधीही"</string> <string name="permission_usage_last_7_days" msgid="4888188421845723880">"शेवटचे सात दिवस"</string> - <string name="permission_usage_last_day" msgid="8645320285604363072">"गेल्या २४ तासात"</string> + <string name="permission_usage_last_day" msgid="8645320285604363072">"गेल्या २४ तासांत"</string> <string name="permission_usage_last_hour" msgid="2604532770472032956">"शेवटचा एक तास"</string> <string name="permission_usage_last_15_minutes" msgid="5426881076086895200">"शेवटची १५ मिनिटे"</string> <string name="permission_usage_last_minute" msgid="3067561801126564567">"शेवटचा एक मिनिट"</string> diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml index d8205bec..6227c433 100644 --- a/res/values-my/strings.xml +++ b/res/values-my/strings.xml @@ -21,7 +21,7 @@ <string name="permission_search_keyword" msgid="3970416730023831175">"ခွင့်ပြုချက်များ"</string> <string name="cancel" msgid="8360346460165114585">"မလုပ်တော့"</string> <string name="app_not_found_dlg_title" msgid="2692335460569505484">"အက်ပ်အားမတွေ့ပါ"</string> - <string name="grant_dialog_button_deny" msgid="2176510645406614340">"ငြင်းပယ်သည်"</string> + <string name="grant_dialog_button_deny" msgid="2176510645406614340">"ငြင်းပယ်ရန်"</string> <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="7583601276815031679">"ငြင်းပယ်သည်၊ ထပ်မမေးပါနှင့်"</string> <string name="grant_dialog_button_deny_background" msgid="4054411855048240271">"အသုံးပြုနေစဉ် ဝင်သုံးခွင့်ကို သိမ်းထားပါ"</string> <string name="grant_dialog_button_deny_background_and_dont_ask_again" msgid="999878458921486616">"သိမ်းပါ၊ ထပ်မမေးပါနှင့်"</string> @@ -225,7 +225,7 @@ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="99044354994789512">"ဤအက်ပ်များက သင်၏ မျက်နှာပြင်၊ လုပ်ဆောင်ချက်များ၊ ထည့်သွင်းမှုများကို ကြည့်နိုင်ပြီး လုပ်ဆောင်ချက်များကို ဆောင်ရွက်နိုင်သည့်အပြင် မျက်နှာပြင်ပြသမှုကိုလည်း ထိန်းချုပ်နိုင်သည်။"</string> <string name="role_assistant_label" msgid="325607225419991524">"မူရင်း အကူအညီအက်ပ်"</string> <string name="role_assistant_short_label" msgid="5324338887042810318">"အကူအညီ အက်ပ်"</string> - <string name="role_assistant_description" msgid="5980622464037768572">"အကူအညီအက်ပ်များသည် သင်ကြည့်နေသည့် မျက်နှာပြင်မှ အချက်အလက်ကို အခြေခံ၍ ပံ့ပိုးပေးနိုင်ပါသည်။ ဘက်စုံ အထောက်အကူပေးနိုင်ရန်အတွက် အချို့အက်ပ်များသည် စဖွင့်စနစ်နှင့် အသံဖြင့်ထည့်သွင်းဝန်ဆောင်မှု နှစ်ခုလုံးကို ပံ့ပိုးပါသည်။"</string> + <string name="role_assistant_description" msgid="5980622464037768572">"အကူအညီအက်ပ်သည် သင်ကြည့်နေသည့် မျက်နှာပြင်မှ အချက်အလက်ကို အခြေခံ၍ ကူညီနိုင်ပါသည်။ ဘက်စုံ အထောက်အကူပေးနိုင်ရန်အတွက် အချို့အက်ပ်များသည် launcher နှင့် အသံဖြင့်ထည့်သွင်းခြင်းတို့ကို ပံ့ပိုးပါသည်။"</string> <string name="role_assistant_request_title" msgid="2198246079117996249">"<xliff:g id="APP_NAME">%1$s</xliff:g> ကို သင့်မူရင်း အကူအညီအက်ပ်အဖြစ် သတ်မှတ်လိုပါသလား။"</string> <string name="role_assistant_request_description" msgid="9007538649849881727">"SMS နှင့် ခေါ်ဆိုမှတ်တမ်းကို ဝင်သုံးခွင့် ရယူသည်"</string> <string name="role_browser_label" msgid="1452186785584890151">"မူရင်း ဘရောင်ဇာအက်ပ်"</string> diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml index a1f115c9..8bc18f7b 100644 --- a/res/values-pt-rBR/strings.xml +++ b/res/values-pt-rBR/strings.xml @@ -225,7 +225,7 @@ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="99044354994789512">"Esses apps podem ver sua tela, ações e entradas, além de realizar ações e controlar a exibição."</string> <string name="role_assistant_label" msgid="325607225419991524">"App assistivo padrão"</string> <string name="role_assistant_short_label" msgid="5324338887042810318">"App assistivo"</string> - <string name="role_assistant_description" msgid="5980622464037768572">"Apps assistivos podem ajudar com base nas informações da tela que você vê no momento. Alguns apps são compatíveis com a tela de início e com serviços de entrada de texto por voz para oferecer assistência integrada."</string> + <string name="role_assistant_description" msgid="5980622464037768572">"Apps assistivos podem ajudar com base nas informações que você vê na tela. Alguns apps oferecem tecnologia assistiva integrada, porque são compatíveis com a tela de início e com serviços de entrada de texto por voz."</string> <string name="role_assistant_request_title" msgid="2198246079117996249">"Definir <xliff:g id="APP_NAME">%1$s</xliff:g> como seu app assistivo padrão?"</string> <string name="role_assistant_request_description" msgid="9007538649849881727">"Recebe acesso a SMS e registro de chamadas"</string> <string name="role_browser_label" msgid="1452186785584890151">"App padrão de navegador"</string> diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index a1f115c9..8bc18f7b 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -225,7 +225,7 @@ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="99044354994789512">"Esses apps podem ver sua tela, ações e entradas, além de realizar ações e controlar a exibição."</string> <string name="role_assistant_label" msgid="325607225419991524">"App assistivo padrão"</string> <string name="role_assistant_short_label" msgid="5324338887042810318">"App assistivo"</string> - <string name="role_assistant_description" msgid="5980622464037768572">"Apps assistivos podem ajudar com base nas informações da tela que você vê no momento. Alguns apps são compatíveis com a tela de início e com serviços de entrada de texto por voz para oferecer assistência integrada."</string> + <string name="role_assistant_description" msgid="5980622464037768572">"Apps assistivos podem ajudar com base nas informações que você vê na tela. Alguns apps oferecem tecnologia assistiva integrada, porque são compatíveis com a tela de início e com serviços de entrada de texto por voz."</string> <string name="role_assistant_request_title" msgid="2198246079117996249">"Definir <xliff:g id="APP_NAME">%1$s</xliff:g> como seu app assistivo padrão?"</string> <string name="role_assistant_request_description" msgid="9007538649849881727">"Recebe acesso a SMS e registro de chamadas"</string> <string name="role_browser_label" msgid="1452186785584890151">"App padrão de navegador"</string> diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index c30d35d9..89b6dc2a 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -239,7 +239,7 @@ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="99044354994789512">"Te aplikacije si lahko ogledujejo zaslon, dejanja in vnose, izvajajo dejanja in upravljajo prikaz."</string> <string name="role_assistant_label" msgid="325607225419991524">"Privzeta aplikacija za pomoč"</string> <string name="role_assistant_short_label" msgid="5324338887042810318">"Aplikacija za pomoč"</string> - <string name="role_assistant_description" msgid="5980622464037768572">"Aplikacije za pomoč vam pomagajo na podlagi podatkov na zaslonu, ki si ga ogledujete. Nekatere aplikacije podpirajo storitve zaganjalnika in glasovnega vnosa pri zagotavljanju integrirane pomoči."</string> + <string name="role_assistant_description" msgid="5980622464037768572">"Aplikacije za pomoč vam lahko pomagajo na podlagi podatkov na zaslonu, ki si ga ogledujete. Nekatere aplikacije podpirajo storitve zaganjalnika in glasovnega vnosa in vam tako zagotavljajo celovito pomoč."</string> <string name="role_assistant_request_title" msgid="2198246079117996249">"Želite aplikacijo <xliff:g id="APP_NAME">%1$s</xliff:g> nastaviti kot privzeto aplikacijo za pomoč?"</string> <string name="role_assistant_request_description" msgid="9007538649849881727">"Dobi dostop do sporočil SMS in dnevnika klicev"</string> <string name="role_browser_label" msgid="1452186785584890151">"Privzeti brskalnik"</string> diff --git a/res/values-ta-television/strings.xml b/res/values-ta-television/strings.xml index e79ff344..d467a86a 100644 --- a/res/values-ta-television/strings.xml +++ b/res/values-ta-television/strings.xml @@ -17,7 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="grant_dialog_button_deny_dont_ask_again" msgid="5694574989758145558">"நிராகரி, மீண்டும் கேட்காதே"</string> - <string name="grant_dialog_how_to_change" msgid="615414835189256888">"அமைப்புகள் > பயன்பாடுகள் என்பதில் பிறகு மாற்றலாம்"</string> + <string name="grant_dialog_how_to_change" msgid="615414835189256888">"அமைப்புகள் > ஆப்ஸ் என்பதில் பிறகு மாற்றலாம்"</string> <string name="current_permission_template" msgid="4793247012451594523">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7330308025768596149">"முறைமைப் பயன்பாடுகளைக் காட்டு"</string> <string name="app_permissions_decor_title" msgid="1461057434211920209">"ஆப்ஸ் அனுமதிகள்"</string> diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml index 8c31aeaa..3411f2e5 100644 --- a/res/values-ta/strings.xml +++ b/res/values-ta/strings.xml @@ -79,8 +79,8 @@ <string name="all_permissions" msgid="5156669007784613042">"எல்லா அனுமதிகளும்"</string> <string name="other_permissions" msgid="2016192512386091933">"ஆப்ஸின் பிற திறன்கள்"</string> <string name="permission_request_title" msgid="1204446718549121199">"அனுமதி கோரிக்கை"</string> - <string name="screen_overlay_title" msgid="3021729846864038529">"திரையின் மேலே செயல்படும் பயன்பாடுகள் கண்டறியப்பட்டன"</string> - <string name="screen_overlay_message" msgid="2141944461571677331">"இந்த அனுமதியை மாற்ற, அமைப்புகள் > பயன்பாடுகள் என்பதற்குச் சென்று, திரையின் மேலே செயல்படும் பயன்பாடுகளை முதலில் முடக்கவும்"</string> + <string name="screen_overlay_title" msgid="3021729846864038529">"திரையின் மேலே செயல்படும் ஆப்ஸ் கண்டறியப்பட்டன"</string> + <string name="screen_overlay_message" msgid="2141944461571677331">"இந்த அனுமதியை மாற்ற, அமைப்புகள் > ஆப்ஸ் என்பதற்குச் சென்று, திரையின் மேலே செயல்படும் ஆப்ஸை முதலில் முடக்கவும்"</string> <string name="screen_overlay_button" msgid="4344544843349937743">"அமைப்புகளைத் திற"</string> <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string> <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"Wear இல் நிறுவுதல்/நிறுவல் நீக்குதலுக்கு ஆதரவில்லை."</string> diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index 740789d6..d0edbe79 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -53,8 +53,8 @@ </plurals> <string name="old_sdk_deny_warning" msgid="3872277112584842615">"ఈ యాప్ పాత Android వెర్షన్ కోసం రూపొందించబడింది. అనుమతిని నిరాకరించినట్లయితే ఇది ఇకపై ఉద్దేశించిన రీతిలో పని చేయకపోవచ్చు."</string> <string name="default_permission_description" msgid="4992892207044156668">"తెలియని చర్యను చేస్తుంది"</string> - <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_1">%2$d</xliff:g>లో <xliff:g id="COUNT_0">%1$d</xliff:g> యాప్లు అనుమతించబడ్డాయి"</string> - <string name="menu_show_system" msgid="6773743421743728921">"సిస్టమ్ను చూపు"</string> + <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_1">%2$d</xliff:g> యాప్లలో <xliff:g id="COUNT_0">%1$d</xliff:g> యాప్లు అనుమతించబడ్డాయి"</string> + <string name="menu_show_system" msgid="6773743421743728921">"సిస్టమ్ ప్రాసెస్లను చూపు"</string> <string name="menu_hide_system" msgid="7595471742649432977">"సిస్టమ్ను దాచు"</string> <string name="no_apps" msgid="1965493419005012569">"యాప్లు లేవు"</string> <string name="location_settings" msgid="1774875730854491297">"స్థాన సెట్టింగ్లు"</string> @@ -77,7 +77,7 @@ <string name="permission_access_never" msgid="6189440007697689967">"తిరస్కరించు"</string> <string name="loading" msgid="7811651799620593731">"లోడ్ అవుతోంది..."</string> <string name="all_permissions" msgid="5156669007784613042">"అన్ని అనుమతులు"</string> - <string name="other_permissions" msgid="2016192512386091933">"ఇతర అనువర్తన సామర్థ్యాలు"</string> + <string name="other_permissions" msgid="2016192512386091933">"యాప్నకు మంజూరైన ఇతర అనుమతులు"</string> <string name="permission_request_title" msgid="1204446718549121199">"అనుమతి అభ్యర్థన"</string> <string name="screen_overlay_title" msgid="3021729846864038529">"స్క్రీన్ అతివ్యాప్తి గుర్తించబడింది"</string> <string name="screen_overlay_message" msgid="2141944461571677331">"ఈ అనుమతి సెట్టింగ్ను మార్చడానికి, మీరు ముందుగా సెట్టింగ్లు > అనువర్తనాల నుండి స్క్రీన్ అతివ్యాప్తిని ఆఫ్ చేయాలి"</string> @@ -225,7 +225,7 @@ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="99044354994789512">"ఈ యాప్లు మీ స్క్రీన్, చర్యలు, ఇన్పుట్లను చూడగలవు, చర్యలను అమలు చేయగలవు, అలాగే ప్రదర్శనను నియంత్రించగలవు."</string> <string name="role_assistant_label" msgid="325607225419991524">"డిఫాల్ట్ సహాయక యాప్"</string> <string name="role_assistant_short_label" msgid="5324338887042810318">"సహాయక యాప్"</string> - <string name="role_assistant_description" msgid="5980622464037768572">"సహాయక యాప్లు మీరు వీక్షిస్తున్న స్క్రీన్పై ఉన్న సమాచారం ఆధారంగా మీకు సహాయపడగలవు. కొన్ని యాప్లు మీకు సమగ్రమైన సహాయాన్ని అందించడానికి లాంచర్, వాయిస్ ఇన్పుట్ సేవలు రెండింటికీ మద్దతిస్తాయి."</string> + <string name="role_assistant_description" msgid="5980622464037768572">"మీరు చూస్తోన్న స్క్రీన్పై ఉన్న సమాచారం ఆధారంగా, సహాయక యాప్లు మీకు సహాయపడగలవు. మీకు సమగ్రమైన సహాయాన్ని అందించడానికి, కొన్ని యాప్లు లాంచర్, వాయిస్ ఇన్పుట్ సేవలు రెండింటికీ మద్దతిస్తాయి."</string> <string name="role_assistant_request_title" msgid="2198246079117996249">"<xliff:g id="APP_NAME">%1$s</xliff:g>ను మీ డిఫాల్ట్ సహాయక యాప్గా సెట్ చేయాలా?"</string> <string name="role_assistant_request_description" msgid="9007538649849881727">"SMS, కాల్ లాగ్లకు యాక్సెస్ పొందుతుంది"</string> <string name="role_browser_label" msgid="1452186785584890151">"డిఫాల్ట్ బ్రౌజర్ యాప్"</string> diff --git a/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java b/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java index cac2ef2c..438487ec 100644 --- a/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java +++ b/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java @@ -25,6 +25,7 @@ import android.content.pm.PackageManager; import android.content.pm.PermissionInfo; import android.permission.PermissionManager; import android.text.TextUtils; +import android.util.ArrayMap; import android.util.Log; import androidx.annotation.NonNull; @@ -32,6 +33,7 @@ import androidx.annotation.NonNull; import com.android.packageinstaller.PermissionControllerStatsLog; import com.android.packageinstaller.permission.model.AppPermissionGroup; import com.android.packageinstaller.permission.model.Permission; +import com.android.packageinstaller.permission.utils.ArrayUtils; import com.android.packageinstaller.permission.utils.Utils; import java.util.ArrayList; @@ -44,7 +46,7 @@ class RuntimePermissionsUpgradeController { private static final String LOG_TAG = RuntimePermissionsUpgradeController.class.getSimpleName(); // The latest version of the runtime permissions database - private static final int LATEST_VERSION = 7; + private static final int LATEST_VERSION = 8; private RuntimePermissionsUpgradeController() { /* do nothing - hide constructor */ @@ -88,6 +90,9 @@ class RuntimePermissionsUpgradeController { | PackageManager.MATCH_UNINSTALLED_PACKAGES | PackageManager.MATCH_FACTORY_ONLY); + // Cache permissionInfos + final ArrayMap<String, PermissionInfo> permissionInfos = new ArrayMap<>(); + final int appCount = apps.size(); for (int i = 0; i < appCount; i++) { final PackageInfo app = apps.get(i); @@ -97,12 +102,16 @@ class RuntimePermissionsUpgradeController { } for (String requestedPermission : app.requestedPermissions) { - final PermissionInfo permInfo; - try { - permInfo = context.getPackageManager().getPermissionInfo( - requestedPermission, 0); - } catch (PackageManager.NameNotFoundException e) { - continue; + PermissionInfo permInfo = permissionInfos.get(requestedPermission); + if (permInfo == null) { + try { + permInfo = context.getPackageManager().getPermissionInfo( + requestedPermission, 0); + } catch (PackageManager.NameNotFoundException e) { + continue; + } + + permissionInfos.put(requestedPermission, permInfo); } if ((permInfo.flags & (PermissionInfo.FLAG_HARD_RESTRICTED @@ -272,16 +281,55 @@ class RuntimePermissionsUpgradeController { currentVersion = 7; } + if (currentVersion == 7) { + Log.i(LOG_TAG, "Expanding read storage to access media location"); + + for (int i = 0; i < appCount; i++) { + final PackageInfo pkgInfo = apps.get(i); + + if (!ArrayUtils.contains(pkgInfo.requestedPermissions, + Manifest.permission.ACCESS_MEDIA_LOCATION)) { + continue; + } + + if (context.checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE, 0, + pkgInfo.applicationInfo.uid) != PackageManager.PERMISSION_GRANTED) { + continue; + } + + final AppPermissionGroup group = AppPermissionGroup.create(context, pkgInfo, + Manifest.permission.ACCESS_MEDIA_LOCATION, false); + final Permission perm = group.getPermission( + Manifest.permission.ACCESS_MEDIA_LOCATION); + + if (!perm.isUserSet() && !perm.isSystemFixed() && !perm.isPolicyFixed() + && !perm.isGrantedIncludingAppOp()) { + group.grantRuntimePermissions(false, + new String[]{Manifest.permission.ACCESS_MEDIA_LOCATION}); + + logRuntimePermissionUpgradeResult(group, + pkgInfo.applicationInfo.uid, pkgInfo.packageName, + Manifest.permission.ACCESS_MEDIA_LOCATION); + } + } + + currentVersion = 8; + } + // XXX: Add new upgrade steps above this point. return currentVersion; } private static void logRuntimePermissionUpgradeResult(AppPermissionGroup permissionGroup, - int uid, String packageName) { + int uid, String packageName, String... filterPermissions) { ArrayList<Permission> permissions = permissionGroup.getPermissions(); int numPermissions = permissions.size(); for (int i = 0; i < numPermissions; i++) { + if (filterPermissions != null && !ArrayUtils.contains(filterPermissions, permissions)) { + continue; + } + Permission permission = permissions.get(i); PermissionControllerStatsLog.write(RUNTIME_PERMISSIONS_UPGRADE_RESULT, permission.getName(), uid, packageName); diff --git a/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionFragment.java b/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionFragment.java index 214d7202..548545b5 100644 --- a/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionFragment.java +++ b/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionFragment.java @@ -354,7 +354,7 @@ public class AppPermissionFragment extends SettingsWithLargeHeader { return permissionSnapshot; } - permissions = mGroup.getPermissions(); + permissions = permissionGroup.getPermissions(); numPermissions = permissions.size(); for (int i = 0; i < numPermissions; i++) { diff --git a/src/com/android/packageinstaller/role/model/HomeRoleBehavior.java b/src/com/android/packageinstaller/role/model/HomeRoleBehavior.java index c59575de..eb808acb 100644 --- a/src/com/android/packageinstaller/role/model/HomeRoleBehavior.java +++ b/src/com/android/packageinstaller/role/model/HomeRoleBehavior.java @@ -126,12 +126,17 @@ public class HomeRoleBehavior implements RoleBehavior { } @Override + public boolean isApplicationVisibleAsUser(@NonNull Role role, + @NonNull ApplicationInfo applicationInfo, @NonNull UserHandle user, + @NonNull Context context) { + // Home is not available for work profile, so we can just use the current user. + return !isSettingsApplication(applicationInfo, context); + } + + @Override public void prepareApplicationPreferenceAsUser(@NonNull Role role, @NonNull Preference preference, @NonNull ApplicationInfo applicationInfo, @NonNull UserHandle user, @NonNull Context context) { - // Home is not available for work profile, so we can just use the current user. - boolean isSettingsApplication = isSettingsApplication(applicationInfo, context); - preference.setVisible(!isSettingsApplication); boolean missingWorkProfileSupport = isMissingWorkProfileSupport(applicationInfo, context); preference.setEnabled(!missingWorkProfileSupport); preference.setSummary(missingWorkProfileSupport ? context.getString( diff --git a/src/com/android/packageinstaller/role/model/Role.java b/src/com/android/packageinstaller/role/model/Role.java index 58cbf622..e3332db0 100644 --- a/src/com/android/packageinstaller/role/model/Role.java +++ b/src/com/android/packageinstaller/role/model/Role.java @@ -369,6 +369,23 @@ public class Role { } /** + * Check whether a qualifying application should be visible to user. + * + * @param applicationInfo the {@link ApplicationInfo} for the application + * @param user the user for the application + * @param context the {@code Context} to retrieve system services + * + * @return whether the qualifying application should be visible to user + */ + public boolean isApplicationVisibleAsUser(@NonNull ApplicationInfo applicationInfo, + @NonNull UserHandle user, @NonNull Context context) { + if (mBehavior != null) { + return mBehavior.isApplicationVisibleAsUser(this, applicationInfo, user, context); + } + return true; + } + + /** * Prepare a {@link Preference} for an application. * * @param preference the {@link Preference} for the application diff --git a/src/com/android/packageinstaller/role/model/RoleBehavior.java b/src/com/android/packageinstaller/role/model/RoleBehavior.java index 4a30d00c..41ffb455 100644 --- a/src/com/android/packageinstaller/role/model/RoleBehavior.java +++ b/src/com/android/packageinstaller/role/model/RoleBehavior.java @@ -84,6 +84,15 @@ public interface RoleBehavior { @NonNull Context context) {} /** + * @see Role#isApplicationVisibleAsUser(ApplicationInfo, UserHandle, Context) + */ + default boolean isApplicationVisibleAsUser(@NonNull Role role, + @NonNull ApplicationInfo applicationInfo, @NonNull UserHandle user, + @NonNull Context context) { + return true; + } + + /** * @see Role#prepareApplicationPreferenceAsUser(Preference, ApplicationInfo, UserHandle, * Context) */ diff --git a/src/com/android/packageinstaller/role/service/RoleControllerServiceImpl.java b/src/com/android/packageinstaller/role/service/RoleControllerServiceImpl.java index 1ba0e0ff..bee43205 100644 --- a/src/com/android/packageinstaller/role/service/RoleControllerServiceImpl.java +++ b/src/com/android/packageinstaller/role/service/RoleControllerServiceImpl.java @@ -19,6 +19,7 @@ package com.android.packageinstaller.role.service; import android.app.role.RoleControllerService; import android.app.role.RoleManager; import android.content.pm.ApplicationInfo; +import android.os.AsyncTask; import android.os.Process; import android.os.UserHandle; import android.util.ArrayMap; @@ -169,9 +170,8 @@ public class RoleControllerServiceImpl extends RoleControllerService { } } - // Load data on this thread instead of background. - // TODO: Move out of this thread - Utils.updateUserSensitive(getApplication(), Process.myUserHandle()); + AsyncTask.execute( + () -> Utils.updateUserSensitive(getApplication(), Process.myUserHandle())); return true; } diff --git a/src/com/android/packageinstaller/role/ui/RoleLiveData.java b/src/com/android/packageinstaller/role/ui/RoleLiveData.java index 4b932b6f..5a7b138b 100644 --- a/src/com/android/packageinstaller/role/ui/RoleLiveData.java +++ b/src/com/android/packageinstaller/role/ui/RoleLiveData.java @@ -94,6 +94,9 @@ public class RoleLiveData extends AsyncTaskLiveData<List<Pair<ApplicationInfo, B + qualifyingPackageName); continue; } + if (!mRole.isApplicationVisibleAsUser(qualifyingApplicationInfo, mUser, mContext)) { + continue; + } boolean isHolderApplication = holderPackageNames.contains(qualifyingPackageName); qualifyingApplications.add(new Pair<>(qualifyingApplicationInfo, isHolderApplication)); } |