From a36d55e8f83e8bf6e50254cda04632e233598f42 Mon Sep 17 00:00:00 2001 From: Yanting Yang Date: Thu, 14 Oct 2021 15:06:33 +0000 Subject: [PATCH 01/14] Rephrase dialog message of clear storage dialog for security concern Bug: 193890833 Test: visual Change-Id: I8f0b066de710169ee8b922c44b6519ca21b9c7ef (cherry picked from commit 0c359da620498d536d81cb97d5ae48048201c226) (cherry picked from commit 5549bf8cd03bcd5e71dbcf825301f5cbe0224d61) Merged-In:I8f0b066de710169ee8b922c44b6519ca21b9c7ef --- res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index c4609fb1f5c..133b98392be 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -4813,7 +4813,7 @@ Delete app data? - All this app\u2019s data will be deleted permanently. This includes all files, settings, accounts, databases, etc. + This app\u2019s data will be permanently deleted. This includes files, settings, databases, and other app data. OK From d2d3da3850d1eefd2a49dc93e1b6f953711a8902 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Wed, 3 Nov 2021 14:28:55 -0700 Subject: [PATCH 02/14] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I6966abfdfdbf672b27528c1761eb23b95aefe521 (cherry picked from commit ffc0ed7b89375cca08b66035b1163cd435d825cf) Merged-In:I6966abfdfdbf672b27528c1761eb23b95aefe521 --- res/values-af/strings.xml | 2 +- res/values-am/strings.xml | 2 +- res/values-ar/strings.xml | 2 +- res/values-as/strings.xml | 2 +- res/values-az/strings.xml | 2 +- res/values-b+sr+Latn/strings.xml | 2 +- res/values-be/strings.xml | 2 +- res/values-bg/strings.xml | 2 +- res/values-bn/strings.xml | 2 +- res/values-bs/strings.xml | 2 +- res/values-ca/strings.xml | 2 +- res/values-cs/strings.xml | 2 +- res/values-da/strings.xml | 2 +- res/values-de/strings.xml | 2 +- res/values-el/strings.xml | 2 +- res/values-en-rAU/strings.xml | 2 +- res/values-en-rCA/strings.xml | 2 +- res/values-en-rGB/strings.xml | 2 +- res/values-en-rIN/strings.xml | 2 +- res/values-en-rXC/strings.xml | 2 +- res/values-es-rUS/strings.xml | 2 +- res/values-es/strings.xml | 2 +- res/values-et/strings.xml | 2 +- res/values-eu/strings.xml | 2 +- res/values-fa/strings.xml | 2 +- res/values-fi/strings.xml | 2 +- res/values-fr-rCA/strings.xml | 2 +- res/values-fr/strings.xml | 2 +- res/values-gl/strings.xml | 2 +- res/values-gu/strings.xml | 2 +- res/values-hi/strings.xml | 2 +- res/values-hr/strings.xml | 2 +- res/values-hu/strings.xml | 2 +- res/values-hy/strings.xml | 2 +- res/values-in/strings.xml | 2 +- res/values-is/strings.xml | 2 +- res/values-it/strings.xml | 2 +- res/values-iw/strings.xml | 2 +- res/values-ja/strings.xml | 2 +- res/values-ka/strings.xml | 2 +- res/values-kk/strings.xml | 2 +- res/values-km/strings.xml | 2 +- res/values-kn/strings.xml | 2 +- res/values-ko/strings.xml | 2 +- res/values-ky/strings.xml | 2 +- res/values-lo/strings.xml | 2 +- res/values-lt/strings.xml | 2 +- res/values-lv/strings.xml | 2 +- res/values-mk/strings.xml | 2 +- res/values-ml/strings.xml | 2 +- res/values-mn/strings.xml | 2 +- res/values-mr/strings.xml | 2 +- res/values-ms/strings.xml | 2 +- res/values-my/strings.xml | 2 +- res/values-nb/strings.xml | 2 +- res/values-ne/strings.xml | 2 +- res/values-nl/strings.xml | 2 +- res/values-or/strings.xml | 2 +- res/values-pa/strings.xml | 2 +- res/values-pl/strings.xml | 2 +- res/values-pt-rBR/strings.xml | 2 +- res/values-pt-rPT/strings.xml | 2 +- res/values-pt/strings.xml | 2 +- res/values-ro/strings.xml | 2 +- res/values-ru/strings.xml | 2 +- res/values-si/strings.xml | 2 +- res/values-sk/strings.xml | 2 +- res/values-sl/strings.xml | 2 +- res/values-sq/strings.xml | 2 +- res/values-sr/strings.xml | 2 +- res/values-sv/strings.xml | 2 +- res/values-sw/strings.xml | 2 +- res/values-ta/strings.xml | 2 +- res/values-te/strings.xml | 2 +- res/values-th/strings.xml | 2 +- res/values-tl/strings.xml | 2 +- res/values-tr/strings.xml | 2 +- res/values-uk/strings.xml | 2 +- res/values-ur/strings.xml | 2 +- res/values-uz/strings.xml | 2 +- res/values-vi/strings.xml | 2 +- res/values-zh-rCN/strings.xml | 2 +- res/values-zh-rHK/strings.xml | 2 +- res/values-zh-rTW/strings.xml | 2 +- res/values-zu/strings.xml | 2 +- 85 files changed, 85 insertions(+), 85 deletions(-) diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index 398fca0e13a..73096d719a3 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -2093,7 +2093,7 @@ "Interne berging" "Herbereken tans grootte…" "Vee programdata uit?" - "Alle data van hierdie program sal permanent uitgevee word. Dit sluit alle lêers, instellings, rekeninge, databasisse ens. in." + "Hierdie program se data sal permanent uitgevee word. Dit sluit lêers, instellings, databasisse en ander programdata in." "OK" "Kanselleer" diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index b11d87445fb..aaac29e803f 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -2093,7 +2093,7 @@ "የውስጥ ማከማቻ" "መጠን ድጋሚ በማስላት ላይ..." "መተግበሪያ ውሂብ ሰርዝ?" - "የዚህ መተግበሪያ ውሂቦች ሁሉ በቋሚነት ይሰረዛሉ።እነዚህም ፋይሎችን፣ ቅንብሮችን፣ መለያዎችን፣ የውሂብ ጎታዎች እና የመሳሰሉትን ያካትታሉ።" + "የዚህ መተግበሪያ ውሂብ እስከመጨረሻው ይሰረዛል። ይህ ፋይሎችን፣ ቅንብሮችን፣ የውሂብ ጎታን እና ሌላ የመተግበሪያ ውሂብን ያካትታል።" "እሺ" "ይቅር" diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index a67e049b246..47d6130936a 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -2189,7 +2189,7 @@ "وحدة التخزين الداخلية" "جارٍ إعادة حساب الحجم..." "هل تريد حذف بيانات التطبيق؟" - "سيتم حذف جميع بيانات هذا التطبيق نهائيًا. ويشمل ذلك جميع الملفات والإعدادات والحسابات وقواعد البيانات وما إلى ذلك." + "سيتم حذف بيانات هذا التطبيق نهائيًا، بما في ذلك الملفات والإعدادات وقواعد البيانات وبيانات التطبيق الأخرى." "حسنًا" "إلغاء" diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index 0ce62d8fa01..5b65255f94f 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -2093,7 +2093,7 @@ "আভ্যন্তৰীণ সঞ্চয়াগাৰ" "এপৰ আকাৰ পুনঃগণনা কৰা হৈছে…" "এপ্ ডেটা মচিবনে?" - "এই এপটোৰ সকলো ডেটা স্থায়ীভাৱে মচা হ\'ব। সেই ডেটাসমূহৰ ভিতৰত ফাইল ছেটিং, একাউণ্ট, ডেটাবে\'ছ আদি অন্তৰ্ভুক্ত।" + "এই এপৰ ডেটাখিনি স্থায়ীভাৱে মচা হ’ব। ইয়াত ফাইল, ছেটিং, ডেটাবে’ছ আৰু অন্য এপৰ ডেটা অন্তৰ্ভুক্ত।" "ঠিক" "বাতিল কৰক" diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml index 7792d74c348..c3fa7803702 100644 --- a/res/values-az/strings.xml +++ b/res/values-az/strings.xml @@ -2093,7 +2093,7 @@ "Daxili yaddaş" "Ölçünü yenidən hesablayır..." "Tətbiq məlumatları silinsin?" - "Bu tətbiq datası həmişəlik silinəcək. Buraya bütün fayllar, ayarlar, hesablar, verilənlər bazası və sairləri aiddir." + "Bu tətbiq datası həmişəlik silinəcək. Buraya fayllar, ayarlar, data bazaları və digər tətbiq datası daxildir." "OK" "Ləğv edin" diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml index 43809833642..e8800ae80d8 100644 --- a/res/values-b+sr+Latn/strings.xml +++ b/res/values-b+sr+Latn/strings.xml @@ -2117,7 +2117,7 @@ "Interno skladište" "Ponovno izračunavanje veličine..." "Želite li da izbrišete podatke o aplikaciji?" - "Svi podaci ove aplikacije biće trajno izbrisani. To obuhvata sve datoteke, podešavanja, naloge, baze podataka itd." + "Podaci ove aplikacije će se trajno izbrisati. To obuhvata fajlove, podešavanja, baze podataka i druge podatke aplikacija." "Potvrdi" "Otkaži" diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index 48be9d01ce1..71a13253fb7 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -2143,7 +2143,7 @@ "Унутраная памяць" "Пераразлік памеру..." "Выдаліць даныя праграмы?" - "Усе даныя гэтай праграмы будуць назаўсёды выдалены. Гэта датычыцца ўсiх файлаў, налад, уліковых запісаў, баз даных і г. д." + "Даныя гэтай праграмы (файлы, налады, базы даных і г. д.) будуць выдалены назаўсёды." "ОК" "Скасаваць" diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 321f0f2d31e..0f13d09d71e 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -2095,7 +2095,7 @@ "Вътр. хранилище" "Размерът се преизчислява..." "Да се изтрият ли данните от приложенията?" - "Всички данни на това приложение ще бъдат изтрити за постоянно. Това включва всички файлове, настройки, профили и т.н." + "Данните на приложението ще бъдат изтрити за постоянно. Това включва файловете, настройките, базите от данни и други данни от приложението." "OK" "Отказ" diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml index d95ba89590d..491a1507d17 100644 --- a/res/values-bn/strings.xml +++ b/res/values-bn/strings.xml @@ -2093,7 +2093,7 @@ "ইন্টারনাল স্টোরেজ" "আকার আবার গণনা করা হচ্ছে..." "অ্যাপ ডেটা মুছবেন?" - "এই অ্যাপের সমস্ত ডেটা স্থায়ীভাবে মুছে যাবে। সমস্ত ফাইল, সেটিংস, অ্যাকাউন্ট, ডেটাবেস ইত্যাদি সবই।" + "এই অ্যাপের ডেটা স্থায়ীভাবে মুছে ফেলা হবে। এর মধ্যে ফাইল, সেটিংস, ডেটাবেস এবং অন্য অ্যাপ ডেটা আছে।" "ঠিক আছে" "বাতিল" diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index f604eb57387..b4e35c22033 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -2117,7 +2117,7 @@ "Unutrašnja pohrana" "Ponovno izračunavanje veličine…" "Izbrisati podatke aplikacija?" - "Svi podaci ove aplikacije će biti trajno izbrisani. To uključuje sve fajlove, postavke, račune, baze podataka itd." + "Ovi podaci aplikacije će se trajno izbrisati. To obuhvata fajlove, postavke, baze podataka i ostale podatke aplikacije." "Uredu" "Otkaži" diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index a23329ab0de..832ae14db8e 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -2093,7 +2093,7 @@ "Emmagatzematge intern" "S\'està tornant a calcular la mida..." "Vols suprimir les dades de l\'aplicació?" - "Se suprimiran totes les dades d\'aquesta aplicació permanentment. Això inclou tots els fitxers, les opcions de configuració, els comptes, les bases de dades, etc." + "Les dades d'aquesta aplicació se suprimiran permanentment. Això inclou fitxers, opcions de configuració, bases de dades i altres dades de l'aplicació." "D\'acord" "Cancel·la" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 6106eb5f94e..e3ccef48066 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -2141,7 +2141,7 @@ "Interní úložiště" "Přepočítávání velikosti..." "Smazat data aplikace?" - "Veškerá data (všechny soubory, nastavení, účty, databáze apod.) této aplikace budou trvale vymazána." + "Data této aplikace budou trvale smazána. To zahrnuje soubory, nastavení, databáze a další data aplikace." "OK" "Zrušit" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 1dd83065a9b..3d03f0363e9 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -2093,7 +2093,7 @@ "Intern lagerplads" "Beregner størrelse igen..." "Vil du slette appdata?" - "Alle data i denne app slettes permanent. Det omfatter alle filer, indstillinger, konti, databaser osv." + "Denne apps data slettes permanent. Det omfatter filer, indstillinger, databaser og andre appdata." "OK" "Annuller" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 549b3500a05..28dbe6199dc 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -2096,7 +2096,7 @@ "Interner Speicher" "Größe wird neu berechnet..." "App-Daten löschen?" - "Alle Daten dieser App werden endgültig gelöscht. Dazu zählen alle Dateien, Einstellungen, Konten, Datenbanken usw." + "Die Daten dieser App werden endgültig gelöscht. Dazu gehören Dateien, Einstellungen, Datenbanken und sonstige App-Daten." "Ok" "Abbrechen" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 17f13f81b3c..c002baba71f 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -2093,7 +2093,7 @@ "Εσ. αποθ. χώρος" "Εκ νέου υπολογισμός μεγέθους..." "Διαγραφή δεδομένων εφαρμογής;" - "Όλα τα δεδομένα της εφαρμογής θα διαγραφούν μόνιμα. Αυτό περιλαμβάνει όλα τα αρχεία, τις ρυθμίσεις, τους λογαριασμούς, τις βάσεις δεδομένων κ.λπ." + "Τα δεδομένα αυτής της εφαρμογής θα διαγραφούν οριστικά. Σε αυτά περιλαμβάνονται αρχεία, ρυθμίσεις, βάσεις δεδομένων και άλλα δεδομένα εφαρμογών." "OK" "Ακύρωση" diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml index 9bca5d88382..414cea43273 100644 --- a/res/values-en-rAU/strings.xml +++ b/res/values-en-rAU/strings.xml @@ -2093,7 +2093,7 @@ "Internal storage" "Recomputing size…" "Delete app data?" - "All of this app\'s data will be deleted permanently. This includes all files, settings, accounts, databases, etc." + "This app’s data will be permanently deleted. This includes files, settings, databases and other app data." "OK" "Cancel" diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml index 11a2d7005ae..f998aa81bb2 100644 --- a/res/values-en-rCA/strings.xml +++ b/res/values-en-rCA/strings.xml @@ -2093,7 +2093,7 @@ "Internal storage" "Recomputing size…" "Delete app data?" - "All of this app\'s data will be deleted permanently. This includes all files, settings, accounts, databases, etc." + "This app’s data will be permanently deleted. This includes files, settings, databases and other app data." "OK" "Cancel" diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index 0ee7a2984eb..d46d4f9d8ad 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -2093,7 +2093,7 @@ "Internal storage" "Recomputing size…" "Delete app data?" - "All of this app\'s data will be deleted permanently. This includes all files, settings, accounts, databases, etc." + "This app’s data will be permanently deleted. This includes files, settings, databases and other app data." "OK" "Cancel" diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml index 16b81492ab3..a19e681997c 100644 --- a/res/values-en-rIN/strings.xml +++ b/res/values-en-rIN/strings.xml @@ -2093,7 +2093,7 @@ "Internal storage" "Recomputing size…" "Delete app data?" - "All of this app\'s data will be deleted permanently. This includes all files, settings, accounts, databases, etc." + "This app’s data will be permanently deleted. This includes files, settings, databases and other app data." "OK" "Cancel" diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml index 1f67bc5a7b6..b2f7f985f77 100644 --- a/res/values-en-rXC/strings.xml +++ b/res/values-en-rXC/strings.xml @@ -2093,7 +2093,7 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‎‏‏‎‏‏‏‎‏‏‏‏‎‏‏‏‎‏‏‎‏‎‎‎‏‎‏‏‏‎‎‏‏‏‏‏‏‎‏‎‎‎‏‏‎‏‎‎‏‎‎‎‏‎‎‏‎‏‎‎‏‎Internal storage‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‎‏‏‏‏‎‎‏‏‏‏‎‏‎‎‏‏‎‏‎‎‎‎‏‎‎‏‏‏‎‏‏‏‏‏‏‎‎‎‎‎‎‏‏‎‏‎‎‏‎‏‏‏‎‏‎‏‏‎‎‎‎Recomputing size…‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‎‏‎‏‎‎‎‎‎‎‏‎‎‎‏‎‎‏‏‏‎‎‎‏‏‏‏‏‎‏‎‎‏‎‏‎‎‏‎‏‎‎‏‎‏‎‏‏‎‏‎‏‎‏‏‏‎‏‎‎Delete app data?‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‏‎‏‎‎‏‏‎‏‏‎‏‏‎‏‏‏‎‏‎‏‏‎‏‏‏‎‏‎‎‎‏‎‎‏‎‏‎‎‏‎‏‎‏‎‏‎‏‏‏‎‎‎All this app’s data will be deleted permanently. This includes all files, settings, accounts, databases, etc.‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‎‏‏‏‏‎‏‎‏‏‏‏‏‎‎‎‎‎‏‏‎‎‏‎‎‏‏‎‎‏‏‎‏‎‎‎‎‎‎‏‏‏‏‎‏‎‏‏‎‏‏‎‎‏‏‎‏‏‏‏‎‎This app’s data will be permanently deleted. This includes files, settings, databases, and other app data.‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‎‏‏‏‎‏‏‏‎‎‏‏‎‏‎‎‏‏‎‏‎‏‎‎‎‎‏‎‎‎‎‎‎‎‏‏‎‎‎‏‎‏‏‎‏‏‎‏‎‎‎‎‎‏‎‎‏‎‏‎OK‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎‏‏‏‏‎‏‎‏‏‎‎‏‎‏‏‎‏‏‏‏‏‏‎‎‎‏‏‏‏‎‎‎‎‏‎‎‎‏‏‎‏‎‎‎‎‏‎‏‏‎‏‎‏‏‏‎‎‏‏‎Cancel‎‏‎‎‏‎" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 9f7dbaa75e6..1e4949f40d2 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -2095,7 +2095,7 @@ "Almacenamiento interno" "Recalculando el tamaño…" "¿Borrar los datos de la app?" - "Se eliminarán de forma permanente todos los datos de esta aplicación, incluidos archivos, ajustes, cuentas, bases de datos, etc." + "Se borrarán de forma permanente los datos de esta app. Se incluyen archivos, parámetros de configuración, bases de datos y otros datos de app." "Aceptar" "Cancelar" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 5095f403420..7bf847fe636 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -2093,7 +2093,7 @@ "Almacenamiento interno" "Recalculando tamaño…" "¿Eliminar datos de la aplicación?" - "Todos los datos de esta aplicación se eliminarán de forma permanente. Esto incluye todos los archivos, ajustes, cuentas, bases de datos, etc." + "Los datos de esta aplicación se eliminarán de forma permanente, incluidos los archivos, ajustes, bases de datos y otros datos relacionados con ella." "Aceptar" "Cancelar" diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index c04f518f013..612adccad17 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -2095,7 +2095,7 @@ "Sisemälu" "Suuruse ümberarvutamine ..." "Kas kustutada rakenduse andmed?" - "Rakenduse kõik andmed kustutatakse lõplikult. See hõlmab kõiki faile, seadeid, kontosid, andmebaase jne." + "Selle rakenduse andmed kustutatakse jäädavalt. See hõlmab faile, seadeid, andmebaase ja muid rakenduse andmeid." "OK" "Tühista" diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index b06e6918d86..8a86629983a 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -2093,7 +2093,7 @@ "Barneko memoria" "Tamaina berriro kalkulatzen…" "Aplikazioko datuak ezabatu nahi?" - "Aplikazio honetako datu guztiak betiko ezabatuko dira; besteak beste, fitxategi, ezarpen, kontu, datu-base eta abar guztiak." + "Aplikazio honen datuak betiko ezabatuko dira; besteak beste, fitxategiak, ezarpenak, datu-baseak eta aplikazioko beste batu batzuk." "Ados" "Utzi" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 7a8f8d460b0..e387d00e367 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -2093,7 +2093,7 @@ "فضای ذخیره‌سازی داخلی" "محاسبه مجدد اندازه…" "داده‌های برنامه حذف شود؟" - "همه داده‌های این برنامه به صورت دائمی حذف می‌شود. این شامل تمام فایل‌ها، تنظیمات، حساب‌ها، پایگاه‌های داده و دیگر موارد می‌شود." + "داده‌های این برنامه به‌طور دائم حذف خواهد شد. این شامل فایل‌ها، تنظیمات، پایگاه‌های داده، و دیگر داده‌های برنامه می‌شود." "تأیید" "لغو" diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index b8de5ad6ed8..959aa52d619 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -2093,7 +2093,7 @@ "Sisäinen tallennustila" "Lasketaan kokoa uudelleen..." "Poistetaanko sovelluksen tiedot?" - "Kaikki tämän sovelluksen tiedot poistetaan pysyvästi. Tähän sisältyvät kaikki tiedostot, asetukset, tilit, tietokannat jne." + "Sovelluksen data poistetaan pysyvästi. Tämä koskee tiedostoja, asetuksia, tietokantoja ja muuta sovellusdataa." "OK" "Peru" diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index f912270f720..000af661ba0 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -2093,7 +2093,7 @@ "Mémoire de stockage interne" "Calcul de la taille..." "Supprimer les données de l\'application?" - "Toutes les données de cette application seront supprimées définitivement, y compris tous les fichiers, les paramètres, les comptes, les bases de données, etc." + "Les données de cette application seront définitivement supprimées. Cela inclut les fichiers, les paramètres, les bases de données et d'autres données de l'application." "OK" "Annuler" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index fad2f5c640d..bebc7585748 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -2093,7 +2093,7 @@ "Stockage interne" "Calcul de la taille..." "Supprimer les données de l\'application ?" - "Toutes les données de cette application (fichiers, paramètres, comptes, bases de données, etc.) seront définitivement supprimées." + "Les données de cette application (fichiers, paramètres, comptes, bases de données, etc.) seront définitivement supprimées." "OK" "Annuler" diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index 27c5dc56ccf..9725d1a8cc5 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -2093,7 +2093,7 @@ "Almacenamento interno" "Recalculando o tamaño…" "Eliminar os datos da aplicación?" - "Eliminaranse todos os datos desta aplicación permanentemente. Entre estes inclúense todos os ficheiros, opcións de configuracións, contas, bases de datos etc." + "Os datos desta aplicación (como os ficheiros, a configuración e as bases de datos) eliminaranse de forma permanente." "Aceptar" "Cancelar" diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index a2eda129dba..3cdfca79bdc 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -2093,7 +2093,7 @@ "આંતરિક સ્ટોરેજ" "કદની ફરીથી ગણના કરી રહ્યું છે…" "ઍપનો ડેટા ડિલીટ કરીએ?" - "આ તમામ ઍપનો ડેટા કાયમી રીતે ડિલીટ કરવામાં આવશે. આમાં તમામ ફાઇલો, સેટિંગ, એકાઉન્ટ, ડેટાબેઝ વગેરે શામેલ છે." + "આ ઍપના ડેટાને કાયમી રીતે કાઢી નાખવામાં આવશે. આમાં ફાઇલો, સેટિંગ, ડેટાબેઝ અને અન્ય ઍપ ડેટા પણ શામેલ હોય છે." "ઓકે" "રદ કરો" diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 384f794954f..3e9058b9116 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -2093,7 +2093,7 @@ "मोबाइल मेमोरी" "आकार फिर से परिकलित कर रहा है…" "ऐप्लिकेशन डेटा मिटाना चाहते हैं?" - "इस ऐप्लिकेशन का पूरा डेटा हमेशा के लिए मिटा दिया जाएगा. इसमें सभी फ़ाइलें, सेटिंग, खाते, डेटाबेस वगैरह शामिल हैं." + "इस ऐप्लिकेशन का डेटा हमेशा के लिए मिटा दिया जाएगा. इसमें फ़ाइलें, सेटिंग, डेटाबेस, और ऐप्लिकेशन का दूसरा डेटा शामिल है." "ठीक है" "रद्द करें" diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index bc4b8ee897c..e2d9c81ee09 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -2119,7 +2119,7 @@ "Unutarnja pohrana" "Ponovni izračun veličine…" "Izbrisati podatke aplikacije?" - "Svi podaci ove aplikacije trajno će se izbrisati. To obuhvaća sve datoteke, postavke, račune, baze podataka itd." + "Podaci aplikacije trajno će se izbrisati. To uključuje datoteke, postavke, baze podataka i druge podatke aplikacije." "U redu" "Odustani" diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index 907d379a8c7..1e2afc27df0 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -2093,7 +2093,7 @@ "Belső tárhely" "Méret újraszámítása..." "Törli az alkalmazás adatait?" - "Az alkalmazás minden adatát véglegesen törölni fogja. Ez magában foglalja az összes fájlt, beállítást, fiókot, adatbázist stb." + "Az alkalmazás adatai véglegesen törlődnek. Így törlődni fognak a fájlok, a beállítások, az adatbázisok és az egyéb alkalmazásadatok is." "OK" "Mégse" diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml index 0b397b8e642..3310712ea46 100644 --- a/res/values-hy/strings.xml +++ b/res/values-hy/strings.xml @@ -2093,7 +2093,7 @@ "Ներքին պահոց" "Չափի վերահաշվարկում…" "Ջնջե՞լ հավելվածի տվյալները" - "Այս հավելվածի բոլոր տվյալներն ընդմիշտ կջնջվեն: Այն կներառի բոլոր ֆայլերը, կարգավորումները, հաշիվները, տվյալների շտեմարանները և այլն:" + "Այս հավելվածի տվյալներն ընդմիշտ կջնջվեն։Դա վերաբերում է ֆայլերին, կարգավորումներին, տվյալների շտեմարաններին և հավելվածի այլ տվյալներին։" "Հաստատել" "Չեղարկել" diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index be1a1acd017..95fd4923cd3 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -2093,7 +2093,7 @@ "Penyimpanan internal" "Menghitung ulang ukuran..." "Hapus data aplikasi?" - "Semua data aplikasi ini akan dihapus secara permanen, termasuk semua file, setelan, akun, database, dll." + "Data aplikasi ini akan dihapus secara permanen. Data ini termasuk file, setelan, database, dan data aplikasi lainnya." "Oke" "Batal" diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml index 3ffbcaa108c..cfd733b23da 100644 --- a/res/values-is/strings.xml +++ b/res/values-is/strings.xml @@ -2093,7 +2093,7 @@ "Innbyggð geymsla" "Endurreiknar stærð…" "Eyða forritsgögnum?" - "Öllum gögnum þessa forrits verður eytt fyrir fullt og allt. Í þessu felast allar skrár, stillingar, reikningar, gagnagrunnar o.s.frv." + "Gögnum þessa forrits verður eytt fyrir fullt og allt. Þetta á við um skrár, stillingar, gagnagrunna og önnur forritsgögn." "Í lagi" "Hætta við" diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 4201449788a..fc132ed60c0 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -2093,7 +2093,7 @@ "Memoria interna" "Ricalcolo dimensioni…" "Eliminare i dati dell\'app?" - "Tutti i dati dell\'app verranno eliminati definitivamente, inclusi tutti i file, le impostazioni, gli account, i database e così via." + "I dati di questa app verranno eliminati definitivamente, inclusi file, impostazioni, database e altri dati dell'app." "OK" "Annulla" diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 2dbf808ff7b..581e690209a 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -2143,7 +2143,7 @@ "אחסון פנימי" "הגודל מחושב מחדש..." "למחוק את נתוני האפליקציה?" - "כל נתוני האפליקציה יימחקו לתמיד. הנתונים האלה כוללים את כל הקבצים, ההגדרות, החשבונות, מסדי הנתונים וכדומה." + "נתוני האפליקציה יימחקו באופן סופי. לרבות קבצים, הגדרות, מסדי נתונים ונתונים אחרים מהאפליקציה." "אישור" "ביטול" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index e0db9c714d3..7a03c44ac41 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -2093,7 +2093,7 @@ "内部ストレージ" "サイズを再計算中..." "アプリのデータを削除しますか?" - "このアプリのすべてのデータ(ファイル、設定、アカウント、データベースを含む)が完全に削除されます。" + "このアプリのデータが完全に削除されます。ファイル、設定、データベース、その他のアプリデータが対象になります。" "OK" "キャンセル" diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml index a2fb7721fc8..38fad4e7370 100644 --- a/res/values-ka/strings.xml +++ b/res/values-ka/strings.xml @@ -2093,7 +2093,7 @@ "შიდა მეხსიერება" "ზომის გადათვლა…" "წაიშალოს აპის მონაცემები?" - "აპის მონაცემები, მათ შორის ყველა ფაილი, პარამეტრი, ანგარიში, მონაცემთა ბაზა და ა.შ. სამუდამოდ წაიშლება." + "ამ აპის მონაცემები სამუდამოდ წაიშლება. ეს ეხება ფაილებს, პარამეტრებს, მონაცემთა ბაზებსა და აპის სხვა მონაცემებს." "კარგი" "გაუქმება" diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml index 45fb1228afd..bf8fe2b43e5 100644 --- a/res/values-kk/strings.xml +++ b/res/values-kk/strings.xml @@ -2093,7 +2093,7 @@ "Ішкі жад" "Өлшемін қайта есептеуде…" "Қолданба деректері жойылсын ба?" - "Бұл қолданбаның барлық дерегі біржола жойылады. Бұған барлық файл, параметр, аккаунт, дерекқор және т.б. кіреді." + "Бұл қолданбаның дерегі біржола жойылады. Оған файлдар, параметрлер, дерекқорлар және тағы басқа қолданба дерегі кіреді." "Жарайды" "Бас тарту" diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index f9ff3691c6f..4c47902c148 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -2093,7 +2093,7 @@ "ឧបករណ៍​ខាង​ក្នុង" "កំពុង​គណនា​ទំហំ​ឡើងវិញ…" "លុប​ទិន្នន័យ​កម្មវិធី?" - "ទិន្នន័យ​របស់​កម្មវិធី​នេះ​ទាំងអស់​នឹង​ត្រូវ​បាន​លុប​ជា​អចិន្ត្រៃយ៍។ ទិន្នន័យទាំងនេះរួមមាន ឯកសារ​ទាំងអស់ ការ​កំណត់ គណនី មូលដ្ឋាន​ទិន្នន័យ ។ល។" + "ទិន្នន័យ​របស់កម្មវិធីនេះ​នឹងត្រូវបានលុប​ជាអចិន្ត្រៃយ៍។ ទិន្នន័យនេះ​រួមមាន​ឯកសារ ការកំណត់ មូលដ្ឋាន​ទិន្នន័យ និង​ទិន្នន័យកម្មវិធី​ផ្សេងទៀត។" "យល់​ព្រម​" "បោះ​បង់​" diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index 2e3f5fabb58..89bb43145d7 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -2093,7 +2093,7 @@ "ಆಂತರಿಕ ಸಂಗ್ರಹಣೆ" "ಗಾತ್ರವನ್ನು ಮರುಗಣನೆ ಮಾಡಲಾಗುತ್ತಿದೆ…" "ಆ್ಯಪ್ ಡೇಟಾ ಅಳಿಸಬೇಕೇ?" - "ಈ ಆ್ಯಪ್‍‍ನ ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಲಾಗುತ್ತದೆ. ಇದರಲ್ಲಿ ಎಲ್ಲಾ ಫೈಲ್‌ಗಳು, ಸೆಟ್ಟಿಂಗ್‌ಗಳು, ಖಾತೆಗಳು, ಡೇಟಾಬೇಸ್‌ಗಳು, ಇತ್ಯಾದಿಗಳು ಸೇರಿರುತ್ತವೆ." + "ಈ ಆ್ಯಪ್‌ನ ಡೇಟಾವನ್ನು ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಲಾಗುವುದು. ಇದು ಫೈಲ್‌ಗಳು, ಸೆಟ್ಟಿಂಗ್‌ಗಳು, ಡೇಟಾಬೇಸ್‌ಗಳು ಮತ್ತು ಇತರ ಆ್ಯಪ್ ಡೇಟಾ ಒಳಗೊಂಡಿದೆ." "ಸರಿ" "ರದ್ದುಮಾಡಿ" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 613d8ecc00e..9f4947ce1ed 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -2095,7 +2095,7 @@ "내부 저장소" "크기 다시 계산 중..." "앱 데이터를 삭제하시겠습니까?" - "앱의 전체 데이터가 영구적으로 삭제됩니다. 여기에는 모든 파일, 설정, 계정, 데이터베이스 등이 포함됩니다." + "이 앱 데이터가 영구적으로 삭제됩니다. 삭제 대상에는 파일, 설정, 데이터베이스, 기타 앱 데이터가 포함됩니다." "확인" "취소" diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml index 294f5e55ddd..a0547b7a6f8 100644 --- a/res/values-ky/strings.xml +++ b/res/values-ky/strings.xml @@ -2093,7 +2093,7 @@ "Ички эстутум" "Өлчөмү кайра эсептелүүдө…" "Колдонмодогу нерселерди өчүрөсүзбү?" - "Бул колдонмодогу файлдар, жөндөөлөр, аккаунттар жана маалымат базасы сыяктуу бардык нерселер биротоло өчүрүлөт." + "Бул колдонмодогу маалымат биротоло жок кылынат. Ага файлдар, жөндөөлөр, дайындар базалары жана колдонмонун башка дайындары кирет." "Жарайт" "Жок" diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml index 6f94b261f48..d68c9aee7ca 100644 --- a/res/values-lo/strings.xml +++ b/res/values-lo/strings.xml @@ -2093,7 +2093,7 @@ "ພື້ນທີ່ຈັດເກັບຂໍ້ມູນພາຍໃນ" "ກຳລັງຄຳນວນຂະໜາດຄືນໃໝ່..." "ລຶບຂໍ້ມູນແອັບບໍ່?" - "ຂໍ້ມູນທັງໝົດຂອງແອັບນີ້ຈະຖືກລຶບອອກຖາວອນ ເຊິ່ງຮວມເຖິງໄຟລ໌, ການຕັ້ງຄ່າ, ບັນຊີ, ຖານຂໍ້ມູນ ແລະ ອື່ນໆທັງໝົດນຳ." + "ຂໍ້ມູນຂອງແອັບນີ້ຈະຖືກລຶບອອກຖາວອນ. ນີ້ຮວມເຖິງໄຟລ໌, ການຕັ້ງຄ່າ, ຖານຂໍ້ມູນ ແລະ ຂໍ້ມູນແອັບອື່ນໆນຳ" "ຕົກລົງ" "ຍົກເລີກ" diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index 5e48f861454..b3607fecd6f 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -2141,7 +2141,7 @@ "Vidinė atmint." "Iš naujo apskaičiuojamas dydis..." "Ištrinti programos duomenis?" - "Visi šios programos duomenys bus visam laikui ištrinti. Tai taikoma visiems failams, nustatymams, paskyroms, duomenims ir kt." + "Šios programos duomenys bus visam laikui ištrinti. Įtraukiami failai, nustatymai, duomenų bazės ir kiti programos duomenys." "Gerai" "Atšaukti" diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index d1c1f64b130..088b640e296 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -2117,7 +2117,7 @@ "Iekšējā krātuve" "Notiek izmēra pārrēķināšana..." "Vai dzēst lietotnes datus?" - "Tiks neatgriezeniski dzēsti visi šīs lietotnes dati, tostarp visi faili, iestatījumi, konti, datu bāzes un citi vienumi." + "Tiks neatgriezeniski dzēsti šīs lietotnes dati, tostarp faili, iestatījumi, datu bāzes un citi lietotnes dati." "Labi" "Atcelt" diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index 80539845b5a..816769370aa 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -2095,7 +2095,7 @@ "Внатрешен капацитет" "Повторно пресметување големина..." "Да се избришат податоците на апликацијата?" - "Сите податоци на оваа апликација ќе бидат трајно избришани. Ова ги опфаќа сите датотеки, поставки, сметки, бази на податоци итн." + "Податоците од апликацијава трајно ќе се избришат. Ова вклучува датотеки, поставки, бази на податоци и други податоци од апликацијата." "Во ред" "Откажи" diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index 1c6c3c9037c..f96e44cee15 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -2093,7 +2093,7 @@ "ആന്തരിക സ്റ്റോറേജ്" "വലുപ്പം വീണ്ടും കണക്കാക്കുന്നു..." "ആപ്പ് ഡാറ്റ ഇല്ലാതാക്കണോ?" - "ഈ ആപ്പിന്‍റെ എല്ലാ ഡാറ്റയും ശാശ്വതമായി ഇല്ലാതാക്കും. ഫയലുകൾ, ക്രമീകരണങ്ങൾ, അക്കൗണ്ടുകൾ, ഡാറ്റാബേസുകൾ തുടങ്ങിയവയെല്ലാം ഇതിൽ ഉൾപ്പെടും." + "ഈ ആപ്പിന്റെ ഡാറ്റ ശാശ്വതമായി ഇല്ലാതാക്കും. ഇതിൽ ഫയലുകളും ക്രമീകരണവും ഡാറ്റാബേസുകളും മറ്റ് ആപ്പ് ഡാറ്റയും ഉൾപ്പെടുന്നു." "ശരി" "റദ്ദാക്കുക" diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml index 553f8973583..dcf8544c8d7 100644 --- a/res/values-mn/strings.xml +++ b/res/values-mn/strings.xml @@ -2093,7 +2093,7 @@ "Дотоод сан" "Хэмжээг дахин тооцоолж байна…" "Апп өгөгдлийг устгах уу?" - "Энэ апп-н бүх өгөгдөл бүрмөсөн устах болно. Үүнд бүх файл, тохиргоо, бүртгэл, өгөгдөл гэх мэт орно." + "Энэ аппын өгөгдлийг бүрмөсөн устгана. Үүнд файл, тохиргоо, өгөгдлийн бааз болон бусад аппын өгөгдөл багтана." "OK" "Цуцлах" diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml index 89ab80c75df..3b9f320812d 100644 --- a/res/values-mr/strings.xml +++ b/res/values-mr/strings.xml @@ -2094,7 +2094,7 @@ "अंतर्गत स्टोरेज" "आकाराचे पुनर्संगणन करत आहे…" "अ‍ॅप डेटा हटवायचा?" - "या अ‍ॅपचा सर्व डेटा कायमचा हटवला जाईल. यात सर्व फाइल, सेटिंग्ज, खाती, डेटाबेस इ. समाविष्ट असेल." + "या ॲपचा डेटा कायमचा हटवला जाईल. यामध्ये फाइल, सेटिंग्ज, डेटाबेस आणि इतर अ‍ॅप डेटा यांचा समावेश आहे." "ठीक" "रद्द करा" diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index 56634361bcd..bedb34e4f1a 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -2093,7 +2093,7 @@ "Storan dalaman" "Mengira semula saiz..." "Padamkan data aplikasi?" - "Semua data aplikasi ini akan dipadamkan secara kekal. Ini termasuk semua fail, tetapan, akaun, pangkalan data, dll." + "Data apl ini akan dipadamkan secara kekal. Kandungan ini termasuk fail, tetapan, pangkalan data dan data apl yang lain." "OK" "Batal" diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml index 2273f88e581..3d48d63f35e 100644 --- a/res/values-my/strings.xml +++ b/res/values-my/strings.xml @@ -2093,7 +2093,7 @@ "စက်တွင်း သိုလှောင်ထားမှု" "အရွယ်အစားကို ပြန်လည်တွက်ချက်နေသည်" "အက်ပ်ဒေတာ ဖျက်မလား။" - "ဤအက်ပ်၏ ဒေတာအားလုံးကို အပြီးဖျက်ပါမည်။ ဖိုင်၊ ဆက်တင်၊ အကောင့်၊ ဒေတာဘေ့စ်စသည်တို့ အားလုံးပါဝင်သည်။" + "ဤအက်ပ်၏ ဒေတာကို အပြီးဖျက်ပါမည်။ ၎င်းတွင် ဖိုင်၊ ဆက်တင်၊ ဒေတာဘေ့စ်နှင့် အခြားအက်ပ် ဒေတာများ ပါဝင်သည်။" "OK" "မလုပ်တော့" diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index 8d51ec6fb91..15314c9c6f7 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -2093,7 +2093,7 @@ "Intern lagring" "Beregner størrelse på nytt…" "Vil du slette appdataene?" - "Alle data i appen slettes permanent. Dette omfatter alle filer, innstillinger, kontoer, databaser osv." + "Dataene i denne appen slettes permanent. Dette inkluderer filer, innstillinger, databaser og andre appdata." "OK" "Avbryt" diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index 9976ff52a33..3d359067bc2 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -2093,7 +2093,7 @@ "आन्तरिक भण्डारण" "आकार पुनःगणना गर्दै ..." "एपको डेटा मेटाउन चाहनुहुन्छ?" - "यस एपका सम्पूर्ण डेटाहरू स्थायी रूपमा मेटाइने छ। यसमा सम्पूर्ण फाइल, सेटिङ, खाताहरू, डेटाबेस आदि पर्दछन्।" + "यो एपका डेटा सदाका लागि मेटाइने छ। यसमा फाइल, सेटिङ, डेटाबेस र एपका अन्य डेटा पर्छन्।" "ठिक छ" "रद्द गर्नुहोस्" diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index a63c1f7db18..2df67bbeb90 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -2093,7 +2093,7 @@ "Interne opslag" "Grootte opnieuw berekenen..." "Gegevens van app verwijderen?" - "Alle gegevens van deze app worden permanent verwijderd. Dit omvat alle bestanden, instellingen, accounts, databases, enzovoort." + "De gegevens van deze app worden definitief verwijderd. Dit omvat bestanden, instellingen, databases en andere app-gegevens." "OK" "Annuleren" diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index 772e734ea4b..56070e3b206 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -2093,7 +2093,7 @@ "ଇଣ୍ଟର୍ନଲ୍‌ ଷ୍ଟୋରେଜ୍‌" "ଆକାରକୁ ପୁଣି ଗଣୁଛି…" "ଆପ୍‌ର ଡାଟା ଡିଲିଟ୍‌ କରିବେ?" - "ଏହି ଆପ୍‌ର ସମସ୍ତ ଡାଟା ସ୍ଥାୟୀ ଭାବେ ଡିଲିଟ୍‌ ହୋଇଯିବ। ଏଥିରେ ରହିଛି, ସମସ୍ତ ଫାଇଲ୍‌, ସେଟିଙ୍ଗ, ଆକାଉଣ୍ଟ, ଡାଟାବେସ୍‌ ଆଦି" + "ଏହି ଆପର ଡାଟା ସ୍ଥାୟୀ ଭାବେ ଡିଲିଟ ହୋଇଯିବ। ଏଥିରେ ଫାଇଲ, ସେଟିଂସ, ଡାଟାବେସ ଏବଂ ଅନ୍ୟ ଆପ ଡାଟା ଅନ୍ତର୍ଭୁକ୍ତ।" "ଠିକ୍‌ ଅଛି" "ବାତିଲ କରନ୍ତୁ" diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index 8c558ae8187..2afd8d12c50 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -2093,7 +2093,7 @@ "ਅੰਦਰੂਨੀ ਸਟੋਰੇਜ" "ਅਕਾਰ ਰੀਕੰਪਿਊਟ ਕਰ ਰਿਹਾ ਹੈ..." "ਕੀ ਐਪ ਡਾਟਾ ਮਿਟਾਉਣਾ ਹੈ?" - "ਇਸ ਐਪ ਦਾ ਸਾਰਾ ਡਾਟਾ ਸਥਾਈ ਤੌਰ ਤੇ ਮਿਟਾਇਆ ਜਾਏਗਾ। ਇਸ ਵਿੱਚ ਸਾਰੀਆਂ ਫ਼ਾਈਲਾਂ, ਸੈਟਿੰਗਾਂ, ਖਾਤੇ, ਡਾਟਾਬੇਸ ਆਦਿ ਸ਼ਾਮਲ ਹਨ।" + "ਇਸ ਐਪ ਦਾ ਡਾਟਾ ਪੱਕੇ ਤੌਰ 'ਤੇ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਇਸ ਵਿੱਚ ਫ਼ਾਈਲਾਂ, ਸੈਟਿੰਗਾਂ, ਡਾਟਾਬੇਸ ਅਤੇ ਹੋਰ ਐਪ ਡਾਟਾ ਸ਼ਾਮਲ ਹੈ।" "ਠੀਕ ਹੈ" "ਰੱਦ ਕਰੋ" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index a7f30747c10..c7c15d91f98 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -2141,7 +2141,7 @@ "Pamięć wewnętrzna" "Przeliczanie rozmiaru..." "Usunąć dane aplikacji?" - "Wszystkie dane tej aplikacji zostaną trwale usunięte. Dotyczy to wszystkich plików, ustawień, kont, baz danych itd." + "Dane tej aplikacji zostaną trwale usunięte. Dotyczy to plików, ustawień, baz danych i innych danych aplikacji." "OK" "Anuluj" diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml index 6c2034c90eb..e76fbe5854b 100644 --- a/res/values-pt-rBR/strings.xml +++ b/res/values-pt-rBR/strings.xml @@ -2095,7 +2095,7 @@ "Espaço interno" "Recalculando o tamanho…" "Excluir os dados do app?" - "Todos os dados deste app serão excluídos permanentemente. Isso inclui todos os arquivos, configurações, contas, bancos de dados e outros." + "Os dados do app serão excluídos permanentemente, incluindo arquivos, configurações, bancos de dados, entre outros." "OK" "Cancelar" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index b7705ec6534..7bc69a123e2 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -2093,7 +2093,7 @@ "Armaz. interno" "A recalcular tamanho..." "Eliminar dados da app?" - "Todos os dados desta aplicação serão eliminados permanentemente. Isto inclui todos os ficheiros, definições, contas, bases de dados, etc." + "Os dados desta app serão permanentemente eliminados. Estão incluídos ficheiros, definições, bases de dados e outros dados de apps." "OK" "Cancelar" diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 6c2034c90eb..e76fbe5854b 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -2095,7 +2095,7 @@ "Espaço interno" "Recalculando o tamanho…" "Excluir os dados do app?" - "Todos os dados deste app serão excluídos permanentemente. Isso inclui todos os arquivos, configurações, contas, bancos de dados e outros." + "Os dados do app serão excluídos permanentemente, incluindo arquivos, configurações, bancos de dados, entre outros." "OK" "Cancelar" diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index 15c1978eb2b..5b8dc3bcddf 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -2119,7 +2119,7 @@ "Stocare internă" "Se recalculează dimensiunea..." "Ștergeți datele aplicației?" - "Toate datele acestei aplicații vor fi șterse definitiv. Aici sunt incluse toate fișierele, setările, conturile, bazele de date etc." + "Datele acestei aplicații vor fi șterse definitiv. Aici sunt incluse fișierele, setările, bazele de date și alte date ale aplicației." "OK" "Anulați" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index dc29c406e4d..7b3212b3cc7 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -2141,7 +2141,7 @@ "Внутр. накопитель" "Повторное вычисление размера..." "Удалить данные приложения?" - "Все данные этого приложения (включая файлы, базы данных, настройки, аккаунты и т. д.) будут удалены без возможности восстановления." + "Данные этого приложения (включая файлы, базы данных, настройки и т. д.) будут удалены без возможности восстановления." "ОК" "Отмена" diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml index 020f65f407a..d005bdf6aa4 100644 --- a/res/values-si/strings.xml +++ b/res/values-si/strings.xml @@ -2093,7 +2093,7 @@ "අභ්‍යන්තර ආචයනය" "විශාලත්වය නැවත ගණනය කරමින්…" "යෙදුම් දත්ත මකන්නද?" - "මෙම යෙදුමේ සියලු දත්ත ස්ථිරව මකා දමනු ඇත. මෙයට සියලු ගොනු, සැකසීම්, ගිණුම්, දත්ත සමූහ සහ තවත් අඩංගුය." + "මෙම යෙදුමේ දත්ත ස්ථිරවම මකනු ඇත. මෙයට ගොනු, සැකසීම්, දත්ත සමුදායන් සහ වෙනත් යෙදුම් දත්ත ඇතුළත් වේ." "හරි" "අවලංගු කරන්න" diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 94c4aa1f361..0dec38adb46 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -2143,7 +2143,7 @@ "Interný ukl. priestor" "Prebieha prepočítanie veľkosti..." "Odstrániť dáta aplikácie?" - "Všetky dáta tejto aplikácie vrátane súborov, nastavení, účtov, databáz atď. budú navždy odstránené." + "Dáta tejto aplikácie budú natrvalo odstránené. Zahrnujú súbory, nastavenia, databázy a ďalšie dáta aplikácie." "OK" "Zrušiť" diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index 0da0904045b..0751036386b 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -2143,7 +2143,7 @@ "Notranja shramba" "Preračunavanje velikosti ..." "Želite izbrisati podatke aplikacije?" - "Vsi podatki te aplikacije bodo trajno izbrisani. To med drugim vključuje vse datoteke, nastavitve, račune in podatkovne zbirke." + "Podatki te aplikacije bodo trajno izbrisani. To vključuje datoteke, nastavitve, zbirke podatkov in druge podatke aplikacije." "V redu" "Prekliči" diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index 50b2777d5a7..9e32889aa3b 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -2093,7 +2093,7 @@ "Hapësira e brendshme ruajtëse" "Po llogarit përsëri madhësinë…" "Të fshihen të dhënat e aplikacionit?" - "Të gjitha të dhënat e këtij aplikacioni do të fshihen përgjithmonë. Kjo përfshin të gjithë skedarët, cilësimet, llogaritë, bazat e të dhënave etj." + "Të dhënat e këtij aplikacioni do të fshihen përgjithmonë. Këtu përfshihen skedarët, cilësimet, bazat e të dhënave dhe të dhëna të tjera të aplikacionit." "Në rregull" "Anulo" diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index 153f83477cb..b79cc59671d 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -2117,7 +2117,7 @@ "Интерно складиште" "Поновно израчунавање величине..." "Желите ли да избришете податке о апликацији?" - "Сви подаци ове апликације биће трајно избрисани. То обухвата све датотеке, подешавања, налоге, базе података итд." + "Подаци ове апликације ће се трајно избрисати. То обухвата фајлове, подешавања, базе података и друге податке апликација." "Потврди" "Откажи" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 571e017209b..26deb01a1da 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -2093,7 +2093,7 @@ "Intern lagring" "Räknar om storlek…" "Vill du ta bort appdata?" - "Appens samtliga data tas bort permanent. Det inkluderar alla filer, inställningar, konton, databaser och så vidare." + "Appens data raderas permanent. Detta omfattar filer, inställningar, databaser och annan appdata." "OK" "Avbryt" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index a8ff6b430b2..74890380433 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -2093,7 +2093,7 @@ "Hifadhi ya ndani" "Kiwango cha kukadiria upya" "Ungependa kufuta data ya programu?" - "Data yote ya programu hii itafutwa kabisa. Hii inajumuisha faili, mipangilio, akaunti, hifadhidata zote na mengineyo." + "Data iliyo kwenye programu hii itafutwa kabisa. Hii ni pamoja na faili, mipangilio, hifadhidata na data nyingine ya programu." "Sawa" "Ghairi" diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml index cab378a82d1..a2800eb1536 100644 --- a/res/values-ta/strings.xml +++ b/res/values-ta/strings.xml @@ -2093,7 +2093,7 @@ "அகச் சேமிப்பிடம்" "அளவை மீண்டும் கணக்கிடுகிறது…" "ஆப்ஸ் டேட்டாவை நீக்கவா?" - "ஆப்ஸின் எல்லா தகவலும் நிரந்தரமாக நீக்கப்படும். இதில் எல்லா ஃபைல்களும், அமைப்புகளும், கணக்குகளும், தரவுத்தளங்களும், மேலும் பலவும் அடங்கும்." + "இந்த ஆப்ஸின் தரவு நிரந்தரமாக நீக்கப்படும். ஃபைல்கள், அமைப்புகள், தரவுத்தளங்கள், பிற ஆப்ஸ் தரவு ஆகியவை இதிலடங்கும்." "சரி" "ரத்துசெய்" diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index 947da9a0b2a..69a9bdcb4d8 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -2093,7 +2093,7 @@ "అంతర్గత నిల్వ" "పరిమాణాన్ని మళ్లీ గణిస్తోంది…" "యాప్ డేటాను తొలగించాలా?" - "ఈ యాప్ డేటా మొత్తం శాశ్వతంగా తొలగించబడుతుంది. ఇందులో అన్ని ఫైళ్లు, సెట్టింగ్‌లు, ఖాతాలు, డేటాబేస్‌లు మొ. ఉన్నాయి." + "ఈ యాప్ డేటా శాశ్వతంగా తొలగించబడుతుంది. ఇందులో ఫైల్స్, సెట్టింగ్‌లు, డేటాబేస్‌లు, ఇతర యాప్ డేటా ఉంటాయి." "సరే" "రద్దు చేయి" diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index c1abb2e32c6..81356a56e03 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -2093,7 +2093,7 @@ "ที่เก็บข้อมูลภายใน" "กำลังคำนวณขนาดใหม่..." "ลบข้อมูลในแอปหรือไม่" - "ระบบจะลบข้อมูลทั้งหมดของแอปนี้โดยถาวร ซึ่งรวมถึงไฟล์ การตั้งค่า บัญชี ฐานข้อมูล ฯลฯ" + "ระบบจะลบข้อมูลของแอปนี้อย่างถาวร ซึ่งรวมถึงไฟล์ การตั้งค่า ฐานข้อมูล และข้อมูลแอปอื่นๆ" "ตกลง" "ยกเลิก" diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index a687e457379..c59e9f4c29b 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -2093,7 +2093,7 @@ "Panloob na storage" "Muling kino-compute ang laki…" "I-delete ang data ng app?" - "Permanenteng made-delete ang lahat ng data ng app na ito. Kabilang dito ang lahat ng file, setting, account, database, atbp." + "Permanenteng made-delete ang data ng app na ito. Kasama rito ang mga file, setting, database, at iba pang data ng app." "OK" "Kanselahin" diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index cc51b8ec106..b41bec2d6c0 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -2093,7 +2093,7 @@ "Dahili Bellek" "Boyut yeniden hesaplanıyor…" "Uygulama verileri silinsin mi?" - "Bu uygulamanın tüm verileri kalıcı olarak silinecek. Bu veriler arasında tüm dosyalar, ayarlar, hesaplar, veritabanları vb. yer alıyor." + "Bu uygulamanın verileri kalıcı olarak silinecek. Buna dosyalar, ayarlar, veritabanları ve diğer uygulama verileri de dahildir." "Tamam" "İptal" diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index dc6a9641a3a..2424b098cf1 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -2141,7 +2141,7 @@ "Внутр. пам\'ять" "Повт. обчисл. розм…" "Видалити дані додатка?" - "Усі дані цього додатка буде видалено назавжди: файли, налаштування, облікові записи, бази даних тощо." + "Дані цього додатка буде назавжди видалено. До них належать файли, налаштування, бази даних тощо." "OK" "Скасувати" diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml index 8f9b37010e0..cf9791788f4 100644 --- a/res/values-ur/strings.xml +++ b/res/values-ur/strings.xml @@ -2093,7 +2093,7 @@ "داخلی اسٹوریج" "سائز کو دوبارہ شمار کر رہا ہے…" "ایپ کا ڈیٹا حذف کریں؟" - "اس ایپ کا سبھی ڈیٹا مستقل طور پر حذف ہو جائے گا۔ اس میں سبھی فائلیں، ترتیبات، اکاؤنٹس، ڈیٹا بیسز وغیرہ شامل ہیں۔" + "اس ایپ کا ڈیٹا مستقل طور پر حذف کر دیا جائے گا۔ اس میں فائلز، ترتیبات، ڈیٹا بیس اور دیگر ایپ کا ڈیٹا شامل ہے۔" "ٹھیک ہے" "منسوخ کریں" diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml index f0398319602..b09da08890f 100644 --- a/res/values-uz/strings.xml +++ b/res/values-uz/strings.xml @@ -2095,7 +2095,7 @@ "Ichki xotira" "Xajm qayta hisoblanmoqda…" "Bu ilova maʼlumotlari oʻchirilsinmi?" - "Ushbu ilovaning barcha ma’lumotlari, jumladan, fayllar, ma’lumotlar bazalari, sozlamalar, hisoblar va boshqa narsalar o‘chirib tashlanadi. Keyin ularni qayta tiklab bo‘lmaydi." + "Bu ilova maʼlumotlari butunlay oʻchirib tashlanadi. Unga fayllar, sozlamalar, ma’lumotlar bazalari va boshqa ilovaga tegishli maʼlumotlar kiradi" "OK" "Bekor qilish" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 11f85cbbe88..d3dd1735040 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -2095,7 +2095,7 @@ "Bộ nhớ trong" "Đang tính toán lại kích thước…" "Xóa dữ liệu ứng dụng?" - "Tất cả dữ liệu của ứng dụng này sẽ bị xóa vĩnh viễn, bao gồm tất cả các tệp, các tùy chọn cài đặt, tài khoản, cơ sở dữ liệu, v.v." + "Dữ liệu của ứng dụng này sẽ bị xóa vĩnh viễn. Dữ liệu này bao gồm các tệp, chế độ cài đặt, cơ sở dữ liệu và dữ liệu ứng dụng khác." "OK" "Hủy" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index be2716569d5..898845c6580 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -2093,7 +2093,7 @@ "内部存储空间" "正在重新计算大小..." "要删除应用数据吗?" - "系统会永久删除此应用的所有数据。删除的内容包括所有文件、设置、帐号、数据库等。" + "系统将永久删除此应用的数据,其中包括文件、设置、数据库和其他应用数据。" "确定" "取消" diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index 7574669710a..1bb9b080b2d 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -2096,7 +2096,7 @@ "內部儲存空間" "正在重新計算大小..." "您要刪除應用程式資料嗎?" - "這個應用程式的所有資料都將被永久刪除,包含所有檔案、設定、帳戶、資料庫等。" + "系統會永久刪除此應用程式的資料,包括檔案、設定、資料庫和其他應用程式資料。" "確定" "取消" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 65430dfd66b..af7320832b9 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -2095,7 +2095,7 @@ "內部儲存空間" "重新計算大小…" "你要刪除應用程式資料嗎?" - "系統會永久刪除這個應用程式的所有資料,包含所有檔案、設定、帳戶、資料庫等。" + "系統將永久刪除這個應用程式的資料,包括檔案、設定、資料庫和應用程式的其他資料。" "確定" "取消" diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index e3605b870da..b74a120a679 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -2094,7 +2094,7 @@ "Isitoreji sangaphakathi" "Ilungisa kabusha usayizi..." "Ngabe ususa yonke imininingo yohlelo lokusebenza?" - "Yonke le datha yohlelo lokusebenza izosuswa ngokuphelele. Lokhu kuhlanganisa wonke amafayela, izilungiselelo, ama-akhawunti, izizinda zemininingwane nokunye." + "Idatha yale app izosuswa unomphela. Lokhu kuhlanganisa amafayela, amasethingi, isizindalwazi, nenye idatha ye-app." "KULUNGILE" "Khansela" From 3dd874316af29ccd08d99dfea672ccd8a5d06452 Mon Sep 17 00:00:00 2001 From: Alex Johnston Date: Mon, 29 Nov 2021 16:06:38 +0000 Subject: [PATCH 03/14] Add non system overlay flag to InstallCaCertificateWarning Bug: 196969991 Test: Manual testing with Settings Merged-In: Ia9dc251c853526b2ce66c9f8ff595d496b7f1bc4 Change-Id: Ia9dc251c853526b2ce66c9f8ff595d496b7f1bc4 (cherry picked from commit 2f193c81576e2e86cf64470aeb312cab1e76d40d) (cherry picked from commit 02e8f56e67b91b0909c713bcbb949800f244b30a) Merged-In:Ia9dc251c853526b2ce66c9f8ff595d496b7f1bc4 --- .../settings/security/InstallCaCertificateWarning.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/com/android/settings/security/InstallCaCertificateWarning.java b/src/com/android/settings/security/InstallCaCertificateWarning.java index 38548756a31..139bc1c2700 100644 --- a/src/com/android/settings/security/InstallCaCertificateWarning.java +++ b/src/com/android/settings/security/InstallCaCertificateWarning.java @@ -16,6 +16,8 @@ package com.android.settings.security; +import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS; + import android.annotation.Nullable; import android.app.Activity; import android.content.Intent; @@ -45,6 +47,8 @@ public class InstallCaCertificateWarning extends Activity { setTheme(SetupWizardUtils.getTheme(this, getIntent())); ThemeHelper.trySetDynamicColor(this); setContentView(R.layout.ca_certificate_warning_dialog); + getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS); + final GlifLayout layout = findViewById(R.id.setup_wizard_layout); layout.setHeaderText(R.string.ca_certificate_warning_title); @@ -57,6 +61,7 @@ public class InstallCaCertificateWarning extends Activity { .setTheme(R.style.SudGlifButton_Secondary) .build() ); + mixin.getSecondaryButtonView().setFilterTouchesWhenObscured(true); mixin.setPrimaryButton( new FooterButton.Builder(this) @@ -66,6 +71,7 @@ public class InstallCaCertificateWarning extends Activity { .setTheme(R.style.SudGlifButton_Primary) .build() ); + mixin.getPrimaryButtonView().setFilterTouchesWhenObscured(true); } private View.OnClickListener installCaCertificate() { From 535d47b298ca3e075c70390e26a66af8ca5063ee Mon Sep 17 00:00:00 2001 From: Weng Su Date: Thu, 27 Jan 2022 08:43:15 +0000 Subject: [PATCH 04/14] Owners updates - Open to everyone for tests/unit modification Test: N/A, just owners update Change-Id: I8f1a13af54c5f995e8171e2bdddb4d01e0eb5f53 --- tests/unit/OWNERS | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/unit/OWNERS b/tests/unit/OWNERS index 4123742aff0..8a7a27ee4e2 100644 --- a/tests/unit/OWNERS +++ b/tests/unit/OWNERS @@ -1,2 +1,2 @@ -# Additional reviewers for this and subdirectories. -goldmanj@google.com +# We do not guard tests - everyone is welcomed to contribute to tests. +per-file *.java=* \ No newline at end of file From d565d8679f5e7f31d978ae4c0f0e2637b1a494f4 Mon Sep 17 00:00:00 2001 From: pingzhi wang Date: Wed, 26 Jan 2022 11:27:07 +0800 Subject: [PATCH 05/14] DO NOT MERGE Fix of crash when error messages are triggered Issue is caused by call FragmentTransaction.commit after activity saved it's state, then IllegalStateException will be thrown and Settings will crash. Bug: 216492911 Test: Manual. First boot up the device and follow the wizard till the point when register the fingerprint. While adding the fingerprint, short press the power button and turn off the screen. Change-Id: I96244fc26d2aa8639538f967d645a6ca4fc7c0ba Merged-In: I1de23885a9b80fabdc199ad09c35c3f98e86c831 --- .../settings/biometrics/fingerprint/FingerprintErrorDialog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintErrorDialog.java b/src/com/android/settings/biometrics/fingerprint/FingerprintErrorDialog.java index fa929514173..00c14cab4f8 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintErrorDialog.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintErrorDialog.java @@ -34,7 +34,7 @@ public class FingerprintErrorDialog extends BiometricErrorDialog { final CharSequence errMsg = host.getText(getErrorMessage(errMsgId)); final FingerprintErrorDialog dialog = newInstance(errMsg, errMsgId); final FragmentManager fragmentManager = host.getSupportFragmentManager(); - if (!fragmentManager.isDestroyed()) { + if (!fragmentManager.isDestroyed() && !fragmentManager.isStateSaved()) { dialog.show(fragmentManager, FingerprintErrorDialog.class.getName()); } } From 269f97d96082ad9416626f7ee804d50b61e43a60 Mon Sep 17 00:00:00 2001 From: Jonathan Scott Date: Tue, 25 Jan 2022 17:58:55 +0000 Subject: [PATCH 06/14] Allow overriding of strings referenced in XML files. Test: manual Bug: 188414370 Change-Id: Ice45b1808530c14c4efff16795cac7b2cb81516e --- res/layout/forgot_password_activity.xml | 1 + ...ct_across_profiles_permissions_details.xml | 2 + .../accounts/ManagedProfileSettings.java | 17 ++++++++ .../appinfo/AppInfoDashboardFragment.java | 4 ++ .../specialaccess/SpecialAccessSettings.java | 13 ++++++ .../deviceadmin/DeviceAdminAdd.java | 8 ++++ .../deviceadmin/DeviceAdminSettings.java | 11 +++++ .../InteractAcrossProfilesDetails.java | 42 ++++++++++++++++++- .../settings/dashboard/DashboardFragment.java | 29 +++++++++++++ .../display/TimeoutListPreference.java | 1 + .../ActionDisabledByAdminDialogHelper.java | 9 ++++ .../enterprise/ApplicationListFragment.java | 6 +++ .../language/LanguageAndInputSettings.java | 11 +++++ .../settings/location/LocationSettings.java | 10 +++++ .../location/LocationWorkProfileSettings.java | 10 +++++ .../ConfigureNotificationSettings.java | 14 +++++++ .../settings/notification/SoundSettings.java | 5 +++ .../notification/SoundWorkSettings.java | 18 ++++++++ .../password/ForgotPasswordActivity.java | 9 ++++ .../privacy/PrivacyDashboardFragment.java | 25 +++++++++++ .../security/LockscreenDashboardFragment.java | 14 +++++++ .../security/SecurityAdvancedSettings.java | 29 +++++++++++++ .../android/settings/users/UserDialogs.java | 13 ++++++ 23 files changed, 300 insertions(+), 1 deletion(-) diff --git a/res/layout/forgot_password_activity.xml b/res/layout/forgot_password_activity.xml index ed1e2d2f8c3..7973251a938 100644 --- a/res/layout/forgot_password_activity.xml +++ b/res/layout/forgot_password_activity.xml @@ -32,6 +32,7 @@ diff --git a/src/com/android/settings/accounts/ManagedProfileSettings.java b/src/com/android/settings/accounts/ManagedProfileSettings.java index a6fa15a85d1..001a2cd7dbb 100644 --- a/src/com/android/settings/accounts/ManagedProfileSettings.java +++ b/src/com/android/settings/accounts/ManagedProfileSettings.java @@ -16,6 +16,12 @@ package com.android.settings.accounts; +import static android.app.admin.DevicePolicyResources.Strings.Settings.CROSS_PROFILE_CALENDAR_SUMMARY; +import static android.app.admin.DevicePolicyResources.Strings.Settings.CROSS_PROFILE_CALENDAR_TITLE; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_CONTACT_SEARCH_SUMMARY; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_CONTACT_SEARCH_TITLE; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_SETTING; + import android.app.settings.SettingsEnums; import android.content.BroadcastReceiver; import android.content.Context; @@ -78,6 +84,17 @@ public class ManagedProfileSettings extends DashboardFragment { super.onCreate(icicle); mManagedProfileBroadcastReceiver = new ManagedProfileBroadcastReceiver(); mManagedProfileBroadcastReceiver.register(getActivity()); + replaceEnterpriseStringTitle("work_mode", + WORK_PROFILE_SETTING, R.string.work_mode_label); + replaceEnterpriseStringTitle("contacts_search", + WORK_PROFILE_CONTACT_SEARCH_TITLE, R.string.managed_profile_contact_search_title); + replaceEnterpriseStringSummary("contacts_search", + WORK_PROFILE_CONTACT_SEARCH_SUMMARY, + R.string.managed_profile_contact_search_summary); + replaceEnterpriseStringTitle("cross_profile_calendar", + CROSS_PROFILE_CALENDAR_TITLE, R.string.cross_profile_calendar_title); + replaceEnterpriseStringSummary("cross_profile_calendar", + CROSS_PROFILE_CALENDAR_SUMMARY, R.string.cross_profile_calendar_summary); } @Override diff --git a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java index a38ed1158ca..5bc4118bfef 100755 --- a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java +++ b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java @@ -16,6 +16,8 @@ package com.android.settings.applications.appinfo; +import static android.app.admin.DevicePolicyResources.Strings.Settings.CONNECTED_WORK_AND_PERSONAL_APPS_TITLE; + import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import android.app.Activity; @@ -238,6 +240,8 @@ public class AppInfoDashboardFragment extends DashboardFragment startListeningToPackageRemove(); setHasOptionsMenu(true); + replaceEnterpriseStringTitle("interact_across_profiles", + CONNECTED_WORK_AND_PERSONAL_APPS_TITLE, R.string.interact_across_profiles_title); } @Override diff --git a/src/com/android/settings/applications/specialaccess/SpecialAccessSettings.java b/src/com/android/settings/applications/specialaccess/SpecialAccessSettings.java index f96ff63eef1..2cbc30422fc 100644 --- a/src/com/android/settings/applications/specialaccess/SpecialAccessSettings.java +++ b/src/com/android/settings/applications/specialaccess/SpecialAccessSettings.java @@ -16,7 +16,11 @@ package com.android.settings.applications.specialaccess; +import static android.app.admin.DevicePolicyResources.Strings.Settings.CONNECTED_WORK_AND_PERSONAL_APPS_TITLE; +import static android.app.admin.DevicePolicyResources.Strings.Settings.MANAGE_DEVICE_ADMIN_APPS; + import android.app.settings.SettingsEnums; +import android.os.Bundle; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; @@ -33,6 +37,15 @@ public class SpecialAccessSettings extends DashboardFragment { return TAG; } + @Override + public void onCreate(Bundle icicle) { + super.onCreate(icicle); + replaceEnterpriseStringTitle("interact_across_profiles", + CONNECTED_WORK_AND_PERSONAL_APPS_TITLE, R.string.interact_across_profiles_title); + replaceEnterpriseStringTitle("device_administrators", + MANAGE_DEVICE_ADMIN_APPS, R.string.manage_device_admin); + } + @Override protected int getPreferenceScreenResId() { return R.xml.special_access; diff --git a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java index e133c62e14e..b6a297080eb 100644 --- a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java +++ b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java @@ -27,6 +27,8 @@ import static android.app.admin.DevicePolicyResources.Strings.Settings.REMOVE_AN import static android.app.admin.DevicePolicyResources.Strings.Settings.REMOVE_DEVICE_ADMIN; import static android.app.admin.DevicePolicyResources.Strings.Settings.REMOVE_WORK_PROFILE; import static android.app.admin.DevicePolicyResources.Strings.Settings.SET_PROFILE_OWNER_DIALOG_TITLE; +import static android.app.admin.DevicePolicyResources.Strings.Settings.SET_PROFILE_OWNER_POSTSETUP_WARNING; +import static android.app.admin.DevicePolicyResources.Strings.Settings.UNINSTALL_DEVICE_ADMIN; import static android.app.admin.DevicePolicyResources.Strings.Settings.USER_ADMIN_POLICIES_WARNING; import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_ADMIN_POLICIES_WARNING; @@ -365,6 +367,10 @@ public class DeviceAdminAdd extends CollapsingToolbarBaseActivity { mAdminDescription = (TextView)findViewById(R.id.admin_description); mProfileOwnerWarning = (TextView) findViewById(R.id.profile_owner_warning); + mProfileOwnerWarning.setText( + mDPM.getString(SET_PROFILE_OWNER_POSTSETUP_WARNING, + () -> getString(R.string.adding_profile_owner_warning))); + mAddMsg = (TextView)findViewById(R.id.add_msg); mAddMsgExpander = (ImageView) findViewById(R.id.add_msg_expander); final View.OnClickListener onClickListener = new View.OnClickListener() { @@ -410,6 +416,8 @@ public class DeviceAdminAdd extends CollapsingToolbarBaseActivity { }); mUninstallButton = (Button) findViewById(R.id.uninstall_button); + mUninstallButton.setText(mDPM.getString(UNINSTALL_DEVICE_ADMIN, + () -> getString(R.string.uninstall_device_admin))); mUninstallButton.setFilterTouchesWhenObscured(true); mUninstallButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { diff --git a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminSettings.java b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminSettings.java index 4a990734bfa..38191242c78 100644 --- a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminSettings.java +++ b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminSettings.java @@ -16,7 +16,10 @@ package com.android.settings.applications.specialaccess.deviceadmin; +import static android.app.admin.DevicePolicyResources.Strings.Settings.NO_DEVICE_ADMINS; + import android.app.settings.SettingsEnums; +import android.os.Bundle; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; @@ -31,6 +34,14 @@ public class DeviceAdminSettings extends DashboardFragment { return SettingsEnums.DEVICE_ADMIN_SETTINGS; } + @Override + public void onCreate(Bundle icicle) { + super.onCreate(icicle); + // TODO: Replace PreferenceScreen title manage_device_admin/MANAGE_DEVICE_ADMIN_APPS + replaceEnterpriseStringTitle("device_admin_footer", + NO_DEVICE_ADMINS, R.string.no_device_admins); + } + @Override protected int getPreferenceScreenResId() { return R.xml.device_admin_settings; diff --git a/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetails.java b/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetails.java index 4e96aa3086d..e85a513f6be 100644 --- a/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetails.java +++ b/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetails.java @@ -17,9 +17,13 @@ package com.android.settings.applications.specialaccess.interactacrossprofiles; import static android.app.admin.DevicePolicyResources.Strings.Settings.APP_CAN_ACCESS_PERSONAL_DATA; import static android.app.admin.DevicePolicyResources.Strings.Settings.APP_CAN_ACCESS_PERSONAL_PERMISSIONS; +import static android.app.admin.DevicePolicyResources.Strings.Settings.CONNECTED_APPS_SHARE_PERMISSIONS_AND_DATA; +import static android.app.admin.DevicePolicyResources.Strings.Settings.CONNECT_APPS_DIALOG_SUMMARY; import static android.app.admin.DevicePolicyResources.Strings.Settings.CONNECT_APPS_DIALOG_TITLE; +import static android.app.admin.DevicePolicyResources.Strings.Settings.HOW_TO_DISCONNECT_APPS; import static android.app.admin.DevicePolicyResources.Strings.Settings.INSTALL_IN_PERSONAL_PROFILE_TO_CONNECT_PROMPT; import static android.app.admin.DevicePolicyResources.Strings.Settings.INSTALL_IN_WORK_PROFILE_TO_CONNECT_PROMPT; +import static android.app.admin.DevicePolicyResources.Strings.Settings.ONLY_CONNECT_TRUSTED_APPS; import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE; import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE; import static android.provider.Settings.ACTION_MANAGE_CROSS_PROFILE_ACCESS; @@ -46,6 +50,7 @@ import android.os.UserHandle; import android.os.UserManager; import android.stats.devicepolicy.DevicePolicyEnums; import android.util.IconDrawableFactory; +import android.util.Log; import android.view.View; import android.widget.ImageView; import android.widget.TextView; @@ -72,9 +77,11 @@ public class InteractAcrossProfilesDetails extends AppInfoBase "interact_across_profiles_extra_summary"; public static final String EXTRA_SHOW_FRAGMENT_ARGS = ":settings:show_fragment_args"; public static final String INTENT_KEY = "intent"; + private static final String TAG = "InteractAcrossProfilesDetails"; private Context mContext; private CrossProfileApps mCrossProfileApps; + private DevicePolicyManager mDevicePolicyManager; private UserManager mUserManager; private RestrictedSwitchPreference mSwitchPref; private LayoutPreference mHeader; @@ -94,6 +101,7 @@ public class InteractAcrossProfilesDetails extends AppInfoBase mContext = getContext(); mCrossProfileApps = mContext.getSystemService(CrossProfileApps.class); + mDevicePolicyManager = mContext.getSystemService(DevicePolicyManager.class); mUserManager = mContext.getSystemService(UserManager.class); mPackageManager = mContext.getPackageManager(); @@ -106,6 +114,18 @@ public class InteractAcrossProfilesDetails extends AppInfoBase mInstallAppIntent = AppStoreUtil.getAppStoreLink(mContext, mPackageName); addPreferencesFromResource(R.xml.interact_across_profiles_permissions_details); + + replaceEnterpriseStringSummary("interact_across_profiles_summary_1", + CONNECTED_APPS_SHARE_PERMISSIONS_AND_DATA, + R.string.interact_across_profiles_summary_1); + replaceEnterpriseStringSummary("interact_across_profiles_summary_2", + ONLY_CONNECT_TRUSTED_APPS, + R.string.interact_across_profiles_summary_2); + replaceEnterpriseStringSummary("interact_across_profiles_extra_summary", + HOW_TO_DISCONNECT_APPS, + R.string.interact_across_profiles_summary_3); + + mSwitchPref = findPreference(INTERACT_ACROSS_PROFILES_SETTINGS_SWITCH); mSwitchPref.setOnPreferenceClickListener(this); @@ -127,6 +147,19 @@ public class InteractAcrossProfilesDetails extends AppInfoBase logPageLaunchMetrics(); } + private void replaceEnterpriseStringSummary( + String preferenceKey, String overrideKey, int resource) { + Preference preference = findPreference(preferenceKey); + if (preference == null) { + Log.d(TAG, "Could not find enterprise preference " + preferenceKey); + return; + } + + preference.setSummary( + mDevicePolicyManager.getString(overrideKey, + () -> getString(resource))); + } + private void maybeShowExtraSummary() { Preference extraSummary = findPreference(INTERACT_ACROSS_PROFILE_EXTRA_SUMMARY_KEY); if (extraSummary == null) { @@ -264,7 +297,8 @@ public class InteractAcrossProfilesDetails extends AppInfoBase final TextView dialogTitle = dialogView.findViewById( R.id.interact_across_profiles_consent_dialog_title); dialogTitle.setText(mDpm.getString(CONNECT_APPS_DIALOG_TITLE, () -> - getString(R.string.interact_across_profiles_consent_dialog_title, mAppLabel))); + getString(R.string.interact_across_profiles_consent_dialog_title, mAppLabel), + mAppLabel)); final TextView appDataSummary = dialogView.findViewById(R.id.app_data_summary); appDataSummary.setText( @@ -280,6 +314,12 @@ public class InteractAcrossProfilesDetails extends AppInfoBase mAppLabel), mAppLabel)); + final TextView dialogSummary = + dialogView.findViewById(R.id.interact_across_profiles_consent_dialog_summary); + dialogSummary.setText(mDpm.getString(CONNECT_APPS_DIALOG_SUMMARY, + () -> getString( + R.string.interact_across_profiles_consent_dialog_summary))); + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setView(dialogView) .setPositiveButton(R.string.allow, new DialogInterface.OnClickListener() { diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java index e38d8430014..cfdfdaaeb0a 100644 --- a/src/com/android/settings/dashboard/DashboardFragment.java +++ b/src/com/android/settings/dashboard/DashboardFragment.java @@ -16,6 +16,7 @@ package com.android.settings.dashboard; import android.app.Activity; +import android.app.admin.DevicePolicyManager; import android.app.settings.SettingsEnums; import android.content.ContentResolver; import android.content.Context; @@ -79,6 +80,7 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment private DashboardTilePlaceholderPreferenceController mPlaceholderPreferenceController; private boolean mListeningToCategoryChange; private List mSuppressInjectedTileKeys; + private DevicePolicyManager mDevicePolicyManager; @Override public void onAttach(Context context) { @@ -148,6 +150,7 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); + mDevicePolicyManager = getSystemService(DevicePolicyManager.class); // Set ComparisonCallback so we get better animation when list changes. getPreferenceManager().setPreferenceComparisonCallback( new PreferenceManager.SimplePreferenceComparisonCallback()); @@ -566,4 +569,30 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment resolver.unregisterContentObserver(observer); }); } + + protected void replaceEnterpriseStringTitle( + String preferenceKey, String overrideKey, int resource) { + Preference preference = findPreference(preferenceKey); + if (preference == null) { + Log.d(TAG, "Could not find enterprise preference " + preferenceKey); + return; + } + + preference.setTitle( + mDevicePolicyManager.getString(overrideKey, + () -> getString(resource))); + } + + protected void replaceEnterpriseStringSummary( + String preferenceKey, String overrideKey, int resource) { + Preference preference = findPreference(preferenceKey); + if (preference == null) { + Log.d(TAG, "Could not find enterprise preference " + preferenceKey); + return; + } + + preference.setSummary( + mDevicePolicyManager.getString(overrideKey, + () -> getString(resource))); + } } diff --git a/src/com/android/settings/display/TimeoutListPreference.java b/src/com/android/settings/display/TimeoutListPreference.java index f9a731d32eb..0b2d18fdee5 100644 --- a/src/com/android/settings/display/TimeoutListPreference.java +++ b/src/com/android/settings/display/TimeoutListPreference.java @@ -53,6 +53,7 @@ public class TimeoutListPreference extends RestrictedListPreference { super.onPrepareDialogBuilder(builder, listener); if (mAdmin != null) { builder.setView(R.layout.admin_disabled_other_options_footer); + // TODO: replace Text on textview with admin_disabled_other_options } else { builder.setView(null); } diff --git a/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java b/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java index fe02fdaae80..055e86833ff 100644 --- a/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java +++ b/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java @@ -16,6 +16,8 @@ package com.android.settings.enterprise; +import static android.app.admin.DevicePolicyResources.Strings.Settings.DISABLED_BY_IT_ADMIN_TITLE; + import android.annotation.NonNull; import android.annotation.UserIdInt; import android.app.Activity; @@ -67,6 +69,13 @@ public final class ActionDisabledByAdminDialogHelper { .createInstance(mActivity, restriction, new DeviceAdminStringProviderImpl(mActivity), UserHandle.SYSTEM); + DevicePolicyManager devicePolicyManager = + mActivity.getSystemService(DevicePolicyManager.class); + + TextView title = mDialogView.findViewById(R.id.admin_support_dialog_title); + title.setText(devicePolicyManager.getString(DISABLED_BY_IT_ADMIN_TITLE, + () -> mActivity.getString(R.string.disabled_by_policy_title))); + } private @UserIdInt int getEnforcementAdminUserId(@NonNull EnforcedAdmin admin) { diff --git a/src/com/android/settings/enterprise/ApplicationListFragment.java b/src/com/android/settings/enterprise/ApplicationListFragment.java index 17de9f892a2..a82789b02f2 100644 --- a/src/com/android/settings/enterprise/ApplicationListFragment.java +++ b/src/com/android/settings/enterprise/ApplicationListFragment.java @@ -19,6 +19,7 @@ package com.android.settings.enterprise; import android.Manifest; import android.app.settings.SettingsEnums; import android.content.Context; +import android.os.Bundle; import com.android.settings.R; import com.android.settings.applications.ApplicationFeatureProvider; @@ -43,6 +44,11 @@ public abstract class ApplicationListFragment extends DashboardFragment return TAG; } + @Override + public void onCreate(Bundle icicle) { + super.onCreate(icicle); + } + @Override protected int getPreferenceScreenResId() { return R.xml.app_list_disclosure_settings; diff --git a/src/com/android/settings/language/LanguageAndInputSettings.java b/src/com/android/settings/language/LanguageAndInputSettings.java index c8966297a26..58c082b8c02 100644 --- a/src/com/android/settings/language/LanguageAndInputSettings.java +++ b/src/com/android/settings/language/LanguageAndInputSettings.java @@ -16,9 +16,12 @@ package com.android.settings.language; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_KEYBOARDS_AND_TOOLS; + import android.app.Activity; import android.app.settings.SettingsEnums; import android.content.Context; +import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -70,6 +73,14 @@ public class LanguageAndInputSettings extends DashboardFragment { activity.setTitle(R.string.language_settings); } + @Override + public void onCreate(Bundle icicle) { + super.onCreate(icicle); + replaceEnterpriseStringTitle("language_and_input_for_work_category", + WORK_PROFILE_KEYBOARDS_AND_TOOLS, + R.string.language_and_input_for_work_category_title); + } + @Override protected int getPreferenceScreenResId() { return R.xml.language_and_input; diff --git a/src/com/android/settings/location/LocationSettings.java b/src/com/android/settings/location/LocationSettings.java index 8f9787b08a5..85bb0ea4bdf 100644 --- a/src/com/android/settings/location/LocationSettings.java +++ b/src/com/android/settings/location/LocationSettings.java @@ -16,6 +16,8 @@ package com.android.settings.location; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_LOCATION_SWITCH_TITLE; + import android.app.settings.SettingsEnums; import android.content.Context; import android.location.SettingInjectorService; @@ -97,6 +99,14 @@ public class LocationSettings extends DashboardFragment implements return R.xml.location_settings; } + @Override + public void onCreate(Bundle icicle) { + super.onCreate(icicle); + + replaceEnterpriseStringTitle("managed_profile_location_switch", + WORK_PROFILE_LOCATION_SWITCH_TITLE, R.string.managed_profile_location_switch_title); + } + @Override protected String getLogTag() { return TAG; diff --git a/src/com/android/settings/location/LocationWorkProfileSettings.java b/src/com/android/settings/location/LocationWorkProfileSettings.java index 24c44f3dd4e..d8db33da119 100644 --- a/src/com/android/settings/location/LocationWorkProfileSettings.java +++ b/src/com/android/settings/location/LocationWorkProfileSettings.java @@ -16,8 +16,11 @@ package com.android.settings.location; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_LOCATION_SWITCH_TITLE; + import android.app.settings.SettingsEnums; import android.content.Context; +import android.os.Bundle; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; @@ -40,6 +43,13 @@ public class LocationWorkProfileSettings extends DashboardFragment { return R.xml.location_settings_workprofile; } + @Override + public void onCreate(Bundle icicle) { + super.onCreate(icicle); + replaceEnterpriseStringTitle("managed_profile_location_switch", + WORK_PROFILE_LOCATION_SWITCH_TITLE, R.string.managed_profile_location_switch_title); + } + @Override protected String getLogTag() { return TAG; diff --git a/src/com/android/settings/notification/ConfigureNotificationSettings.java b/src/com/android/settings/notification/ConfigureNotificationSettings.java index 5f78acc1ccc..f888ea7c8e0 100644 --- a/src/com/android/settings/notification/ConfigureNotificationSettings.java +++ b/src/com/android/settings/notification/ConfigureNotificationSettings.java @@ -16,6 +16,9 @@ package com.android.settings.notification; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_LOCK_SCREEN_REDACT_NOTIFICATION_SUMMARY; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_LOCK_SCREEN_REDACT_NOTIFICATION_TITLE; + import android.app.Activity; import android.app.Application; import android.app.settings.SettingsEnums; @@ -69,6 +72,17 @@ public class ConfigureNotificationSettings extends DashboardFragment implements return TAG; } + @Override + public void onCreate(Bundle icicle) { + super.onCreate(icicle); + replaceEnterpriseStringTitle("lock_screen_work_redact", + WORK_PROFILE_LOCK_SCREEN_REDACT_NOTIFICATION_TITLE, + R.string.lock_screen_notifs_redact_work); + replaceEnterpriseStringSummary("lock_screen_work_redact", + WORK_PROFILE_LOCK_SCREEN_REDACT_NOTIFICATION_SUMMARY, + R.string.lock_screen_notifs_redact_work_summary); + } + @Override protected int getPreferenceScreenResId() { return R.xml.configure_notification_settings; diff --git a/src/com/android/settings/notification/SoundSettings.java b/src/com/android/settings/notification/SoundSettings.java index ab53a3ffada..971937c73f5 100644 --- a/src/com/android/settings/notification/SoundSettings.java +++ b/src/com/android/settings/notification/SoundSettings.java @@ -16,6 +16,8 @@ package com.android.settings.notification; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_SOUND_SETTINGS_SECTION_HEADER; + import android.app.settings.SettingsEnums; import android.content.Context; import android.content.Intent; @@ -97,6 +99,9 @@ public class SoundSettings extends DashboardFragment implements OnActivityResult .findFragmentByTag(TAG); mDialogFragment = dialogFragment; } + replaceEnterpriseStringTitle("sound_work_settings", + WORK_PROFILE_SOUND_SETTINGS_SECTION_HEADER, + R.string.sound_work_settings); } @Override diff --git a/src/com/android/settings/notification/SoundWorkSettings.java b/src/com/android/settings/notification/SoundWorkSettings.java index d30c04f26ff..eb7f05ed8ca 100644 --- a/src/com/android/settings/notification/SoundWorkSettings.java +++ b/src/com/android/settings/notification/SoundWorkSettings.java @@ -16,6 +16,12 @@ package com.android.settings.notification; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_ALARM_RINGTONE_TITLE; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_NOTIFICATION_RINGTONE_TITLE; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_RINGTONE_TITLE; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_USE_PERSONAL_SOUNDS_SUMMARY; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_USE_PERSONAL_SOUNDS_TITLE; + import android.app.settings.SettingsEnums; import android.content.Context; import android.content.Intent; @@ -64,6 +70,18 @@ public class SoundWorkSettings extends DashboardFragment implements OnActivityRe mRequestPreference = findPreference(selectedPreference); } } + replaceEnterpriseStringTitle("work_use_personal_sounds", + WORK_PROFILE_USE_PERSONAL_SOUNDS_TITLE, R.string.work_use_personal_sounds_title); + replaceEnterpriseStringSummary("work_use_personal_sounds", + WORK_PROFILE_USE_PERSONAL_SOUNDS_SUMMARY, + R.string.work_use_personal_sounds_summary); + replaceEnterpriseStringTitle("work_ringtone", + WORK_PROFILE_RINGTONE_TITLE, R.string.work_ringtone_title); + replaceEnterpriseStringTitle("work_alarm_ringtone", + WORK_PROFILE_ALARM_RINGTONE_TITLE, R.string.work_alarm_ringtone_title); + replaceEnterpriseStringTitle("work_notification", + WORK_PROFILE_NOTIFICATION_RINGTONE_TITLE, + R.string.work_notification_ringtone_title); } @Override diff --git a/src/com/android/settings/password/ForgotPasswordActivity.java b/src/com/android/settings/password/ForgotPasswordActivity.java index 1f1df1896cb..d963a05ccd9 100644 --- a/src/com/android/settings/password/ForgotPasswordActivity.java +++ b/src/com/android/settings/password/ForgotPasswordActivity.java @@ -16,12 +16,16 @@ package com.android.settings.password; +import static android.app.admin.DevicePolicyResources.Strings.Settings.FORGOT_PASSWORD_TEXT; + import android.app.Activity; +import android.app.admin.DevicePolicyManager; import android.content.Intent; import android.os.Bundle; import android.os.UserHandle; import android.os.UserManager; import android.util.Log; +import android.widget.TextView; import com.android.settings.R; @@ -45,6 +49,11 @@ public class ForgotPasswordActivity extends Activity { } setContentView(R.layout.forgot_password_activity); + DevicePolicyManager devicePolicyManager = getSystemService(DevicePolicyManager.class); + TextView forgotPasswordText = (TextView) findViewById(R.id.forgot_password_text); + forgotPasswordText.setText(devicePolicyManager.getString( + FORGOT_PASSWORD_TEXT, () -> getString(R.string.forgot_password_text))); + final GlifLayout layout = findViewById(R.id.setup_wizard_layout); layout.getMixin(FooterBarMixin.class).setPrimaryButton( new FooterButton.Builder(this) diff --git a/src/com/android/settings/privacy/PrivacyDashboardFragment.java b/src/com/android/settings/privacy/PrivacyDashboardFragment.java index 7aa65b711c9..0638c60c94c 100644 --- a/src/com/android/settings/privacy/PrivacyDashboardFragment.java +++ b/src/com/android/settings/privacy/PrivacyDashboardFragment.java @@ -16,8 +16,15 @@ package com.android.settings.privacy; +import static android.app.admin.DevicePolicyResources.Strings.Settings.CONNECTED_WORK_AND_PERSONAL_APPS_TITLE; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_LOCKED_NOTIFICATION_TITLE; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_NOTIFICATIONS_SECTION_HEADER; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_PRIVACY_POLICY_INFO; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_PRIVACY_POLICY_INFO_SUMMARY; + import android.app.settings.SettingsEnums; import android.content.Context; +import android.os.Bundle; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; @@ -50,6 +57,24 @@ public class PrivacyDashboardFragment extends DashboardFragment { return TAG; } + @Override + public void onCreate(Bundle icicle) { + super.onCreate(icicle); + replaceEnterpriseStringTitle("privacy_lock_screen_work_profile_notifications", + WORK_PROFILE_LOCKED_NOTIFICATION_TITLE, + R.string.locked_work_profile_notification_title); + replaceEnterpriseStringTitle("interact_across_profiles_privacy", + CONNECTED_WORK_AND_PERSONAL_APPS_TITLE, R.string.interact_across_profiles_title); + replaceEnterpriseStringTitle("privacy_work_profile_notifications_category", + WORK_PROFILE_NOTIFICATIONS_SECTION_HEADER, R.string.profile_section_header); + replaceEnterpriseStringTitle("work_policy_info", + WORK_PROFILE_PRIVACY_POLICY_INFO, R.string.work_policy_privacy_settings); + replaceEnterpriseStringSummary("work_policy_info", + WORK_PROFILE_PRIVACY_POLICY_INFO_SUMMARY, + R.string.work_policy_privacy_settings_summary); + + } + @Override protected int getPreferenceScreenResId() { return R.xml.privacy_dashboard_settings; diff --git a/src/com/android/settings/security/LockscreenDashboardFragment.java b/src/com/android/settings/security/LockscreenDashboardFragment.java index 39355f381a9..b3351ac1579 100644 --- a/src/com/android/settings/security/LockscreenDashboardFragment.java +++ b/src/com/android/settings/security/LockscreenDashboardFragment.java @@ -16,9 +16,13 @@ package com.android.settings.security; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_LOCKED_NOTIFICATION_TITLE; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_NOTIFICATIONS_SECTION_HEADER; + import android.app.settings.SettingsEnums; import android.content.Context; import android.hardware.display.AmbientDisplayConfiguration; +import android.os.Bundle; import androidx.annotation.VisibleForTesting; @@ -75,6 +79,16 @@ public class LockscreenDashboardFragment extends DashboardFragment return TAG; } + @Override + public void onCreate(Bundle icicle) { + super.onCreate(icicle); + replaceEnterpriseStringTitle("security_setting_lock_screen_notif_work", + WORK_PROFILE_LOCKED_NOTIFICATION_TITLE, + R.string.locked_work_profile_notification_title); + replaceEnterpriseStringTitle("security_setting_lock_screen_notif_work_header", + WORK_PROFILE_NOTIFICATIONS_SECTION_HEADER, R.string.profile_section_header); + } + @Override protected int getPreferenceScreenResId() { return R.xml.security_lockscreen_settings; diff --git a/src/com/android/settings/security/SecurityAdvancedSettings.java b/src/com/android/settings/security/SecurityAdvancedSettings.java index ce4a59c50b2..e5f494507a0 100644 --- a/src/com/android/settings/security/SecurityAdvancedSettings.java +++ b/src/com/android/settings/security/SecurityAdvancedSettings.java @@ -16,9 +16,17 @@ package com.android.settings.security; +import static android.app.admin.DevicePolicyResources.Strings.Settings.FINGERPRINT_FOR_WORK; +import static android.app.admin.DevicePolicyResources.Strings.Settings.MANAGED_DEVICE_INFO; +import static android.app.admin.DevicePolicyResources.Strings.Settings.MANAGE_DEVICE_ADMIN_APPS; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_SECURITY_TITLE; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_SET_UNLOCK_LAUNCH_PICKER_TITLE; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_UNIFY_LOCKS_SUMMARY; + import android.app.settings.SettingsEnums; import android.content.Context; import android.content.Intent; +import android.os.Bundle; import com.android.settings.R; import com.android.settings.biometrics.combination.CombinedBiometricProfileStatusPreferenceController; @@ -53,6 +61,27 @@ public class SecurityAdvancedSettings extends DashboardFragment { private static final String CATEGORY_SECURITY_LEGACY_ADVANCED_SETTINGS = "com.android.settings.category.ia.legacy_advanced_security"; + @Override + public void onCreate(Bundle icicle) { + super.onCreate(icicle); + replaceEnterpriseStringTitle("unlock_set_or_change_profile", + WORK_PROFILE_SET_UNLOCK_LAUNCH_PICKER_TITLE, + R.string.unlock_set_unlock_launch_picker_title_profile); + replaceEnterpriseStringSummary("unification", + WORK_PROFILE_UNIFY_LOCKS_SUMMARY, + R.string.lock_settings_profile_unification_summary); + replaceEnterpriseStringTitle("fingerprint_settings_profile", + FINGERPRINT_FOR_WORK, + R.string.security_settings_work_fingerprint_preference_title); + replaceEnterpriseStringTitle("manage_device_admin", + MANAGE_DEVICE_ADMIN_APPS, R.string.manage_device_admin); + replaceEnterpriseStringTitle("security_category_profile", + WORK_PROFILE_SECURITY_TITLE, R.string.lock_settings_profile_title); + replaceEnterpriseStringTitle("enterprise_privacy", MANAGED_DEVICE_INFO, + R.string.enterprise_privacy_settings); + + } + @Override public int getMetricsCategory() { return SettingsEnums.SECURITY_ADVANCED; diff --git a/src/com/android/settings/users/UserDialogs.java b/src/com/android/settings/users/UserDialogs.java index 3c19d7e0e62..4dcec4d2b56 100644 --- a/src/com/android/settings/users/UserDialogs.java +++ b/src/com/android/settings/users/UserDialogs.java @@ -18,6 +18,7 @@ package com.android.settings.users; import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_CONFIRM_REMOVE_MESSAGE; import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_CONFIRM_REMOVE_TITLE; +import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_MANAGED_BY; import android.app.Dialog; import android.app.admin.DevicePolicyManager; @@ -89,6 +90,8 @@ public final class UserDialogs { */ private static View createRemoveManagedUserDialogView(Context context, int userId) { PackageManager packageManager = context.getPackageManager(); + DevicePolicyManager devicePolicyManager = + context.getSystemService(DevicePolicyManager.class); ApplicationInfo mdmApplicationInfo = Utils.getAdminApplicationInfo(context, userId); if (mdmApplicationInfo == null) { return null; @@ -102,6 +105,16 @@ public final class UserDialogs { Drawable badgedApplicationIcon = packageManager.getApplicationIcon(mdmApplicationInfo); imageView.setImageDrawable(badgedApplicationIcon); + TextView openingParagraph = (TextView) + view.findViewById(R.id.delete_managed_profile_opening_paragraph); + openingParagraph.setText(devicePolicyManager.getString(WORK_PROFILE_MANAGED_BY, + () -> context.getString( + R.string.opening_paragraph_delete_profile_unknown_company))); + TextView closingParagraph = (TextView) + view.findViewById(R.id.delete_managed_profile_closing_paragraph); + closingParagraph.setText(devicePolicyManager.getString(WORK_PROFILE_CONFIRM_REMOVE_MESSAGE, + () -> context.getString(R.string.work_profile_confirm_remove_message))); + CharSequence appLabel = packageManager.getApplicationLabel(mdmApplicationInfo); CharSequence badgedAppLabel = packageManager.getUserBadgedLabel(appLabel, new UserHandle(userId)); From 2dd111b3c3135c115e7763c93bafdac110457260 Mon Sep 17 00:00:00 2001 From: Yanli Wan Date: Mon, 31 Jan 2022 14:34:57 -0800 Subject: [PATCH 07/14] Update financed device info screen Bug: 217375582 Test: manual Test: m RunSettingsRoboTests ROBOTEST_FILTER=EnterprisePrivacySettingsTest Test: m RunSettingsRoboTests ROBOTEST_FILTER=PrivacySettingsEnterprisePreferenceTest Test: m RunSettingsRoboTests ROBOTEST_FILTER=PrivacySettingsFinancedPreferenceTest Change-Id: Ie0045c7f97a331640209efd1118d841eb0ab1b6f --- res/values/strings.xml | 52 +++++-- res/xml/financed_privacy_settings.xml | 136 +++++++++++------- .../PrivacySettingsFinancedPreference.java | 16 +-- .../AbsBasePrivacySettingsPreference.java | 14 +- 4 files changed, 126 insertions(+), 92 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index a50c51a5386..5cbdb603804 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -12032,20 +12032,44 @@ Financed device info - - Types of information your device administrator can see - - Data associated with your account, such as email and calendar info - - Changes made by your device administrator - - Device administrator can lock this device and reset password - - Device administrator can delete all device data - - Failed password attempts before deleting device data - - Your credit provider can change settings and install software on this device.\n\nTo learn more, contact your creditor provider. + + Your credit provider can change settings and install software on this device.\n\nIf you miss a payment, your device will be locked.\n\nTo learn more, contact your credit provider. + + If your device is financed, you can\u2019t: + + Install apps from outside the Play Store + + Reboot your device into safe mode + + Add multiple users to your device + + Change date, time, and time zones + + Use developer options + + Your credit provider can: + + Access your IMEI number + + Factory reset your device + + If your device is locked, you can only use it to: + + Make emergency calls + + View system info like date, time, network status, and battery + + Turn your device on or off + + View notifications & text messages + + Access apps that are allowed by the credit provider + + Once you pay the full amount: + + All restrictions are removed from the device + + You can uninstall the creditor app diff --git a/res/xml/financed_privacy_settings.xml b/res/xml/financed_privacy_settings.xml index 742d7e1e9eb..4e5a46a32af 100644 --- a/res/xml/financed_privacy_settings.xml +++ b/res/xml/financed_privacy_settings.xml @@ -19,66 +19,102 @@ xmlns:settings="http://schemas.android.com/apk/res-auto" android:title="@string/financed_privacy_settings"> - + + + + + + + + + + - + - + - - - - + android:layout_height="wrap_content" + android:title="@string/financed_privacy_factory_reset" + android:selectable="false" /> - - + + android:layout_height="wrap_content" + android:title="@string/financed_privacy_emergency_calls" + android:selectable="false" /> + + + + - - - - + + + - diff --git a/src/com/android/settings/enterprise/PrivacySettingsFinancedPreference.java b/src/com/android/settings/enterprise/PrivacySettingsFinancedPreference.java index 12901a63c15..8612f6a1314 100644 --- a/src/com/android/settings/enterprise/PrivacySettingsFinancedPreference.java +++ b/src/com/android/settings/enterprise/PrivacySettingsFinancedPreference.java @@ -20,10 +20,8 @@ import android.content.Context; import android.provider.SearchIndexableResource; import com.android.settings.R; -import com.android.settings.widget.PreferenceCategoryController; import com.android.settingslib.core.AbstractPreferenceController; -import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -61,18 +59,6 @@ public class PrivacySettingsFinancedPreference implements PrivacySettingsPrefere */ @Override public List createPreferenceControllers(boolean async) { - final List controllers = new ArrayList<>(); - controllers.add(new NetworkLogsPreferenceController(mContext)); - controllers.add(new BugReportsPreferenceController(mContext)); - controllers.add(new SecurityLogsPreferenceController(mContext)); - final List exposureChangesCategoryControllers = - new ArrayList<>(); - exposureChangesCategoryControllers.add(new EnterpriseInstalledPackagesPreferenceController( - mContext, async)); - controllers.addAll(exposureChangesCategoryControllers); - controllers.add(new PreferenceCategoryController(mContext, KEY_EXPOSURE_CHANGES_CATEGORY) - .setChildren(exposureChangesCategoryControllers)); - controllers.add(new FailedPasswordWipeCurrentUserPreferenceController(mContext)); - return controllers; + return Collections.emptyList(); } } diff --git a/tests/robotests/src/com/android/settings/enterprise/AbsBasePrivacySettingsPreference.java b/tests/robotests/src/com/android/settings/enterprise/AbsBasePrivacySettingsPreference.java index 5cf22248001..34b218a9ed4 100644 --- a/tests/robotests/src/com/android/settings/enterprise/AbsBasePrivacySettingsPreference.java +++ b/tests/robotests/src/com/android/settings/enterprise/AbsBasePrivacySettingsPreference.java @@ -84,18 +84,6 @@ public abstract class AbsBasePrivacySettingsPreference { protected void verifyFinancedPreferenceControllers( List controllers) { - assertThat(controllers).isNotNull(); - assertThat(controllers.size()).isEqualTo(6); - int position = 0; - assertThat(controllers.get(position++)).isInstanceOf(NetworkLogsPreferenceController.class); - assertThat(controllers.get(position++)).isInstanceOf(BugReportsPreferenceController.class); - assertThat(controllers.get(position++)).isInstanceOf( - SecurityLogsPreferenceController.class); - assertThat(controllers.get(position++)).isInstanceOf( - EnterpriseInstalledPackagesPreferenceController.class); - assertThat(controllers.get(position++)).isInstanceOf( - PreferenceCategoryController.class); - assertThat(controllers.get(position)).isInstanceOf( - FailedPasswordWipeCurrentUserPreferenceController.class); + assertThat(controllers).isEmpty(); } } From 74cf5865cf6396042396a83ec5dbdf75b59151e1 Mon Sep 17 00:00:00 2001 From: Remi NGUYEN VAN Date: Thu, 3 Feb 2022 18:01:19 +0900 Subject: [PATCH 08/14] Remove dependencies on hidden network stats APIs Replace usage with equivalent stable APIs. Bug: 197717846 Test: atest SettingsRoboTests (cherry-picked from ag/16779860) Change-Id: I4151b831fc83dee9b36292cd7991f9b294ed4ff2 Merged-In: I4151b831fc83dee9b36292cd7991f9b294ed4ff2 --- .../android/settings/datausage/AppDataUsageTest.java | 3 +-- .../settings/datausage/lib/DataUsageLibTest.java | 12 ++++++------ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/tests/robotests/src/com/android/settings/datausage/AppDataUsageTest.java b/tests/robotests/src/com/android/settings/datausage/AppDataUsageTest.java index 68a8a86b552..09c57340d60 100644 --- a/tests/robotests/src/com/android/settings/datausage/AppDataUsageTest.java +++ b/tests/robotests/src/com/android/settings/datausage/AppDataUsageTest.java @@ -439,7 +439,6 @@ public class AppDataUsageTest { assertThat(mFragment.mTemplate.getMatchRule()) .isEqualTo(NetworkTemplate.MATCH_WIFI); assertTrue(mFragment.mTemplate.getSubscriberIds().isEmpty()); - assertThat(mFragment.mTemplate.getNetworkId()) - .isEqualTo(NetworkTemplate.WIFI_NETWORKID_ALL); + assertTrue(mFragment.mTemplate.getWifiNetworkKeys().isEmpty()); } } diff --git a/tests/robotests/src/com/android/settings/datausage/lib/DataUsageLibTest.java b/tests/robotests/src/com/android/settings/datausage/lib/DataUsageLibTest.java index 8d994d0550e..70a1a38fa0e 100644 --- a/tests/robotests/src/com/android/settings/datausage/lib/DataUsageLibTest.java +++ b/tests/robotests/src/com/android/settings/datausage/lib/DataUsageLibTest.java @@ -81,8 +81,8 @@ public class DataUsageLibTest { when(mSubscriptionManager.isActiveSubscriptionId(SUB_ID)).thenReturn(false); final NetworkTemplate networkTemplate = DataUsageLib.getMobileTemplate(mContext, SUB_ID); - assertThat(networkTemplate.matchesSubscriberId(SUBSCRIBER_ID)).isTrue(); - assertThat(networkTemplate.matchesSubscriberId(SUBSCRIBER_ID_2)).isFalse(); + assertThat(networkTemplate.getSubscriberIds().contains(SUBSCRIBER_ID)).isTrue(); + assertThat(networkTemplate.getSubscriberIds().contains(SUBSCRIBER_ID_2)).isFalse(); } @Test @@ -94,8 +94,8 @@ public class DataUsageLibTest { .thenReturn(new String[] {SUBSCRIBER_ID}); final NetworkTemplate networkTemplate = DataUsageLib.getMobileTemplate(mContext, SUB_ID); - assertThat(networkTemplate.matchesSubscriberId(SUBSCRIBER_ID)).isTrue(); - assertThat(networkTemplate.matchesSubscriberId(SUBSCRIBER_ID_2)).isFalse(); + assertThat(networkTemplate.getSubscriberIds().contains(SUBSCRIBER_ID)).isTrue(); + assertThat(networkTemplate.getSubscriberIds().contains(SUBSCRIBER_ID_2)).isFalse(); } @Test @@ -107,7 +107,7 @@ public class DataUsageLibTest { .thenReturn(new String[] {SUBSCRIBER_ID, SUBSCRIBER_ID_2}); final NetworkTemplate networkTemplate = DataUsageLib.getMobileTemplate(mContext, SUB_ID); - assertThat(networkTemplate.matchesSubscriberId(SUBSCRIBER_ID)).isTrue(); - assertThat(networkTemplate.matchesSubscriberId(SUBSCRIBER_ID_2)).isTrue(); + assertThat(networkTemplate.getSubscriberIds().contains(SUBSCRIBER_ID)).isTrue(); + assertThat(networkTemplate.getSubscriberIds().contains(SUBSCRIBER_ID_2)).isTrue(); } } From 89f5e2e49786b69088e790773a5ddee67b24ebb6 Mon Sep 17 00:00:00 2001 From: Steven Ng Date: Fri, 4 Feb 2022 15:48:15 +0000 Subject: [PATCH 09/14] Show "Turns on at bedtime" in Dark theme setting based on feature flag Test: atest SettingsRoboTests:com.android.settings.display.darkmode.* Bug: 217866453 Change-Id: Ic40975d4506f812790768339e48441a048529df3 --- .../android/settings/display/darkmode/BedtimeSettings.java | 6 ++++++ .../android/settings/testutils/BedtimeSettingsUtils.java | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/src/com/android/settings/display/darkmode/BedtimeSettings.java b/src/com/android/settings/display/darkmode/BedtimeSettings.java index d9a458c8798..28121b22cfc 100644 --- a/src/com/android/settings/display/darkmode/BedtimeSettings.java +++ b/src/com/android/settings/display/darkmode/BedtimeSettings.java @@ -17,11 +17,13 @@ package com.android.settings.display.darkmode; import static android.provider.Settings.ACTION_BEDTIME_SETTINGS; +import static android.util.FeatureFlagUtils.SETTINGS_APP_ALLOW_DARK_THEME_ACTIVATION_AT_BEDTIME; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import android.util.FeatureFlagUtils; import androidx.annotation.Nullable; @@ -44,6 +46,10 @@ public final class BedtimeSettings { */ @Nullable public Intent getBedtimeSettingsIntent() { + if (!FeatureFlagUtils.isEnabled(mContext, + SETTINGS_APP_ALLOW_DARK_THEME_ACTIVATION_AT_BEDTIME)) { + return null; + } Intent bedtimeSettingsIntent = new Intent(ACTION_BEDTIME_SETTINGS).setPackage( mWellbeingPackage); ResolveInfo bedtimeSettingInfo = mPackageManager.resolveActivity(bedtimeSettingsIntent, diff --git a/tests/robotests/src/com/android/settings/testutils/BedtimeSettingsUtils.java b/tests/robotests/src/com/android/settings/testutils/BedtimeSettingsUtils.java index 59c501b3e36..ac55334b102 100644 --- a/tests/robotests/src/com/android/settings/testutils/BedtimeSettingsUtils.java +++ b/tests/robotests/src/com/android/settings/testutils/BedtimeSettingsUtils.java @@ -17,6 +17,7 @@ package com.android.settings.testutils; import static android.provider.Settings.ACTION_BEDTIME_SETTINGS; +import static android.util.FeatureFlagUtils.SETTINGS_APP_ALLOW_DARK_THEME_ACTIVATION_AT_BEDTIME; import static org.robolectric.Shadows.shadowOf; @@ -25,6 +26,7 @@ import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.ResolveInfo; +import android.util.FeatureFlagUtils; /** A helper class for installing bedtime settings activity. */ public final class BedtimeSettingsUtils { @@ -35,6 +37,8 @@ public final class BedtimeSettingsUtils { } public void installBedtimeSettings(String wellbeingPackage, boolean enabled) { + FeatureFlagUtils.setEnabled(mContext, SETTINGS_APP_ALLOW_DARK_THEME_ACTIVATION_AT_BEDTIME, + true /* enabled */); Intent bedtimeSettingsIntent = new Intent(ACTION_BEDTIME_SETTINGS) .setPackage(wellbeingPackage); ResolveInfo bedtimeResolveInfo = new ResolveInfo(); From 4a5c128624e5ebde612e7bb502f9a994d658bf5e Mon Sep 17 00:00:00 2001 From: William Escande Date: Tue, 8 Feb 2022 15:33:16 +0100 Subject: [PATCH 10/14] Resolve bluetooth hidden API usages Bug: 143245666 Test: build Change-Id: Idadf84873c88155382c48bb9108cf28d88aaef0a --- .../settings/bluetooth/BluetoothPairingController.java | 2 +- .../android/settings/bluetooth/BluetoothPairingService.java | 4 ++-- .../settings/bluetooth/BluetoothPairingServiceTest.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/bluetooth/BluetoothPairingController.java b/src/com/android/settings/bluetooth/BluetoothPairingController.java index b75e02a754a..c70a56ab866 100644 --- a/src/com/android/settings/bluetooth/BluetoothPairingController.java +++ b/src/com/android/settings/bluetooth/BluetoothPairingController.java @@ -435,7 +435,7 @@ public class BluetoothPairingController implements OnCheckedChangeListener, */ public void onCancel() { Log.d(TAG, "Pairing dialog canceled"); - mDevice.cancelPairing(); + mDevice.cancelBondProcess(); } /** diff --git a/src/com/android/settings/bluetooth/BluetoothPairingService.java b/src/com/android/settings/bluetooth/BluetoothPairingService.java index bc5dc6695d1..9883e617392 100644 --- a/src/com/android/settings/bluetooth/BluetoothPairingService.java +++ b/src/com/android/settings/bluetooth/BluetoothPairingService.java @@ -98,7 +98,7 @@ public final class BluetoothPairingService extends Service { } else if (action.equals(ACTION_DISMISS_PAIRING)) { Log.d(TAG, "Notification cancel " + " (" + mDevice.getName() + ")"); - mDevice.cancelPairing(); + mDevice.cancelBondProcess(); } else { int bondState = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, BluetoothDevice.ERROR); @@ -144,7 +144,7 @@ public final class BluetoothPairingService extends Service { createPairingNotification(intent); } else if (TextUtils.equals(action, ACTION_DISMISS_PAIRING)) { Log.d(TAG, "Notification cancel " + " (" + mDevice.getName() + ")"); - mDevice.cancelPairing(); + mDevice.cancelBondProcess(); mNm.cancel(NOTIFICATION_ID); stopSelf(); } else if (TextUtils.equals(action, ACTION_PAIRING_DIALOG)) { diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothPairingServiceTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothPairingServiceTest.java index e73b447728e..3194e55770f 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothPairingServiceTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothPairingServiceTest.java @@ -106,7 +106,7 @@ public class BluetoothPairingServiceTest { mBluetoothPairingService.onStartCommand(intent, /* flags */ 0, /* startId */ 0); - verify(mDevice).cancelPairing(); + verify(mDevice).cancelBondProcess(); verify(mNm).cancel(mBluetoothPairingService.NOTIFICATION_ID); } From 9855997b3c20c466e94532394a36eeaede673c0a Mon Sep 17 00:00:00 2001 From: menghanli Date: Fri, 4 Feb 2022 13:25:58 +0800 Subject: [PATCH 11/14] Show quick setting tooltips after shortcut tutorial dialog dismiss - ToggleAccessibilityServicePreferenceFragment for unbundle accessibility service - LaunchAccessibilityActivityPreferenceFragment for unbundle accessibility shortcut-activity Bug: 210356011 Test: make RunSettingsRoboTests ROBOTEST_FILTER=AccessibilityGestureNavigationTutorialTest Change-Id: I6f9e7e206ae7642d91e658ceb18b9e7ce4244a22 --- ...ccessibilityGestureNavigationTutorial.java | 9 +++- ...cessibilityActivityPreferenceFragment.java | 27 +++++++++++ ...ccessibilityServicePreferenceFragment.java | 48 +++++++++++-------- ...sibilityGestureNavigationTutorialTest.java | 45 +++++++++++++++-- 4 files changed, 105 insertions(+), 24 deletions(-) diff --git a/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorial.java b/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorial.java index 0ca16cb99b0..773c9878e9d 100644 --- a/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorial.java +++ b/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorial.java @@ -46,6 +46,7 @@ import androidx.annotation.ColorInt; import androidx.annotation.DrawableRes; import androidx.annotation.IntDef; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.annotation.RawRes; import androidx.annotation.VisibleForTesting; import androidx.appcompat.app.AlertDialog; @@ -125,9 +126,15 @@ public final class AccessibilityGestureNavigationTutorial { } static AlertDialog createAccessibilityTutorialDialog(Context context, int shortcutTypes) { + return createAccessibilityTutorialDialog(context, shortcutTypes, mOnClickListener); + } + + static AlertDialog createAccessibilityTutorialDialog(Context context, int shortcutTypes, + @Nullable DialogInterface.OnClickListener negativeButtonListener) { return new AlertDialog.Builder(context) .setView(createShortcutNavigationContentView(context, shortcutTypes)) - .setNegativeButton(R.string.accessibility_tutorial_dialog_button, mOnClickListener) + .setNegativeButton(R.string.accessibility_tutorial_dialog_button, + negativeButtonListener) .create(); } diff --git a/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java b/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java index 00f280440a9..3a3011c54c4 100644 --- a/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java +++ b/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java @@ -20,9 +20,11 @@ import static com.android.settings.accessibility.AccessibilityStatsLogUtils.logA import android.accessibilityservice.AccessibilityShortcutInfo; import android.app.ActivityOptions; +import android.app.Dialog; import android.content.ActivityNotFoundException; import android.content.ComponentName; import android.content.ContentResolver; +import android.content.DialogInterface; import android.content.Intent; import android.content.pm.ActivityInfo; import android.net.Uri; @@ -124,6 +126,20 @@ public class LaunchAccessibilityActivityPreferenceFragment extends ToggleFeature return null; } + @Override + public Dialog onCreateDialog(int dialogId) { + switch (dialogId) { + case AccessibilityDialogUtils.DialogEnums.LAUNCH_ACCESSIBILITY_TUTORIAL: + final Dialog dialog = AccessibilityGestureNavigationTutorial + .createAccessibilityTutorialDialog(getPrefContext(), + getUserShortcutTypes(), this::callOnTutorialDialogButtonClicked); + dialog.setCanceledOnTouchOutside(false); + return dialog; + default: + return super.onCreateDialog(dialogId); + } + } + @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { // Do not call super. We don't want to see the "Help & feedback" option on this page so as @@ -208,4 +224,15 @@ public class LaunchAccessibilityActivityPreferenceFragment extends ToggleFeature return settingsIntent; } + + /** + * This method will be invoked when a button in the tutorial dialog is clicked. + * + * @param dialog The dialog that received the click + * @param which The button that was clicked + */ + private void callOnTutorialDialogButtonClicked(DialogInterface dialog, int which) { + dialog.dismiss(); + showQuickSettingsTooltipIfNeeded(); + } } diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java index a1c98cdc0c4..ce9cf1599c9 100644 --- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java @@ -168,9 +168,9 @@ public class ToggleAccessibilityServicePreferenceFragment extends @Override public Dialog onCreateDialog(int dialogId) { + final AccessibilityServiceInfo info = getAccessibilityServiceInfo(); switch (dialogId) { - case DialogEnums.ENABLE_WARNING_FROM_TOGGLE: { - final AccessibilityServiceInfo info = getAccessibilityServiceInfo(); + case DialogEnums.ENABLE_WARNING_FROM_TOGGLE: if (info == null) { return null; } @@ -178,10 +178,8 @@ public class ToggleAccessibilityServicePreferenceFragment extends .createCapabilitiesDialog(getPrefContext(), info, this::onDialogButtonFromEnableToggleClicked, this::onDialogButtonFromUninstallClicked); - break; - } - case DialogEnums.ENABLE_WARNING_FROM_SHORTCUT_TOGGLE: { - final AccessibilityServiceInfo info = getAccessibilityServiceInfo(); + return mWarningDialog; + case DialogEnums.ENABLE_WARNING_FROM_SHORTCUT_TOGGLE: if (info == null) { return null; } @@ -189,10 +187,8 @@ public class ToggleAccessibilityServicePreferenceFragment extends .createCapabilitiesDialog(getPrefContext(), info, this::onDialogButtonFromShortcutToggleClicked, this::onDialogButtonFromUninstallClicked); - break; - } - case DialogEnums.ENABLE_WARNING_FROM_SHORTCUT: { - final AccessibilityServiceInfo info = getAccessibilityServiceInfo(); + return mWarningDialog; + case DialogEnums.ENABLE_WARNING_FROM_SHORTCUT: if (info == null) { return null; } @@ -200,23 +196,24 @@ public class ToggleAccessibilityServicePreferenceFragment extends .createCapabilitiesDialog(getPrefContext(), info, this::onDialogButtonFromShortcutClicked, this::onDialogButtonFromUninstallClicked); - break; - } - case DialogEnums.DISABLE_WARNING_FROM_TOGGLE: { - final AccessibilityServiceInfo info = getAccessibilityServiceInfo(); + return mWarningDialog; + case DialogEnums.DISABLE_WARNING_FROM_TOGGLE: if (info == null) { return null; } mWarningDialog = AccessibilityServiceWarning .createDisableDialog(getPrefContext(), info, this::onDialogButtonFromDisableToggleClicked); - break; - } - default: { - mWarningDialog = super.onCreateDialog(dialogId); - } + return mWarningDialog; + case DialogEnums.LAUNCH_ACCESSIBILITY_TUTORIAL: + final Dialog dialog = AccessibilityGestureNavigationTutorial + .createAccessibilityTutorialDialog(getPrefContext(), + getUserShortcutTypes(), this::callOnTutorialDialogButtonClicked); + dialog.setCanceledOnTouchOutside(false); + return dialog; + default: + return super.onCreateDialog(dialogId); } - return mWarningDialog; } @Override @@ -488,6 +485,17 @@ public class ToggleAccessibilityServicePreferenceFragment extends mWarningDialog.dismiss(); } + /** + * This method will be invoked when a button in the tutorial dialog is clicked. + * + * @param dialog The dialog that received the click + * @param which The button that was clicked + */ + private void callOnTutorialDialogButtonClicked(DialogInterface dialog, int which) { + dialog.dismiss(); + showQuickSettingsTooltipIfNeeded(); + } + void onDialogButtonFromShortcutClicked(View view) { final int viewId = view.getId(); if (viewId == R.id.permission_enable_allow_button) { diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorialTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorialTest.java index cf0ce96bf60..6efdcf7a7e2 100644 --- a/tests/robotests/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorialTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorialTest.java @@ -22,26 +22,41 @@ import static com.android.settings.accessibility.AccessibilityUtil.UserShortcutT import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.verify; + import android.content.Context; +import android.content.DialogInterface; import androidx.appcompat.app.AlertDialog; +import androidx.test.core.app.ApplicationProvider; + +import com.android.settings.R; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; /** Tests for {@link AccessibilityGestureNavigationTutorial}. */ @RunWith(RobolectricTestRunner.class) public final class AccessibilityGestureNavigationTutorialTest { - private Context mContext; + @Rule + public final MockitoRule mMockitoRule = MockitoJUnit.rule(); + + @Mock + private DialogInterface.OnClickListener mMockOnClickListener; + + private final Context mContext = ApplicationProvider.getApplicationContext(); private int mShortcutTypes; @Before public void setUp() { - mContext = RuntimeEnvironment.application; + mContext.setTheme(R.style.Theme_AppCompat); mShortcutTypes = /* initial */ 0; } @@ -86,4 +101,28 @@ public final class AccessibilityGestureNavigationTutorialTest { mShortcutTypes)).hasSize(/* expectedSize= */ 2); assertThat(alertDialog).isNotNull(); } + + @Test + public void performClickOnNegativeButton_turnOnSoftwareShortcut_dismiss() { + mShortcutTypes |= UserShortcutType.SOFTWARE; + final AlertDialog alertDialog = + createAccessibilityTutorialDialog(mContext, mShortcutTypes); + alertDialog.show(); + + alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).performClick(); + + assertThat(alertDialog.isShowing()).isFalse(); + } + + @Test + public void performClickOnNegativeButton_turnOnSoftwareShortcut_callOnClickListener() { + mShortcutTypes |= UserShortcutType.SOFTWARE; + final AlertDialog alertDialog = + createAccessibilityTutorialDialog(mContext, mShortcutTypes, mMockOnClickListener); + alertDialog.show(); + + alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).performClick(); + + verify(mMockOnClickListener).onClick(alertDialog, DialogInterface.BUTTON_NEGATIVE); + } } From 0577a068b82a94d8c7f34078d783171d560b8756 Mon Sep 17 00:00:00 2001 From: menghanli Date: Tue, 25 Jan 2022 06:45:40 +0800 Subject: [PATCH 12/14] Show quick setting tooltips after shortcut edit dialog dismiss - ToggleAccessibilityServicePreferenceFragment for unbundle accessibility service - LaunchAccessibilityActivityPreferenceFragment for unbundle accessibility shortcut-activity Bug: 210356011 Test: Manual testing Change-Id: I3bbaa6c0e5a4359e696c776a300520c4572b31f7 --- ...unchAccessibilityActivityPreferenceFragment.java | 7 +++++++ ...oggleAccessibilityServicePreferenceFragment.java | 6 ++++++ .../ToggleFeaturePreferenceFragment.java | 13 +++++++++++++ 3 files changed, 26 insertions(+) diff --git a/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java b/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java index 3a3011c54c4..8e2ed48826a 100644 --- a/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java +++ b/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java @@ -235,4 +235,11 @@ public class LaunchAccessibilityActivityPreferenceFragment extends ToggleFeature dialog.dismiss(); showQuickSettingsTooltipIfNeeded(); } + + + @Override + protected void callOnAlertDialogCheckboxClicked(DialogInterface dialog, int which) { + super.callOnAlertDialogCheckboxClicked(dialog, which); + showQuickSettingsTooltipIfNeeded(getShortcutTypeCheckBoxValue()); + } } diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java index ce9cf1599c9..0e0eedae02b 100644 --- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java @@ -496,6 +496,12 @@ public class ToggleAccessibilityServicePreferenceFragment extends showQuickSettingsTooltipIfNeeded(); } + @Override + protected void callOnAlertDialogCheckboxClicked(DialogInterface dialog, int which) { + super.callOnAlertDialogCheckboxClicked(dialog, which); + showQuickSettingsTooltipIfNeeded(getShortcutTypeCheckBoxValue()); + } + void onDialogButtonFromShortcutClicked(View view) { final int viewId = view.getId(); if (viewId == R.id.permission_enable_allow_button) { diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java index 0cc1f1c1662..d36764b61c2 100644 --- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java @@ -798,6 +798,19 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference PreferredShortcuts.saveUserShortcutType(getPrefContext(), shortcut); } + /** + * Shows the quick settings tooltip if the quick settings service and the shortcut are assigned. + * The tooltip only shows once. + * + * @param shortcutType The shortcut type. + */ + protected void showQuickSettingsTooltipIfNeeded(@UserShortcutType int shortcutType) { + if (shortcutType == AccessibilityUtil.UserShortcutType.EMPTY) { + return; + } + showQuickSettingsTooltipIfNeeded(); + } + /** * Shows the quick settings tooltip if the quick settings service is assigned. The tooltip only * shows once. From 0d6909dc0f6f804d19eadbc92f9104a033aa8905 Mon Sep 17 00:00:00 2001 From: menghanli Date: Tue, 25 Jan 2022 06:32:26 +0800 Subject: [PATCH 13/14] Support accessibility settings load title from quick settings panel - ToggleAccessibilityServicePreferenceFragment for unbundle accessibility service - LaunchAccessibilityActivityPreferenceFragment for unbundle accessibility shortcut-activity Bug: 210356011 Test: make RunSettingsRoboTests ROBOTEST_FILTER=LaunchAccessibilityActivityPreferenceFragmentTest ToggleAccessibilityServicePreferenceFragmentTest Change-Id: I78dcb8dcb2778819ec4bb130a041211598f6d9c --- ...cessibilityActivityPreferenceFragment.java | 6 +- ...ccessibilityServicePreferenceFragment.java | 6 +- .../ToggleFeaturePreferenceFragment.java | 19 +++ ...ibilityActivityPreferenceFragmentTest.java | 145 ++++++++++++++++++ ...sibilityServicePreferenceFragmentTest.java | 145 ++++++++++++++++++ 5 files changed, 319 insertions(+), 2 deletions(-) create mode 100644 tests/robotests/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragmentTest.java create mode 100644 tests/robotests/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragmentTest.java diff --git a/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java b/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java index 8e2ed48826a..afd334e199e 100644 --- a/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java +++ b/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java @@ -123,7 +123,11 @@ public class LaunchAccessibilityActivityPreferenceFragment extends ToggleFeature @Override CharSequence getTileName() { - return null; + final ComponentName componentName = getTileComponentName(); + if (componentName == null) { + return null; + } + return loadTileLabel(getPrefContext(), componentName); } @Override diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java index 0e0eedae02b..d4d2f4cbce1 100644 --- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java @@ -245,7 +245,11 @@ public class ToggleAccessibilityServicePreferenceFragment extends @Override CharSequence getTileName() { - return null; + final ComponentName componentName = getTileComponentName(); + if (componentName == null) { + return null; + } + return loadTileLabel(getPrefContext(), componentName); } @Override diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java index d36764b61c2..08e9b88878a 100644 --- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java @@ -25,7 +25,9 @@ import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import android.content.pm.ServiceInfo; import android.graphics.drawable.Drawable; import android.icu.text.CaseMap; import android.net.Uri; @@ -33,6 +35,7 @@ import android.os.Bundle; import android.os.Handler; import android.os.UserHandle; import android.provider.Settings; +import android.service.quicksettings.TileService; import android.text.Html; import android.text.TextUtils; import android.view.LayoutInflater; @@ -843,4 +846,20 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference tileComponentName); mNeedsQSTooltipReshow = false; } + + /** Returns user visible name of the tile by given {@link ComponentName}. */ + protected CharSequence loadTileLabel(Context context, ComponentName componentName) { + final PackageManager packageManager = context.getPackageManager(); + final Intent queryIntent = new Intent(TileService.ACTION_QS_TILE); + final List resolveInfos = + packageManager.queryIntentServices(queryIntent, PackageManager.GET_META_DATA); + for (ResolveInfo info : resolveInfos) { + final ServiceInfo serviceInfo = info.serviceInfo; + if (TextUtils.equals(componentName.getPackageName(), serviceInfo.packageName) + && TextUtils.equals(componentName.getClassName(), serviceInfo.name)) { + return serviceInfo.loadLabel(packageManager); + } + } + return null; + } } diff --git a/tests/robotests/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragmentTest.java new file mode 100644 index 00000000000..0c656b37604 --- /dev/null +++ b/tests/robotests/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragmentTest.java @@ -0,0 +1,145 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.accessibility; + +import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; + +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.content.pm.ServiceInfo; +import android.service.quicksettings.TileService; + +import androidx.preference.PreferenceManager; +import androidx.preference.PreferenceScreen; +import androidx.test.core.app.ApplicationProvider; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Answers; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.Shadows; +import org.robolectric.shadows.ShadowPackageManager; + +import java.util.Arrays; + +/** Tests for {@link LaunchAccessibilityActivityPreferenceFragment} */ +@RunWith(RobolectricTestRunner.class) +public class LaunchAccessibilityActivityPreferenceFragmentTest { + + private static final String PLACEHOLDER_PACKAGE_NAME = "com.placeholder.example"; + private static final String PLACEHOLDER_TILE_CLASS_NAME = + PLACEHOLDER_PACKAGE_NAME + "tile.placeholder"; + private static final String PLACEHOLDER_TILE_CLASS_NAME2 = + PLACEHOLDER_PACKAGE_NAME + "tile.placeholder2"; + private static final ComponentName PLACEHOLDER_TILE_COMPONENT_NAME = new ComponentName( + PLACEHOLDER_PACKAGE_NAME, PLACEHOLDER_TILE_CLASS_NAME); + private static final String PLACEHOLDER_TILE_NAME = + PLACEHOLDER_PACKAGE_NAME + "tile.placeholder"; + private static final String PLACEHOLDER_TILE_NAME2 = + PLACEHOLDER_PACKAGE_NAME + "tile.placeholder2"; + + private TestLaunchAccessibilityActivityPreferenceFragment mFragment; + private PreferenceScreen mScreen; + private Context mContext = ApplicationProvider.getApplicationContext(); + + @Mock(answer = Answers.RETURNS_DEEP_STUBS) + private PreferenceManager mPreferenceManager; + + @Before + public void setUpTestFragment() { + MockitoAnnotations.initMocks(this); + + mFragment = spy(new TestLaunchAccessibilityActivityPreferenceFragment()); + when(mFragment.getPreferenceManager()).thenReturn(mPreferenceManager); + when(mFragment.getPreferenceManager().getContext()).thenReturn(mContext); + when(mFragment.getContext()).thenReturn(mContext); + mScreen = spy(new PreferenceScreen(mContext, /* attrs= */ null)); + when(mScreen.getPreferenceManager()).thenReturn(mPreferenceManager); + doReturn(mScreen).when(mFragment).getPreferenceScreen(); + } + + @Test + public void getTileName_noTileServiceAssigned_noMatchString() { + final CharSequence tileName = mFragment.getTileName(); + assertThat(tileName.toString()).isEqualTo(""); + } + + @Test + public void getTileName_hasOneTileService_haveMatchString() { + final Intent tileProbe = new Intent(TileService.ACTION_QS_TILE); + final ResolveInfo info = new ResolveInfo(); + info.serviceInfo = new FakeServiceInfo(); + info.serviceInfo.packageName = PLACEHOLDER_PACKAGE_NAME; + info.serviceInfo.name = PLACEHOLDER_TILE_CLASS_NAME; + final ShadowPackageManager shadowPackageManager = + Shadows.shadowOf(mContext.getPackageManager()); + shadowPackageManager.setResolveInfosForIntent(tileProbe, Arrays.asList(info)); + + final CharSequence tileName = mFragment.getTileName(); + assertThat(tileName.toString()).isEqualTo(PLACEHOLDER_TILE_NAME); + } + + @Test + public void getTileName_hasTwoTileServices_haveMatchString() { + final Intent tileProbe = new Intent(TileService.ACTION_QS_TILE); + final ResolveInfo info = new ResolveInfo(); + info.serviceInfo = new FakeServiceInfo(); + info.serviceInfo.packageName = PLACEHOLDER_PACKAGE_NAME; + info.serviceInfo.name = PLACEHOLDER_TILE_CLASS_NAME; + final ResolveInfo info2 = new ResolveInfo(); + info2.serviceInfo = new FakeServiceInfo2(); + info2.serviceInfo.packageName = PLACEHOLDER_PACKAGE_NAME; + info2.serviceInfo.name = PLACEHOLDER_TILE_CLASS_NAME2; + final ShadowPackageManager shadowPackageManager = + Shadows.shadowOf(mContext.getPackageManager()); + shadowPackageManager.setResolveInfosForIntent(tileProbe, Arrays.asList(info, info2)); + + final CharSequence tileName = mFragment.getTileName(); + assertThat(tileName.toString()).isEqualTo(PLACEHOLDER_TILE_NAME); + } + + private static class FakeServiceInfo extends ServiceInfo { + public String loadLabel(PackageManager mgr) { + return PLACEHOLDER_TILE_NAME; + } + } + + private static class FakeServiceInfo2 extends ServiceInfo { + public String loadLabel(PackageManager mgr) { + return PLACEHOLDER_TILE_NAME2; + } + } + + private static class TestLaunchAccessibilityActivityPreferenceFragment + extends LaunchAccessibilityActivityPreferenceFragment { + + @Override + protected ComponentName getTileComponentName() { + return PLACEHOLDER_TILE_COMPONENT_NAME; + } + } +} diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragmentTest.java new file mode 100644 index 00000000000..db5b83c841d --- /dev/null +++ b/tests/robotests/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragmentTest.java @@ -0,0 +1,145 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.accessibility; + +import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; + +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.content.pm.ServiceInfo; +import android.service.quicksettings.TileService; + +import androidx.preference.PreferenceManager; +import androidx.preference.PreferenceScreen; +import androidx.test.core.app.ApplicationProvider; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Answers; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.Shadows; +import org.robolectric.shadows.ShadowPackageManager; + +import java.util.Arrays; + +/** Tests for {@link ToggleAccessibilityServicePreferenceFragment} */ +@RunWith(RobolectricTestRunner.class) +public class ToggleAccessibilityServicePreferenceFragmentTest { + + private static final String PLACEHOLDER_PACKAGE_NAME = "com.placeholder.example"; + private static final String PLACEHOLDER_TILE_CLASS_NAME = + PLACEHOLDER_PACKAGE_NAME + "tile.placeholder"; + private static final String PLACEHOLDER_TILE_CLASS_NAME2 = + PLACEHOLDER_PACKAGE_NAME + "tile.placeholder2"; + private static final ComponentName PLACEHOLDER_TILE_COMPONENT_NAME = new ComponentName( + PLACEHOLDER_PACKAGE_NAME, PLACEHOLDER_TILE_CLASS_NAME); + private static final String PLACEHOLDER_TILE_NAME = + PLACEHOLDER_PACKAGE_NAME + "tile.placeholder"; + private static final String PLACEHOLDER_TILE_NAME2 = + PLACEHOLDER_PACKAGE_NAME + "tile.placeholder2"; + + private TestToggleAccessibilityServicePreferenceFragment mFragment; + private PreferenceScreen mScreen; + private Context mContext = ApplicationProvider.getApplicationContext(); + + @Mock(answer = Answers.RETURNS_DEEP_STUBS) + private PreferenceManager mPreferenceManager; + + @Before + public void setUpTestFragment() { + MockitoAnnotations.initMocks(this); + + mFragment = spy(new TestToggleAccessibilityServicePreferenceFragment()); + when(mFragment.getPreferenceManager()).thenReturn(mPreferenceManager); + when(mFragment.getPreferenceManager().getContext()).thenReturn(mContext); + when(mFragment.getContext()).thenReturn(mContext); + mScreen = spy(new PreferenceScreen(mContext, /* attrs= */ null)); + when(mScreen.getPreferenceManager()).thenReturn(mPreferenceManager); + doReturn(mScreen).when(mFragment).getPreferenceScreen(); + } + + @Test + public void getTileName_noTileServiceAssigned_noMatchString() { + final CharSequence tileName = mFragment.getTileName(); + assertThat(tileName.toString()).isEqualTo(""); + } + + @Test + public void getTileName_hasOneTileService_haveMatchString() { + final Intent tileProbe = new Intent(TileService.ACTION_QS_TILE); + final ResolveInfo info = new ResolveInfo(); + info.serviceInfo = new FakeServiceInfo(); + info.serviceInfo.packageName = PLACEHOLDER_PACKAGE_NAME; + info.serviceInfo.name = PLACEHOLDER_TILE_CLASS_NAME; + final ShadowPackageManager shadowPackageManager = + Shadows.shadowOf(mContext.getPackageManager()); + shadowPackageManager.setResolveInfosForIntent(tileProbe, Arrays.asList(info)); + + final CharSequence tileName = mFragment.getTileName(); + assertThat(tileName.toString()).isEqualTo(PLACEHOLDER_TILE_NAME); + } + + @Test + public void getTileName_hasTwoTileServices_haveMatchString() { + final Intent tileProbe = new Intent(TileService.ACTION_QS_TILE); + final ResolveInfo info = new ResolveInfo(); + info.serviceInfo = new FakeServiceInfo(); + info.serviceInfo.packageName = PLACEHOLDER_PACKAGE_NAME; + info.serviceInfo.name = PLACEHOLDER_TILE_CLASS_NAME; + final ResolveInfo info2 = new ResolveInfo(); + info2.serviceInfo = new FakeServiceInfo2(); + info2.serviceInfo.packageName = PLACEHOLDER_PACKAGE_NAME; + info2.serviceInfo.name = PLACEHOLDER_TILE_CLASS_NAME2; + final ShadowPackageManager shadowPackageManager = + Shadows.shadowOf(mContext.getPackageManager()); + shadowPackageManager.setResolveInfosForIntent(tileProbe, Arrays.asList(info, info2)); + + final CharSequence tileName = mFragment.getTileName(); + assertThat(tileName.toString()).isEqualTo(PLACEHOLDER_TILE_NAME); + } + + private static class FakeServiceInfo extends ServiceInfo { + public String loadLabel(PackageManager mgr) { + return PLACEHOLDER_TILE_NAME; + } + } + + private static class FakeServiceInfo2 extends ServiceInfo { + public String loadLabel(PackageManager mgr) { + return PLACEHOLDER_TILE_NAME2; + } + } + + private static class TestToggleAccessibilityServicePreferenceFragment + extends ToggleAccessibilityServicePreferenceFragment { + + @Override + protected ComponentName getTileComponentName() { + return PLACEHOLDER_TILE_COMPONENT_NAME; + } + } +} From 61479cde86f22f399e8ca09ff1506f2e7c3ed672 Mon Sep 17 00:00:00 2001 From: menghanli Date: Thu, 20 Jan 2022 21:59:22 +0800 Subject: [PATCH 14/14] Integrate new accessibility tileService attr into settings - Accessibilty service: AccessibilityService_tileService - Accesibility shortcut: AccessibilityShortcutTarget_tileService Bug: 216614718 Test: manual test Change-Id: I24baff13300dfc9a242fcfffe0a4888575ca0c9f --- .../AccessibilityDetailsSettingsFragment.java | 7 ++++ .../accessibility/AccessibilitySettings.java | 41 ++++++++++++++++++- ...cessibilityActivityPreferenceFragment.java | 10 ++++- ...ccessibilityServicePreferenceFragment.java | 9 +++- 4 files changed, 63 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java b/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java index f9b537b16c3..5fc4cd21797 100644 --- a/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java +++ b/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java @@ -221,6 +221,13 @@ public class AccessibilityDetailsSettingsFragment extends InstrumentedFragment { extras.putString(AccessibilitySettings.EXTRA_SETTINGS_COMPONENT_NAME, new ComponentName(packageName, settingsClassName).flattenToString()); } + + final String tileServiceClassName = info.getTileServiceClassName(); + if (!TextUtils.isEmpty(tileServiceClassName)) { + extras.putString(AccessibilitySettings.EXTRA_TILE_SERVICE_COMPONENT_NAME, + new ComponentName(packageName, tileServiceClassName).flattenToString()); + } + extras.putParcelable(AccessibilitySettings.EXTRA_COMPONENT_NAME, componentName); extras.putInt(AccessibilitySettings.EXTRA_ANIMATED_IMAGE_RES, info.getAnimatedImageRes()); diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java index b712b9d37bc..e834640e678 100644 --- a/src/com/android/settings/accessibility/AccessibilitySettings.java +++ b/src/com/android/settings/accessibility/AccessibilitySettings.java @@ -97,6 +97,7 @@ public class AccessibilitySettings extends DashboardFragment { static final String EXTRA_SETTINGS_TITLE = "settings_title"; static final String EXTRA_COMPONENT_NAME = "component_name"; static final String EXTRA_SETTINGS_COMPONENT_NAME = "settings_component_name"; + static final String EXTRA_TILE_SERVICE_COMPONENT_NAME = "tile_service_component_name"; static final String EXTRA_VIDEO_RAW_RESOURCE_ID = "video_resource"; static final String EXTRA_LAUNCHED_FROM_SUW = "from_suw"; static final String EXTRA_ANIMATED_IMAGE_RES = "animated_image_res"; @@ -573,11 +574,13 @@ public class AccessibilitySettings extends DashboardFragment { serviceEnabled); final String htmlDescription = info.loadHtmlDescription(mPm); final String settingsClassName = info.getSettingsActivityName(); + final String tileServiceClassName = info.getTileServiceClassName(); putBasicExtras(preference, prefKey, title, description, imageRes, htmlDescription, componentName); putServiceExtras(preference, resolveInfo, serviceEnabled); putSettingsExtras(preference, packageName, settingsClassName); + putTileServiceExtras(preference, packageName, tileServiceClassName); preferenceList.add(preference); } @@ -631,10 +634,13 @@ public class AccessibilitySettings extends DashboardFragment { final int imageRes = info.getAnimatedImageRes(); final String htmlDescription = info.loadHtmlDescription(mPm); final String settingsClassName = info.getSettingsActivityName(); + final String tileServiceClassName = info.getTileServiceClassName(); putBasicExtras(preference, prefKey, title, description, imageRes, htmlDescription, componentName); putSettingsExtras(preference, componentName.getPackageName(), settingsClassName); + putTileServiceExtras(preference, componentName.getPackageName(), + tileServiceClassName); preferenceList.add(preference); } @@ -730,7 +736,11 @@ public class AccessibilitySettings extends DashboardFragment { /** * Puts the service extras into {@link RestrictedPreference}'s getExtras(). * - * Called by {@link AccessibilityServiceInfo} for now. + *

Note: Called by {@link AccessibilityServiceInfo}.

+ * + * @param preference The preference we are configuring. + * @param resolveInfo The service resolve info. + * @param serviceEnabled Whether the accessibility service is enabled. */ private void putServiceExtras(RestrictedPreference preference, ResolveInfo resolveInfo, Boolean serviceEnabled) { @@ -743,7 +753,12 @@ public class AccessibilitySettings extends DashboardFragment { /** * Puts the settings extras into {@link RestrictedPreference}'s getExtras(). * - * Called when settings UI is needed. + *

Note: Called when settings UI is needed.

+ * + * @param preference The preference we are configuring. + * @param packageName Package of accessibility feature. + * @param settingsClassName The component name of an activity that allows the user to modify + * the settings for this accessibility feature. */ private void putSettingsExtras(RestrictedPreference preference, String packageName, String settingsClassName) { @@ -756,5 +771,27 @@ public class AccessibilitySettings extends DashboardFragment { new ComponentName(packageName, settingsClassName).flattenToString()); } } + + /** + * Puts the information about a particular application + * {@link android.service.quicksettings.TileService} into {@link RestrictedPreference}'s + * getExtras(). + * + *

Note: Called when a tooltip of + * {@link android.service.quicksettings.TileService} is needed.

+ * + * @param preference The preference we are configuring. + * @param packageName Package of accessibility feature. + * @param tileServiceClassName The component name of tileService is associated with this + * accessibility feature. + */ + private void putTileServiceExtras(RestrictedPreference preference, String packageName, + String tileServiceClassName) { + final Bundle extras = preference.getExtras(); + if (!TextUtils.isEmpty(tileServiceClassName)) { + extras.putString(EXTRA_TILE_SERVICE_COMPONENT_NAME, + new ComponentName(packageName, tileServiceClassName).flattenToString()); + } + } } } diff --git a/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java b/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java index afd334e199e..ce8db21ecb2 100644 --- a/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java +++ b/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java @@ -53,6 +53,7 @@ public class LaunchAccessibilityActivityPreferenceFragment extends ToggleFeature private static final String TAG = "LaunchA11yActivity"; private static final String EMPTY_STRING = ""; protected static final String KEY_LAUNCH_PREFERENCE = "launch_preference"; + private ComponentName mTileComponentName; @Override public int getMetricsCategory() { @@ -108,6 +109,13 @@ public class LaunchAccessibilityActivityPreferenceFragment extends ToggleFeature AccessibilitySettings.EXTRA_SETTINGS_TITLE); mSettingsIntent = TextUtils.isEmpty(settingsTitle) ? null : getSettingsIntent(arguments); mSettingsTitle = (mSettingsIntent == null) ? null : settingsTitle; + + // Tile service. + if (arguments.containsKey(AccessibilitySettings.EXTRA_TILE_SERVICE_COMPONENT_NAME)) { + final String tileServiceComponentName = arguments.getString( + AccessibilitySettings.EXTRA_TILE_SERVICE_COMPONENT_NAME); + mTileComponentName = ComponentName.unflattenFromString(tileServiceComponentName); + } } @Override @@ -118,7 +126,7 @@ public class LaunchAccessibilityActivityPreferenceFragment extends ToggleFeature @Override ComponentName getTileComponentName() { - return null; + return mTileComponentName; } @Override diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java index d4d2f4cbce1..d7a506a21df 100644 --- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java @@ -65,6 +65,7 @@ public class ToggleAccessibilityServicePreferenceFragment extends private static final String EMPTY_STRING = ""; private Dialog mWarningDialog; + private ComponentName mTileComponentName; private BroadcastReceiver mPackageRemovedReceiver; private boolean mDisabledStateLogged = false; private long mStartTimeMillsForLogging = 0; @@ -240,7 +241,7 @@ public class ToggleAccessibilityServicePreferenceFragment extends @Override ComponentName getTileComponentName() { - return null; + return mTileComponentName; } @Override @@ -387,6 +388,12 @@ public class ToggleAccessibilityServicePreferenceFragment extends mPackageName = getAccessibilityServiceInfo().getResolveInfo().loadLabel( getPackageManager()); + if (arguments.containsKey(AccessibilitySettings.EXTRA_TILE_SERVICE_COMPONENT_NAME)) { + final String tileServiceComponentName = arguments.getString( + AccessibilitySettings.EXTRA_TILE_SERVICE_COMPONENT_NAME); + mTileComponentName = ComponentName.unflattenFromString(tileServiceComponentName); + } + mStartTimeMillsForLogging = arguments.getLong(AccessibilitySettings.EXTRA_TIME_FOR_LOGGING); }