Merge "Add error-prone check to HealthFitness service package." into udc-mainline-prod am: c56d925617

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/HealthFitness/+/25339033

Change-Id: I33ce4d8ce4f4b8edf44da3a05998ef805646f365
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/OWNERS b/OWNERS
index 5f41742..ac9ed57 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1,6 +1,5 @@
 # Bug component: 1219472
 
-anothermark@google.com
 arkivanov@google.com
 azhura@google.com
 jstembridge@google.com
diff --git a/apk/res/values-af/strings.xml b/apk/res/values-af/strings.xml
index 8bc248e..5ec8a5c 100644
--- a/apk/res/values-af/strings.xml
+++ b/apk/res/values-af/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Hoekom Health Connect apptoestemmings verwyder"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"As ’n app opgeskort of uit Google Play verwyder word, verwyder Health Connect outomaties sy toestemmings.\n\nDit beteken dat die app nie meer toegang kan kry tot data wat in Health Connect geberg is nie. As hierdie app voorheen data geskryf het, sal dit op die lys van onaktiewe apps verskyn."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Het dit"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Kom aan die gang met Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Kom aan die gang met Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect berg jou gesondheid- en fiksheiddata en bied só ’n eenvoudige manier om die verskillende apps op jou foon te sinkroniseer"</string>
     <string name="share_data" msgid="3481932156368883946">"Deel data met jou apps"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Kies die data wat elke app in Health Connect kan lees of skryf"</string>
diff --git a/apk/res/values-am/strings.xml b/apk/res/values-am/strings.xml
index 87335ba..82d1d37 100644
--- a/apk/res/values-am/strings.xml
+++ b/apk/res/values-am/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"የጤና አገናኝ ለምን የመተግበሪያ ፍቃዶችን እንደሚያስወግድ"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"አንድ መተግበሪያ ከGoogle Play ከታገደ ወይም ከተወገደ የጤና አገናኝ በራስ-ሰር የእሱን ፈቃዶች ያስወግዳል።\n\nይህ ማለት መተግበሪያው ከእንግዲህ የጤና አገናኝ ውስጥ የተከማቸ ውሂብን መድረስ አይችልም ማለት ነው። ይህ መተግበሪያ ከዚህ ቀደም የተጻፈ ውሂብ ካለው የቦዘኑ መተግበሪያዎች ዝርዝሩ ውስጥ ይታያል።"</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"ገባኝ"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"በHealth Connect ይጀምሩ"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"በጤና አገናኝ ይጀምሩ"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"የጤና አገናኝ የእርስዎን የጤና እና አካል ብቃት ውሂብ ያከማቻል፣ ይህም በስልክዎ ላይ ያሉ የተለያዩ መተግበሪያዎችን ለማስመር ቀላል መንገድ ይሰጥዎታል"</string>
     <string name="share_data" msgid="3481932156368883946">"በመተግበሪያዎችዎ ውሂብን ያጋሩ"</string>
     <string name="share_data_description" msgid="2919871301634375092">"እያንዳንዱ መተግበሪያ በጤና አገናኝ ላይ ማንበብ ወይም መጻፍ የሚችለውን ውሂብ ይምረጡ"</string>
diff --git a/apk/res/values-ar/strings.xml b/apk/res/values-ar/strings.xml
index 5b27ae5..7246a64 100644
--- a/apk/res/values-ar/strings.xml
+++ b/apk/res/values-ar/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"سبب إزالة تطبيق Health Connect لأذونات التطبيقات"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"في حال تعليق أحد التطبيقات أو إزالته من Google Play، يزيل تطبيق Health Connect تلقائيًا أذونات هذا التطبيق.\n\nويعني هذا أنه لم يُعد بإمكان هذا التطبيق الوصول إلى البيانات المخزَّنة في Health Connect. إذا كتب هذا التطبيق البيانات في وقت سابق، سيظهر في قائمة التطبيقات غير النشطة."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"حسنًا"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"بدء استخدام Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"بدء استخدام Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"يُخزِّن تطبيق Health Connect بيانات الصحة واللياقة البدنية، ما يمنحك طريقة بسيطة لمزامنة التطبيقات المختلفة على هاتفك."</string>
     <string name="share_data" msgid="3481932156368883946">"مشاركة البيانات مع تطبيقاتك"</string>
     <string name="share_data_description" msgid="2919871301634375092">"اختَر البيانات التي يمكن لكل تطبيق قراءتها من تطبيق Health Connect أو كتابتها فيه."</string>
diff --git a/apk/res/values-as/strings.xml b/apk/res/values-as/strings.xml
index 1ba2a04..0b52258 100644
--- a/apk/res/values-as/strings.xml
+++ b/apk/res/values-as/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Health Connectএ কিয় এপৰ অনুমতি আঁতৰায়"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"যদি কোনো এপ্‌ Google Playৰ পৰা নিলম্বন কৰা অথবা আঁতৰোৱা হয়, তেন্তে Health Connectএ স্বয়ংক্ৰিয়ভাৱে ইয়াৰ অনুমতিসমূহ আঁতৰাই পেলায়।\n\nইয়াৰ অৰ্থ হৈছে এপ্‌টোৱে আৰু Health Connectত ষ্ট’ৰ কৰা ডেটা এক্সেছ কৰিব নোৱাৰে। যদি এই এপ্‌টোত পূৰ্বতে ছেভ কৰা ডেটা আছে, তেন্তে সেয়া নিষ্ক্ৰিয় এপৰ সূচীত দেখুওৱা হয়।"</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"বুজি পালোঁ"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Health Connectৰ জৰিয়তে আৰম্ভ কৰক"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Health Connect ব্যৱহাৰ কৰা আৰম্ভ কৰক"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connectএ আপোনাৰ স্বাস্থ্য আৰু শৰীৰচৰ্চা সম্পৰ্কীয় ডেটা ষ্ট’ৰ কৰি আপোনাক আপোনাৰ ফ’নত থকা বিভিন্ন এপ্‌সমূহ ছিংক কৰাৰ সহজ উপায় প্ৰদান কৰে"</string>
     <string name="share_data" msgid="3481932156368883946">"আপোনাৰ এপ্‌সমূহৰ সৈতে ডেটা শ্বেয়াৰ কৰক"</string>
     <string name="share_data_description" msgid="2919871301634375092">"প্ৰতিটো এপে Health Connectত কি ডেটা পঢ়িব অথবা লিখিব পাৰিব সেয়া বাছনি কৰক"</string>
diff --git a/apk/res/values-az/strings.xml b/apk/res/values-az/strings.xml
index c486ccb..60a4d8f 100644
--- a/apk/res/values-az/strings.xml
+++ b/apk/res/values-az/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Niyə Health Connect tətbiq icazələrini silir"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Tətbiq dayandırılsa və ya Google Play\'dən silinsə, Health Connect onun icazələrini avtomatik silir.\n\nYəni ki, tətbiq daha Health Connect\'də saxlanmış datanıza giriş edə bilməz. Bu tətbiqdə əvvəllər yazılmış data varsa, o, fəaliyyətsiz tətbiqlər siyahısında görünür."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Anladım"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Health Connect ilə başlayın"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Health Connect ilə başlayın"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect sağlamlıq və fitnes datanızı saxlayaraq, telefonunuzdakı müxtəlif tətbiqləri sinxronlaşdırmaq üçün sadə yol təqdim edir"</string>
     <string name="share_data" msgid="3481932156368883946">"Tətbiqlərinizlə data paylaşın"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Hər bir tətbiqin Health Connect\'də oxuya və ya yaza biləcəyi datanı seçin"</string>
diff --git a/apk/res/values-b+sr+Latn/strings.xml b/apk/res/values-b+sr+Latn/strings.xml
index af57f2a..e67f428 100644
--- a/apk/res/values-b+sr+Latn/strings.xml
+++ b/apk/res/values-b+sr+Latn/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Zašto Povezivanje zdravlja uklanja dozvole za aplikacije"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Ako je aplikacija suspendovana ili uklonjena sa Google Play-a, Povezivanje zdravlja automatski uklanja njene dozvole.\n\nTo znači da aplikacija više ne može da pristupa podacima sačuvanim u Povezivanju zdravlja. Ako je ova aplikacija prethodno upisivala podatke, pojaviće se na listi neaktivnih aplikacija."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Važi"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Započnite sa Povezivanjem zdravlja"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Započnite sa Povezivanjem zdravlja"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Povezivanje zdravlja čuva vaše podatke o zdravlju i fitnesu i pruža vam jednostavan način da sinhronizujete različite aplikacije na telefonu"</string>
     <string name="share_data" msgid="3481932156368883946">"Delite podatke sa aplikacijama"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Odaberite podatke koje svaka aplikacije može da čita i upisuje u Povezivanje zdravlja"</string>
diff --git a/apk/res/values-be/strings.xml b/apk/res/values-be/strings.xml
index 1d29a21..d5ce608 100644
--- a/apk/res/values-be/strings.xml
+++ b/apk/res/values-be/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Чаму выдаляюцца дазволы праграм на доступ да даных праграмы \"Здароўе і спорт\""</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Калі праграма блакіруецца ці выдаляецца з Google Play, аўтаматычна выдаляюцца яе дазволы на доступ да даных у праграме \"Здароўе і спорт\".\n\nТакім чынам, заблакіраваная ці выдаленая праграма страчвае доступ да даных, захаваных у праграме \"Здароўе і спорт\". Калі такая праграма раней запісвала даныя, яна з\'явіцца ў спісе неактыўных праграм."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"OK"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Пачатак працы з праграмай \"Здароўе і спорт\""</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Пачатак працы з праграмай \"Здароўе і спорт\""</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Праграма \"Здароўе і спорт\" захоўвае даныя пра ваша здароўе і фізічную актыўнасць і забяспечвае сінхранізацыю розных праграм на тэлефоне"</string>
     <string name="share_data" msgid="3481932156368883946">"Абагульвайце даныя з праграмамі"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Выбірайце, да якіх даных у \"Здароўі і спорце\" будуць мець доступ праграмы"</string>
diff --git a/apk/res/values-bg/strings.xml b/apk/res/values-bg/strings.xml
index 37a8a9a..5e8fd2a 100644
--- a/apk/res/values-bg/strings.xml
+++ b/apk/res/values-bg/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Защо Health Connect премахва разрешенията за приложенията"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Ако дадено приложение бъде спряно или премахнато от Google Play, Health Connect автоматично премахва разрешенията му.\n\nТова означава, че приложението повече няма да има достъп до данните, съхранявани в Health Connect. Ако по-рано е записало данни, то ще се показва в списъка с неактивни приложения."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Разбрах"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Първи стъпки с Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Първи стъпки с Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect съхранява данните за здравословното ви състояние и физическата ви активност и ви предоставя лесен начин да синхронизирате различните приложения на телефона си"</string>
     <string name="share_data" msgid="3481932156368883946">"Споделяне на данни с приложенията ви"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Изберете типовете данни, които отделните приложения да четат или записват в Health Connect"</string>
diff --git a/apk/res/values-bn/strings.xml b/apk/res/values-bn/strings.xml
index fd5dd86..ce1eab6 100644
--- a/apk/res/values-bn/strings.xml
+++ b/apk/res/values-bn/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Health Connect কেন অ্যাপকে দেওয়া অনুমতি সরিয়ে দেয়"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"কোনও অ্যাপ Google Play থেকে সাসপেন্ড করা বা সরানো হলে, Health Connect অটোমেটিকভাবে এর অনুমতি সরিয়ে দেয়।\n\nএর অর্থ হল অ্যাপটি Health Connect-এ স্টোর করে রাখা ডেটা আর অ্যাক্সেস করতে পারবে না। এই অ্যাপ যদি আগে কোনও ডেটা সেভ করে থাকে, বন্ধ থাকা অ্যাপের তালিকায় এটি দেখা যাবে।"</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"বুঝেছি"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Health Connect ব্যবহার করা শুরু করুন"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Health Connect ব্যবহার শুরু করুন"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect, আপনার স্বাস্থ্য ও ফিটনেস সংক্রান্ত ডেটা সেভ করে, যার ফলে সহজেই বিভিন্ন অ্যাপ আপনার ফোনে সিঙ্ক করে নিতে পারেন"</string>
     <string name="share_data" msgid="3481932156368883946">"অ্যাপের সাথে ডেটা শেয়ার করুন"</string>
     <string name="share_data_description" msgid="2919871301634375092">"প্রতিটি অ্যাপ, Health Connect-এর যেসব ডেটা দেখতে ও এডিট করতে পারবে সেগুলি বেছে নিন"</string>
diff --git a/apk/res/values-bs/strings.xml b/apk/res/values-bs/strings.xml
index d0bffe4..3639475 100644
--- a/apk/res/values-bs/strings.xml
+++ b/apk/res/values-bs/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Zašto Health Connect uklanja odobrenja za aplikaciju"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Ako se aplikacija obustavi ili ukloni s Google Playa, Health Connect automatski uklanja njena odobrenja.\n\nTo znači da aplikacija više neće moći pristupati podacima koji su pohranjeni u Health Connectu. Ako je ova aplikacija prethodno bilježila podatke, pojavit će se na listi neaktivnih aplikacija."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Razumijem"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Počnite koristiti Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Počnite koristiti Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect pohranjuje vaše podatke o zdravlju i fitnesu i pruža vam jednostavan način da sinhronizirate različite aplikacije na telefonu"</string>
     <string name="share_data" msgid="3481932156368883946">"Dijelite podatke sa svojim aplikacijama"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Odaberite podatke koje svaka aplikacija može čitati ili zapisivati u Health Connectu"</string>
diff --git a/apk/res/values-ca/strings.xml b/apk/res/values-ca/strings.xml
index 916b6cf..824395e 100644
--- a/apk/res/values-ca/strings.xml
+++ b/apk/res/values-ca/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Per què Salut connectada suprimeix els permisos d\'aplicacions"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Si una aplicació se suspèn o suprimeix de Google Play, Salut connectada en suprimeix els permisos automàticament.\n\nAixò significa que l\'aplicació ja no podrà accedir a les dades emmagatzemades a Salut Connectada. Si aquesta aplicació ha escrit dades anteriorment, apareixerà a la llista d\'aplicacions inactives."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Entesos"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Comença amb Salut connectada"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Comença amb Salut connectada"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Salut connectada emmagatzema les teves dades de salut i fitnes, i t\'ofereix una manera senzilla de sincronitzar les diverses aplicacions del telèfon"</string>
     <string name="share_data" msgid="3481932156368883946">"Comparteix dades amb les aplicacions"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Tria les dades que cada aplicació pot llegir o escriure a Salut connectada"</string>
diff --git a/apk/res/values-cs/strings.xml b/apk/res/values-cs/strings.xml
index 670001a..e00b2f6 100644
--- a/apk/res/values-cs/strings.xml
+++ b/apk/res/values-cs/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Proč aplikace Health Connect aplikacím odebírá oprávnění"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Pokud je aplikace pozastavena nebo odstraněna z Google Play, Health Connect jí automaticky odebere oprávnění.\n\nTo znamená, že aplikace již nebude mít přístup k datům uloženým ve službě Health Connect. Pokud tato aplikace dříve zapsala nějaká data, zobrazí se v seznamu neaktivních aplikací."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Rozumím"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Začínáme s aplikací Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Začínáme se službou Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Služba Health Connect slouží k bezpečnému ukládání údajů o zdraví a kondici, což umožňuje jednoduše synchronizovat různé aplikace v telefonu"</string>
     <string name="share_data" msgid="3481932156368883946">"Sdílení dat s aplikacemi"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Můžete si zvolit, které údaje mohou jednotlivé aplikace číst nebo zapisovat ve službě Health Connect"</string>
diff --git a/apk/res/values-da/strings.xml b/apk/res/values-da/strings.xml
index 8536a6b..394432e 100644
--- a/apk/res/values-da/strings.xml
+++ b/apk/res/values-da/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Derfor fjerner Health Connect apptilladelser"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Hvis en app suspenderes eller fjernes fra Google Play, fjerner Health Connect automatisk dens tilladelser.\n\nDet betyder, at appen ikke længere vil have adgang til data, der er gemt i Health Connect. Hvis appen tidligere har skrevet data, vises den på listen over inaktive apps."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"OK"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Kom godt i gang med Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Kom godt i gang med Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect opbevarer dine sundheds- og motionsdata, så du nemt kan synkronisere de forskellige apps på din telefon"</string>
     <string name="share_data" msgid="3481932156368883946">"Del data med dine apps"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Vælg, hvilke data appen skal kunne læse eller skrive til Health Connect"</string>
diff --git a/apk/res/values-de/strings.xml b/apk/res/values-de/strings.xml
index 5a89f78..3fcedee 100644
--- a/apk/res/values-de/strings.xml
+++ b/apk/res/values-de/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Gründe, warum Health Connect App-Berechtigungen entfernt"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Wenn eine App bei Google Play gesperrt oder entfernt wird, entfernt Health Connect automatisch ihre Berechtigungen.\n\nDie App kann dann nicht mehr auf deine in Health Connect gespeicherten Daten zugreifen. Falls sie schon einmal Daten geschrieben hat, wird sie in der Liste inaktiver Apps angezeigt."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Ok"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Erste Schritte mit Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Erste Schritte mit Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Dank Health Connect werden deine Gesundheits- und Fitnessdaten gespeichert und lassen sich einfach mit verschiedenen Apps auf deinem Smartphone synchronisieren"</string>
     <string name="share_data" msgid="3481932156368883946">"Daten für deine Apps freigeben"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Du legst fest, welche Daten Apps bei Health Connect lesen oder schreiben können"</string>
diff --git a/apk/res/values-el/strings.xml b/apk/res/values-el/strings.xml
index 805697b..ea97171 100644
--- a/apk/res/values-el/strings.xml
+++ b/apk/res/values-el/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Γιατί το Health Connect καταργεί άδειες εφαρμογών"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Αν μια εφαρμογή τεθεί σε αναστολή ή καταργηθεί από το Google Play, το Health Connect καταργεί αυτόματα τις άδειές της.\n\nΑυτό σημαίνει ότι η εφαρμογή δεν μπορεί πλέον να αποκτήσει πρόσβαση σε δεδομένα που έχουν αποθηκευτεί στο Health Connect. Εάν αυτή η εφαρμογή έχει εγγράψει στο παρελθόν δεδομένα, θα εμφανίζεται στη λίστα ανενεργών εφαρμογών."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Το κατάλαβα"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Ξεκινήστε με το Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Ξεκινήστε με το Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Το Health Connect αποθηκεύει τα δεδομένα υγείας και φυσικής κατάστασής σας, προσφέροντας έναν απλό τρόπο συγχρονισμού των διαφορετικών εφαρμογών στο τηλέφωνό σας"</string>
     <string name="share_data" msgid="3481932156368883946">"Μοιραστείτε δεδομένα με τις εφαρμογές σας"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Επιλέξτε τα δεδομένα που μπορεί να διαβάσει ή να εγγράψει κάθε εφαρμογή στο Health Connect."</string>
diff --git a/apk/res/values-en-rAU/strings.xml b/apk/res/values-en-rAU/strings.xml
index 326bd15..6a9c945 100644
--- a/apk/res/values-en-rAU/strings.xml
+++ b/apk/res/values-en-rAU/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Why Health Connect removes app permissions"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"If an app is suspended or removed from Google Play, Health Connect automatically removes its permissions.\n\nThis means the app can no longer access data stored in Health Connect. If this app has previously written data, it appears in the inactive apps list."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Got it"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Get started with Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Get started with Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect stores your health and fitness data, giving you a simple way to sync the different apps on your phone"</string>
     <string name="share_data" msgid="3481932156368883946">"Share data with your apps"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Choose the data that each app can read or write to Health Connect"</string>
diff --git a/apk/res/values-en-rCA/strings.xml b/apk/res/values-en-rCA/strings.xml
index 7b20f19..3531713 100644
--- a/apk/res/values-en-rCA/strings.xml
+++ b/apk/res/values-en-rCA/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Why Health Connect removes app permissions"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"If an app is suspended or removed from Google Play, Health Connect automatically removes its permissions.\n\nThis means the app can no longer access data stored in Health Connect. If this app has previously written data, it appears in the inactive apps list."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Got it"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Get Started with Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Get started with Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect stores your health and fitness data, giving you a simple way to sync the different apps on your phone"</string>
     <string name="share_data" msgid="3481932156368883946">"Share data with your apps"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Choose the data each app can read or write to Health Connect"</string>
diff --git a/apk/res/values-en-rGB/strings.xml b/apk/res/values-en-rGB/strings.xml
index 326bd15..6a9c945 100644
--- a/apk/res/values-en-rGB/strings.xml
+++ b/apk/res/values-en-rGB/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Why Health Connect removes app permissions"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"If an app is suspended or removed from Google Play, Health Connect automatically removes its permissions.\n\nThis means the app can no longer access data stored in Health Connect. If this app has previously written data, it appears in the inactive apps list."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Got it"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Get started with Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Get started with Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect stores your health and fitness data, giving you a simple way to sync the different apps on your phone"</string>
     <string name="share_data" msgid="3481932156368883946">"Share data with your apps"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Choose the data that each app can read or write to Health Connect"</string>
diff --git a/apk/res/values-en-rIN/strings.xml b/apk/res/values-en-rIN/strings.xml
index 326bd15..6a9c945 100644
--- a/apk/res/values-en-rIN/strings.xml
+++ b/apk/res/values-en-rIN/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Why Health Connect removes app permissions"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"If an app is suspended or removed from Google Play, Health Connect automatically removes its permissions.\n\nThis means the app can no longer access data stored in Health Connect. If this app has previously written data, it appears in the inactive apps list."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Got it"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Get started with Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Get started with Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect stores your health and fitness data, giving you a simple way to sync the different apps on your phone"</string>
     <string name="share_data" msgid="3481932156368883946">"Share data with your apps"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Choose the data that each app can read or write to Health Connect"</string>
diff --git a/apk/res/values-en-rXC/strings.xml b/apk/res/values-en-rXC/strings.xml
index 8dedced..486bde8 100644
--- a/apk/res/values-en-rXC/strings.xml
+++ b/apk/res/values-en-rXC/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‏‏‎‎‎‏‏‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‎‏‎‏‏‏‎‎‏‎‏‎‎‏‎‏‎‎‎‎‏‎‏‎‎‎‏‏‎‎‏‏‎‎‎‏‎‏‏‏‏‎‎‏‏‏‎‎‏‏‎‏‏‎Why Health Connect removes app permissions‎‏‎‎‏‎"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‏‏‎‎‎‏‏‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‎‎‏‏‏‏‏‎‎‎‏‎‎‏‎‎‎‎‏‏‎‏‏‏‎‎‎‎‏‏‏‎‏‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‎‎‏‏‎If an app is suspended or removed from Google Play, Health Connect automatically removes its permissions.‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎This means the app can no longer access data stored in Health Connect. If this app has previously written data, it appears in the inactive apps list.‎‏‎‎‏‎"</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‏‏‎‎‎‏‏‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‎‏‏‎‎‏‎‏‎‏‎‏‎‎‏‎‏‎‎‏‏‏‎‏‎‏‏‏‎‏‏‏‏‎‎‎‏‎‏‏‎‏‎‎‏‎‎‎‏‏‏‎‏‏‏‎Got it‎‏‎‎‏‎"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‏‏‎‎‎‏‏‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‎‎‎‎‏‎‏‏‏‎‎‏‏‎‏‎‏‏‎‎‎‎‏‏‎‏‎‎‎‏‎‎‎‎‏‏‎‎‏‎‎‏‎‏‏‎‎‏‏‎‎‎Get Started with Health Connect‎‏‎‎‏‎"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‏‏‎‎‎‏‏‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‎‏‎‏‎‎‎‎‎‏‎‎‎‏‎‎‎‎‏‎‏‎‏‎‏‎‏‏‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‎‎‏‏‏‎‎‎Get started with Health Connect‎‏‎‎‏‎"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‏‏‎‎‎‏‏‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‏‏‎‏‎‎‎‎‎‏‏‎‏‎‏‎‏‎‎‎‏‏‏‏‎‎‎‎‏‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‎‏‎‎‏‏‎‎‏‏‎‎‏‎Health Connect stores your health and fitness data, giving you a simple way to sync the different apps on your phone‎‏‎‎‏‎"</string>
     <string name="share_data" msgid="3481932156368883946">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‏‏‎‎‎‏‏‎‎‏‏‏‏‏‏‎‏‏‎‎‎‎‎‏‎‏‎‎‏‎‎‏‎‎‏‏‏‎‏‏‎‏‏‎‎‏‎‎‏‎‎‎‎‎‎‏‏‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‎‏‎‏‎‎Share data with your apps‎‏‎‎‏‎"</string>
     <string name="share_data_description" msgid="2919871301634375092">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‏‏‎‎‎‏‏‎‎‏‏‏‏‏‏‎‏‎‏‎‎‎‏‎‎‎‎‏‎‏‎‏‏‏‎‏‏‏‎‏‏‏‏‎‏‎‏‎‎‎‏‎‏‏‏‏‎‎‎‏‏‎‎‎‏‏‏‏‎‏‏‎‏‏‎‏‎‎‎Choose the data each app can read or write to Health Connect‎‏‎‎‏‎"</string>
diff --git a/apk/res/values-es-rUS/strings.xml b/apk/res/values-es-rUS/strings.xml
index 041c8f8..5a25b50 100644
--- a/apk/res/values-es-rUS/strings.xml
+++ b/apk/res/values-es-rUS/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"¿Por qué Health Connect les quita permisos a las apps?"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Si una app está suspendida o ya no está disponible en Google Play, Health Connect le quita automáticamente los permisos.\n\nEsto significa que la app ya no podrá acceder a los datos almacenados en Health Connect. Si la app escribió datos, aparecerá en la lista de apps inactivas."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Entendido"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Comenzar a usar Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Empieza a usar Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect almacena tus datos de salud y actividad física, lo que te brinda una manera simple de sincronizar las diferentes apps en tu teléfono."</string>
     <string name="share_data" msgid="3481932156368883946">"Compartir datos con tus apps"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Elige los datos que cada app puede leer o escribir con Health Connect."</string>
diff --git a/apk/res/values-es/strings.xml b/apk/res/values-es/strings.xml
index 48fdd56..0ad81be 100644
--- a/apk/res/values-es/strings.xml
+++ b/apk/res/values-es/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Por qué Salud conectada quita los permisos de las aplicaciones"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Si una aplicación se suspende o se elimina de Google Play, Salud conectada quita automáticamente sus permisos.\n\nPor lo tanto, la aplicación ya no podrá acceder a tus datos almacenados en Salud conectada. Si la aplicación ya había escrito datos, aparecerá en la lista de aplicaciones inactivas."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Entendido"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Empieza a usar Salud conectada"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Empezar a usar Salud conectada"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Salud conectada almacena tus datos de salud y actividad física, y te ofrece una forma sencilla de sincronizar las diferentes aplicaciones de tu teléfono"</string>
     <string name="share_data" msgid="3481932156368883946">"Comparte datos con tus aplicaciones"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Elige los datos que cada aplicación puede leer o escribir en Salud conectada"</string>
diff --git a/apk/res/values-et/strings.xml b/apk/res/values-et/strings.xml
index 5f31814..f9a1218 100644
--- a/apk/res/values-et/strings.xml
+++ b/apk/res/values-et/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Miks eemaldab Health Connect rakenduste load?"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Kui rakendus on Google Plays peatatud või sealt eemaldatud, eemaldab Health Connect automaatselt selle load.\n\nSee tähendab, et rakendus ei pääse enam Health Connecti salvestatud andmetele juurde. Kui rakendusel on varem kirjutatud andmeid, kuvatakse rakendus mitteaktiivsete rakenduste loendis."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Selge"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Alustage Health Connecti kasutamist"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Alustage Health Connecti kasutamist"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect talletab teie tervise- ja treeninguandmeid, pakkudes teile lihtsat viisi telefonis eri rakenduste sünkroonimiseks."</string>
     <string name="share_data" msgid="3481932156368883946">"Jagage oma rakendustega andmeid"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Valige, milliseid andmeid iga rakendus lugeda või Health Connecti kirjutada saab."</string>
diff --git a/apk/res/values-eu/strings.xml b/apk/res/values-eu/strings.xml
index dc793ee..0b95d10 100644
--- a/apk/res/values-eu/strings.xml
+++ b/apk/res/values-eu/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Zergatik kentzen ditu aplikazio-baimenak Health Connect-ek?"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Aplikazio bat Google Play-n behin-behinean eteten bada edo bertatik kentzen bada, Health Connect-ek automatikoki kentzen ditu dauzkan baimenak.\n\nAplikazioak une horretatik aurrera Health Connect-en gordetako datuak atzitu ezin dituela esan nahi du horrek. Aplikazio horrek aldez aurretik erregistratutako datuak badauzka, aplikazio inaktiboen zerrendan agertuko da."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Ados"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Hasi Health Connect erabiltzen"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Hasi Health Connect erabiltzen"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect-ek osasunari eta fitnessari buruzko datuak gordetzen ditu, eta telefonoko aplikazioak erraz sinkronizatzeko aukera eskaintzen du"</string>
     <string name="share_data" msgid="3481932156368883946">"Partekatu datuak zure aplikazioekin"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Aukeratu aplikazio bakoitzak Health Connect-en irakurri edo idatz ditzakeen datuak"</string>
diff --git a/apk/res/values-fa/strings.xml b/apk/res/values-fa/strings.xml
index df57cad..1971103 100644
--- a/apk/res/values-fa/strings.xml
+++ b/apk/res/values-fa/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"چرا Health Connect اجازه‌های برنامه را برمی‌دارد"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"اگر برنامه‌ای به حالت تعلیق درآید یا از Google Play برداشته شود، Health Connect به‌طور خودکار اجازه‌های آن را برمی‌دارد.\n\nاین بدان معنی است که آن برنامه دیگر نمی‌تواند به داده‌های ذخیره‌شده در Health Connect دسترسی داشته باشد. اگر این برنامه ازقبل داده‌های نوشته‌شده داشته باشد، در فهرست برنامه‌های غیرفعال نشان داده می‌شود."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"متوجه‌ام"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"شروع کار با Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"شروع کار با Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"‫Health Connect داده‌های سلامتی و تناسب اندام شما را ذخیره می‌کند و روشی ساده برای همگام‌سازی برنامه‌های مختلف تلفن دراختیارتان می‌گذارد"</string>
     <string name="share_data" msgid="3481932156368883946">"هم‌رسانی داده‌ها با برنامه‌ها"</string>
     <string name="share_data_description" msgid="2919871301634375092">"می‌توانید داده‌هایی را که هر برنامه اجازه دارد در Health Connect بخواند یا بنویسد انتخاب کنید"</string>
diff --git a/apk/res/values-fi/strings.xml b/apk/res/values-fi/strings.xml
index db4d336..3c27999 100644
--- a/apk/res/values-fi/strings.xml
+++ b/apk/res/values-fi/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Miksi Health Connect poistaa sovelluslupia"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Jos sovellus on jäädytetty tai poistettu Google Playsta, Health Connect poistaa sovelluksen luvat automaattisesti.\n\nTämä tarkoittaa, että sovelluksella ei ole enää pääsyä Health Connectiin tallennettuun dataasi. Jos sovelluksessa on aiemmin kirjoitettua dataa, se näkyy epäaktiivisten sovellusten luettelossa."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"OK"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Aloita Health Connectin käyttö"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Aloita Health Connectin käyttö"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect tallentaa terveys‑ ja kuntoiludatasi ja tarjoaa helpon tavan synkronoida eri sovelluksia puhelimellasi"</string>
     <string name="share_data" msgid="3481932156368883946">"Jaa dataa sovelluksille"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Valitse, mitä dataa kukin sovellus voi lukea tai kirjoittaa Health Connectiin"</string>
diff --git a/apk/res/values-fr-rCA/strings.xml b/apk/res/values-fr-rCA/strings.xml
index 3b694e0..23847bf 100644
--- a/apk/res/values-fr-rCA/strings.xml
+++ b/apk/res/values-fr-rCA/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Pourquoi Connexion santé retire les autorisations des applications"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Lorsqu\'une application est suspendue ou retirée de Google Play, Connexion santé retire automatiquement ses autorisations.\n\nCela signifie que l\'application ne peut plus accéder aux données stockées dans Connexion santé. Si cette application a déjà écrit des données, elle apparaît dans la liste des applications inactives."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"OK"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Premiers pas avec Connexion santé"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Premiers pas avec Connexion santé"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Connexion santé stocke vos données de santé et d\'activité physique, et vous offre un moyen simple de synchroniser les différentes applications de votre téléphone"</string>
     <string name="share_data" msgid="3481932156368883946">"Partager des données avec vos applications"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Choisissez les données que chaque application peut lire ou écrire dans Connexion santé"</string>
diff --git a/apk/res/values-fr/strings.xml b/apk/res/values-fr/strings.xml
index 992ce9e..d2706a7 100644
--- a/apk/res/values-fr/strings.xml
+++ b/apk/res/values-fr/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Pourquoi Santé Connect retire des autorisations d\'applis"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Si une appli est suspendue ou retirée de Google Play, Santé Connect retire automatiquement les autorisations associées.\n\nL\'appli n\'a alors plus accès aux données stockées dans Santé Connect. Si cette appli a déjà écrit des données, elle figure dans la liste des applis inactives."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"OK"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Premiers pas avec Santé Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Premiers pas avec Santé Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Santé Connect stocke vos données de santé et de remise en forme, et vous permet de synchroniser facilement les différentes applis de votre téléphone"</string>
     <string name="share_data" msgid="3481932156368883946">"Partager des données avec vos applis"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Sélectionnez les données que chaque appli peut lire ou modifier dans Santé Connect"</string>
diff --git a/apk/res/values-gl/strings.xml b/apk/res/values-gl/strings.xml
index 6f59eae..83fd84c 100644
--- a/apk/res/values-gl/strings.xml
+++ b/apk/res/values-gl/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Por que Saúde conectada quita permisos de aplicacións?"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Se se suspende unha aplicación ou desaparece de Google Play, Saúde conectada quítalle os permisos de xeito automático.\n\nAo facelo, a aplicación xa non poderá acceder aos datos almacenados en Saúde conectada. Se esta aplicación escribiu datos anteriormente, aparecerá na lista de aplicacións inactivas."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Entendido"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Comeza a usar Saúde conectada"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Comeza a usar Saúde conectada"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Saúde conectada almacena os teus datos de saúde e actividade física, e permíteche sincronizar facilmente as distintas aplicacións do teléfono"</string>
     <string name="share_data" msgid="3481932156368883946">"Comparte datos coas túas aplicacións"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Decide que datos pode ler ou escribir cada aplicación en Saúde conectada"</string>
diff --git a/apk/res/values-gu/strings.xml b/apk/res/values-gu/strings.xml
index 6250175..8e3c99f 100644
--- a/apk/res/values-gu/strings.xml
+++ b/apk/res/values-gu/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Health Connect દ્વારા ઍપ પરવાનગીઓ કાઢી નાખવાનું કારણ"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"જો કોઈ ઍપને Google Playમાંથી સસ્પેન્ડ કરવામાં કે કાઢી નાખવામાં આવે, તો Health Connect ઑટોમૅટિક રીતે તેની પરવાનગીઓ કાઢી નાખે છે.\n\nતેનો અર્થ એ થાય છે કે ઍપ હવેથી Health Connectમાં સ્ટોર કરેલો ડેટા ઍક્સેસ કરી શકશે નહીં. જો આ ઍપમાં અગાઉ લખવામાં આવેલો કોઈ ડેટા હોય, તો તે નિષ્ક્રિય ઍપની સૂચિમાં દેખાય છે."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"સમજાઈ ગયું"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Health Connect સાથે શરુ કરો"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Health Connect સાથે શરુ કરો"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect તમારો આરોગ્ય અને ફિટનેસ સંબંધિત ડેટા સ્ટોર કરે છે, જેનાથી તમે તમારા ફોન પર વિવિધ ઍપ સરળ રીતે સિંક કરી શકો છો"</string>
     <string name="share_data" msgid="3481932156368883946">"તમારી ઍપ સાથે ડેટા શેર કરો"</string>
     <string name="share_data_description" msgid="2919871301634375092">"દરેક ઍપ Health Connect પર વાંચી કે લખી શકે તે ડેટા પસંદ કરો"</string>
diff --git a/apk/res/values-hi/strings.xml b/apk/res/values-hi/strings.xml
index 4bbbf13..1e0cc35 100644
--- a/apk/res/values-hi/strings.xml
+++ b/apk/res/values-hi/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Health Connect, ऐप्लिकेशन को मिली अनुमतियां क्यों हटाता है"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"अगर Google Play में किसी ऐप्लिकेशन पर रोक लगा दी गई है या उसे हटा दिया गया है, तो Health Connect उस ऐप्लिकेशन को मिली अनुमतियों को अपने-आप हटा देता है.\n\nइसका यह मतलब है कि अब वह ऐप्लिकेशन, Health Connect में सेव किए गए आपके डेटा को ऐक्सेस नहीं कर पाएगा. अगर इस ऐप्लिकेशन में पहले से डेटा सेव है, तो यह बंद किए गए ऐप्लिकेशन की सूची में दिखेगा."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"ठीक है"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Health Connect का इस्तेमाल शुरू करें"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Health Connect का इस्तेमाल शुरू करें"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect में, सेहत और फ़िटनेस से जुड़ा आपका डेटा सेव किया जाता है. इससे, अपने फ़ोन में अलग-अलग ऐप्लिकेशन को आसानी से सिंक करने में मदद मिलती है"</string>
     <string name="share_data" msgid="3481932156368883946">"ऐप्लिकेशन के साथ डेटा शेयर करें"</string>
     <string name="share_data_description" msgid="2919871301634375092">"यह चुनें कि हर ऐप्लिकेशन, Health Connect में कौनसा डेटा देख सकता है और उसमें बदलाव कर सकता है"</string>
diff --git a/apk/res/values-hr/strings.xml b/apk/res/values-hr/strings.xml
index 06263bb..aae35bd 100644
--- a/apk/res/values-hr/strings.xml
+++ b/apk/res/values-hr/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Zašto Health Connect uklanja dopuštenja aplikacije"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Ako se aplikacija obustavi ili ukloni s Google Playa, Health Connect automatski uklanja njezina dopuštenja.\n\nTo znači da ta aplikacija više ne može pristupati podacima pohranjenim u Health Connectu. Ako je ta aplikacija prethodno bilježila podatke, prikazuje se na popisu neaktivnih aplikacija."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Shvaćam"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Počnite upotrebljavati Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Početak upotrebe Health Connecta"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect sprema podatke o vašem zdravlju i fitnessu te vam pruža jednostavan način za sinkronizaciju različitih aplikacija na telefonu"</string>
     <string name="share_data" msgid="3481932156368883946">"Dijelite podatke s aplikacijama"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Odaberite podatke koje svaka aplikacija može čitati ili bilježiti u Health Connectu"</string>
diff --git a/apk/res/values-hu/strings.xml b/apk/res/values-hu/strings.xml
index 779b4bf..e33eae7 100644
--- a/apk/res/values-hu/strings.xml
+++ b/apk/res/values-hu/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Miért távolít el a Health Connect alkalmazásengedélyeket?"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Ha valamelyik alkalmazás felfüggesztésre vagy eltávolításra kerül a Google Playen, a Health Connect automatikusan eltávolítja az engedélyeit.\n\nEz azt jelenti, hogy az adott alkalmazás a továbbiakban már nem férhet hozzá a Health Connect szolgáltatásban tárolt adatokhoz. Ha az alkalmazás korábban rögzített adatokat, akkor az inaktív alkalmazások listájában lesz látható."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Értem"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Kezdő lépések a Health Connect szolgáltatással"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Kezdő lépések a Health Connect szolgáltatással"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"A Health Connect tárolja az egészségével és a fitnesztevékenységeivel kapcsolatos adatokat, így könnyedén szinkronizálhatja a telefonján lévő különböző alkalmazásokat"</string>
     <string name="share_data" msgid="3481932156368883946">"Megoszthat adatokat az alkalmazásaival"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Beállíthatja, hogy az egyes alkalmazások milyen adatokat olvashatnak/írhatnak a Health Connectben"</string>
diff --git a/apk/res/values-hy/strings.xml b/apk/res/values-hy/strings.xml
index 430268f..fb466aa 100644
--- a/apk/res/values-hy/strings.xml
+++ b/apk/res/values-hy/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Ինչու է Health Connect-ը հեռացնում հավելվածների թույլտվությունները"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Health Connect ծառայությունն ավտոմատ հեռացնում է այն հավելվածների թույլտվությունները, որոնք կասեցված են կամ հեռացված Google Play-ից։\n\nՍա նշանակում է, որ Health Connect-ում պահված տվյալներն այլևս հասանելի չեն այդ հավելվածներին։ Եթե հավելվածը նախկինում տվյալներ է գրանցել, այն հայտնվում է անգործուն հավելվածների ցանկում։"</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Եղավ"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Ներկայացնում ենք Health Connect-ը"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Ներկայացնում ենք Health Connect-ը"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect-ը պահում է ձեր առողջության և ֆիզիկական ակտիվության տվյալները և համաժամացնում տարբեր հավելվածների աշխատանքը ձեր հեռախոսում"</string>
     <string name="share_data" msgid="3481932156368883946">"Կիսվեք տվյալներով հավելվածների հետ"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Ընտրեք տվյալները, որոնք յուրաքանչյուր հավելված կարող է կարդալ և գրանցել Health Connect-ում"</string>
diff --git a/apk/res/values-in/strings.xml b/apk/res/values-in/strings.xml
index 62faa90..6a79d47 100644
--- a/apk/res/values-in/strings.xml
+++ b/apk/res/values-in/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Alasan Health Connect menghapus izin aplikasi"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Jika aplikasi ditangguhkan atau dihapus dari Google Play, Health Connect akan otomatis menghapus izinnya.\n\nArtinya, aplikasi tidak dapat lagi mengakses data yang disimpan di Health Connect. Jika sebelumnya aplikasi telah menulis data, aplikasi akan ditampilkan di daftar aplikasi tidak aktif."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Oke"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Mulai Menggunakan Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Mulai menggunakan Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect menyimpan data kesehatan dan kebugaran Anda supaya Anda dapat menyinkronkan berbagai aplikasi di ponsel dengan mudah"</string>
     <string name="share_data" msgid="3481932156368883946">"Berbagi data dengan aplikasi lainnya"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Pilih data yang dapat dibaca atau ditulis ke Health Connect oleh setiap aplikasi"</string>
diff --git a/apk/res/values-is/strings.xml b/apk/res/values-is/strings.xml
index 5b9bc2e..4bd03db 100644
--- a/apk/res/values-is/strings.xml
+++ b/apk/res/values-is/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Ástæða þess að Heilsutenging fjarlægir heimildir forrita"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Ef Google Play fjarlægir eða lokar tímabundið á forrit fjarlægir Heilsutenging sjálfkrafa heimildir þess.\n\nÞað þýðir að forritið getur ekki nálgast gögn sem eru vistuð í Heilsutengingu. Ef viðkomandi forrit hefur skrifað gögn áður birtist það á listanum yfir óvirk forrit."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Ég skil"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Byrjaðu að nota Heilsutengingu"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Byrjaðu að nota Heilsutengingu"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Heilsutenging varðveitir heilsu- og hreystigögnin þín og gefur þér kost á að samstilla ýmis forrit í símanum á einfaldan hátt"</string>
     <string name="share_data" msgid="3481932156368883946">"Deildu gögnum með forritum"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Veldu hvaða gögn hvert forrit getur lesið eða skrifað yfir í Heilsutengingu"</string>
diff --git a/apk/res/values-it/strings.xml b/apk/res/values-it/strings.xml
index f3037bb..6f54ffa 100644
--- a/apk/res/values-it/strings.xml
+++ b/apk/res/values-it/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Perché Connessione Salute rimuove le autorizzazioni app"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Se un\'app viene sospesa o rimossa da Google Play, Connessione Salute rimuove automaticamente le relative autorizzazioni.\n\nCiò significa che l\'app non può più accedere ai dati archiviati in Connessione Salute. Se in precedenza aveva scritto dati, l\'app apparirà nell\'elenco di app non attive."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"OK"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Inizia a usare Connessione Salute"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Inizia a usare Connessione Salute"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Connessione Salute archivia i dati relativi alla salute e all\'attività fisica e ti consente di sincronizzare facilmente le varie app installate sul telefono"</string>
     <string name="share_data" msgid="3481932156368883946">"Condividi i dati con le tue app"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Scegli i dati che ciascuna app può leggere o scrivere su Connessione Salute"</string>
diff --git a/apk/res/values-iw/strings.xml b/apk/res/values-iw/strings.xml
index 98ba16d..1ef5ed7 100644
--- a/apk/res/values-iw/strings.xml
+++ b/apk/res/values-iw/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"למה אפליקציית Health Connect מסירה הרשאות הניתנות לאפליקציות"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"אם אפליקציה הושעתה מ-Google Play או הוסרה משם, Health Connect מסירה אוטומטית את ההרשאות שניתנו לאפליקציה.\n\nכלומר, האפליקציה הזו כבר לא יכולה לגשת לנתונים שאוחסנו ב-Health Connect. אם לאפליקציה הזו יש נתונים שנכתבו לפני כן, היא תופיע ברשימת האפליקציות הלא פעילות."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"הבנתי"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"איך מתחילים להשתמש ב-Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"איך מתחילים להשתמש ב-Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"אפליקציית Health Connect מאחסנת את נתוני הבריאות והכושר שלך, ומאפשרת לך לסנכרן בקלות את האפליקציות השונות בטלפון"</string>
     <string name="share_data" msgid="3481932156368883946">"שיתוף נתונים עם האפליקציות שלך"</string>
     <string name="share_data_description" msgid="2919871301634375092">"בחירה בסוגי הנתונים שכל אפליקציה יכולה לקרוא או לכתוב ב-Health Connect"</string>
diff --git a/apk/res/values-ja/strings.xml b/apk/res/values-ja/strings.xml
index 632d21c..36781e0 100644
--- a/apk/res/values-ja/strings.xml
+++ b/apk/res/values-ja/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"ヘルスコネクトによりアプリの権限が削除される理由"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"アプリが Google Play での公開が停止された場合や Google Play から削除された場合、ヘルスコネクトにより、そのアプリの権限が自動的に削除されます。\n\nそのため、そのアプリはヘルスコネクトに保存されたデータにアクセスできなくなります。そのアプリで以前に書き込まれたデータがある場合は、無効なアプリのリストに表示されます。"</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"OK"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"ヘルスコネクトを使ってみる"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"ヘルスコネクトを使ってみる"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"ヘルスコネクトを利用すると、健康状態やフィットネスのデータを保存し、スマートフォン上のさまざまなアプリを簡単に同期することができます"</string>
     <string name="share_data" msgid="3481932156368883946">"アプリとデータを共有する"</string>
     <string name="share_data_description" msgid="2919871301634375092">"ヘルスコネクトに対して、各アプリが読み取りや書き込みを行えるデータを選択できます"</string>
diff --git a/apk/res/values-ka/strings.xml b/apk/res/values-ka/strings.xml
index a0f6aa8..e6b604a 100644
--- a/apk/res/values-ka/strings.xml
+++ b/apk/res/values-ka/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"რატომ შლის Health Connect აპის ნებართვებს"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"თუ აპის მოქმედება შეჩერებულია ან ის ამოშლილია Google Play-დან, Health Connect ავტომატურად ამოშლის მის ნებართვებსაც.\n\nამის შედეგად, აპს წვდომა აღარ ექნება Health Connect-ში შენახულ მონაცემებზე. თუ ამ აპს წინასწარ ჩაწერილი მონაცემები აქვს, ის არააქტიური აპების სიაში გამოჩნდება."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"გასაგებია"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"დაიწყეთ Health Connect-ით"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"დაიწყეთ Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect ინახავს თქვენს ჯანმრთელობასა და ფიტნესთან დაკავშირებულ მონაცემებს და გაძლევთ საშუალებას, მარტივად დაასინქრონოთ სხვადასხვა აპი თქვენს ტელფონში"</string>
     <string name="share_data" msgid="3481932156368883946">"გააზიარეთ ინფორმაცია თქვენს აპებთან"</string>
     <string name="share_data_description" msgid="2919871301634375092">"აირჩიეთ მონაცემები, რომლებიც თითოეულ აპს შეუძლია წაიკითხოს ან ჩაწეროს Health Connect-Ში"</string>
diff --git a/apk/res/values-kk/strings.xml b/apk/res/values-kk/strings.xml
index e23ad05..23a8aea 100644
--- a/apk/res/values-kk/strings.xml
+++ b/apk/res/values-kk/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Health Connect неліктен қолданба рұқсаттарын өшіреді?"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Қолданба уақытша тоқтатылса немесе Google Play-ден өшірілсе, Health Connect оның рұқсаттарын автоматты түрде өшіреді.\n\nЯғни қолданба бұдан кейін Health Connect-те сақталған деректерді пайдалана алмайды. Егер бұл қолданбада бұрын жазылған дерек болса, ол белсенді емес қолданбалар тізімінде көрсетіледі."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Түсінікті"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Health Connect қолданбасымен танысу"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Health Connect қолданбасымен жұмысты бастау"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect денсаулық және фитнес деректерін сақтап, телефонда әртүрлі қолданбаны синхрондаудың қарапайым жолын ұсынады."</string>
     <string name="share_data" msgid="3481932156368883946">"Деректерді қолданбалармен бөлісу"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Әр қолданба оқи алатын немесе Health Connect қолданбасына жаза алатын деректерді таңдауға болады."</string>
diff --git a/apk/res/values-km/strings.xml b/apk/res/values-km/strings.xml
index d1663f4..e6458c9 100644
--- a/apk/res/values-km/strings.xml
+++ b/apk/res/values-km/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"ហេតុអ្វីបានជា Health Connect ដកការអនុញ្ញាតកម្មវិធី"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"ប្រសិនបើ​កម្មវិធីមួយ​ត្រូវបានផ្អាក ឬដកចេញពី Google Play នោះ Health Connect នឹងដកការអនុញ្ញាតរបស់ខ្លួនចេញ​ដោយស្វ័យប្រវត្តិ។\n\nនេះមានន័យថា កម្មវិធីមិនអាចចូលប្រើប្រាស់​ទិន្នន័យដែលរក្សាទុក​នៅក្នុង Health Connect បានទៀតទេ។ ប្រសិនបើកម្មវិធីនេះធ្លាប់បានសរសេរទិន្នន័យពីមុន នោះវានឹងបង្ហាញនៅក្នុងបញ្ជីកម្មវិធីអសកម្ម។"</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"យល់ហើយ"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"ចាប់ផ្ដើមជាមួយ Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"ចាប់ផ្ដើមជាមួយ Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect រក្សាទុក​ទិន្នន័យសុខភាព និងសម្បទា​របស់អ្នក ដោយផ្តល់ឱ្យ​អ្នកនូវ​វិធីសាមញ្ញ​ក្នុងការធ្វើសមកាលកម្ម​កម្មវិធីផ្សេងៗ​នៅលើទូរសព្ទ​របស់អ្នក"</string>
     <string name="share_data" msgid="3481932156368883946">"ចែករំលែកទិន្នន័យជាមួយកម្មវិធីរបស់អ្នក"</string>
     <string name="share_data_description" msgid="2919871301634375092">"ជ្រើសរើសទិន្នន័យដែលកម្មវិធីនីមួយៗអាចអាន ឬសរសេរទៅកាន់ Health Connect បាន"</string>
diff --git a/apk/res/values-kn/strings.xml b/apk/res/values-kn/strings.xml
index 1fd17cd..309194a 100644
--- a/apk/res/values-kn/strings.xml
+++ b/apk/res/values-kn/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Health Connect, ಆ್ಯಪ್ ಅನುಮತಿಗಳನ್ನು ಏಕೆ ತೆಗೆದುಹಾಕುತ್ತದೆ"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Google Play ನಿಂದ ಆ್ಯಪ್ ಅನ್ನು ಅಮಾನತುಗೊಳಿಸಿದರೆ ಅಥವಾ ತೆಗೆದುಹಾಕಿದರೆ, Health Connect ಅದರ ಅನುಮತಿಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ತೆಗೆದುಹಾಕುತ್ತದೆ.\n\nಇದರರ್ಥ Health Connect ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾದ ಡೇಟಾವನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು ಆ್ಯಪ್‌ಗೆ ಇನ್ನು ಮುಂದೆ ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ. ಈ ಆ್ಯಪ್ ಈ ಹಿಂದೆ ಬರೆದ ಡೇಟಾವನ್ನು ಹೊಂದಿದ್ದರೆ, ಅದು ನಿಷ್ಕ್ರಿಯ ಆ್ಯಪ್‌ಗಳ ಪಟ್ಟಿಯಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತದೆ."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"ಅರ್ಥವಾಯಿತು"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Health Connect ಬಳಕೆಯನ್ನು ಪ್ರಾರಂಭಿಸಿ"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Health Connect ಬಳಕೆಯನ್ನು ಪ್ರಾರಂಭಿಸಿ"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect ನಿಮ್ಮ ಆರೋಗ್ಯ ಹಾಗೂ ಫಿಟ್‌ನೆಸ್ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ, ಅದರಿಂದ ನಿಮ್ಮ ಫೋನ್‌ನಲ್ಲಿರುವ ವಿವಿಧ ಆ್ಯಪ್‌ಗಳನ್ನು ಸಿಂಕ್ ಮಾಡಲು ನಿಮಗೆ ಸರಳವಾದ ಮಾರ್ಗವನ್ನು ಒದಗಿಸುತ್ತದೆ"</string>
     <string name="share_data" msgid="3481932156368883946">"ನಿಮ್ಮ ಆ್ಯಪ್‌ಗಳೊಂದಿಗೆ ಡೇಟಾವನ್ನು ಹಂಚಿಕೊಳ್ಳಿ"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Health Connect ನಲ್ಲಿ ಪ್ರತಿ ಆ್ಯಪ್ ಓದಬಹುದಾದ ಅಥವಾ ಬರೆಯಬಹುದಾದ ಡೇಟಾವನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
diff --git a/apk/res/values-ko/strings.xml b/apk/res/values-ko/strings.xml
index 84ed660..39ccad5 100644
--- a/apk/res/values-ko/strings.xml
+++ b/apk/res/values-ko/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"헬스 커넥트에서 앱 권한을 삭제하는 이유"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"앱이 Google Play에서 정지되거나 삭제되면 헬스 커넥트에서 해당 앱의 권한을 자동으로 삭제합니다.\n\n그러면 앱에서 더 이상 헬스 커넥트에 저장된 데이터에 액세스할 수 없게 됩니다. 이전에 데이터를 기록한 적이 있는 앱이라면 비활성 앱 목록에 표시됩니다."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"확인"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"헬스 커넥트 시작하기"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"헬스 커넥트 시작하기"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"헬스 커넥트는 건강 및 피트니스 데이터를 저장하므로 휴대전화에 설치된 여러 앱을 간편하게 동기화할 수 있습니다."</string>
     <string name="share_data" msgid="3481932156368883946">"앱과 데이터 공유"</string>
     <string name="share_data_description" msgid="2919871301634375092">"각 앱이 헬스 커넥트에서 읽거나 쓸 수 있는 데이터를 선택하세요."</string>
diff --git a/apk/res/values-ky/strings.xml b/apk/res/values-ky/strings.xml
index dde2c44..b8e9fa0 100644
--- a/apk/res/values-ky/strings.xml
+++ b/apk/res/values-ky/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Health Connect колдонмолордун уруксаттарын эмне үчүн өчүрөт"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Эгер колдонмо Google Play\'де убактылуу токтотулуп же өчүрүлсө, Health Connect анын уруксаттарын автоматтык түрдө өчүрүп коёт.\n\nБул колдонмо Health Connect\'те сакталган маалыматыңызга мындан ары мүмкүнчүлүк ала албайт дегенди билдирет. Бул колдонмонун мурда жазылган маалыматы болсо, ал жигерсиз колдонмолордун тизмесинде көрүнөт."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Түшүндүм"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Health Connect\'ти колдонуп баштоо"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Health Connect\'ти колдонуп баштоо"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect кызматы ден-соолугуңузга жана кыймылдуулугуңузга байланыштуу нерселерди сактап, аларды телефондогу башка колдонмолор менен шайкештештирет."</string>
     <string name="share_data" msgid="3481932156368883946">"Колдонмолор менен ар кандай нерселерди бөлүшүү"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Ар бир колдонмо Health Connect кызматында кандай маалыматты окуп, сактай ала турганын тандайсыз"</string>
diff --git a/apk/res/values-lo/strings.xml b/apk/res/values-lo/strings.xml
index b02202c..aa91213 100644
--- a/apk/res/values-lo/strings.xml
+++ b/apk/res/values-lo/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"ເປັນຫຍັງ Health Connect ຈຶ່ງລຶບການອະນຸຍາດແອັບອອກ"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"ຫາກມີແອັບຖືກລະງັບ ຫຼື ລຶບອອກຈາກ Google Play, Health Connect ຈະລຶບການອະນຸຍາດຂອງມັນອອກອັດຕະໂນມັດ.\n\nນີ້ໝາຍຄວາມວ່າແອັບຈະບໍ່ສາມາດເຂົ້າເຖິງຂໍ້ມູນທີ່ຈັດເກັບໄວ້ໃນ Health Connect ໄດ້ອີກຕໍ່ໄປ. ຫາກແອັບນີ້ມີຂໍ້ມູນທີ່ຂຽນໄວ້ກ່ອນໜ້າ, ມັນຈະປາກົດໃນລາຍຊື່ແອັບທີ່ບໍ່ເຄື່ອນໄຫວ."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"ເຂົ້າໃຈແລ້ວ"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"ເລີ່ມຕົ້ນການນຳໃຊ້ Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"ເລີ່ມຕົ້ນການນຳໃຊ້ Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect ຈະບັນທຶກຂໍ້ມູນສຸຂະພາບ ແລະ ການອອກກຳລັງກາຍຂອງທ່ານ, ເພື່ອມອບວິທີງ່າຍໆໃນການຊິ້ງຂໍ້ມູນແອັບຕ່າງໆຢູ່ໂທລະສັບຂອງທ່ານ"</string>
     <string name="share_data" msgid="3481932156368883946">"ແບ່ງປັນຂໍ້ມູນກັບແອັບຂອງທ່ານ"</string>
     <string name="share_data_description" msgid="2919871301634375092">"ເລືອກຂໍ້ມູນທີ່ແຕ່ລະແອັບສາມາດອ່ານ ຫຼື ຂຽນລົງໃສ່ Health Connect ໄດ້"</string>
diff --git a/apk/res/values-lt/strings.xml b/apk/res/values-lt/strings.xml
index 3e1d177..a2926f4 100644
--- a/apk/res/values-lt/strings.xml
+++ b/apk/res/values-lt/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Kodėl „Health Connect“ pašalina programų leidimus"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Jei programa sustabdyta arba pašalinta iš „Google Play“, „Health Connect“ automatiškai pašalina jos leidimus.\n\nTai reiškia, kad programa nebegali pasiekti duomenų, saugomų sistemoje „Health Connect“. Jei šioje programoje yra anksčiau įrašytų duomenų, ji rodoma neaktyvių programų sąraše."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Supratau"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Darbo su klasikinės versijos „Health Connect“ pradžia"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Darbo su „Health Connect“ pradžia"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Sistemoje „Health Connect“ saugomi jūsų sveikatos ir kūno rengybos duomenys ir galite lengvai sinchronizuoti skirtingas programas telefone"</string>
     <string name="share_data" msgid="3481932156368883946">"Duomenų bendrinimas su programomis"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Pasirinkite, kokius duomenis kiekviena programa gali skaityti ar rašyti sistemoje „Health Connect“"</string>
diff --git a/apk/res/values-lv/strings.xml b/apk/res/values-lv/strings.xml
index a310af9..977b624 100644
--- a/apk/res/values-lv/strings.xml
+++ b/apk/res/values-lv/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Kāpēc platformā Health Connect tiek noņemtas lietotņu atļaujas"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Ja lietotnes darbība tiek apturēta vai lietotne tiek noņemta no pakalpojuma Google Play, platformā Health Connect tiek automātiski noņemtas šīs lietotnes atļaujas.\n\nTas nozīmē, ka lietotne vairs nevar piekļūt platformā Health Connect saglabātajiem datiem. Ja attiecīgā lietotne iepriekš ir rakstījusi datus, tā tiek rādīta neaktīvo lietotņu sarakstā."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Labi"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Darba sākšana ar Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Darba sākšana ar Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Platformā Health Connect tiek glabāti jūsu veselības un fizisko aktivitāšu dati, tādējādi varat vienkāršā veidā sinhronizēt dažādas lietotnes savā tālrunī."</string>
     <string name="share_data" msgid="3481932156368883946">"Datu kopīgošana ar lietotnēm"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Izvēlieties, kādus datus katra lietotne var lasīt vai rakstīt platformā Health Connect."</string>
diff --git a/apk/res/values-mk/strings.xml b/apk/res/values-mk/strings.xml
index f0a5285..8adc71f 100644
--- a/apk/res/values-mk/strings.xml
+++ b/apk/res/values-mk/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Зошто Health Connect отстранува дозволи за апликации"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Ако некоја апликација е суспендирана или отстранета од Google Play, Health Connect автоматски ги отстранува нејзините дозволи.\n\nОва значи дека апликацијата веќе нема да може да пристапува до податоците зачувани во Health Connect. Ако оваа апликација има претходно запишани податоци, таа се појавува во списокот со неактивни апликации."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Сфатив"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Започнете со Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Започнете со Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect ги складира податоците за вашето здравје и фитнес, давајќи ви едноставен начин да ги синхронизирате различните апликации на вашиот телефон"</string>
     <string name="share_data" msgid="3481932156368883946">"Споделувајте податоци со вашите апликации"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Изберете ги податоците што секоја апликација може да ги чита или запишува во Health Connect"</string>
diff --git a/apk/res/values-ml/strings.xml b/apk/res/values-ml/strings.xml
index f14e98c..408f598 100644
--- a/apk/res/values-ml/strings.xml
+++ b/apk/res/values-ml/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"എന്തുകൊണ്ടാണ് Health Connect ആപ്പ് അനുമതികൾ നീക്കം ചെയ്യുന്നത്"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Google Play-യിൽ നിന്ന് ഒരു ആപ്പ് താൽക്കാലികമായി റദ്ദാക്കുകയോ നീക്കം ചെയ്യുകയോ ചെയ്താൽ, അതിനുള്ള അനുമതികൾ Health Connect സ്വയമേവ നീക്കം ചെയ്യുന്നു.\n\nഈ ആപ്പിന് Health Connect-ൽ സംഭരിച്ച ഡാറ്റ തുടർന്ന് ആക്‌സസ് ചെയ്യാനാകില്ല എന്നാണ് ഇതിനർത്ഥം. ആപ്പിൽ മുമ്പ് രേഖപ്പെടുത്തിയ ഡാറ്റയുണ്ടെങ്കിൽ, അത് നിഷ്ക്രിയ ആപ്പുകളുടെ ലിസ്റ്റിൽ ദൃശ്യമാകും."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"മനസ്സിലായി"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Health Connect ഉപയോഗിച്ച് തുടങ്ങൂ"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Health Connect ഉപയോഗിച്ച് തുടങ്ങൂ"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"നിങ്ങളുടെ ആരോഗ്യവും ഫിറ്റ്‌നസും സംബന്ധിച്ച ഡാറ്റ Health Connect സംഭരിക്കുന്നു, ഇതിലൂടെ നിങ്ങളുടെ ഫോണിലെ വ്യത്യസ്ത ആപ്പുകൾ എളുപ്പത്തിൽ സമന്വയിപ്പിക്കാനാകും"</string>
     <string name="share_data" msgid="3481932156368883946">"നിങ്ങളുടെ ആപ്പുകളുമായി ഡാറ്റ പങ്കിടുക"</string>
     <string name="share_data_description" msgid="2919871301634375092">"ഓരോ ആപ്പിനും റീഡ് ചെയ്യാനോ Health Connect-ലേക്ക് റൈറ്റ് ചെയ്യാനോ കഴിയുന്ന ഡാറ്റ തിരഞ്ഞെടുക്കുക"</string>
diff --git a/apk/res/values-mn/strings.xml b/apk/res/values-mn/strings.xml
index f6b01b2..5d4f20f 100644
--- a/apk/res/values-mn/strings.xml
+++ b/apk/res/values-mn/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Health Connect аппын зөвшөөрлийг яагаад хасдаг вэ?"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Хэрэв аппыг Google Play-с түр хаасан эсвэл хассан бол Health Connect түүний зөвшөөрлийг автоматаар хасдаг.\n\nЭнэ нь тус апп Health Connect-д хадгалсан өгөгдөлд цаашид хандах боломжгүй гэсэн үг юм. Хэрэв энэ аппад өмнө нь бичсэн өгөгдөл байвал энэ нь идэвхгүй аппын жагсаалтад харагдана."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Ойлголоо"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Health Connect-г ашиглаж эхлээрэй"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Health Connect-г ашиглаж эхлээрэй"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect таны эрүүл мэнд, фитнесийн өгөгдлийг хадгалснаар та утсан дээрээ байгаа өөр өөр аппуудыг энгийн аргаар синк хийх боломжтой болно"</string>
     <string name="share_data" msgid="3481932156368883946">"Аппуудтайгаа өгөгдөл хуваалцаарай"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Апп бүрийн Health Connect-с унших болон түүнд бичих боломжтой өгөгдлийг сонгоно уу"</string>
diff --git a/apk/res/values-mr/strings.xml b/apk/res/values-mr/strings.xml
index ad0b247..750396d 100644
--- a/apk/res/values-mr/strings.xml
+++ b/apk/res/values-mr/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Health Connect हे अ‍ॅप परवानग्या का काढून टाकते"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"एखादे अ‍ॅप Google Play वरून निलंबित केल्यास किंवा काढून टाकल्यास, Health Connect हे आपोआप त्याच्या परवानग्या काढून टाकते.\n\nयाचा अर्थ असा, की अ‍ॅप यापुढे Health Connect मध्ये स्टोअर केलेला डेटा अ‍ॅक्सेस करू शकत नाही. या अ‍ॅपने याआधी डेटा राइट केलेला असल्यास, ते इनॅक्टिव्ह अ‍ॅप्सच्या सूचीमध्ये दिसते."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"समजले"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Health Connect सह सुरुवात करा"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Health Connect सह सुरुवात करा"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect हे तुमचा आरोग्य आणि फिटनेसशी संबंधित डेटा स्टोअर करते व तुम्हाला तुमच्या फोनवरील वेगवेगळी अ‍ॅप्स सिंक करण्याचा सोपा मार्ग देते"</string>
     <string name="share_data" msgid="3481932156368883946">"तुमच्या अ‍ॅप्ससह डेटा शेअर करा"</string>
     <string name="share_data_description" msgid="2919871301634375092">"प्रत्येक अ‍ॅप हे Health Connect वर कोणता डेटा रीड किंवा राइट करू शकते ते निवडा"</string>
diff --git a/apk/res/values-ms/strings.xml b/apk/res/values-ms/strings.xml
index 6101178..b3e9366 100644
--- a/apk/res/values-ms/strings.xml
+++ b/apk/res/values-ms/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Perihal Health Connect mengalih keluar kebenaran apl"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Jika apl digantung atau dialih keluar daripada Google Play, Health Connect mengalih keluar kebenaran apl tersebut secara automatik.\n\nHal ini bermakna apl tersebut tidak lagi boleh mengakses data yang disimpan dalam Health Connect. Jika apl ini mempunyai data bertulis sebelum ini, apl ini akan muncul dalam senarai apl tidak aktif."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"OK"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Bermula dengan Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Bermula dengan Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect menyimpan data kesihatan dan kecergasan anda, menyediakan cara yang mudah untuk menyegerakkan pelbagai apl pada telefon anda"</string>
     <string name="share_data" msgid="3481932156368883946">"Kongsi data dengan apl anda"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Pilih data yang boleh dibaca atau ditulis oleh setiap apl pada Health Connect"</string>
diff --git a/apk/res/values-my/strings.xml b/apk/res/values-my/strings.xml
index a376870..7ea9379 100644
--- a/apk/res/values-my/strings.xml
+++ b/apk/res/values-my/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Health Connect က အက်ပ်ခွင့်ပြုချက်များကို ဖယ်ရှားရသည့် အကြောင်းရင်း"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"အက်ပ်ကို Google Play မှ ဆိုင်းငံ့ (သို့) ဖယ်ရှားလိုက်ပါက Health Connect သည် ၎င်း၏ ခွင့်ပြုချက်များကို အလိုအလျောက် ဖယ်ရှားသည်။\n\nဆိုလိုသည်မှာ အက်ပ်သည် Health Connect တွင် သိမ်းထားသည့် ဒေတာကို မသုံးနိုင်တော့ပါ။ ဤအက်ပ်တွင် ယခင်ရေးသွင်းထားသည့် ဒေတာရှိပါက အသုံးမပြုသော အက်ပ်စာရင်းတွင် ၎င်းကို မြင်ရသည်။"</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"ရပြီ"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Health Connect စတင်အသုံးပြုခြင်း"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Health Connect စတင်အသုံးပြုခြင်း"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect သည် သင်၏ကျန်းမာရေးနှင့် ကြံ့ခိုင်ရေးဒေတာကို သိမ်းပြီး ၎င်းဖြင့် သင့်ဖုန်းပေါ်ရှိ အက်ပ်အမျိုးမျိုးကို ရိုးရှင်းစွာစင့်ခ်လုပ်နိုင်သည်"</string>
     <string name="share_data" msgid="3481932156368883946">"သင့်အက်ပ်များနှင့် ဒေတာမျှဝေရန်"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Health Connect တွင် အက်ပ်တစ်ခုစီက ဖတ်နိုင် (သို့) ရေးနိုင်မည့် ဒေတာကို သင်ရွေးနိုင်သည်"</string>
diff --git a/apk/res/values-nb/strings.xml b/apk/res/values-nb/strings.xml
index a0a2f16..9bda239 100644
--- a/apk/res/values-nb/strings.xml
+++ b/apk/res/values-nb/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Grunnen til at Health Connect fjerner apptillatelser"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Hvis en app suspenderes eller fjernes fra Google Play, fjerner Health Connect automatisk tillatelsene den har.\n\nDette betyr at appen ikke lenger har tilgang til data som er lagret i Health Connect. Hvis denne appen har skrevet data tidligere, vises den i listen over inaktive apper."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Greit"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Kom i gang med Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Kom i gang med Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect lagrer helse- og treningsdataene dine, slik at du enkelt kan synkronisere appene på telefonen"</string>
     <string name="share_data" msgid="3481932156368883946">"Del data med appene"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Velg dataene hver app kan lese eller skrive til Health Connect"</string>
diff --git a/apk/res/values-ne/strings.xml b/apk/res/values-ne/strings.xml
index fb33951..49adb6e 100644
--- a/apk/res/values-ne/strings.xml
+++ b/apk/res/values-ne/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Health Connect ले एपलाई दिइएका अनुमति रद्द गर्नुको कारण"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Google Play बाट कुनै एप निलम्बन गरिएको वा हटाइएको छ भने Health Connect ले सो एपलाई दिइएका अनुमतिहरू स्वतः रद्द गर्ने छ। \n\nयसको अर्थ उक्त एपले अबदेखि Health Connect मा भण्डारण गरिएको डेटा प्राप्त गर्न सक्दैन। यो एपमा पहिलै नै डेटा सेभ गरिएको छ भने उक्त एप निष्क्रिय एपहरूको सूचीमा देखिन्छ।"</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"बुझेँ"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Health Connect चलाउन थाल्नुहोस्"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Health Connect चलाउन थाल्नुहोस्"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect ले तपाईंको स्वास्थ्य र तन्दुरुस्तीसम्बन्धी डेटा भण्डारण गर्छ र तपाईं आफ्नो फोनमा विभिन्न एपहरू सरल तरिकाले सिंक गर्न सक्नुहुन्छ"</string>
     <string name="share_data" msgid="3481932156368883946">"आफ्ना एपहरूसँग डेटा सेयर गर्नुहोस्"</string>
     <string name="share_data_description" msgid="2919871301634375092">"हरेक एपलाई कुन कुन डेटा Health Connect मा रिड वा राइट गर्न दिने भन्ने कुरा छनौट गर्नुहोस्"</string>
diff --git a/apk/res/values-nl/strings.xml b/apk/res/values-nl/strings.xml
index 388d1a8..063c726 100644
--- a/apk/res/values-nl/strings.xml
+++ b/apk/res/values-nl/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Waarom Health Connect app-rechten verwijdert"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Als een app wordt opgeschort of verwijderd van Google Play, verwijdert Health Connect automatisch de rechten voor die app.\n\nDit betekent dat de app geen toegang meer heeft tot gegevens die zijn opgeslagen in Health Connect. Heeft de app eerder gegevens geschreven, dan verschijnt deze in de lijst met inactieve apps."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"OK"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Aan de slag met Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Aan de slag met Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect slaat je gezondheids- en fitnessgegevens op zodat je de verschillende apps op je telefoon makkelijk kunt synchroniseren"</string>
     <string name="share_data" msgid="3481932156368883946">"Gegevens delen met je apps"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Kies de gegevens die elke app mag lezen in of sturen naar Health Connect"</string>
diff --git a/apk/res/values-or/strings.xml b/apk/res/values-or/strings.xml
index d6fcc13..d368cd9 100644
--- a/apk/res/values-or/strings.xml
+++ b/apk/res/values-or/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Health Connect ଆପ ଅନୁମତିଗୁଡ଼ିକୁ କାହିଁକି କାଢ଼ି ଦିଏ"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"ଯଦି ଏକ ଆପକୁ Google Playରୁ ସସପେଣ୍ଡ କରାଯାଏ କିମ୍ବା କାଢ଼ି ଦିଆଯାଏ, ତେବେ Health Connect ସ୍ୱଚାଳିତ ଭାବେ ଏହାର ଅନୁମତିଗୁଡ଼ିକୁ କାଢ଼ି ଦିଏ।\n\nଏହାର ଅର୍ଥ ହେଉଛି ଏହି ଆପଟି Health Connectରେ ଷ୍ଟୋର କରାଯାଇଥିବା ଡାଟାକୁ ଆଉ ଆକ୍ସେସ କରିପାରିବ ନାହିଁ। ଯଦି ଏହି ଆପରେ ପୂର୍ବରୁ ଲିଖିତ ଡାଟା ଅଛି, ତେବେ ଏହା ନିଷ୍କ୍ରିୟ ଆପ୍ସ ତାଲିକାରେ ଦେଖାଯାଏ।"</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"ବୁଝିଗଲି"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Health Connect ସହ ଆରମ୍ଭ କରନ୍ତୁ"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Health Connect ସହ ଆରମ୍ଭ କରନ୍ତୁ"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect ଆପଣଙ୍କ ସ୍ୱାସ୍ଥ୍ୟ ଏବଂ ଫିଟନେସ ଡାଟାକୁ ଷ୍ଟୋର କରେ, ଆପଣଙ୍କ ଫୋନରେ ବିଭିନ୍ନ ଆପ୍ସ ସିଙ୍କ କରିବାକୁ ଆପଣଙ୍କୁ ଏକ ସହଜ ଉପାୟ ଦେଇଥାଏ"</string>
     <string name="share_data" msgid="3481932156368883946">"ଆପଣଙ୍କ ଆପ୍ସ ସହ ଡାଟା ସେୟାର କରନ୍ତୁ"</string>
     <string name="share_data_description" msgid="2919871301634375092">"ପ୍ରତ୍ୟେକ ଆପ Health Connectରୁ କେଉଁ ଡାଟା ପଢ଼ିପାରିବ କିମ୍ବା ଲେଖିପାରିବ ତାହା ବାଛନ୍ତୁ"</string>
diff --git a/apk/res/values-pa/strings.xml b/apk/res/values-pa/strings.xml
index b37f4fd..b174408 100644
--- a/apk/res/values-pa/strings.xml
+++ b/apk/res/values-pa/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Health Connect ਨੇ ਐਪ ਇਜਾਜ਼ਤਾਂ ਨੂੰ ਕਿਉਂ ਹਟਾ ਦਿੱਤਾ"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"ਜੇ ਕਿਸੇ ਐਪ ਨੂੰ Google Play ਤੋਂ ਮੁਅੱਤਲ ਕਰ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ ਜਾਂ ਹਟਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ Health Connect ਐਪ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਇਸ ਦੀਆਂ ਇਜਾਜ਼ਤਾਂ ਨੂੰ ਹਟਾ ਦਿੰਦੀ ਹੈ।\n\nਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਐਪ ਹੁਣ Health Connect ਵਿੱਚ ਸਟੋਰ ਕੀਤੇ ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਕਰ ਸਕਦੀ। ਜੇ ਇਸ ਐਪ ਵਿੱਚ ਪਹਿਲਾਂ ਤੋਂ ਰੱਖਿਅਤ ਕੀਤਾ ਹੋਇਆ ਡਾਟਾ ਹੈ, ਤਾਂ ਇਹ ਅਕਿਰਿਆਸ਼ੀਲ ਐਪਾਂ ਦੀ ਸੂਚੀ ਵਿੱਚ ਦਿਸੇਗਾ।"</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"ਸਮਝ ਲਿਆ"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Health Connect ਨਾਲ ਸ਼ੁਰੂਆਤ ਕਰੋ"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Health Connect ਨਾਲ ਸ਼ੁਰੂਆਤ ਕਰੋ"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect ਤੁਹਾਨੂੰ ਆਪਣੇ ਫ਼ੋਨ \'ਤੇ ਵੱਖ-ਵੱਖ ਐਪਾਂ ਨੂੰ ਸਿੰਕ ਕਰਨ ਦਾ ਸਰਲ ਤਰੀਕਾ ਦੇ ਕੇ, ਤੁਹਾਡੇ ਸਿਹਤ ਅਤੇ ਫਿੱਟਨੈੱਸ ਸੰਬੰਧੀ ਡਾਟੇ ਨੂੰ ਸਟੋਰ ਕਰਦੀ ਹੈ"</string>
     <string name="share_data" msgid="3481932156368883946">"ਆਪਣੀਆਂ ਐਪਾਂ ਨਾਲ ਡਾਟਾ ਸਾਂਝਾ ਕਰੋ"</string>
     <string name="share_data_description" msgid="2919871301634375092">"ਉਹ ਡਾਟਾ ਚੁਣੋ ਜਿਸਨੂੰ Health Connect ਵਿੱਚ ਹਰੇਕ ਐਪ ਪੜ੍ਹ ਜਾਂ ਲਿਖ ਸਕੇ"</string>
diff --git a/apk/res/values-pl/strings.xml b/apk/res/values-pl/strings.xml
index 8b4eb92..155c516 100644
--- a/apk/res/values-pl/strings.xml
+++ b/apk/res/values-pl/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Dlaczego Health Connect usuwa uprawnienia aplikacji"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Jeśli aplikacja zostanie zawieszona lub usunięta z Google Play, Health Connect automatycznie usunie jej uprawnienia.\n\nOznacza to, że aplikacja utraci dostęp do informacji przechowywanych w Health Connect. Jeśli aplikacja zapisywała wcześniej dane, pojawi się na liście nieaktywnych aplikacji."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"OK"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Pierwsze kroki z Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Pierwsze kroki w Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect przechowuje Twoje dane o zdrowiu i aktywności fizycznej oraz ułatwia synchronizację danych z różnych aplikacji na telefonie"</string>
     <string name="share_data" msgid="3481932156368883946">"Udostępniaj dane aplikacjom"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Wybierz dane, jakie każda aplikacja będzie mogła odczytywać i zapisywać w Health Connect"</string>
diff --git a/apk/res/values-pt-rPT/strings.xml b/apk/res/values-pt-rPT/strings.xml
index 94ad388..f2dad04 100644
--- a/apk/res/values-pt-rPT/strings.xml
+++ b/apk/res/values-pt-rPT/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Por que motivo a Saúde Connect remove autorizações de apps"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Se uma app for suspensa ou removida do Google Play, a Saúde Connect remove automaticamente as respetivas autorizações.\n\nIsto significa que a app deixa de poder aceder aos dados armazenados na Saúde Connect. Se esta app tiver dados escritos anteriormente, é apresentada na lista de apps inativas."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"OK"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Comece a usar a Saúde Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Comece a usar a Saúde Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"A Saúde Connect armazena os seus dados de saúde e fitness, oferecendo-lhe uma forma simples de sincronizar as diferentes apps no seu telemóvel"</string>
     <string name="share_data" msgid="3481932156368883946">"Partilhar dados com as suas apps"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Escolha os dados que cada app pode ler ou escrever na Saúde Connect"</string>
diff --git a/apk/res/values-pt/strings.xml b/apk/res/values-pt/strings.xml
index 4403b81..d6a259c 100644
--- a/apk/res/values-pt/strings.xml
+++ b/apk/res/values-pt/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Por que a plataforma Conexão Saúde remove as permissões de apps"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Se um app for suspenso ou removido do Google Play, a plataforma Conexão Saúde vai remover automaticamente as permissões dele.\n\nIsso significa que o app não poderá mais acessar seus dados armazenados na Conexão Saúde. Se esse app tiver gravado dados anteriormente, ele vai aparecer na lista de apps inativos."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Entendi"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Começar a usar a Conexão Saúde"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Comece a usar o app Conexão Saúde"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"A plataforma Conexão Saúde armazena seus dados de saúde e condicionamento físico, oferecendo uma maneira simples de sincronizar os diferentes apps no smartphone"</string>
     <string name="share_data" msgid="3481932156368883946">"Compartilhar dados com seus apps"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Escolha os dados que cada app pode ler ou gravar na plataforma Conexão Saúde"</string>
diff --git a/apk/res/values-ro/strings.xml b/apk/res/values-ro/strings.xml
index a6a6d22..82c656b 100644
--- a/apk/res/values-ro/strings.xml
+++ b/apk/res/values-ro/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"De ce elimină Health Connect permisiunile pentru aplicație"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Dacă o aplicație este eliminată sau suspendată pe Google Play, Health Connect îi elimină automat permisiunile.\n\nPrin urmare, aplicația nu mai poate accesa datele stocate în Health Connect. Dacă aplicația are date scrise anterior, apare în lista aplicațiilor inactive."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"OK"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Noțiuni introductive despre Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Noțiuni introductive despre Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect îți stochează datele despre sănătate și fitness, oferindu-ți o metodă simplă de a sincroniza aplicațiile diverse de pe telefon"</string>
     <string name="share_data" msgid="3481932156368883946">"Permite accesul aplicațiilor la date"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Alege datele pe care fiecare aplicație le poate citi sau scrie în Health Connect"</string>
diff --git a/apk/res/values-ru/strings.xml b/apk/res/values-ru/strings.xml
index 52a2524..33fdff0 100644
--- a/apk/res/values-ru/strings.xml
+++ b/apk/res/values-ru/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Почему сервис \"Здоровье и спорт\" отзывает разрешения для приложений"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Если приложение заблокировано или удалено в Google Play, сервис \"Здоровье и спорт\" автоматически отзывает разрешения для него.\n\nЭто означает, что у приложения больше не будет доступа к информации, хранящейся в этом сервисе. Оно появится в списке неактивных приложений, если ранее записывало данные."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Закрыть"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Начало работы с сервисом \"Здоровье и спорт\""</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Начало работы с сервисом \"Здоровье и спорт\""</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Сервис \"Здоровье и спорт\" хранит ваши данные о здоровье и физической активности, позволяя без труда синхронизировать их с другими приложениями на телефоне."</string>
     <string name="share_data" msgid="3481932156368883946">"Делитесь данными с приложениями"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Выбирайте, какую информацию каждое приложение сможет читать и сохранять в сервисе \"Здоровье и спорт\"."</string>
diff --git a/apk/res/values-si/strings.xml b/apk/res/values-si/strings.xml
index 55833d6..3ffe7e7 100644
--- a/apk/res/values-si/strings.xml
+++ b/apk/res/values-si/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Health Connect යෙදුම් අවසර ඉවත් කරන හේතුව"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"යෙදුමක් අත්හිටුවා හෝ Google Play වෙතින් ඉවත් කර ඇත්නම්, Health Connect එහි අවසරයන් ස්වයංක්‍රීයව ඉවත් කරයි.\n\nමෙයින් අදහස් වන්නේ යෙදුමට තවදුරටත් Health Connect තුළ ගබඩා කර ඇති දත්ත වෙත ප්‍රවේශ විය නොහැකි බවයි. මෙම යෙදුමට පෙර ලියා ඇති දත්ත තිබේ නම්, එය අක්‍රිය යෙදුම් ලැයිස්තුවේ දිස් වේ."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"තේරුණා"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Health Connect සමග පටන් ගන්න"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Health Connect සමග පටන් ගන්න"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect ඔබට ඔබේ දුරකථනයේ විවිධ යෙදුම් සමමුහූර්ත කිරීමට සරල ක්‍රමයක් ලබා දෙමින්, ඔබේ සෞඛ්‍ය සහ යෝග්‍යතා දත්ත ගබඩා කරයි"</string>
     <string name="share_data" msgid="3481932156368883946">"ඔබේ යෙදුම් සමග දත්ත බෙදා ගන්න"</string>
     <string name="share_data_description" msgid="2919871301634375092">"එක් එක් යෙදුමට Health Connect වෙත කියවීමට හෝ ලිවීමට හැකි දත්ත තෝරා ගන්න"</string>
diff --git a/apk/res/values-sk/strings.xml b/apk/res/values-sk/strings.xml
index 5df59a0..6871369 100644
--- a/apk/res/values-sk/strings.xml
+++ b/apk/res/values-sk/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Prečo Dáta o zdraví odstraňujú povolenia aplikácií"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Ak bude aplikácia zablokovaná alebo odstránená zo služby Google Play, Dáta o zdraví automaticky odstránia jej povolenia.\n\nZnamená to, že daná aplikácia už nebude mať prístup k údajom uloženým v Dátach o zdraví. Ak aplikácia v minulosti zapísala údaje, zobrazí sa v zozname neaktívnych aplikácií."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Dobre"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Začíname s Dátami o zdraví"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Začíname s Dátami o zdraví"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Dáta o zdraví uchovávajú vaše údaje o zdraví a kondícii a umožňujú vám jednoducho synchronizovať rôzne aplikácie v telefóne"</string>
     <string name="share_data" msgid="3481932156368883946">"Zdieľanie údajov s aplikáciami"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Vyberte, ktoré údaje budú môcť jednotlivé aplikácie v Dátach o zdraví čítať alebo zapisovať"</string>
diff --git a/apk/res/values-sl/strings.xml b/apk/res/values-sl/strings.xml
index 2a97c48..4731911 100644
--- a/apk/res/values-sl/strings.xml
+++ b/apk/res/values-sl/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Zakaj Health Connect odstrani dovoljenja za aplikacije"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Če je aplikacija blokirana ali odstranjena iz Googla Play, Health Connect samodejno odstrani njena dovoljenja.\n\nTo pomeni, da aplikacija ne more več dostopati do podatkov, shranjenih v storitvi Health Connect. Če je ta aplikacija pred tem zapisovala podatke, je prikazana na seznamu neaktivnih aplikacij."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Razumem"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Začnite uporabljati Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Začetek uporabe storitve Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect shranjuje vaše podatke o zdravju in telesni pripravljenosti ter vam omogoča, da na preprost način sinhronizirate različne aplikacije v telefonu."</string>
     <string name="share_data" msgid="3481932156368883946">"Deljenje podatkov z aplikacijami"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Izberite, katere podatke lahko aplikacije berejo ali zapisujejo v storitvi Health Connect."</string>
diff --git a/apk/res/values-sq/strings.xml b/apk/res/values-sq/strings.xml
index 55f62b2..e2f7ad0 100644
--- a/apk/res/values-sq/strings.xml
+++ b/apk/res/values-sq/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Pse i heq Health Connect lejet e aplikacioneve"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Nëse një aplikacion pezullohet ose hiqet nga Google Play, Health Connect i heq automatikisht lejet e tij.\n\nKjo do të thotë që aplikacioni nuk mund të ketë më qasje te të dhënat e ruajtura në Health Connect. Nëse ky aplikacion ka të dhëna që janë shkruar më herët, ai shfaqet në listën e aplikacioneve joaktive."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"E kuptova"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Fillo me Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Fillo me Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect ruan të dhënat e tua të shëndetit dhe të fitnesit, duke të ofruar një mënyrë të thjeshtë për të sinkronizuar aplikacione të ndryshme në telefonin tënd"</string>
     <string name="share_data" msgid="3481932156368883946">"Ndaj të dhënat me aplikacionet e tua"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Zgjidh të dhënat që çdo aplikacion mund të lexojë ose të shkruajë në Health Connect"</string>
diff --git a/apk/res/values-sr/strings.xml b/apk/res/values-sr/strings.xml
index 6434c73..5129a77 100644
--- a/apk/res/values-sr/strings.xml
+++ b/apk/res/values-sr/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Зашто Повезивање здравља уклања дозволе за апликације"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Ако је апликација суспендована или уклоњена са Google Play-а, Повезивање здравља аутоматски уклања њене дозволе.\n\nТо значи да апликација више не може да приступа подацима сачуваним у Повезивању здравља. Ако је ова апликација претходно уписивала податке, појавиће се на листи неактивних апликација."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Важи"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Започните са Повезивањем здравља"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Започните са Повезивањем здравља"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Повезивање здравља чува ваше податке о здрављу и фитнесу и пружа вам једноставан начин да синхронизујете различите апликације на телефону"</string>
     <string name="share_data" msgid="3481932156368883946">"Делите податке са апликацијама"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Одаберите податке које свака апликације може да чита и уписује у Повезивање здравља"</string>
diff --git a/apk/res/values-sv/strings.xml b/apk/res/values-sv/strings.xml
index ed0718d..a1c43c3 100644
--- a/apk/res/values-sv/strings.xml
+++ b/apk/res/values-sv/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Därför tar Health Connect bort appbehörigheter"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Om en app stängs av eller tas bort från Google Play tar Health Connect automatiskt bort dess behörigheter.\n\nDet innebär att appen inte längre har åtkomst till data som sparats i Health Connect. Om appen har skrivit data tidigare visas den i listan över inaktiva appar."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"OK"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Kom igång med Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Kom igång med Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect lagrar din hälso- och träningsdata, så att du enkelt kan synkronisera olika appar på telefonen"</string>
     <string name="share_data" msgid="3481932156368883946">"Dela data med dina appar"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Välj vilken data varje app får läs- eller skrivbehörighet till för Health Connect"</string>
diff --git a/apk/res/values-sw/strings.xml b/apk/res/values-sw/strings.xml
index 81532f8..6cf640e 100644
--- a/apk/res/values-sw/strings.xml
+++ b/apk/res/values-sw/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Sababu zinazofanya Health Connect iondoe ruhusa za programu"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Endapo programu imesimamishwa au kuondolewa kwenye Google Play, Health Connect huondoa ruhusa zake kiotomatiki.\n\nHatua hii inamaanisha kwamba programu haiwezi tena kufikia data iliyohifadhiwa kwenye Health Connect. Ikiwa programu hii ina data iliyorekodiwa hapo awali, itaonekana kwenye orodha ya programu ambazo hazitumiki."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Nimeelewa"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Anza Kutumia Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Anza kutumia Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect huhifadhi data yako ya afya na siha, hivyo kukupatia njia rahisi ya kusawazisha programu tofauti kwenye simu yako"</string>
     <string name="share_data" msgid="3481932156368883946">"Shiriki data na programu zako"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Chagua data ambayo kila programu inaweza kusoma na kuandika kwenye Health Connect"</string>
diff --git a/apk/res/values-ta/strings.xml b/apk/res/values-ta/strings.xml
index 2b3298a..ad1ad6a 100644
--- a/apk/res/values-ta/strings.xml
+++ b/apk/res/values-ta/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Health Connect ஏன் ஆப்ஸ் அனுமதிகளை அகற்றுகிறது?"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Google Playயில் இருந்து ஓர் ஆப்ஸ் இடைநிறுத்தப்பட்டாலோ அகற்றப்பட்டாலோ அதன் அனுமதிகளை Health Connect தானாக அகற்றிவிடும்.\n\nஅதாவது Health Connectடில் சேமிக்கப்பட்டிருக்கும் தரவை அந்த ஆப்ஸால் அணுக முடியாது. ஏற்கெனவே இந்த ஆப்ஸில் ஏதேனும் தரவு பதிவாகியிருந்தால், இது செயலற்ற ஆப்ஸ் பட்டியலில் காட்டப்படும்."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"சரி"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Health Connect ஆப்ஸைப் பயன்படுத்தத் தொடங்குதல்"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Health Connect ஆப்ஸைப் பயன்படுத்தத் தொடங்குங்கள்"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect ஆப்ஸ் உங்கள் ஆரோக்கியம் மற்றும் உடற்பயிற்சி தொடர்பான தரவைச் சேமிக்கிறது. இந்த ஆப்ஸ் மூலம் மொபைலிலுள்ள வெவ்வேறு ஆப்ஸை நீங்கள் எளிதாக ஒத்திசைக்கலாம்."</string>
     <string name="share_data" msgid="3481932156368883946">"ஆப்ஸுடன் தரவைப் பகிர்தல்"</string>
     <string name="share_data_description" msgid="2919871301634375092">"ஒவ்வொரு ஆப்ஸும் Health Connectடில் வாசிக்க/எழுத வேண்டிய தரவை நீங்கள் தேர்வுசெய்யலாம்."</string>
diff --git a/apk/res/values-te/strings.xml b/apk/res/values-te/strings.xml
index 334d696..d293f1e 100644
--- a/apk/res/values-te/strings.xml
+++ b/apk/res/values-te/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Health Connect యాప్ అనుమతులను ఎందుకు తీసివేస్తుంది"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Google Play నుండి యాప్ సస్పెండ్ చేయబడినా లేదా తీసివేయబడినా, Health Connect దాని అనుమతులను ఆటోమేటిక్‌గా తీసివేస్తుంది.\n\nయాప్ ఇకపై Health Connectలో స్టోర్ చేసిన డేటాను యాక్సెస్ చేయలేదని దీని అర్థం. ఈ యాప్ మునుపు రాసిన డేటాను కలిగి ఉంటే, అది ఇన్‌యాక్టివ్ యాప్‌ల లిస్ట్‌లో కనిపిస్తుంది."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"అర్థమైంది"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Health Connectను ప్రారంభించండి"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Health Connectను ప్రారంభించండి"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect మీ ఆరోగ్యానికి, ఫిట్‌నెస్‌కు సంబంధించిన డేటాను స్టోర్ చేస్తుంది, తద్వారా మీరు మీ డేటాను ఫోన్​లోని విభిన్న రకాల యాప్‌లతో సులభంగా సింక్ చేయవచ్చు"</string>
     <string name="share_data" msgid="3481932156368883946">"మీ యాప్‌లతో డేటాను షేర్ చేయండి"</string>
     <string name="share_data_description" msgid="2919871301634375092">"ప్రతి ఒక్క యాప్ Health Connectలో ఏ డేటాను రీడ్‌ చేయాలి లేదా రైట్ చేయాలి అన్నది ఎంచుకోండి"</string>
diff --git a/apk/res/values-th/strings.xml b/apk/res/values-th/strings.xml
index 81ba945..1bc5f3e 100644
--- a/apk/res/values-th/strings.xml
+++ b/apk/res/values-th/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"ทำไม Health Connect จึงนำสิทธิ์ของแอปออก"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"หากแอปถูกระงับหรือนำออกจาก Google Play, Health Connect จะนำสิทธิ์ของแอปนั้นออกโดยอัตโนมัติ\n\nซึ่งแปลว่าแอปดังกล่าวจะไม่สามารถเข้าถึงข้อมูลที่เก็บไว้ใน Health Connect ได้อีกต่อไป ข้อมูลที่แอปเคยเขียนไว้จะไปปรากฏในรายการข้อมูลแอปที่ไม่ได้ใช้งาน"</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"รับทราบ"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"เริ่มต้นใช้งาน Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"เริ่มต้นใช้งาน Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect จะจัดเก็บข้อมูลสุขภาพและการออกกำลังกาย และให้คุณซิงค์แอปต่างๆ ในโทรศัพท์ได้โดยง่าย"</string>
     <string name="share_data" msgid="3481932156368883946">"แชร์ข้อมูลกับแอปต่างๆ"</string>
     <string name="share_data_description" msgid="2919871301634375092">"เลือกข้อมูลที่แต่ละแอปจะอ่านหรือเขียนลงใน Health Connect ได้"</string>
diff --git a/apk/res/values-tl/strings.xml b/apk/res/values-tl/strings.xml
index fe3365c..9f339ac 100644
--- a/apk/res/values-tl/strings.xml
+++ b/apk/res/values-tl/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Bakit nag-aalis ng mga pahintulot sa app ang Health Connect"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Kung sinuspinde o inalis sa Google Play ang isang app, awtomatikong aalisin ng Health Connect ang mga pahintulot nito.\n\nIbig sabihin, hindi na maa-access ng app ang data na naka-store sa Health Connect. Kung dating nagra-write ng data ang app na ito, lalabas ito sa listahan ng mga hindi aktibong app."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"OK"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Magsimula sa Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Magsimula sa Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Sino-store ng Health Connect ang iyong data ng kalusugan at fitness, na nagbibigay sa iyo ng simpleng paraan para i-sync ang iba\'t ibang app sa telepono mo"</string>
     <string name="share_data" msgid="3481932156368883946">"Magbahagi ng data sa iyong mga app"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Piliin ang data na puwedeng i-read o i-write ng bawat app sa Health Connect"</string>
diff --git a/apk/res/values-tr/strings.xml b/apk/res/values-tr/strings.xml
index 20f61ea..41f1b6b 100644
--- a/apk/res/values-tr/strings.xml
+++ b/apk/res/values-tr/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Health Connect\'in uygulama izinlerini kaldırmasının nedeni"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Health Connect, Google Play\'den kaldırılan veya askıya alınan uygulamaların izinlerini otomatik olarak kaldırır.\n\nİzinleri kaldırılan uygulamalar artık Health Connect\'te depolanan verilere erişemez. Bu uygulamalar daha önce yazılmış veriler içeriyorsa etkin olmayan uygulamalar listesinde görünür."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Anladım"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Health Connect\'i kullanmaya başlama"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Health Connect\'i kullanmaya başlama"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect, sağlık ve fitness verilerinizi depolayarak telefonunuzdaki farklı uygulamaları senkronize etmek için basit bir yol sunar"</string>
     <string name="share_data" msgid="3481932156368883946">"Uygulamalarınızla veri paylaşın"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Her uygulamanın okuyabileceği veya Health Connect\'e yazabileceği verileri seçin"</string>
diff --git a/apk/res/values-uk/strings.xml b/apk/res/values-uk/strings.xml
index c924215..a14b62f 100644
--- a/apk/res/values-uk/strings.xml
+++ b/apk/res/values-uk/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Чому сервіс Health Connect вилучає дозволи для додатків"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Якщо певний додаток заблоковано або вилучено з Google Play, сервіс Health Connect автоматично видаляє його дозволи.\n\nЦе означає, що такий додаток більше не має доступу до даних, які зберігаються в Health Connect. Якщо він раніше записував дані, то з’явиться в списку неактивних додатків."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"OK"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Початок роботи з Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Початок роботи з Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Сервіс Health Connect зберігає ваші дані про здоров’я та фізичну активність, а також дає змогу легко синхронізувати їх із різними додатками на вашому телефоні"</string>
     <string name="share_data" msgid="3481932156368883946">"Діліться даними з додатками"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Виберіть дані, які кожен додаток зможе читати або записувати в Health Connect"</string>
diff --git a/apk/res/values-ur/strings.xml b/apk/res/values-ur/strings.xml
index fc63566..2536980 100644
--- a/apk/res/values-ur/strings.xml
+++ b/apk/res/values-ur/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Health Connect ایپ کی اجازتوں کو کیوں ہٹاتی ہے"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"اگر کسی ایپ کو Google Play سے معطل یا ہٹا دیا جاتا ہے تو Health Connect خود کار طور پر اس کی اجازتوں کو ہٹا دیتی ہے۔\n\nاس کا مطلب ہے کہ ایپ Health Connect میں محفوظ کردہ ڈیٹا تک مزید رسائی حاصل نہیں کر سکتی۔ اگر اس ایپ میں پہلے ڈیٹا لکھا ہوا ہے تو یہ غیر فعال ایپس کی فہرست میں ظاہر ہوتا ہے۔"</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"سمجھ آ گئی"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"‫Health Connect کے ساتھ شروع کریں"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Health Connect کے ساتھ شروع کریں"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"‫Health Connect ایپ آپ کے صحت اور تندرستی کے ڈیٹا کو اسٹور کرتی ہے جو آپ کے فون پر مختلف ایپس کو سِنک کرنے کا ایک آسان طریقہ فراہم کرتا ہے"</string>
     <string name="share_data" msgid="3481932156368883946">"اپنی ایپس کے ساتھ ڈیٹا کا اشتراک کریں"</string>
     <string name="share_data_description" msgid="2919871301634375092">"وہ ڈیٹا منتخب کریں جسے ہر ایپ Health Connect پر پڑھ یا لکھ سکتی ہے"</string>
diff --git a/apk/res/values-uz/strings.xml b/apk/res/values-uz/strings.xml
index d331b7a..e0ccd73 100644
--- a/apk/res/values-uz/strings.xml
+++ b/apk/res/values-uz/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Health Connect ilova ruxsatlarini nega olib tashlaydi"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Ilova Google Playdan olib tashlansa yoki muzlatilsa, Health Connect uning ruxsatlarini avtomatik olib tashlaydi.\n\nBunda ilova Health Connect ichida saqlangan maʼlumotlarga kira olmay qoladi. Agar bu ilova avval axborot yozgan boʻlsa, u nofaol ilovalar roʻyxatida chiqadi."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"OK"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Health Connect bilan ishlashni boshlash"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Health Connect bilan ishlashni boshlash"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect salomatlik va fitnes maʼlumotlaringizni xavfsiz saqlaydi va telefondagi boshqa ilovalarga oson sinxronlash imkonini beradi"</string>
     <string name="share_data" msgid="3481932156368883946">"Ilovalarga axborot ulashish"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Har bir ilova Health Connect xizmatining qaysi axborotlarni oʻqishi va yozishini tanlang."</string>
diff --git a/apk/res/values-vi/strings.xml b/apk/res/values-vi/strings.xml
index 0997d09..15dc4a5 100644
--- a/apk/res/values-vi/strings.xml
+++ b/apk/res/values-vi/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Lý do Health Connect xoá quyền cho ứng dụng"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Nếu một ứng dụng bị tạm ngưng hoặc bị xoá khỏi Google Play, Health Connect sẽ tự động xoá các quyền của ứng dụng đó.\n\nĐiều này có nghĩa là ứng dụng đó không thể truy cập vào dữ liệu được lưu trữ trên Health Connect nữa. Nếu đã ghi dữ liệu trước đó thì ứng dụng này sẽ xuất hiện trong danh sách ứng dụng không hoạt động."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Tôi hiểu"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Làm quen với Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Làm quen với Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect lưu trữ dữ liệu về sức khoẻ và hoạt động thể dục của bạn, qua đó mang lại cho bạn một cách đơn giản để đồng bộ hoá nhiều ứng dụng trên điện thoại"</string>
     <string name="share_data" msgid="3481932156368883946">"Chia sẻ dữ liệu với ứng dụng"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Chọn dữ liệu mà mỗi ứng dụng có thể đọc hoặc ghi vào Health Connect"</string>
diff --git a/apk/res/values-zh-rCN/strings.xml b/apk/res/values-zh-rCN/strings.xml
index b78b872..d03cfd0 100644
--- a/apk/res/values-zh-rCN/strings.xml
+++ b/apk/res/values-zh-rCN/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Health Connect 为何会撤消应用权限"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"如果应用在 Google Play 中被暂停或下架,Health Connect 将自动撤消其权限。\n\n这表示此应用无法再访问 Health Connect 中存储的数据。此应用如果之前写入过数据,则会列在已停用应用列表中。"</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"知道了"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"开始使用 Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"开始使用 Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect 会存储您的健康与健身数据,让您可以轻松同步手机上的不同应用"</string>
     <string name="share_data" msgid="3481932156368883946">"与应用分享数据"</string>
     <string name="share_data_description" msgid="2919871301634375092">"选择每个应用可以从 Health Connect 读取或向其中写入的数据"</string>
diff --git a/apk/res/values-zh-rHK/strings.xml b/apk/res/values-zh-rHK/strings.xml
index 0fabfcd..b61abbd 100644
--- a/apk/res/values-zh-rHK/strings.xml
+++ b/apk/res/values-zh-rHK/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Health Connect 移除應用程式權限的原因"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"如果 Google Play 已移除某個應用程式或將其停權,Health Connect 會自動移除該應用程式的權限。\n\n這代表該應用程式無法再存取儲存於 Health Connect 的資料。該應用程式如曾寫入資料,則會在已停用的應用程式清單中顯示。"</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"知道了"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"開始使用 Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"開始使用 Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect 能儲存健康和健身資料,方便你同步處理手機上各個應用程式的資料"</string>
     <string name="share_data" msgid="3481932156368883946">"與應用程式分享資料"</string>
     <string name="share_data_description" msgid="2919871301634375092">"選擇每個應用程式可讀取或寫入 Health Connect 的資料"</string>
diff --git a/apk/res/values-zh-rTW/strings.xml b/apk/res/values-zh-rTW/strings.xml
index 4ba3892..48dfbf6 100644
--- a/apk/res/values-zh-rTW/strings.xml
+++ b/apk/res/values-zh-rTW/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Health Connect 移除應用程式權限的原因"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"如果應用程式在 Google Play 中遭到停權或移除,Health Connect 會自動移除該應用程式的權限。\n\n這表示該應用程式無法再存取 Health Connect 中儲存的資料。如果應用程式曾寫入資料,就會列在已停用應用程式的清單中。"</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"我知道了"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"開始使用 Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"開始使用 Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"Health Connect 會儲存健康與健身資料,方便你在手機上同步不同應用程式的資料"</string>
     <string name="share_data" msgid="3481932156368883946">"與應用程式分享資料"</string>
     <string name="share_data_description" msgid="2919871301634375092">"選擇每個應用程式可讀取或寫入 Health Connect 的資料"</string>
diff --git a/apk/res/values-zu/strings.xml b/apk/res/values-zu/strings.xml
index 6b00919..9518702 100644
--- a/apk/res/values-zu/strings.xml
+++ b/apk/res/values-zu/strings.xml
@@ -293,7 +293,7 @@
     <string name="denied_apps_dialog_title" msgid="7470227827315635099">"Isizathu sokuba i-Health Connect isuse izimvume ze-app"</string>
     <string name="denied_apps_dialog_message" msgid="7876664965504466099">"Uma i-app imiswe okwesikhashana noma lisuswa ku-Google Play, i-Health Connect isusa izimvume zayo ngokuzenzakalelayo.\n\nLokhu kusho ukuthi i-app ngeke isakwazi ukufinyelela idatha egcinwe ku-Health Connect. Uma le-app inedatha ebhaliwe ngaphambilini, ivela kuhlu lwama-app angasebenzi."</string>
     <string name="denied_apps_dialog_got_it_button" msgid="4698003516923683959">"Ngiyezwa"</string>
-    <string name="onboarding_title" msgid="7930941018430608076">"Qalisa nge-Health Connect"</string>
+    <string name="onboarding_title" msgid="8550656211291180188">"Qalisa nge-Health Connect"</string>
     <string name="onboarding_description" msgid="4873129122057931161">"I-Health Connect igcina ngokuvikelekile idatha yakho yezempilo nokufaneleka, okukunikeza indlela elula yokuvumelanisa ama-app ahlukile efonini yakho"</string>
     <string name="share_data" msgid="3481932156368883946">"Yabelana ngedatha nama-app akho"</string>
     <string name="share_data_description" msgid="2919871301634375092">"Khetha idatha i-app ngayinye engayifunda noma iyibhalele ku-Health Connect"</string>
diff --git a/apk/res/values/strings.xml b/apk/res/values/strings.xml
index cb1893d..bbcee07 100644
--- a/apk/res/values/strings.xml
+++ b/apk/res/values/strings.xml
@@ -395,7 +395,7 @@
     <!--endregion-->
 
     <!--region Onboarding -->
-    <string name="onboarding_title" description="Label used to show the title of onboarding page when user opens Health Connect app for the fist time">Get Started with Health&#160;Connect</string>
+    <string name="onboarding_title" description="Label used to show the title of onboarding page when user opens Health Connect app for the fist time">Get started with Health&#160;Connect</string>
     <string name="onboarding_description" description="Content description of Health Connect app on the onboarding page">Health&#160;Connect stores your health and fitness data, giving you a simple way to sync the different apps on your phone</string>
     <string name="share_data" description="Label used to show how the user can share data with apps">Share data with your apps</string>
     <string name="share_data_description" description="Content description for how the user can share data with apps">Choose the data each app can read or write to Health&#160;Connect</string>
diff --git a/apk/src/com/android/healthconnect/controller/autodelete/AutoDeleteRangePickerPreference.kt b/apk/src/com/android/healthconnect/controller/autodelete/AutoDeleteRangePickerPreference.kt
index 83bcb2e..6c38250 100644
--- a/apk/src/com/android/healthconnect/controller/autodelete/AutoDeleteRangePickerPreference.kt
+++ b/apk/src/com/android/healthconnect/controller/autodelete/AutoDeleteRangePickerPreference.kt
@@ -54,10 +54,10 @@
         key = AUTO_DELETE_RANGE_PICKER_PREFERENCE_KEY
     }
 
-    override fun onBindViewHolder(holder: PreferenceViewHolder?) {
+    override fun onBindViewHolder(holder: PreferenceViewHolder) {
         super.onBindViewHolder(holder)
 
-        val widgetFrame: ViewGroup = holder?.findViewById(android.R.id.widget_frame) as ViewGroup
+        val widgetFrame: ViewGroup = holder.findViewById(android.R.id.widget_frame) as ViewGroup
         val widgetFrameParent: LinearLayout = widgetFrame.parent as LinearLayout
 
         val iconFrame: LinearLayout? = holder.findViewById(android.R.id.icon_frame) as LinearLayout?
diff --git a/apk/src/com/android/healthconnect/controller/dataentries/units/UnitsFragment.kt b/apk/src/com/android/healthconnect/controller/dataentries/units/UnitsFragment.kt
index 0501a7d..e5598b2 100644
--- a/apk/src/com/android/healthconnect/controller/dataentries/units/UnitsFragment.kt
+++ b/apk/src/com/android/healthconnect/controller/dataentries/units/UnitsFragment.kt
@@ -145,7 +145,7 @@
         unitValue: String,
         onNewValue: (String) -> Unit
     ): ListPreference {
-        val listPreference = ListPreference(context)
+        val listPreference = ListPreference(requireContext())
         logger.logImpression(logName)
 
         with(listPreference) {
diff --git a/apk/src/com/android/healthconnect/controller/home/HomeFragment.kt b/apk/src/com/android/healthconnect/controller/home/HomeFragment.kt
index 5bc280a..f4be1f3 100644
--- a/apk/src/com/android/healthconnect/controller/home/HomeFragment.kt
+++ b/apk/src/com/android/healthconnect/controller/home/HomeFragment.kt
@@ -175,7 +175,7 @@
             MigrationState.MODULE_UPGRADE_REQUIRED,
             MigrationState.APP_UPGRADE_REQUIRED -> {
                 migrationBanner = getMigrationBanner()
-                preferenceScreen.addPreference(migrationBanner)
+                preferenceScreen.addPreference(migrationBanner as BannerPreference)
             }
             MigrationState.COMPLETE -> {
                 maybeShowWhatsNewDialog(requireContext())
diff --git a/apk/src/com/android/healthconnect/controller/migration/MigrationActivity.kt b/apk/src/com/android/healthconnect/controller/migration/MigrationActivity.kt
index 0cd6d05..e5c66d9 100644
--- a/apk/src/com/android/healthconnect/controller/migration/MigrationActivity.kt
+++ b/apk/src/com/android/healthconnect/controller/migration/MigrationActivity.kt
@@ -187,9 +187,4 @@
         return true
     }
 
-    override fun onResume() {
-        super.onResume()
-        val navController = findNavController(R.id.nav_host_fragment)
-        navController.setGraph(R.navigation.migration_nav_graph)
-    }
 }
diff --git a/apk/src/com/android/healthconnect/controller/permissions/api/HealthPermissionManagerImpl.kt b/apk/src/com/android/healthconnect/controller/permissions/api/HealthPermissionManagerImpl.kt
index 962fcd8..bc27231 100644
--- a/apk/src/com/android/healthconnect/controller/permissions/api/HealthPermissionManagerImpl.kt
+++ b/apk/src/com/android/healthconnect/controller/permissions/api/HealthPermissionManagerImpl.kt
@@ -50,6 +50,6 @@
     }
 
     override fun loadStartAccessDate(packageName: String?): Instant? {
-        return manager.getHealthDataHistoricalAccessStartDate(packageName)
+        return packageName?.let { manager.getHealthDataHistoricalAccessStartDate(it) }
     }
 }
diff --git a/apk/src/com/android/healthconnect/controller/permissions/app/ConnectedAppFragment.kt b/apk/src/com/android/healthconnect/controller/permissions/app/ConnectedAppFragment.kt
index d380c53..b7f2104 100644
--- a/apk/src/com/android/healthconnect/controller/permissions/app/ConnectedAppFragment.kt
+++ b/apk/src/com/android/healthconnect/controller/permissions/app/ConnectedAppFragment.kt
@@ -34,6 +34,7 @@
 import android.content.Intent.EXTRA_PACKAGE_NAME
 import android.os.Bundle
 import android.view.View
+import android.widget.CompoundButton.OnCheckedChangeListener
 import android.widget.Toast
 import androidx.core.os.bundleOf
 import androidx.fragment.app.activityViewModels
@@ -74,7 +75,6 @@
 import com.android.healthconnect.controller.utils.showLoadingDialog
 import com.android.settingslib.widget.AppHeaderPreference
 import com.android.settingslib.widget.FooterPreference
-import com.android.settingslib.widget.OnMainSwitchChangeListener
 import dagger.hilt.android.AndroidEntryPoint
 import javax.inject.Inject
 
@@ -232,11 +232,11 @@
         }
     }
 
-    private val onSwitchChangeListener = OnMainSwitchChangeListener { switchView, isChecked ->
+    private val onSwitchChangeListener = OnCheckedChangeListener { buttonView, isChecked ->
         if (isChecked) {
             val permissionsUpdated = appPermissionViewModel.grantAllPermissions(packageName)
             if (!permissionsUpdated) {
-                switchView.isChecked = false
+                buttonView.isChecked = false
                 Toast.makeText(requireContext(), R.string.default_error, Toast.LENGTH_SHORT).show()
             }
         } else {
diff --git a/apk/src/com/android/healthconnect/controller/permissions/app/SettingsManageAppPermissionsFragment.kt b/apk/src/com/android/healthconnect/controller/permissions/app/SettingsManageAppPermissionsFragment.kt
index 2609247..c210953 100644
--- a/apk/src/com/android/healthconnect/controller/permissions/app/SettingsManageAppPermissionsFragment.kt
+++ b/apk/src/com/android/healthconnect/controller/permissions/app/SettingsManageAppPermissionsFragment.kt
@@ -37,11 +37,12 @@
 import android.content.Intent.EXTRA_PACKAGE_NAME
 import android.os.Bundle
 import android.view.View
+import android.widget.CompoundButton.OnCheckedChangeListener
 import android.widget.Toast
 import androidx.fragment.app.activityViewModels
 import androidx.fragment.app.viewModels
 import androidx.preference.PreferenceGroup
-import androidx.preference.SwitchPreference
+import androidx.preference.TwoStatePreference
 import com.android.healthconnect.controller.R
 import com.android.healthconnect.controller.migration.MigrationActivity.Companion.MIGRATION_ACTIVITY_INTENT
 import com.android.healthconnect.controller.migration.MigrationActivity.Companion.maybeShowWhatsNewDialog
@@ -66,7 +67,6 @@
 import com.android.healthconnect.controller.utils.showLoadingDialog
 import com.android.settingslib.widget.AppHeaderPreference
 import com.android.settingslib.widget.FooterPreference
-import com.android.settingslib.widget.OnMainSwitchChangeListener
 import dagger.hilt.android.AndroidEntryPoint
 import javax.inject.Inject
 
@@ -96,7 +96,7 @@
     private lateinit var appName: String
     private var isPackageSupported = true
     private val viewModel: AppPermissionViewModel by activityViewModels()
-    private val permissionMap: MutableMap<HealthPermission, SwitchPreference> = mutableMapOf()
+    private val permissionMap: MutableMap<HealthPermission, TwoStatePreference> = mutableMapOf()
     private val migrationViewModel: MigrationViewModel by viewModels()
 
     private val allowAllPreference: HealthMainSwitchPreference? by lazy {
@@ -230,7 +230,7 @@
         }
     }
 
-    private val onSwitchChangeListener = OnMainSwitchChangeListener { switchView, isChecked ->
+    private val onSwitchChangeListener = OnCheckedChangeListener { switchView, isChecked ->
         if (isChecked) {
             val permissionsUpdated = viewModel.grantAllPermissions(packageName)
             if (!permissionsUpdated) {
diff --git a/apk/src/com/android/healthconnect/controller/permissions/connectedapps/ConnectedAppsFragment.kt b/apk/src/com/android/healthconnect/controller/permissions/connectedapps/ConnectedAppsFragment.kt
index 5e1ea57..2ed63d2 100644
--- a/apk/src/com/android/healthconnect/controller/permissions/connectedapps/ConnectedAppsFragment.kt
+++ b/apk/src/com/android/healthconnect/controller/permissions/connectedapps/ConnectedAppsFragment.kt
@@ -85,28 +85,28 @@
     private val viewModel: ConnectedAppsViewModel by viewModels()
     private lateinit var searchMenuItem: MenuItem
 
-    private val mTopIntro: TopIntroPreference? by lazy {
-        preferenceScreen.findPreference(TOP_INTRO)
+    private val mTopIntro: TopIntroPreference by lazy {
+        preferenceScreen.findPreference(TOP_INTRO)!!
     }
 
-    private val mAllowedAppsCategory: PreferenceGroup? by lazy {
-        preferenceScreen.findPreference(ALLOWED_APPS_CATEGORY)
+    private val mAllowedAppsCategory: PreferenceGroup by lazy {
+        preferenceScreen.findPreference(ALLOWED_APPS_CATEGORY)!!
     }
 
-    private val mNotAllowedAppsCategory: PreferenceGroup? by lazy {
-        preferenceScreen.findPreference(NOT_ALLOWED_APPS)
+    private val mNotAllowedAppsCategory: PreferenceGroup by lazy {
+        preferenceScreen.findPreference(NOT_ALLOWED_APPS)!!
     }
 
-    private val mInactiveAppsCategory: PreferenceGroup? by lazy {
-        preferenceScreen.findPreference(INACTIVE_APPS)
+    private val mInactiveAppsCategory: PreferenceGroup by lazy {
+        preferenceScreen.findPreference(INACTIVE_APPS)!!
     }
 
-    private val mThingsToTryCategory: PreferenceGroup? by lazy {
-        preferenceScreen.findPreference(THINGS_TO_TRY)
+    private val mThingsToTryCategory: PreferenceGroup by lazy {
+        preferenceScreen.findPreference(THINGS_TO_TRY)!!
     }
 
-    private val mSettingsAndHelpCategory: PreferenceGroup? by lazy {
-        preferenceScreen.findPreference(SETTINGS_AND_HELP)
+    private val mSettingsAndHelpCategory: PreferenceGroup by lazy {
+        preferenceScreen.findPreference(SETTINGS_AND_HELP)!!
     }
 
     override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
@@ -279,7 +279,7 @@
     }
 
     private fun getNoAppsPreference(@StringRes res: Int): Preference {
-        return Preference(context).also {
+        return Preference(requireContext()).also {
             it.setTitle(res)
             it.isSelectable = false
         }
diff --git a/apk/src/com/android/healthconnect/controller/permissions/connectedapps/HealthAppPreference.kt b/apk/src/com/android/healthconnect/controller/permissions/connectedapps/HealthAppPreference.kt
index a170035..8e6b298 100644
--- a/apk/src/com/android/healthconnect/controller/permissions/connectedapps/HealthAppPreference.kt
+++ b/apk/src/com/android/healthconnect/controller/permissions/connectedapps/HealthAppPreference.kt
@@ -49,11 +49,11 @@
     }
 
     override fun setOnPreferenceClickListener(
-        onPreferenceClickListener: OnPreferenceClickListener
+        onPreferenceClickListener: OnPreferenceClickListener?
     ) {
         val loggingClickListener = OnPreferenceClickListener {
             logger.logInteraction(logName)
-            onPreferenceClickListener.onPreferenceClick(it)
+            onPreferenceClickListener?.onPreferenceClick(it) ?: false
         }
         super.setOnPreferenceClickListener(loggingClickListener)
     }
@@ -67,7 +67,7 @@
         return preference is HealthAppPreference && appMetadata == preference.appMetadata
     }
 
-    override fun onBindViewHolder(view: PreferenceViewHolder?) {
+    override fun onBindViewHolder(view: PreferenceViewHolder) {
         super.onBindViewHolder(view)
     }
 }
diff --git a/apk/src/com/android/healthconnect/controller/permissions/connectedapps/SettingsManagePermissionFragment.kt b/apk/src/com/android/healthconnect/controller/permissions/connectedapps/SettingsManagePermissionFragment.kt
index 4799eb1..327cbaf 100644
--- a/apk/src/com/android/healthconnect/controller/permissions/connectedapps/SettingsManagePermissionFragment.kt
+++ b/apk/src/com/android/healthconnect/controller/permissions/connectedapps/SettingsManagePermissionFragment.kt
@@ -166,7 +166,7 @@
     }
 
     private fun getNoAppsPreference(@StringRes res: Int): Preference {
-        return Preference(context).also {
+        return Preference(requireContext()).also {
             it.setTitle(res)
             it.isSelectable = false
         }
diff --git a/apk/src/com/android/healthconnect/controller/permissions/connectedapps/searchapps/SearchAppsFragment.kt b/apk/src/com/android/healthconnect/controller/permissions/connectedapps/searchapps/SearchAppsFragment.kt
index c9a864b..a683b98 100644
--- a/apk/src/com/android/healthconnect/controller/permissions/connectedapps/searchapps/SearchAppsFragment.kt
+++ b/apk/src/com/android/healthconnect/controller/permissions/connectedapps/searchapps/SearchAppsFragment.kt
@@ -59,20 +59,20 @@
     private var searchView: SearchView? = null
     private val viewModel: ConnectedAppsViewModel by viewModels()
 
-    private val allowedAppsCategory: PreferenceGroup? by lazy {
-        preferenceScreen.findPreference(ALLOWED_APPS_CATEGORY)
+    private val allowedAppsCategory: PreferenceGroup by lazy {
+        preferenceScreen.findPreference(ALLOWED_APPS_CATEGORY)!!
     }
-    private val notAllowedAppsCategory: PreferenceGroup? by lazy {
-        preferenceScreen.findPreference(NOT_ALLOWED_APPS)
+    private val notAllowedAppsCategory: PreferenceGroup by lazy {
+        preferenceScreen.findPreference(NOT_ALLOWED_APPS)!!
     }
-    private val inactiveAppsPreference: PreferenceGroup? by lazy {
-        preferenceScreen.findPreference(INACTIVE_APPS)
+    private val inactiveAppsPreference: PreferenceGroup by lazy {
+        preferenceScreen.findPreference(INACTIVE_APPS)!!
     }
-    private val emptySearchResultsPreference: NoSearchResultPreference? by lazy {
-        preferenceScreen.findPreference(EMPTY_SEARCH_RESULT)
+    private val emptySearchResultsPreference: NoSearchResultPreference by lazy {
+        preferenceScreen.findPreference(EMPTY_SEARCH_RESULT)!!
     }
-    private val topIntroPreference: TopIntroPreference? by lazy {
-        preferenceScreen.findPreference(TOP_INTRO_PREF)
+    private val topIntroPreference: TopIntroPreference by lazy {
+        preferenceScreen.findPreference(TOP_INTRO_PREF)!!
     }
 
     private val menuProvider =
diff --git a/apk/src/com/android/healthconnect/controller/permissions/request/PermissionsFragment.kt b/apk/src/com/android/healthconnect/controller/permissions/request/PermissionsFragment.kt
index d5b200e..2be9330 100644
--- a/apk/src/com/android/healthconnect/controller/permissions/request/PermissionsFragment.kt
+++ b/apk/src/com/android/healthconnect/controller/permissions/request/PermissionsFragment.kt
@@ -22,11 +22,12 @@
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import android.widget.CompoundButton.OnCheckedChangeListener
 import androidx.fragment.app.activityViewModels
 import androidx.preference.Preference
 import androidx.preference.PreferenceFragmentCompat
 import androidx.preference.PreferenceGroup
-import androidx.preference.SwitchPreference
+import androidx.preference.TwoStatePreference
 import com.android.healthconnect.controller.R
 import com.android.healthconnect.controller.permissions.data.HealthPermission
 import com.android.healthconnect.controller.permissions.data.HealthPermissionStrings.Companion.fromPermissionType
@@ -40,7 +41,6 @@
 import com.android.healthconnect.controller.utils.logging.HealthConnectLogger
 import com.android.healthconnect.controller.utils.logging.PageName
 import com.android.healthconnect.controller.utils.logging.PermissionsElement
-import com.android.settingslib.widget.OnMainSwitchChangeListener
 import dagger.hilt.android.AndroidEntryPoint
 import javax.inject.Inject
 
@@ -76,13 +76,12 @@
         preferenceScreen.findPreference(WRITE_CATEGORY)
     }
 
-    private val onSwitchChangeListener: OnMainSwitchChangeListener =
-        OnMainSwitchChangeListener { _, grant ->
+    private val onSwitchChangeListener = OnCheckedChangeListener { _, grant ->
             mReadPermissionCategory?.children?.forEach { preference ->
-                (preference as SwitchPreference).isChecked = grant
+                (preference as TwoStatePreference).isChecked = grant
             }
             mWritePermissionCategory?.children?.forEach { preference ->
-                (preference as SwitchPreference).isChecked = grant
+                (preference as TwoStatePreference).isChecked = grant
             }
             viewModel.updatePermissions(grant)
         }
@@ -102,7 +101,7 @@
         inflater: LayoutInflater,
         container: ViewGroup?,
         savedInstanceState: Bundle?
-    ): View? {
+    ): View {
         logger.setPageId(pageName)
         return super.onCreateView(inflater, container, savedInstanceState)
     }
diff --git a/apk/src/com/android/healthconnect/controller/recentaccess/RecentAccessFragment.kt b/apk/src/com/android/healthconnect/controller/recentaccess/RecentAccessFragment.kt
index 5520c62..8682e93 100644
--- a/apk/src/com/android/healthconnect/controller/recentaccess/RecentAccessFragment.kt
+++ b/apk/src/com/android/healthconnect/controller/recentaccess/RecentAccessFragment.kt
@@ -82,7 +82,7 @@
         inflater: LayoutInflater,
         container: ViewGroup?,
         savedInstanceState: Bundle?
-    ): View? {
+    ): View {
         val rootView = super.onCreateView(inflater, container, savedInstanceState)
 
         contentParent = requireActivity().findViewById(android.R.id.content)
diff --git a/apk/src/com/android/healthconnect/controller/shared/inactiveapp/InactiveAppPreference.kt b/apk/src/com/android/healthconnect/controller/shared/inactiveapp/InactiveAppPreference.kt
index b9c29b9..6573434 100644
--- a/apk/src/com/android/healthconnect/controller/shared/inactiveapp/InactiveAppPreference.kt
+++ b/apk/src/com/android/healthconnect/controller/shared/inactiveapp/InactiveAppPreference.kt
@@ -49,10 +49,10 @@
         logger.logImpression(logName)
     }
 
-    override fun onBindViewHolder(holder: PreferenceViewHolder?) {
+    override fun onBindViewHolder(holder: PreferenceViewHolder) {
         super.onBindViewHolder(holder)
 
-        val widgetFrame: ViewGroup? = holder?.findViewById(android.R.id.widget_frame) as ViewGroup?
+        val widgetFrame: ViewGroup? = holder.findViewById(android.R.id.widget_frame) as ViewGroup?
         widgetFrame?.setOnClickListener(deleteButtonListener)
 
         val widgetFrameParent: ViewGroup? = widgetFrame?.parent as ViewGroup?
diff --git a/apk/src/com/android/healthconnect/controller/shared/preference/HealthMainSwitchPreference.kt b/apk/src/com/android/healthconnect/controller/shared/preference/HealthMainSwitchPreference.kt
index 0148c4a..3776608 100644
--- a/apk/src/com/android/healthconnect/controller/shared/preference/HealthMainSwitchPreference.kt
+++ b/apk/src/com/android/healthconnect/controller/shared/preference/HealthMainSwitchPreference.kt
@@ -17,12 +17,12 @@
 
 import android.content.Context
 import android.util.AttributeSet
+import android.widget.CompoundButton.OnCheckedChangeListener
 import com.android.healthconnect.controller.utils.logging.ElementName
 import com.android.healthconnect.controller.utils.logging.ErrorPageElement
 import com.android.healthconnect.controller.utils.logging.HealthConnectLogger
 import com.android.healthconnect.controller.utils.logging.HealthConnectLoggerEntryPoint
 import com.android.settingslib.widget.MainSwitchPreference
-import com.android.settingslib.widget.OnMainSwitchChangeListener
 import dagger.hilt.android.EntryPointAccessors
 
 /** A [MainSwitchPreference] that allows logging. */
@@ -33,15 +33,15 @@
     private var logger: HealthConnectLogger
     var logNameActive: ElementName = ErrorPageElement.UNKNOWN_ELEMENT
     var logNameInactive: ElementName = ErrorPageElement.UNKNOWN_ELEMENT
-    private var loggingSwitchListener: OnMainSwitchChangeListener
+    private var loggingSwitchListener: OnCheckedChangeListener
 
     init {
         val hiltEntryPoint =
             EntryPointAccessors.fromApplication(
                 context.applicationContext, HealthConnectLoggerEntryPoint::class.java)
         logger = hiltEntryPoint.logger()
-        loggingSwitchListener = OnMainSwitchChangeListener { preference, newValue ->
-            if (preference.isPressed) {
+        loggingSwitchListener = OnCheckedChangeListener { buttonView, newValue ->
+            if (buttonView.isPressed) {
                 if (newValue) {
                     logger.logInteraction(
                         logNameInactive,
diff --git a/apk/src/com/android/healthconnect/controller/shared/preference/HealthPreference.kt b/apk/src/com/android/healthconnect/controller/shared/preference/HealthPreference.kt
index 71abfc2..6178e7a 100644
--- a/apk/src/com/android/healthconnect/controller/shared/preference/HealthPreference.kt
+++ b/apk/src/com/android/healthconnect/controller/shared/preference/HealthPreference.kt
@@ -55,11 +55,11 @@
     //    }
 
     override fun setOnPreferenceClickListener(
-        onPreferenceClickListener: OnPreferenceClickListener
+        onPreferenceClickListener: OnPreferenceClickListener?
     ) {
         val loggingClickListener = OnPreferenceClickListener {
             logger.logInteraction(logName)
-            onPreferenceClickListener.onPreferenceClick(it)
+            onPreferenceClickListener?.onPreferenceClick(it) ?: false
         }
         super.setOnPreferenceClickListener(loggingClickListener)
     }
diff --git a/apk/src/com/android/healthconnect/controller/shared/preference/HealthPreferenceFragment.kt b/apk/src/com/android/healthconnect/controller/shared/preference/HealthPreferenceFragment.kt
index f78b8dc..50241f4 100644
--- a/apk/src/com/android/healthconnect/controller/shared/preference/HealthPreferenceFragment.kt
+++ b/apk/src/com/android/healthconnect/controller/shared/preference/HealthPreferenceFragment.kt
@@ -72,7 +72,7 @@
         inflater: LayoutInflater,
         container: ViewGroup?,
         savedInstanceState: Bundle?
-    ): View? {
+    ): View {
         logger.setPageId(pageName)
         val rootView =
             inflater.inflate(R.layout.preference_frame, container, /*attachToRoot */ false)
@@ -96,7 +96,7 @@
         preferenceManager.preferenceComparisonCallback = HealthPreferenceComparisonCallback()
     }
 
-    override fun onCreateAdapter(preferenceScreen: PreferenceScreen?): RecyclerView.Adapter<*> {
+    override fun onCreateAdapter(preferenceScreen: PreferenceScreen): RecyclerView.Adapter<*> {
         val adapter = super.onCreateAdapter(preferenceScreen)
         /* By default, the PreferenceGroupAdapter does setHasStableIds(true). Since each Preference
          * is internally allocated with an auto-incremented ID, it does not allow us to gracefully
diff --git a/apk/tests/src/com/android/healthconnect/controller/tests/onboarding/OnboardingScreenTest.kt b/apk/tests/src/com/android/healthconnect/controller/tests/onboarding/OnboardingScreenTest.kt
index dffc80a..775f8e6 100644
--- a/apk/tests/src/com/android/healthconnect/controller/tests/onboarding/OnboardingScreenTest.kt
+++ b/apk/tests/src/com/android/healthconnect/controller/tests/onboarding/OnboardingScreenTest.kt
@@ -62,7 +62,7 @@
     fun onboardingScreen_isDisplayedCorrectly() {
         startOnboardingActivity()
 
-        onView(withText("Get Started with Health\u00A0Connect")).check(matches(isDisplayed()))
+        onView(withText("Get started with Health\u00A0Connect")).check(matches(isDisplayed()))
         onView(
                 withText(
                     "Health\u00A0Connect stores your health and fitness data, giving you a simple way to sync the different apps on your phone"))
diff --git a/backuprestore/tests/Android.bp b/backuprestore/tests/Android.bp
index bffae51..903e03f 100644
--- a/backuprestore/tests/Android.bp
+++ b/backuprestore/tests/Android.bp
@@ -28,7 +28,7 @@
     ],
     test_suites: [
         "mts-healthfitness",
-        "general-tests"
+        "general-tests",
     ],
     defaults: ["mts-target-sdk-version-current"],
     static_libs: [
@@ -36,7 +36,7 @@
         "androidx.test.core",
         "androidx.test.runner",
         "mockito-target-minus-junit4",
-        "truth-prebuilt",
+        "truth",
     ],
     libs: [
         "android.test.base",
diff --git a/framework/api/lint-baseline.txt b/framework/api/lint-baseline.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/framework/api/lint-baseline.txt
diff --git a/framework/api/module-lib-lint-baseline.txt b/framework/api/module-lib-lint-baseline.txt
new file mode 100644
index 0000000..1740244
--- /dev/null
+++ b/framework/api/module-lib-lint-baseline.txt
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+BroadcastBehavior: android.health.connect.HealthConnectManager#ACTION_HEALTH_CONNECT_MIGRATION_READY:
+    Field 'ACTION_HEALTH_CONNECT_MIGRATION_READY' is missing @BroadcastBehavior
diff --git a/framework/api/system-lint-baseline.txt b/framework/api/system-lint-baseline.txt
new file mode 100644
index 0000000..1740244
--- /dev/null
+++ b/framework/api/system-lint-baseline.txt
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+BroadcastBehavior: android.health.connect.HealthConnectManager#ACTION_HEALTH_CONNECT_MIGRATION_READY:
+    Field 'ACTION_HEALTH_CONNECT_MIGRATION_READY' is missing @BroadcastBehavior
diff --git a/framework/java/android/health/connect/migration/MigrationException.java b/framework/java/android/health/connect/migration/MigrationException.java
index 8616060..9f3d4f2 100644
--- a/framework/java/android/health/connect/migration/MigrationException.java
+++ b/framework/java/android/health/connect/migration/MigrationException.java
@@ -23,6 +23,9 @@
 import android.os.Parcel;
 import android.os.Parcelable;
 
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
 /**
  * An exception thrown when an error encountered during migration.
  *
@@ -115,5 +118,6 @@
         ERROR_MIGRATE_ENTITY,
         ERROR_MIGRATION_UNAVAILABLE,
     })
+    @Retention(RetentionPolicy.SOURCE)
     public @interface ErrorCode {}
 }
diff --git a/testapps/toolbox/src/com/android/healthconnect/testapps/toolbox/ui/HomeFragment.kt b/testapps/toolbox/src/com/android/healthconnect/testapps/toolbox/ui/HomeFragment.kt
index 69f15ba..2cf5f3a 100644
--- a/testapps/toolbox/src/com/android/healthconnect/testapps/toolbox/ui/HomeFragment.kt
+++ b/testapps/toolbox/src/com/android/healthconnect/testapps/toolbox/ui/HomeFragment.kt
@@ -21,7 +21,6 @@
 import android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
 import android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED
 import android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED
-import android.health.connect.HealthConnectException
 import android.health.connect.HealthConnectManager
 import android.health.connect.HealthPermissions
 import android.health.connect.datatypes.ExerciseSessionRecord
@@ -47,24 +46,23 @@
 import com.android.healthconnect.testapps.toolbox.seed.SeedData
 import com.android.healthconnect.testapps.toolbox.utils.GeneralUtils
 import com.android.healthconnect.testapps.toolbox.viewmodels.PerformanceTestingViewModel
-import kotlinx.coroutines.runBlocking
 import java.time.Instant
 import java.time.temporal.ChronoUnit
-
+import kotlinx.coroutines.runBlocking
 
 /** Home fragment for Health Connect Toolbox. */
 class HomeFragment : Fragment() {
 
     override fun onCreateView(
-            inflater: LayoutInflater,
-            container: ViewGroup?,
-            savedInstanceState: Bundle?,
+        inflater: LayoutInflater,
+        container: ViewGroup?,
+        savedInstanceState: Bundle?,
     ): View? {
         return inflater.inflate(R.layout.fragment_home, container, false)
     }
 
     private lateinit var mRequestPermissionLauncher: ActivityResultLauncher<Array<String>>
-    private lateinit var mRequestRoutePermissionLauncher: ActivityResultLauncher<String>
+    private lateinit var mRequestRoutePermissionLauncher: ActivityResultLauncher<Array<String>>
     private lateinit var mNavigationController: NavController
     private val manager by lazy {
         requireContext().getSystemService(HealthConnectManager::class.java)
@@ -77,15 +75,19 @@
         // Starting API Level 30 If permission is denied more than once, user doesn't see the dialog
         // asking permissions again unless they grant the permission from settings.
         mRequestPermissionLauncher =
-                registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissionMap: Map<String, Boolean> ->
-                    requestPermissionResultHandler(permissionMap)
-                }
+            registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) {
+                permissionMap: Map<String, Boolean> ->
+                requestPermissionResultHandler(permissionMap)
+            }
         mRequestRoutePermissionLauncher =
-                registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
-                    if (granted) {
-                        readRoute()
-                    }
+            registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) {
+                permissionMap: Map<String, Boolean> ->
+                val granted: Boolean = !permissionMap.values.contains(false)
+
+                if (granted) {
+                    readRoute()
                 }
+            }
     }
 
     private fun requestPermissionResultHandler(permissionMap: Map<String, Boolean>) {
@@ -99,14 +101,14 @@
         if (numberOfPermissionsMissing == 0) {
             Toast.makeText(
                     this.requireContext(), R.string.all_permissions_success, Toast.LENGTH_SHORT)
-                    .show()
+                .show()
         } else {
             Toast.makeText(
                     this.requireContext(),
                     getString(
-                            R.string.number_of_permissions_not_granted, numberOfPermissionsMissing),
+                        R.string.number_of_permissions_not_granted, numberOfPermissionsMissing),
                     Toast.LENGTH_SHORT)
-                    .show()
+                .show()
         }
     }
 
@@ -114,9 +116,9 @@
         super.onViewCreated(view, savedInstanceState)
         val performanceTesting = PerformanceTesting(performanceTestingViewModel)
         childFragmentManager
-                .beginTransaction()
-                .add(performanceTesting, "PERFORMANCE_TESTING_FRAGMENT")
-                .commit()
+            .beginTransaction()
+            .add(performanceTesting, "PERFORMANCE_TESTING_FRAGMENT")
+            .commit()
         view.findViewById<Button>(R.id.launch_health_connect_button).setOnClickListener {
             launchHealthConnect()
         }
@@ -149,25 +151,27 @@
         mNavigationController = findNavController()
     }
 
-  private fun launchHealthConnect() {
-    val intent = Intent("android.health.connect.action.HEALTH_HOME_SETTINGS")
-    intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
-    startActivity(intent)
-  }
+    private fun launchHealthConnect() {
+        val intent = Intent("android.health.connect.action.HEALTH_HOME_SETTINGS")
+        intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
+        startActivity(intent)
+    }
 
-  private fun seedDataButtonPressed() {
+    private fun seedDataButtonPressed() {
         try {
-          SeedData(requireContext(), manager).seedData()
-          Toast.makeText(this.requireContext(), R.string.toast_seed_data_success, Toast.LENGTH_SHORT).show()
+            SeedData(requireContext(), manager).seedData()
+            Toast.makeText(
+                    this.requireContext(), R.string.toast_seed_data_success, Toast.LENGTH_SHORT)
+                .show()
         } catch (ex: Exception) {
-          Toast.makeText(this.requireContext(), ex.localizedMessage, Toast.LENGTH_SHORT).show()
+            Toast.makeText(this.requireContext(), ex.localizedMessage, Toast.LENGTH_SHORT).show()
         }
     }
 
     private fun isPermissionMissing(): Boolean {
         for (permission in ALL_PERMISSIONS) {
             if (ContextCompat.checkSelfPermission(this.requireContext(), permission) !=
-                    PackageManager.PERMISSION_GRANTED) {
+                PackageManager.PERMISSION_GRANTED) {
                 return true
             }
         }
@@ -180,18 +184,18 @@
         val compName = ComponentName(packageName, "$packageName.AliasMainActivity")
         val componentState = pm.getComponentEnabledSetting(compName)
         var desiredState = COMPONENT_ENABLED_STATE_ENABLED
-        if (componentState == COMPONENT_ENABLED_STATE_DEFAULT || componentState == COMPONENT_ENABLED_STATE_ENABLED) {
+        if (componentState == COMPONENT_ENABLED_STATE_DEFAULT ||
+            componentState == COMPONENT_ENABLED_STATE_ENABLED) {
             desiredState = COMPONENT_ENABLED_STATE_DISABLED
         }
-        pm.setComponentEnabledSetting(
-                compName,
-                desiredState,
-                PackageManager.DONT_KILL_APP)
+        pm.setComponentEnabledSetting(compName, desiredState, PackageManager.DONT_KILL_APP)
 
-        val toastText = if (desiredState == COMPONENT_ENABLED_STATE_ENABLED) R.string.toast_permission_filter_enabled else R.string.toast_permission_filter_disabled
+        val toastText =
+            if (desiredState == COMPONENT_ENABLED_STATE_ENABLED)
+                R.string.toast_permission_filter_enabled
+            else R.string.toast_permission_filter_disabled
 
         Toast.makeText(this.requireContext(), toastText, Toast.LENGTH_SHORT).show()
-
     }
 
     private fun requestPermissions() {
@@ -203,40 +207,45 @@
                 this.requireContext(),
                 R.string.all_permissions_already_granted_toast,
                 Toast.LENGTH_LONG)
-                .show()
+            .show()
     }
 
     private fun requestRoutesPermissions() {
-        if (ContextCompat.checkSelfPermission(
-                        requireContext(), HealthPermissions.WRITE_EXERCISE_ROUTE) !=
-                PackageManager.PERMISSION_GRANTED) {
-            mRequestRoutePermissionLauncher.launch(HealthPermissions.WRITE_EXERCISE_ROUTE)
+        if (!(isPermissionGranted(HealthPermissions.WRITE_EXERCISE_ROUTE) &&
+            isPermissionGranted(HealthPermissions.WRITE_EXERCISE))) {
+            mRequestRoutePermissionLauncher.launch(
+                arrayOf(HealthPermissions.WRITE_EXERCISE_ROUTE, HealthPermissions.WRITE_EXERCISE))
             return
         }
         readRoute()
     }
 
+    private fun isPermissionGranted(permission: String): Boolean {
+        return ContextCompat.checkSelfPermission(requireContext(), permission) ==
+            PackageManager.PERMISSION_GRANTED
+    }
+
     private fun readRoute() {
         // insert a route data
         val start = Instant.now().truncatedTo(ChronoUnit.DAYS)
         val end = start.plusSeconds(100_000)
         val route =
-                ExerciseSessionRecord.Builder(
-                        GeneralUtils.getMetaData(requireContext()),
-                        start,
-                        end,
-                        ExerciseSessionType.EXERCISE_SESSION_TYPE_RUNNING)
-                        .setRoute(generateExerciseRouteFromLocations(WARSAW_ROUTE, start.toEpochMilli()))
-                        .build()
+            ExerciseSessionRecord.Builder(
+                    GeneralUtils.getMetaData(requireContext()),
+                    start,
+                    end,
+                    ExerciseSessionType.EXERCISE_SESSION_TYPE_RUNNING)
+                .setRoute(generateExerciseRouteFromLocations(WARSAW_ROUTE, start.toEpochMilli()))
+                .build()
         runBlocking {
             val result = GeneralUtils.insertRecords(listOf(route), manager)
             if (result.isNotEmpty()) {
                 val record = result.first()
                 val intent =
-                        Intent(HealthConnectManager.ACTION_REQUEST_EXERCISE_ROUTE).apply {
-                            putExtra(HealthConnectManager.EXTRA_SESSION_ID, record.metadata.id)
-                            putExtra(Intent.EXTRA_PACKAGE_NAME, requireContext().packageName)
-                        }
+                    Intent(HealthConnectManager.ACTION_REQUEST_EXERCISE_ROUTE).apply {
+                        putExtra(HealthConnectManager.EXTRA_SESSION_ID, record.metadata.id)
+                        putExtra(Intent.EXTRA_PACKAGE_NAME, requireContext().packageName)
+                    }
                 startActivityForResult(intent, 1)
             }
         }
diff --git a/tests/cts/AndroidManifest.xml b/tests/cts/AndroidManifest.xml
index 2c82df3..eee1b69 100644
--- a/tests/cts/AndroidManifest.xml
+++ b/tests/cts/AndroidManifest.xml
@@ -43,8 +43,6 @@
     <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
                      android:label="CTS HealthConnect tests"
                      android:targetPackage="android.healthconnect.cts">
-        <meta-data android:name="listener"
-                   android:value="com.android.cts.runner.CtsTestRunListener"/>
     </instrumentation>
 
     <!-- To get visibility of the app with health permissions definitions,
diff --git a/tests/cts/hostsidetests/healthconnect/Android.bp b/tests/cts/hostsidetests/healthconnect/Android.bp
index a276766..bb5c4ff 100644
--- a/tests/cts/hostsidetests/healthconnect/Android.bp
+++ b/tests/cts/hostsidetests/healthconnect/Android.bp
@@ -23,14 +23,14 @@
     platform_apis: true,
     static_libs: [
         "ctstestrunner-axt",
-        "cts-healthconnect-lib"
+        "cts-healthconnect-lib",
     ],
     sdk_version: "test_current",
     min_sdk_version: "34",
     srcs: [
         "HealthConnectTestHelper/src/**/*.java",
         "HealthConnectTestHelper/src/**/*.kt",
-        ],
+    ],
     libs: ["junit"],
 }
 
@@ -86,8 +86,8 @@
     defaults: ["cts_defaults"],
     srcs: [
         "device/**/*.java",
-        "device/**/*.kt"
-        ],
+        "device/**/*.kt",
+    ],
     static_libs: [
         "cts-healthconnect-lib",
         "modules-utils-build_system",
@@ -112,13 +112,14 @@
         "android.test.runner",
         "framework-healthfitness",
     ],
-    data : [
-          ":CtsHealthConnectTestAppAWithNormalReadWritePermission",
-          ":CtsHealthConnectTestAppBWithNormalReadWritePermission",
-          ":CtsHealthConnectTestAppWithDataManagePermission",
-          ":CtsHealthConnectTestAppWithNoPermission",
-          ":CtsHealthConnectTestAppWithWritePermissionsOnly",
-    ]
+    java_resource_dirs: ["res"],
+    data: [
+        ":CtsHealthConnectTestAppAWithNormalReadWritePermission",
+        ":CtsHealthConnectTestAppBWithNormalReadWritePermission",
+        ":CtsHealthConnectTestAppWithDataManagePermission",
+        ":CtsHealthConnectTestAppWithNoPermission",
+        ":CtsHealthConnectTestAppWithWritePermissionsOnly",
+    ],
 }
 
 java_test_host {
@@ -126,7 +127,7 @@
     defaults: ["cts_defaults"],
     srcs: [
         "host/**/*.java",
-        "host/**/*.kt"
+        "host/**/*.kt",
     ],
     test_suites: [
         "cts",
@@ -137,12 +138,14 @@
         "compatibility-host-util",
         "cts-tradefed",
         "tradefed",
-        "truth-prebuilt",
+        "truth",
     ],
     static_libs: [
         "cts-statsd-atom-host-test-utils",
+        "androidx.annotation_annotation",
     ],
+    java_resource_dirs: ["host/res"],
     data: [
         ":CtsHealthConnectTestApp",
-    ]
+    ],
 }
diff --git a/tests/cts/hostsidetests/healthconnect/HealthConnectTestHelper/src/android/healthconnect/cts/testhelper/HealthConnectUiTestHelper.kt b/tests/cts/hostsidetests/healthconnect/HealthConnectTestHelper/src/android/healthconnect/cts/testhelper/HealthConnectUiTestHelper.kt
index bc08b2e..fc7d8ad 100644
--- a/tests/cts/hostsidetests/healthconnect/HealthConnectTestHelper/src/android/healthconnect/cts/testhelper/HealthConnectUiTestHelper.kt
+++ b/tests/cts/hostsidetests/healthconnect/HealthConnectTestHelper/src/android/healthconnect/cts/testhelper/HealthConnectUiTestHelper.kt
@@ -98,7 +98,6 @@
 
             UiTestUtils.waitDisplayed(By.text("Browse data"))
             UiTestUtils.waitDisplayed(By.text("Manage data"))
-            UiTestUtils.waitDisplayed(By.text("Auto-delete"))
 
             UiTestUtils.waitDisplayed(By.text("Delete all data"))
         }
diff --git a/tests/cts/hostsidetests/healthconnect/device/AndroidManifest.xml b/tests/cts/hostsidetests/healthconnect/device/AndroidManifest.xml
index dd01271..4d922f2 100644
--- a/tests/cts/hostsidetests/healthconnect/device/AndroidManifest.xml
+++ b/tests/cts/hostsidetests/healthconnect/device/AndroidManifest.xml
@@ -41,8 +41,6 @@
     <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
                      android:label="CTS HealthConnect tests"
                      android:targetPackage="android.healthconnect.cts.device">
-        <meta-data android:name="listener"
-                   android:value="com.android.cts.runner.CtsTestRunListener"/>
     </instrumentation>
 
     <queries>
diff --git a/tests/cts/hostsidetests/healthconnect/host/res/HealthConnectApexFiles/README.md b/tests/cts/hostsidetests/healthconnect/host/res/HealthConnectApexFiles/README.md
new file mode 100644
index 0000000..b5b54d6
--- /dev/null
+++ b/tests/cts/hostsidetests/healthconnect/host/res/HealthConnectApexFiles/README.md
@@ -0,0 +1,6 @@
+Folder to store the Apex files for different versions of HealthFitness module. Meant to be used for
+backwards compatibility testing.
+
+DO NOT MODIFY ANY FILES SAVED HERE.
+
+NOTE: do not use this folder for any other purposes.
\ No newline at end of file
diff --git a/tests/cts/hostsidetests/healthconnect/host/res/HealthConnectCtsApkFiles/README.md b/tests/cts/hostsidetests/healthconnect/host/res/HealthConnectCtsApkFiles/README.md
new file mode 100644
index 0000000..076f220
--- /dev/null
+++ b/tests/cts/hostsidetests/healthconnect/host/res/HealthConnectCtsApkFiles/README.md
@@ -0,0 +1,6 @@
+Folder to store the CTS APK files for different versions of HealthFitness module. Meant to be used
+for backwards compatibility testing.
+
+DO NOT MODIFY ANY FILES SAVED HERE.
+
+NOTE: do not use this folder for any other purposes.
\ No newline at end of file
diff --git a/tests/cts/hostsidetests/healthconnect/host/src/SaveBuildApexAndApkFile.sh b/tests/cts/hostsidetests/healthconnect/host/src/SaveBuildApexAndApkFile.sh
new file mode 100755
index 0000000..8c9cd60
--- /dev/null
+++ b/tests/cts/hostsidetests/healthconnect/host/src/SaveBuildApexAndApkFile.sh
@@ -0,0 +1,99 @@
+#!/bin/bash
+
+#
+# Copyright (C) 2023 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+read -p "This script will be deleting the current Health Connect Database on your device and flash it with the latest
+ code. Do you want to continue y/n:" input
+
+if [ "$input" != "y" ] && [ "$input" != "Y" ]; then
+  if [ "$input" = "n" ] || [ "$input" = "N" ]; then
+    exit
+  else
+    echo "Not a valid input, exiting."
+    exit
+  fi
+fi
+
+# Building the HealthFitness module
+cd ~ || exit
+cd $ANDROID_BUILD_TOP || exit
+source build/envsetup.sh
+lunch bluejay
+cd packages/modules/HealthFitness || exit
+m com.google.android.healthfitness
+
+if [ $? -ne 0 ]; then
+  echo "Operation failed. Error occurred during healthfitness module build"
+fi
+
+# Removing previously installed database from device
+adb root
+adb shell rm /data/system_ce/0/healthconnect/healthconnect.db
+if [ $? -ne 0 ]; then
+  echo "Operation failed. Error occurred during removal of database"
+fi
+
+# Installing the database version of currently build module
+cd ~ || exit
+adb root
+adb install $OUT/system/apex/com.google.android.healthfitness.apex
+adb reboot
+adb wait-for-device
+
+# Building the CtsHealthFitnessDeviceTestCases module
+cd ~ || exit
+cd $ANDROID_BUILD_TOP || exit
+atest CtsHealthFitnessDeviceTestCases -b
+if [ $? -ne 0 ]; then
+  echo "Operation failed. Error occurred during CtsHealthFitnessDeviceTestCases module build"
+fi
+
+# Storing the database version in a variable
+sleep 10s
+adb root
+version=$(
+  adb shell <<EOF
+cd ~;
+sqlite3 /data/system_ce/0/healthconnect/healthconnect.db
+PRAGMA user_version;
+.exit
+EOF
+) || {
+  echo "Waited but the new database was not created. Run the script again and please unlock your device after it reboots."
+  exit
+}
+
+#saving the build apex file in resources
+source_apex_file="$OUT/system/apex/com.google.android.healthfitness.apex"
+required_apex_file_name="HeathConnectVersion_$version.apex"
+destination_apex_resource="$ANDROID_BUILD_TOP/packages/modules/HealthFitness/tests/cts/hostsidetests/healthconnect/host/res/HealthConnectApexFiles/$required_apex_file_name"
+cp "$source_apex_file" "$destination_apex_resource"
+if [ $? -eq 0 ]; then
+  echo "File '$source_apex_file' have been saved to resources '$destination_apex_resource'"
+else
+  echo "Failed to save file '$source_apex_file'."
+fi
+
+#saving the build cts-apk file in resources
+source_apk_file="$OUT/testcases/CtsHealthFitnessDeviceTestCases"
+required_apk_file_name="HealthConnectCTS_$version.apk"
+destination_apk_resource="$ANDROID_BUILD_TOP/packages/modules/HealthFitness/tests/cts/hostsidetests/healthconnect/host/res/HealthConnectCtsApkFiles/$required_apk_file_name"
+cp -r "$source_apk_file" "$destination_apk_resource"
+if [ $? -eq 0 ]; then
+  echo "File '$source_apk_file' have been saved to resources '$destination_apk_resource'"
+else
+  echo "Failed to save file '$source_apk_file'."
+fi
diff --git a/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/ColumnInfo.java b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/ColumnInfo.java
new file mode 100644
index 0000000..a4538d9
--- /dev/null
+++ b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/ColumnInfo.java
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.healthconnect.cts.database;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+
+/** ColumnInfo contains information about all the attributes that a column can hold. */
+class ColumnInfo {
+    private final String mName;
+    private final String mDataType;
+    private final List<Integer> mConstraints;
+    private final List<String> mCheckConstraints;
+    private final String mDefaultValue;
+
+    /** ColumnConstraint contains the constraints on a column. */
+    @IntDef({UNIQUE_CONSTRAINT, NOT_NULL_CONSTRAINT, AUTO_INCREMENT_CONSTRAINT})
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface ColumnConstraint {}
+
+    public static final int UNIQUE_CONSTRAINT = 0;
+    public static final int NOT_NULL_CONSTRAINT = 1;
+    public static final int AUTO_INCREMENT_CONSTRAINT = 2;
+
+    /** Creates an instance for ColumnInfo. */
+    ColumnInfo(Builder builder) {
+        mName = builder.mName;
+        mDataType = builder.mDataType;
+        mConstraints = builder.mConstraints;
+        mCheckConstraints = builder.mCheckConstraints;
+        mDefaultValue = builder.mDefaultValue;
+    }
+
+    /** Builder pattern for ColumnInfo. */
+    public static class Builder {
+        private final String mName;
+        private final String mDataType;
+        private final List<Integer> mConstraints;
+        private final List<String> mCheckConstraints;
+        private String mDefaultValue;
+
+        Builder(@NonNull String name, @NonNull String dataType) {
+            Objects.requireNonNull(name);
+            Objects.requireNonNull(dataType);
+            mName = name;
+            mDataType = dataType;
+            mConstraints = new ArrayList<>();
+            mCheckConstraints = new ArrayList<>();
+        }
+
+        /** Sets the default value of the column. */
+        public Builder setDefaultValue(String defaultValue) {
+            mDefaultValue = defaultValue;
+            return this;
+        }
+
+        /** Appends constraint to the existing list of constraint. */
+        public Builder addConstraint(@ColumnConstraint int constraint) {
+            mConstraints.add(constraint);
+            return this;
+        }
+
+        /** Appends check constraint to the existing list of check constraint. */
+        public Builder addCheckConstraint(@NonNull String checkConstraint) {
+            Objects.requireNonNull(checkConstraint);
+            mCheckConstraints.add(checkConstraint);
+            return this;
+        }
+
+        /** Builds the columnInfo object. */
+        public ColumnInfo build() {
+            return new ColumnInfo(this);
+        }
+    }
+
+    /**
+     * @return name of the column.
+     */
+    @NonNull
+    public String getName() {
+        return mName;
+    }
+
+    /**
+     * @return datatype of the column.
+     */
+    @NonNull
+    public String getDataType() {
+        return mDataType;
+    }
+
+    /**
+     * @return list of all the constraints of the column.
+     */
+    @Nullable
+    public List<Integer> getConstraints() {
+        return mConstraints;
+    }
+
+    /**
+     * @return list of all check constraints of the column.
+     */
+    @Nullable
+    public List<String> getCheckConstraints() {
+        return mCheckConstraints;
+    }
+
+    /**
+     * @return the default value of the column if assigned otherwise null.
+     */
+    @Nullable
+    public String getDefaultValue() {
+        return mDefaultValue;
+    }
+
+    /**
+     * @return true if the objects of the two ColumnInfo are same otherwise false.
+     */
+    @NonNull
+    public Boolean isEqual(ColumnInfo expectedColumn) {
+        if (mName.equals(expectedColumn.mName) && mDataType.equals(expectedColumn.mDataType)) {
+            if (!Objects.equals(mDefaultValue, expectedColumn.mDefaultValue)) {
+                return false;
+            }
+            List<Integer> constraintList = mConstraints;
+            List<Integer> expectedConstraintList = expectedColumn.mConstraints;
+            List<String> checkConstraintList = mCheckConstraints;
+            List<String> expectedCheckConstraintList = expectedColumn.mCheckConstraints;
+            Collections.sort(constraintList);
+            Collections.sort(expectedConstraintList);
+            Collections.sort(checkConstraintList);
+            Collections.sort(expectedCheckConstraintList);
+            return constraintList.equals(expectedConstraintList)
+                    && checkConstraintList.equals(expectedCheckConstraintList);
+        }
+        return false;
+    }
+
+    /**
+     * Compares two ColumnInfo and stores any backward incompatible change to the corresponding
+     * ErrorInfo of column.
+     */
+    public void checkColumnDiff(
+            ColumnInfo expectedColumn, List<String> modificationOfColumn, String tableName) {
+
+        if (!mDataType.equals(expectedColumn.mDataType)) {
+            modificationOfColumn.add(
+                    "Datatype has been changed for column: "
+                            + mName
+                            + " of the table: "
+                            + tableName);
+        }
+        if (!Objects.equals(mDefaultValue, expectedColumn.mDefaultValue)) {
+            modificationOfColumn.add(
+                    "Default value has been changed for column: "
+                            + mName
+                            + " of the table: "
+                            + tableName);
+        }
+        List<Integer> constraintList1 = mConstraints.stream().sorted().toList();
+        List<Integer> constraintList2 = expectedColumn.mConstraints.stream().sorted().toList();
+
+        if (!constraintList1.equals(constraintList2)) {
+            modificationOfColumn.add(
+                    "Constraints have been changed for column: "
+                            + mName
+                            + " of the table: "
+                            + tableName);
+        }
+        List<String> checkConstraintList1 = mCheckConstraints.stream().sorted().toList();
+        List<String> checkConstraintList2 =
+                expectedColumn.mCheckConstraints.stream().sorted().toList();
+
+        if (!checkConstraintList1.equals(checkConstraintList2)) {
+            modificationOfColumn.add(
+                    "Check constraints has been changed for the column: "
+                            + mName
+                            + " of the table: "
+                            + tableName);
+        }
+    }
+}
diff --git a/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/DatabaseTestUtils.java b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/DatabaseTestUtils.java
new file mode 100644
index 0000000..e7020d8
--- /dev/null
+++ b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/DatabaseTestUtils.java
@@ -0,0 +1,511 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.healthconnect.cts.database;
+
+import com.android.ddmlib.testrunner.RemoteAndroidTestRunner;
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.log.LogUtil;
+import com.android.tradefed.result.CollectingTestListener;
+import com.android.tradefed.result.TestDescription;
+import com.android.tradefed.result.TestResult;
+import com.android.tradefed.result.TestRunResult;
+import com.android.tradefed.util.FileUtil;
+
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.rmi.RemoteException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+public class DatabaseTestUtils {
+    public static final String INSTALL_ARG_FORCE_QUERYABLE = "--force-queryable";
+
+    public static final String HC_APEX_RESOURCE_PATH_PREFIX = "/HealthConnectApexFiles/";
+    public static final String HC_CTS_RESOURCE_PATH_PREFIX = "/HealthConnectCtsApkFiles/";
+    public static final String TEST_RUNNER = "androidx.test.runner.AndroidJUnitRunner";
+
+    public static int getCurrentHcDatabaseVersion(ITestDevice device)
+            throws DeviceNotAvailableException {
+        String currentDbVersion =
+                device.executeShellCommand(
+                        "cd ~; sqlite3 data/system_ce/0/healthconnect/healthconnect.db"
+                                + " \"PRAGMA user_version;\"");
+        // To remove any extra white spaces on the sides.
+        currentDbVersion = currentDbVersion.strip();
+        LogUtil.CLog.d("Current Database version  " + currentDbVersion);
+        return Integer.parseInt(currentDbVersion);
+    }
+
+    public static void deleteHcDatabase(ITestDevice device) throws DeviceNotAvailableException {
+        String result =
+                device.executeShellCommand(
+                        "cd ~; rm /data/system_ce/0/healthconnect/healthconnect.db;");
+        // Deleted successfully.
+        if (!result.isBlank()) {
+            throw new IllegalArgumentException("Failed to remove healthconnect.db : " + result);
+        }
+    }
+
+    /**
+     * Installs package using the packageFilename in Resources.
+     *
+     * <p>Since this method can be used for both HC apex files and CTS apk files, pass true in
+     * {@code isHcApex} to notify that the resource to be installed is an apex otherwise pass false.
+     */
+    public static void assertInstallSucceeds(
+            ITestDevice device, String packageFilenameInResources, boolean isHcApex)
+            throws Exception {
+        String installResult =
+                installPackageFromResource(device, packageFilenameInResources, isHcApex);
+        if (installResult != null) {
+            throw new IllegalArgumentException(
+                    "Failed to install " + packageFilenameInResources + ": " + installResult);
+        }
+    }
+
+    public static void assertUninstallSucceeds(ITestDevice device, String packageName)
+            throws DeviceNotAvailableException {
+        String uninstallResult = device.uninstallPackage(packageName);
+        if (uninstallResult != null) {
+            throw new IllegalArgumentException(
+                    "Failed to install " + uninstallResult + ": " + uninstallResult);
+        }
+    }
+
+    /** Fetches the package from resources and installs it for the current user. */
+    public static String installPackageFromResource(
+            ITestDevice device, String apkFilenameInResources, boolean isHcApex)
+            throws IOException {
+        // ITestDevice.installPackage API requires the APK to be installed to be a File. We thus
+        // copy the requested resource into a temporary file, attempt to install it, and delete the
+        // file during cleanup.
+        File apkFile = null;
+        try {
+            apkFile = getFileFromResource(apkFilenameInResources, isHcApex);
+            // Install package for current user.
+            return device.installPackageForUser(
+                    apkFile, true, device.getCurrentUser(), INSTALL_ARG_FORCE_QUERYABLE);
+        } catch (DeviceNotAvailableException e) {
+            throw new RemoteException("Device is not available, please connect a device.", e);
+        } finally {
+            cleanUpFile(apkFile);
+        }
+    }
+
+    public static File getFileFromResource(String filenameInResources, boolean isHcApex)
+            throws IOException, IllegalArgumentException {
+        final String fullResourceName;
+        if (isHcApex) {
+            fullResourceName = HC_APEX_RESOURCE_PATH_PREFIX + filenameInResources;
+        } else {
+            fullResourceName = HC_CTS_RESOURCE_PATH_PREFIX + filenameInResources;
+        }
+        File tempDir = FileUtil.createTempDir("HcHostSideTests");
+        File file = new File(tempDir, filenameInResources);
+        InputStream in = DatabaseTestUtils.class.getResourceAsStream(fullResourceName);
+        if (in == null) {
+            throw new IllegalArgumentException("Resource not found: " + fullResourceName);
+        }
+        OutputStream out = new BufferedOutputStream(new FileOutputStream(file));
+        byte[] buf = new byte[65536];
+        int chunkSize;
+        while ((chunkSize = in.read(buf)) != -1) {
+            out.write(buf, 0, chunkSize);
+        }
+        out.close();
+        return file;
+    }
+
+    static void cleanUpFile(File file) {
+        if (file != null && file.exists()) {
+            file.delete();
+        }
+    }
+
+    /**
+     * Run a device side test.
+     *
+     * @param pkgName Test package name, such as "android.healthconnect.cts".
+     * @param testClassName Test class name; either a fully qualified name, or "." + a class name.
+     * @param testMethodName Test method name.
+     */
+    public static String runDeviceTests(
+            ITestDevice device, String pkgName, String testClassName, String testMethodName)
+            throws DeviceNotAvailableException {
+        if (testClassName != null && testClassName.startsWith(".")) {
+            testClassName = pkgName + testClassName;
+        }
+
+        RemoteAndroidTestRunner testRunner =
+                new RemoteAndroidTestRunner(pkgName, TEST_RUNNER, device.getIDevice());
+        testRunner.setMaxTimeout(1800, TimeUnit.SECONDS);
+        if (testClassName != null && testMethodName != null) {
+            testRunner.setMethodName(testClassName, testMethodName);
+        } else if (testClassName != null) {
+            testRunner.setClassName(testClassName);
+        }
+
+        CollectingTestListener listener = new CollectingTestListener();
+        assert (device.runInstrumentationTests(testRunner, listener));
+
+        final TestRunResult result = listener.getCurrentRunResults();
+        if (result.isRunFailure()) {
+            throw new AssertionError(
+                    "Failed to successfully run device tests for "
+                            + result.getName()
+                            + ": "
+                            + result.getRunFailureMessage());
+        }
+        if (result.getNumTests() == 0) {
+            throw new AssertionError("No tests were run on the device");
+        }
+
+        if (result.hasFailedTests()) {
+            // build a meaningful error message
+            StringBuilder errorBuilder = new StringBuilder("On-device tests failed:\n");
+            for (Map.Entry<TestDescription, TestResult> resultEntry :
+                    result.getTestResults().entrySet()) {
+                if (!resultEntry
+                        .getValue()
+                        .getStatus()
+                        .equals(com.android.ddmlib.testrunner.TestResult.TestStatus.PASSED)) {
+                    errorBuilder.append(resultEntry.getKey().toString());
+                    errorBuilder.append(":\n");
+                    errorBuilder.append(resultEntry.getValue().getStackTrace());
+                }
+            }
+            throw new AssertionError(errorBuilder.toString());
+        }
+        return result.getTextSummary();
+    }
+
+    /**
+     * Checks the deletion of tables of the previous version of the database in the current version
+     * of the database.
+     */
+    public static void checkExistingTableDeletion(
+            HashMap<String, TableInfo> mTableListPreviousVersion,
+            HashMap<String, TableInfo> mTableListCurrentVersion,
+            List<String> deletionOfTable) {
+
+        for (String tableName : mTableListPreviousVersion.keySet()) {
+
+            if (!mTableListCurrentVersion.containsKey(tableName)) {
+                deletionOfTable.add("Table: " + tableName + " has been deleted from the database");
+            }
+        }
+    }
+
+    /**
+     * Checks for the modifications in the primary keys of the database between previous and current
+     * version.
+     */
+    public static void checkPrimaryKeyModification(
+            HashMap<String, TableInfo> mTableListPreviousVersion,
+            HashMap<String, TableInfo> mTableListCurrentVersion,
+            List<String> modificationOfPrimaryKey) {
+
+        for (String tableName : mTableListPreviousVersion.keySet()) {
+
+            if (mTableListCurrentVersion.containsKey(tableName)) {
+
+                List<String> primaryKeyPreviousVersion =
+                        mTableListPreviousVersion.get(tableName).getPrimaryKey();
+                List<String> primaryKeyCurrentVersion =
+                        mTableListCurrentVersion.get(tableName).getPrimaryKey();
+
+                for (String pk : primaryKeyPreviousVersion) {
+                    if (!primaryKeyCurrentVersion.contains(pk)) {
+                        modificationOfPrimaryKey.add(
+                                "Primary key column: "
+                                        + pk
+                                        + " has been deleted from the table: "
+                                        + tableName);
+                    }
+                }
+
+                for (String pk : primaryKeyCurrentVersion) {
+                    if (!primaryKeyPreviousVersion.contains(pk)) {
+                        modificationOfPrimaryKey.add(
+                                "Primary key column: "
+                                        + pk
+                                        + " has been added to the table: "
+                                        + tableName);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Checks for the modifications in the columns of each table of the database between previous
+     * and current version.
+     */
+    public static void checkColumnModification(
+            HashMap<String, TableInfo> mTableListPreviousVersion,
+            HashMap<String, TableInfo> mTableListCurrentVersion,
+            List<String> modificationOfColumn) {
+
+        for (String tableName : mTableListPreviousVersion.keySet()) {
+
+            if (mTableListCurrentVersion.containsKey(tableName)) {
+
+                HashMap<String, ColumnInfo> columnInfoPreviousVersion =
+                        mTableListPreviousVersion.get(tableName).getColumnInfoMapping();
+                HashMap<String, ColumnInfo> columnInfoCurrentVersion =
+                        mTableListCurrentVersion.get(tableName).getColumnInfoMapping();
+
+                for (String columnName : columnInfoPreviousVersion.keySet()) {
+                    ColumnInfo column1 = columnInfoPreviousVersion.get(columnName);
+
+                    if (columnInfoCurrentVersion.containsKey(columnName)) {
+                        ColumnInfo column2 = columnInfoCurrentVersion.get(columnName);
+                        column1.checkColumnDiff(column2, modificationOfColumn, tableName);
+                    } else {
+                        modificationOfColumn.add(
+                                "Column: "
+                                        + columnName
+                                        + " has been deleted from the table: "
+                                        + tableName);
+                    }
+                }
+
+                for (String columnName : columnInfoCurrentVersion.keySet()) {
+
+                    if (!columnInfoPreviousVersion.containsKey(columnName)) {
+                        ColumnInfo columnInfo = columnInfoCurrentVersion.get(columnName);
+
+                        if (columnInfo.getConstraints().contains(ColumnInfo.UNIQUE_CONSTRAINT)) {
+                            modificationOfColumn.add(
+                                    "UNIQUE constraint is not allowed for the new column: "
+                                            + columnName
+                                            + " of table: "
+                                            + tableName);
+                        }
+
+                        if (columnInfo.getConstraints().contains(ColumnInfo.NOT_NULL_CONSTRAINT)) {
+                            modificationOfColumn.add(
+                                    "NOT NULL constraint is not allowed for the new column: "
+                                            + columnName
+                                            + " of table: "
+                                            + tableName);
+                        }
+
+                        if (columnInfo
+                                .getConstraints()
+                                .contains(ColumnInfo.AUTO_INCREMENT_CONSTRAINT)) {
+                            modificationOfColumn.add(
+                                    "AUTOINCREMENT constraint is not allowed for the new column: "
+                                            + columnName
+                                            + " of table: "
+                                            + tableName);
+                        }
+
+                        if (!columnInfo.getCheckConstraints().isEmpty()) {
+                            modificationOfColumn.add(
+                                    "Check constraints are not allowed for the new column: "
+                                            + columnName
+                                            + " of table: "
+                                            + tableName);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Checks for the modifications in the foreign keys of each table of the database between
+     * previous and current version.
+     */
+    public static void checkForeignKeyModification(
+            HashMap<String, TableInfo> mTableListPreviousVersion,
+            HashMap<String, TableInfo> mTableListCurrentVersion,
+            List<String> modificationOfForeignKey) {
+
+        for (String tableName : mTableListPreviousVersion.keySet()) {
+
+            if (mTableListCurrentVersion.containsKey(tableName)) {
+
+                HashMap<String, ForeignKeyInfo> foreignKeyListPreviousVersion =
+                        mTableListPreviousVersion.get(tableName).getForeignKeyMapping();
+                HashMap<String, ForeignKeyInfo> foreignKeyListCurrentVersion =
+                        mTableListCurrentVersion.get(tableName).getForeignKeyMapping();
+
+                for (String foreignKeyName : foreignKeyListPreviousVersion.keySet()) {
+
+                    if (foreignKeyListCurrentVersion.containsKey(foreignKeyName)) {
+
+                        ForeignKeyInfo foreignInfo1 =
+                                foreignKeyListPreviousVersion.get(foreignKeyName);
+                        ForeignKeyInfo foreignInfo2 =
+                                foreignKeyListCurrentVersion.get(foreignKeyName);
+
+                        foreignInfo1.checkForeignKeyDiff(
+                                foreignInfo2, modificationOfForeignKey, tableName);
+                    } else {
+                        modificationOfForeignKey.add(
+                                "Foreign Key: "
+                                        + foreignKeyName
+                                        + " has been deleted from the table: "
+                                        + tableName);
+                    }
+                }
+
+                for (String foreignKeyName : foreignKeyListCurrentVersion.keySet()) {
+
+                    if (!foreignKeyListPreviousVersion.containsKey(foreignKeyName)) {
+
+                        ForeignKeyInfo foreignKeyInfo =
+                                foreignKeyListCurrentVersion.get(foreignKeyName);
+                        String referTableName = foreignKeyInfo.getForeignKeyTableName();
+                        List<Integer> constraintListOfReferencedColumn =
+                                mTableListCurrentVersion
+                                        .get(referTableName)
+                                        .getColumnInfoMapping()
+                                        .get(foreignKeyInfo.getForeignKeyReferredColumnName())
+                                        .getConstraints();
+                        if (!mTableListCurrentVersion
+                                        .get(referTableName)
+                                        .getPrimaryKey()
+                                        .contains(foreignKeyInfo.getForeignKeyReferredColumnName())
+                                && !constraintListOfReferencedColumn.contains(
+                                        ColumnInfo.UNIQUE_CONSTRAINT)) {
+                            modificationOfForeignKey.add(
+                                    "New Foreign key : "
+                                            + foreignKeyName
+                                            + " of  table: "
+                                            + tableName
+                                            + " has neither been made on primary key of "
+                                            + "referenced table: "
+                                            + referTableName
+                                            + " nor UNIQUE constraint ");
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Checks for the modifications in the indexes of each table of the database between previous
+     * and current version.
+     */
+    public static void checkIndexModification(
+            HashMap<String, TableInfo> mTableListPreviousVersion,
+            HashMap<String, TableInfo> mTableListCurrentVersion,
+            List<String> modificationOfIndex) {
+
+        for (String tableName : mTableListPreviousVersion.keySet()) {
+
+            if (mTableListCurrentVersion.containsKey(tableName)) {
+
+                HashMap<String, IndexInfo> indexInfoPreviousVersion =
+                        mTableListPreviousVersion.get(tableName).getIndexInfoMapping();
+                HashMap<String, IndexInfo> indexInfoCurrentVersion =
+                        mTableListCurrentVersion.get(tableName).getIndexInfoMapping();
+
+                for (String indexName : indexInfoPreviousVersion.keySet()) {
+                    IndexInfo index1 = indexInfoPreviousVersion.get(indexName);
+
+                    if (indexInfoCurrentVersion.containsKey(indexName)) {
+
+                        IndexInfo index2 = indexInfoCurrentVersion.get(indexName);
+                        index1.checkIndexDiff(index2, modificationOfIndex, tableName);
+                    } else {
+                        modificationOfIndex.add(
+                                "Index : "
+                                        + indexName
+                                        + " has been deleted from table "
+                                        + tableName);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Checks for the addition of new tables in the current version of the database.
+     *
+     * <p>The only way by which a new table can interact with older ones is with the help of foreign
+     * key So, we need a check to ensure that the table to which the foreign key is being mapped is
+     * primary key of that table.
+     */
+    public static void checkNewTableAddition(
+            HashMap<String, TableInfo> mTableListPreviousVersion,
+            HashMap<String, TableInfo> mTableListCurrentVersion,
+            List<String> additionOfTable) {
+
+        for (String tableName : mTableListCurrentVersion.keySet()) {
+
+            if (!mTableListPreviousVersion.containsKey(tableName)) {
+
+                HashMap<String, ForeignKeyInfo> foreignKeyList =
+                        mTableListCurrentVersion.get(tableName).getForeignKeyMapping();
+
+                for (String foreignKeyName : foreignKeyList.keySet()) {
+
+                    ForeignKeyInfo foreignKeyInfo = foreignKeyList.get(foreignKeyName);
+                    String referTableName = foreignKeyInfo.getForeignKeyTableName();
+                    List<Integer> constraintListOfReferencedColumn =
+                            mTableListCurrentVersion
+                                    .get(referTableName)
+                                    .getColumnInfoMapping()
+                                    .get(foreignKeyInfo.getForeignKeyReferredColumnName())
+                                    .getConstraints();
+                    /**
+                     * Checking whether the column to which foreign key has been mapped is primary
+                     * key of the referenced table or not.
+                     */
+                    if (!mTableListCurrentVersion
+                                    .get(referTableName)
+                                    .getPrimaryKey()
+                                    .contains(foreignKeyInfo.getForeignKeyReferredColumnName())
+                            && !constraintListOfReferencedColumn.contains(
+                                    ColumnInfo.UNIQUE_CONSTRAINT)) {
+                        additionOfTable.add(
+                                "Foreign key : "
+                                        + foreignKeyName
+                                        + " of new table: "
+                                        + tableName
+                                        + " has neither been made on primary key of referenced"
+                                        + " table: "
+                                        + referTableName
+                                        + " nor UNIQUE constraint ");
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * @return true if apex version file is present in resources otherwise false.
+     */
+    public static boolean isFilePresentInResources(String filenameInResources) {
+        final String fullResourceName = HC_APEX_RESOURCE_PATH_PREFIX + filenameInResources;
+        InputStream in = DatabaseTestUtils.class.getResourceAsStream(fullResourceName);
+        return in != null;
+    }
+}
+
diff --git a/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/ForeignKeyInfo.java b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/ForeignKeyInfo.java
new file mode 100644
index 0000000..196db66
--- /dev/null
+++ b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/ForeignKeyInfo.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.healthconnect.cts.database;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/** ForeignKeyInfo contains information about all the attributes that a Foreign Key can hold. */
+public class ForeignKeyInfo {
+    private final String mForeignKeyName;
+    private final String mForeignKeyTableName;
+    private final String mForeignKeyReferredColumn;
+    private final List<Integer> mForeignKeyFlags;
+
+    /**
+     * ForeignKeyFlags contains all types of flags that can be used while creating a foreign key for
+     * a table.
+     */
+    @IntDef({
+            ON_DELETE_CASCADE,
+            ON_DELETE_SET_NULL,
+            ON_DELETE_SET_DEFAULT,
+            ON_DELETE_RESTRICT,
+            ON_UPDATE_CASCADE,
+            ON_UPDATE_SET_NULL,
+            ON_UPDATE_SET_DEFAULT,
+            ON_UPDATE_RESTRICT,
+            DEFERRABLE_FLAG,
+            INITIALLY_DEFERRED
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface ForeignKeyFlags {
+    }
+
+    public static final int ON_DELETE_CASCADE = 0;
+    public static final int ON_DELETE_SET_NULL = 1;
+    public static final int ON_DELETE_SET_DEFAULT = 2;
+    public static final int ON_DELETE_RESTRICT = 3;
+    public static final int ON_UPDATE_CASCADE = 4;
+    public static final int ON_UPDATE_SET_NULL = 5;
+    public static final int ON_UPDATE_SET_DEFAULT = 6;
+    public static final int ON_UPDATE_RESTRICT = 7;
+    public static final int DEFERRABLE_FLAG = 8;
+    public static final int INITIALLY_DEFERRED = 9;
+
+    /** Creates an instance for ForeignKeyInfo. */
+    ForeignKeyInfo(Builder builder) {
+        mForeignKeyName = builder.mForeignKeyName;
+        mForeignKeyTableName = builder.mForeignKeyTableName;
+        mForeignKeyReferredColumn = builder.mForeignKeyReferredColumn;
+        mForeignKeyFlags = builder.mForeignKeyFlags;
+    }
+
+    /** Builder pattern for ForeignKeyInfo. */
+    public static class Builder {
+        private final String mForeignKeyName;
+        private final String mForeignKeyTableName;
+        private final String mForeignKeyReferredColumn;
+        private final List<Integer> mForeignKeyFlags;
+
+        Builder(String foreignKey, String referencedTable, String referencedColumn) {
+            mForeignKeyName = foreignKey;
+            mForeignKeyTableName = referencedTable;
+            mForeignKeyReferredColumn = referencedColumn;
+            mForeignKeyFlags = new ArrayList<>();
+        }
+
+        /** Appends flag to the existing list of flags. */
+        public ForeignKeyInfo.Builder addFlag(@ForeignKeyFlags int foreignKeyFlag) {
+            mForeignKeyFlags.add(foreignKeyFlag);
+            return this;
+        }
+
+        /** Builds the ForeignKeyInfo object. */
+        public ForeignKeyInfo build() {
+            return new ForeignKeyInfo(this);
+        }
+    }
+
+    /**
+     * @return name of the foreignKey.
+     */
+    @NonNull
+    public String getForeignKeyName() {
+        return mForeignKeyName;
+    }
+
+    /**
+     * @return referenced table of the foreignKey.
+     */
+    @NonNull
+    public String getForeignKeyTableName() {
+        return mForeignKeyTableName;
+    }
+
+    /**
+     * @return primary key of referenced table of the foreign key.
+     */
+    @NonNull
+    public String getForeignKeyReferredColumnName() {
+        return mForeignKeyReferredColumn;
+    }
+
+    /**
+     * @return list of all the flags of the foreignkey.
+     */
+    @Nullable
+    public List<Integer> getForeignKeyFlags() {
+        return mForeignKeyFlags;
+    }
+
+    /**
+     * @return true if the objects of the two ForeignkeyInfo are same otherwise false.
+     */
+    @NonNull
+    public Boolean isEqual(ForeignKeyInfo expectedForeignKey) {
+        if (mForeignKeyName.equals(expectedForeignKey.mForeignKeyName)
+                && mForeignKeyTableName.equals(expectedForeignKey.mForeignKeyTableName)
+                && mForeignKeyReferredColumn.equals(expectedForeignKey.mForeignKeyReferredColumn)) {
+
+            List<Integer> flagList = mForeignKeyFlags;
+            List<Integer> expectedFlags = expectedForeignKey.mForeignKeyFlags;
+            Collections.sort(flagList);
+            Collections.sort(expectedFlags);
+            return flagList.equals(expectedFlags);
+        }
+        return false;
+    }
+
+    /**
+     * Compares two ForeignKeyInfo and stores any backward incompatible change to the corresponding
+     * ErrorInfo of foreignKey.
+     */
+    public void checkForeignKeyDiff(
+            ForeignKeyInfo expectedForeignkeyInfo,
+            List<String> modificationOfForeignKey,
+            String tableName) {
+
+        if (!mForeignKeyTableName.equals(expectedForeignkeyInfo.mForeignKeyTableName)) {
+            modificationOfForeignKey.add(
+                    "Referenced table has been changed for Foreign key: "
+                            + mForeignKeyName
+                            + " of table: "
+                            + tableName);
+        }
+        if (!mForeignKeyReferredColumn.equals(expectedForeignkeyInfo.mForeignKeyReferredColumn)) {
+            modificationOfForeignKey.add(
+                    "Primary Key of Referenced table has been changed for Foreign key: "
+                            + mForeignKeyName
+                            + " of table: "
+                            + tableName);
+        }
+
+        List<Integer> actualForeignKeyFlags = mForeignKeyFlags.stream().sorted().toList();
+        List<Integer> expectedForeignKeyFlags =
+                expectedForeignkeyInfo.mForeignKeyFlags.stream().sorted().toList();
+
+        if (!actualForeignKeyFlags.equals(expectedForeignKeyFlags)) {
+            modificationOfForeignKey.add(
+                    "Foreign Key Flags have been changed for Foreign Key: "
+                            + mForeignKeyName
+                            + " of table: "
+                            + tableName);
+        }
+    }
+}
diff --git a/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/HealthConnectDatabaseBackwardCompatibilityTest.java b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/HealthConnectDatabaseBackwardCompatibilityTest.java
new file mode 100644
index 0000000..4304390
--- /dev/null
+++ b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/HealthConnectDatabaseBackwardCompatibilityTest.java
@@ -0,0 +1,251 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.healthconnect.cts.database;
+
+import static android.healthconnect.cts.database.DatabaseTestUtils.assertInstallSucceeds;
+import static android.healthconnect.cts.database.DatabaseTestUtils.checkColumnModification;
+import static android.healthconnect.cts.database.DatabaseTestUtils.checkExistingTableDeletion;
+import static android.healthconnect.cts.database.DatabaseTestUtils.checkForeignKeyModification;
+import static android.healthconnect.cts.database.DatabaseTestUtils.checkIndexModification;
+import static android.healthconnect.cts.database.DatabaseTestUtils.checkNewTableAddition;
+import static android.healthconnect.cts.database.DatabaseTestUtils.checkPrimaryKeyModification;
+import static android.healthconnect.cts.database.DatabaseTestUtils.deleteHcDatabase;
+import static android.healthconnect.cts.database.DatabaseTestUtils.getCurrentHcDatabaseVersion;
+import static android.healthconnect.cts.database.DatabaseTestUtils.isFilePresentInResources;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
+import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Assume;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * HealthConnectDatabaseBackwardCompatibilityTest contains test cases that ensures backward
+ * compatibility of the HealthConnect Database.
+ */
+@RunWith(DeviceJUnit4ClassRunner.class)
+public class HealthConnectDatabaseBackwardCompatibilityTest extends BaseHostJUnit4Test {
+    public static final String APEX_FILE_PREFIX = "HealthConnectVersion_";
+    public static final String APEX_FILE_SUFFIX = ".apex";
+    public static String sCurrentVersionFile;
+    public static String sPreviousVersionFile;
+    public static HashMap<String, TableInfo> sPreviousVersionSchema = new HashMap<>();
+    public static HashMap<String, TableInfo> sCurrentVersionSchema = new HashMap<>();
+
+    @Before
+    /** Initial setUp to get the Schema Hashmaps of current and previous versions. */
+    public void setUp() throws Exception {
+        /** check for device availability. */
+        ITestDevice device = getDevice();
+        assertThat(device).isNotNull();
+        rebootAndEnableRoot();
+
+        /**
+         * Getting the current version of HealthConnect database and setting the current and
+         * previous version file names.
+         */
+        int currentVersion = getCurrentHcDatabaseVersion(device);
+        setVersionFileName(currentVersion);
+    }
+
+    public void setVersionFileName(int currentVersion) {
+        sCurrentVersionFile = APEX_FILE_PREFIX + currentVersion + APEX_FILE_SUFFIX;
+        sPreviousVersionFile = APEX_FILE_PREFIX + (currentVersion - 1) + APEX_FILE_SUFFIX;
+    }
+
+    /**
+     * @return schema of the version that is installed on device.
+     */
+    public static String getSchema(ITestDevice device) throws DeviceNotAvailableException {
+        return device.executeShellCommand(
+                "cd ~; sqlite3 data/system_ce/0/healthconnect/healthconnect.db" + " \".schema\"");
+    }
+
+    private void rebootAndEnableRoot() throws DeviceNotAvailableException {
+        getDevice().reboot();
+        getDevice().waitForDeviceAvailable();
+        /** Enable root for device. */
+        if (!getDevice().isAdbRoot()) {
+            getDevice().enableAdbRoot();
+        }
+    }
+
+    /** test to check the backward compatibility of database versions. */
+    @Test
+    public void checkBackwardCompatibility() throws Exception {
+        /** Checking for the availability of both version files in resources/ */
+        Assume.assumeTrue(
+                isFilePresentInResources(sCurrentVersionFile)
+                        && isFilePresentInResources(sPreviousVersionFile));
+
+        /** Getting the schema for current version and populating its hashmap. */
+        String currentVersionSchema = getSchema(getDevice());
+        HealthConnectDatabaseSchema currentSchema =
+                new HealthConnectDatabaseSchema(currentVersionSchema);
+        sCurrentVersionSchema = currentSchema.getTableInfo();
+
+        /** Deleting the current version database from device. */
+        deleteHcDatabase(getDevice());
+
+        /** Previous version installation */
+        assertInstallSucceeds(getDevice(), sPreviousVersionFile, true);
+        rebootAndEnableRoot();
+
+        /** Getting the schema for previous version and populating its hashmap. */
+        String previousVersionSchema = getSchema(getDevice());
+        HealthConnectDatabaseSchema previousSchema =
+                new HealthConnectDatabaseSchema(previousVersionSchema);
+        sPreviousVersionSchema = previousSchema.getTableInfo();
+
+        List<String> incompatibleChanges = new ArrayList<>();
+
+        checkTableDeletion(incompatibleChanges);
+        checkColumnModifications(incompatibleChanges);
+        checkIndexModifications(incompatibleChanges);
+        checkPrimaryKeyModifications(incompatibleChanges);
+        checkForeignKeyModifications(incompatibleChanges);
+        checkNewTableModification(incompatibleChanges);
+
+        Assert.assertTrue(
+                "Changes made to the database are backward incompatible"
+                        + "\n"
+                        + incompatibleChanges,
+                incompatibleChanges.isEmpty());
+    }
+
+    /** Checks for the deletion of existing tables. */
+    public void checkTableDeletion(List<String> incompatibleChanges) {
+
+        List<String> backwardIncompatibleChangeList = new ArrayList<>();
+        checkExistingTableDeletion(
+                sPreviousVersionSchema, sCurrentVersionSchema, backwardIncompatibleChangeList);
+
+        if (!backwardIncompatibleChangeList.isEmpty()) {
+            incompatibleChanges.add(
+                    "Deletion of existing table is not allowed"
+                            + "\n"
+                            + backwardIncompatibleChangeList
+                            + "\n");
+        }
+    }
+
+    /** Checks for the modification in columns of existing tables. */
+    public void checkColumnModifications(List<String> incompatibleChanges) {
+
+        List<String> backwardIncompatibleChangeList = new ArrayList<>();
+        checkColumnModification(
+                sPreviousVersionSchema, sCurrentVersionSchema, backwardIncompatibleChangeList);
+
+        if (!backwardIncompatibleChangeList.isEmpty()) {
+            incompatibleChanges.add(
+                    "Changes made to the columns are backward incompatible"
+                            + "\n"
+                            + backwardIncompatibleChangeList
+                            + "\n");
+        }
+    }
+
+    /** Checks for the modifications in the indexes of existing tables. */
+    public void checkIndexModifications(List<String> incompatibleChanges) {
+
+        List<String> backwardIncompatibleChangeList = new ArrayList<>();
+        checkIndexModification(
+                sPreviousVersionSchema, sCurrentVersionSchema, backwardIncompatibleChangeList);
+
+        if (!backwardIncompatibleChangeList.isEmpty()) {
+            incompatibleChanges.add(
+                    "Changes made to the indexes are backward incompatible"
+                            + "\n"
+                            + backwardIncompatibleChangeList
+                            + "\n");
+        }
+    }
+
+    /** Checks for the modification in primary key columns of existing tables. */
+    public void checkPrimaryKeyModifications(List<String> incompatibleChanges) {
+
+        List<String> backwardIncompatibleChangeList = new ArrayList<>();
+        checkPrimaryKeyModification(
+                sPreviousVersionSchema, sCurrentVersionSchema, backwardIncompatibleChangeList);
+
+        if (!backwardIncompatibleChangeList.isEmpty()) {
+            incompatibleChanges.add(
+                    "Changes made to the primary keys are backward incompatible"
+                            + "\n"
+                            + backwardIncompatibleChangeList
+                            + "\n");
+        }
+    }
+
+    /** Checks for the modifications in the foreign keys of existing tables. */
+    public void checkForeignKeyModifications(List<String> incompatibleChanges) {
+
+        List<String> backwardIncompatibleChangeList = new ArrayList<>();
+        checkForeignKeyModification(
+                sPreviousVersionSchema, sCurrentVersionSchema, backwardIncompatibleChangeList);
+
+        if (!backwardIncompatibleChangeList.isEmpty()) {
+            incompatibleChanges.add(
+                    "Changes made to the foreign keys are backward incompatible"
+                            + "\n"
+                            + backwardIncompatibleChangeList
+                            + "\n");
+        }
+    }
+
+    /** Checks for the backward incompatible actions in new tables. */
+    public void checkNewTableModification(List<String> incompatibleChanges) {
+
+        List<String> backwardIncompatibleChangeList = new ArrayList<>();
+        checkNewTableAddition(
+                sPreviousVersionSchema, sCurrentVersionSchema, backwardIncompatibleChangeList);
+
+        if (!backwardIncompatibleChangeList.isEmpty()) {
+            incompatibleChanges.add(
+                    "Foreign keys of the new table are backward incompatible"
+                            + "\n"
+                            + backwardIncompatibleChangeList
+                            + "\n");
+        }
+    }
+
+    @After
+    public void tearDown() throws Exception {
+
+        if (sCurrentVersionFile != null && isFilePresentInResources(sCurrentVersionFile)) {
+            /** Deleting the previous version database from device. */
+            deleteHcDatabase(getDevice());
+
+            /** Current version re-installation */
+            assertInstallSucceeds(getDevice(), sCurrentVersionFile, true);
+            rebootAndEnableRoot();
+        }
+        getDevice().disableAdbRoot();
+    }
+}
diff --git a/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/HealthConnectDatabaseSchema.java b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/HealthConnectDatabaseSchema.java
new file mode 100644
index 0000000..16cbaa9
--- /dev/null
+++ b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/HealthConnectDatabaseSchema.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.healthconnect.cts.database;
+
+import androidx.annotation.Nullable;
+
+import java.util.HashMap;
+
+/** HealthConnectDatabaseSchema stores the list of all tables present in the database. */
+public class HealthConnectDatabaseSchema {
+    /** HashMap with tableName and tableInfo as key - value mapping. */
+    private final HashMap<String, TableInfo> mTableNameTableInfo;
+
+    /** Creates an instance for HealthConnectDatabaseSchema. */
+    HealthConnectDatabaseSchema(String inputSchema) {
+
+        mTableNameTableInfo = HealthConnectDatabaseSchemaParser.getSchemaMap(inputSchema);
+    }
+
+    /**
+     * @return the hashmap of all tables with <tableName,tableInfo> mapping.
+     */
+    @Nullable
+    public HashMap<String, TableInfo> getTableInfo() {
+        return mTableNameTableInfo;
+    }
+}
diff --git a/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/HealthConnectDatabaseSchemaParser.java b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/HealthConnectDatabaseSchemaParser.java
new file mode 100644
index 0000000..65c46f0
--- /dev/null
+++ b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/HealthConnectDatabaseSchemaParser.java
@@ -0,0 +1,318 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.healthconnect.cts.database;
+
+import androidx.annotation.NonNull;
+
+import java.util.HashMap;
+import java.util.Objects;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * HealthConnectDatabaseSchemaParser takes the sql file as input in string format and stores all
+ * information about tables,corresponding columns,foreign keys and indexes of the HealthConnect
+ * database.
+ */
+class HealthConnectDatabaseSchemaParser {
+
+    /**
+     * It matches one word(table name) followed by opening parenthesis followed by anything(table
+     * definitions including column definitions and foreign key definitions) followed by closing
+     * parenthesis(end of table definition).
+     */
+    public static final String CREATE_TABLE_REGEX = "(\\w+)\\s*\\((.*)\\)";
+
+    public static final String CHECK_CONSTRAINT_REGEX = "(?i)CHECK\\s*\\(([^)]+)\\)";
+    public static final String DEFAULT_VALUE_REGEX = "(?i)DEFAULT\\s+(\\S+)";
+
+    public static final String COMPOSITE_PRIMARY_KEY_REGEX =
+            "(?i)PRIMARY (?i)KEY\\s*\\(\\s*([^\\)]+)\\)";
+
+    /**
+     * It matches FOREIGN KEY followed by opening parenthesis followed by word (foreign key name)
+     * followed by REFERENCES followed by word(table name) followed by column names of that table
+     * and then finally flags which are optional.
+     */
+    public static final String FOREIGN_KEY_REGEX =
+            "(?i)FOREIGN (?i)KEY\\s*\\(\\s*([^\\)]+)\\)(?:\\s*(?i)REFERENCES\\s*(\\w+)\\s*\\"
+                    + "(\\s*([^\\)]+)\\))?((?: \\w+)*)?";
+
+    /**
+     * It matches CREATE UNIQUE(optionally) INDEX followed by word (index name) ON followed by
+     * word(table name) followed by column bounded by opening and closing parenthesis.
+     */
+    public static final String INDEX_REGEX =
+            "(?i)CREATE\\s+(?:\\s*UNIQUE\\s+)?(?i)INDEX\\s+(\\w+)\\s+(?i)ON\\s+(\\w+)\\s*\\((.*)"
+                    + "\\)";
+
+    public static final String WHITE_SPACE_REGEX = "\\s+";
+    public static final String CREATE_REGEX = "(?i)\\bcreate\\b";
+    public static final String INDEX_KEY_REGEX = "(?i)\\bINDEX\\b";
+    public static final String FOREIGN_REGEX = "(?i)\\bFOREIGN\\b";
+    public static final String KEY_REGEX = "(?i)\\bKEY\\b";
+    public static final String PRIMARY_REGEX = "(?i)\\bPRIMARY\\b";
+    public static final String NOT_NULL_REGEX = "(?i)\\bNOT NULL\\b";
+    public static final String AUTO_INCREMENT_REGEX = "(?i)\\bAUTOINCREMENT\\b";
+    public static final String UNIQUE_REGEX = "(?i)\\bUNIQUE\\b";
+    public static final String CHECK_REGEX = "(?i)\\bCHECK\\b";
+
+    /** Stores all the tables . */
+    static void getTableInfo(@NonNull String inputSchema, HashMap<String, TableInfo> mTableMap) {
+        Objects.requireNonNull(inputSchema);
+        String sqlStatement = inputSchema;
+        /**
+         * sqlStatement string has been processed so that it can work correctly with our regex . For
+         * that we have replaced more than one whitespace with one whitespace and broken the line so
+         * that string after 'CREATE' can start from a new line.
+         */
+        sqlStatement = sqlStatement.replaceAll(WHITE_SPACE_REGEX, " ");
+        sqlStatement = sqlStatement.replaceAll(CREATE_REGEX, "\nCREATE");
+        String[] createTableStatements = sqlStatement.split("(?i)CREATE");
+        for (String statement : createTableStatements) {
+
+            if (statement.contains("INDEX")) continue;
+            statement = statement.replaceAll("\\bTABLE\\b", "");
+            String trimmedStatement = statement.trim();
+
+            if (!trimmedStatement.isEmpty()) {
+
+                Pattern tablePattern = Pattern.compile(CREATE_TABLE_REGEX);
+                Matcher tableMatcher = tablePattern.matcher(trimmedStatement);
+
+                if (tableMatcher.find()) {
+                    String tableName = tableMatcher.group(1);
+                    TableInfo.Builder tableInfo = new TableInfo.Builder(tableName);
+                    String tableDefinition = tableMatcher.group(2);
+                    String[] columns = tableDefinition.split(",\\s*");
+                    for (String column : columns) {
+                        /**
+                         * Since we are splitting the column definitions from each other with the
+                         * help of comma, we will need to take care of the case when composite
+                         * foreign key is created as the columns will also be separated with
+                         * comma.So in order to identify only the valid column definitions ,we are
+                         * adding a small check to ensure that we consider only that part in which
+                         * either both opening and closing parenthesis are present or none of them
+                         * are present. e.g.: Suppose we have a composite foreign key as FOREIGN
+                         * KEY(col1,col2,col3) REFERENCES table(pk1,ok2,pk3) So in this case, when
+                         * we will split with comma ,the parts will be: FOREIGN KEY (col1 {ignored
+                         * as we have only opening parenthesis} col2 col3 ) REFERENCES table(pk1
+                         * {ignored as we have closing parenthesis before opening}
+                         */
+                        int first = column.indexOf('('), second = column.indexOf(')');
+                        if ((first == -1 && second != -1)
+                                || (first != -1 && second == -1)
+                                || (first > second)) {
+                            continue;
+                        } else {
+                            String[] parts = column.trim().split("\\s+");
+
+                            if (parts.length > 0
+                                    && ((parts[0].equals("FOREIGN"))
+                                            || parts[0].equals("PRIMARY"))) {
+                                continue;
+                            } else if (parts.length >= 2) {
+                                String columnName = parts[0];
+                                String dataType = parts[1];
+                                String defaultValue = null;
+                                Pattern defaultPattern = Pattern.compile(DEFAULT_VALUE_REGEX);
+                                Matcher defaultMatcher = defaultPattern.matcher(column);
+                                if (defaultMatcher.find()) {
+                                    defaultValue = defaultMatcher.group(1);
+                                }
+                                ColumnInfo.Builder col =
+                                        new ColumnInfo.Builder(columnName, dataType);
+                                col.setDefaultValue(defaultValue);
+
+                                boolean isUnique = column.contains("UNIQUE");
+                                if (isUnique) {
+                                    col.addConstraint(ColumnInfo.UNIQUE_CONSTRAINT);
+                                }
+
+                                boolean isNotNull = column.contains("NOT NULL");
+                                if (isNotNull) {
+                                    col.addConstraint(ColumnInfo.NOT_NULL_CONSTRAINT);
+                                }
+
+                                boolean hasAutoIncrement = column.contains("AUTOINCREMENT");
+                                if (hasAutoIncrement) {
+                                    col.addConstraint(ColumnInfo.AUTO_INCREMENT_CONSTRAINT);
+                                }
+                                if (column.contains("PRIMARY KEY")) {
+                                    tableInfo.addPrimaryKeyColumn(columnName);
+                                }
+                                if (column.contains("CHECK")) {
+                                    Pattern checkPattern = Pattern.compile(CHECK_CONSTRAINT_REGEX);
+                                    Matcher checkMatcher = checkPattern.matcher(column);
+                                    if (checkMatcher.find()) {
+                                        String checkConstraint = checkMatcher.group(1);
+                                        col.addCheckConstraint(checkConstraint);
+                                    }
+                                }
+                                tableInfo.addColumnInfoMapping(columnName, col.build());
+                            }
+                        }
+                    }
+                    /** Regular expression for composite Primary Key */
+                    Pattern primaryKeyPattern = Pattern.compile(COMPOSITE_PRIMARY_KEY_REGEX);
+                    Matcher primaryKeyMatcher = primaryKeyPattern.matcher(trimmedStatement);
+                    while (primaryKeyMatcher.find()) {
+                        String pkColumns = primaryKeyMatcher.group(1);
+                        String[] pkColumnList = pkColumns.split(",");
+                        for (String primaryKeyColumn : pkColumnList) {
+                            tableInfo.addPrimaryKeyColumn(primaryKeyColumn);
+                        }
+                    }
+
+                    Pattern foreignKeyPattern = Pattern.compile(FOREIGN_KEY_REGEX);
+                    Matcher foreignKeyMatcher = foreignKeyPattern.matcher(trimmedStatement);
+                    while (foreignKeyMatcher.find()) {
+                        String columnNames = foreignKeyMatcher.group(1);
+                        String referencedTable = foreignKeyMatcher.group(2);
+                        String referencedPrimaryKey = foreignKeyMatcher.group(3);
+                        String sqlForeignKeyStatement = foreignKeyMatcher.group();
+                        String[] foreignColumn = columnNames.split(",");
+
+                        if (referencedTable != null) {
+                            String[] referencedPk = referencedPrimaryKey.split(",");
+                            for (int i = 0; i < foreignColumn.length; i++) {
+                                addForeignKeyInfo(
+                                        tableInfo,
+                                        foreignColumn[i],
+                                        referencedTable,
+                                        referencedPk[i],
+                                        sqlForeignKeyStatement);
+                            }
+                        } else {
+                            for (String foreignKey : foreignColumn) {
+                                addForeignKeyInfo(tableInfo, foreignKey, null, null, null);
+                            }
+                        }
+                    }
+                    mTableMap.put(tableName, tableInfo.build());
+                }
+            }
+        }
+    }
+
+    /** Stores all the corresponding indexes of a table. */
+    static void getIndexInfo(@NonNull String inputSchema, HashMap<String, TableInfo> mTableMap) {
+        String sqlStatement = inputSchema;
+        sqlStatement = sqlStatement.replaceAll(WHITE_SPACE_REGEX, " ");
+        sqlStatement = sqlStatement.replaceAll(CREATE_REGEX, "\nCREATE");
+
+        Pattern indexPattern = Pattern.compile(INDEX_REGEX);
+        Matcher indexMatcher = indexPattern.matcher(sqlStatement);
+
+        while (indexMatcher.find()) {
+            boolean uniqueFlag = (indexMatcher.group().contains("UNIQUE"));
+            String indexName = indexMatcher.group(1);
+            String tableName = indexMatcher.group(2);
+            String columnList = indexMatcher.group(3);
+            IndexInfo.Builder indexInfo = new IndexInfo.Builder(indexName, tableName);
+            indexInfo.setUniqueFlag(uniqueFlag);
+            String[] columns = columnList.split("\\s*,\\s*");
+
+            for (String column : columns) {
+                indexInfo.addIndexCols(column);
+            }
+            TableInfo table1 = mTableMap.get(tableName);
+            table1.getIndexInfoMapping().put(indexName, indexInfo.build());
+        }
+    }
+
+    /** Populate the HashMap of HealthConnect database Schema. */
+    public static HashMap<String, TableInfo> getSchemaMap(@NonNull String inputSchema) {
+        Objects.requireNonNull(inputSchema);
+        HashMap<String, TableInfo> mTableMap = new HashMap<>();
+        inputSchema = convertToUpperCase(inputSchema);
+        getTableInfo(inputSchema, mTableMap);
+        getIndexInfo(inputSchema, mTableMap);
+        return mTableMap;
+    }
+
+    /**
+     * Checks the flags that are being used in the table while creating the foreign key and adds
+     * those flags to the flag list of the ForeignKeyInfo.
+     */
+    static void setForeignKeyFlags(
+            String sqlForeignKeyStatement, ForeignKeyInfo.Builder foreignKeyInfo) {
+        if (sqlForeignKeyStatement == null) {
+            return;
+        }
+        sqlForeignKeyStatement = sqlForeignKeyStatement.toUpperCase();
+
+        if (sqlForeignKeyStatement.contains("ON DELETE CASCADE")) {
+            foreignKeyInfo.addFlag(ForeignKeyInfo.ON_DELETE_CASCADE);
+        }
+        if (sqlForeignKeyStatement.contains("ON DELETE SET NULL")) {
+            foreignKeyInfo.addFlag(ForeignKeyInfo.ON_DELETE_SET_NULL);
+        }
+        if (sqlForeignKeyStatement.contains("ON DELETE SET DEFAULT")) {
+            foreignKeyInfo.addFlag(ForeignKeyInfo.ON_DELETE_SET_DEFAULT);
+        }
+        if (sqlForeignKeyStatement.contains("ON DELETE RESTRICT")) {
+            foreignKeyInfo.addFlag(ForeignKeyInfo.ON_DELETE_RESTRICT);
+        }
+        if (sqlForeignKeyStatement.contains("ON UPDATE CASCADE")) {
+            foreignKeyInfo.addFlag(ForeignKeyInfo.ON_UPDATE_CASCADE);
+        }
+        if (sqlForeignKeyStatement.contains("ON UPDATE SET NULL")) {
+            foreignKeyInfo.addFlag(ForeignKeyInfo.ON_UPDATE_SET_NULL);
+        }
+        if (sqlForeignKeyStatement.contains("ON UPDATE SET DEFAULT")) {
+            foreignKeyInfo.addFlag(ForeignKeyInfo.ON_UPDATE_SET_DEFAULT);
+        }
+        if (sqlForeignKeyStatement.contains("ON UPDATE RESTRICT")) {
+            foreignKeyInfo.addFlag(ForeignKeyInfo.ON_UPDATE_RESTRICT);
+        }
+        if (sqlForeignKeyStatement.contains("DEFERRABLE")) {
+            foreignKeyInfo.addFlag(ForeignKeyInfo.DEFERRABLE_FLAG);
+        }
+        if (sqlForeignKeyStatement.contains("INITIALLY DEFERRED")) {
+            foreignKeyInfo.addFlag(ForeignKeyInfo.INITIALLY_DEFERRED);
+        }
+    }
+
+    public static String convertToUpperCase(String inputSchema) {
+
+        inputSchema = inputSchema.replaceAll(INDEX_KEY_REGEX, "INDEX");
+        inputSchema = inputSchema.replaceAll(FOREIGN_REGEX, "FOREIGN");
+        inputSchema = inputSchema.replaceAll(KEY_REGEX, "KEY");
+        inputSchema = inputSchema.replaceAll(PRIMARY_REGEX, "PRIMARY");
+        inputSchema = inputSchema.replaceAll(UNIQUE_REGEX, "UNIQUE");
+        inputSchema = inputSchema.replaceAll(NOT_NULL_REGEX, "NOT NULL");
+        inputSchema = inputSchema.replaceAll(AUTO_INCREMENT_REGEX, "AUTOINCREMENT");
+        inputSchema = inputSchema.replaceAll(CHECK_REGEX, "CHECK");
+        return inputSchema;
+    }
+
+    public static void addForeignKeyInfo(
+            TableInfo.Builder tableInfo,
+            String foreignKeyColumn,
+            String referencedTable,
+            String referencedPrimaryKey,
+            String sqlForeignKeyStatement) {
+        ForeignKeyInfo.Builder foreignKeyInfo =
+                new ForeignKeyInfo.Builder(foreignKeyColumn, referencedTable, referencedPrimaryKey);
+        if (sqlForeignKeyStatement != null) {
+            setForeignKeyFlags(sqlForeignKeyStatement, foreignKeyInfo);
+        }
+
+        tableInfo.addForeignKeyInfoMapping(foreignKeyColumn, foreignKeyInfo.build());
+    }
+}
diff --git a/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/HealthConnectDatabaseUnitTest.java b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/HealthConnectDatabaseUnitTest.java
new file mode 100644
index 0000000..8881622
--- /dev/null
+++ b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/HealthConnectDatabaseUnitTest.java
@@ -0,0 +1,235 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.healthconnect.cts.database;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class HealthConnectDatabaseUnitTest {
+    /** Sample sql query taken for unit testing. */
+    static final String SAMPLE_QUERY =
+            "CREATE UNIQUE INDEX idx_sleep_session_record_table_0 ON"
+                    + " sleep_stages_table(stage_start_time)\n"
+                    + "CREATE TABLE sleep_stages_table (parent_key INTEGER NOT NULL UNIQUE"
+                    + " AUTOINCREMENT, stage_start_time INTEGER NOT NULL CHECK"
+                    + "(stage_start_timer>0),"
+                    + " stage_end_time INTEGER NOT NULL, stage_type INTEGER NOT NULL,  FOREIGN KEY"
+                    + " (parent_key) REFERENCES application_info_table(row_id) ON DELETE CASCADE)\n"
+                    + "CREATE TABLE application_info_table (row_id INTEGER PRIMARY KEY, "
+                    + "package_name"
+                    + " TEXT NOT NULL UNIQUE, app_name TEXT, app_icon BLOB, record_types_used TEXT"
+                    + " DEFAULT 'Empty')\n";
+
+    HashMap<String, TableInfo> mTableList = new HashMap<>();
+    static final String FIRST_TABLE_NAME = "sleep_stages_table";
+    static final String SECOND_TABLE_NAME = "application_info_table";
+    static final String DATA_TYPE_INTEGER = "INTEGER";
+    static final String DATA_TYPE_TEXT = "TEXT";
+    static final String DATA_TYPE_BLOB = "BLOB";
+
+    /** Initial setup to check whether table list is empty or not. */
+    @Before
+    public void setup() {
+        HealthConnectDatabaseSchema schema = new HealthConnectDatabaseSchema(SAMPLE_QUERY);
+        mTableList = schema.getTableInfo();
+        assertThat(mTableList).isNotNull();
+    }
+
+    /** tests the list of table names. */
+    @Test
+    public void test_tableName_matches() {
+        List<String> expectedTableNames = new ArrayList<>();
+        expectedTableNames.add(FIRST_TABLE_NAME);
+        expectedTableNames.add(SECOND_TABLE_NAME);
+
+        List<String> tableNameList = mTableList.keySet().stream().toList();
+
+        assertThat(expectedTableNames.size()).isEqualTo(tableNameList.size());
+        for (String expectedName : expectedTableNames) {
+            assertThat(tableNameList.contains(expectedName)).isTrue();
+        }
+    }
+
+    /** tests the list of all columns for each table. */
+    @Test
+    public void test_column_matches() {
+        HashMap<String, ColumnInfo> expectedColumnListFirstTable = new HashMap<>();
+
+        expectedColumnListFirstTable.put(
+                "parent_key",
+                new ColumnInfo.Builder("parent_key", DATA_TYPE_INTEGER)
+                        .setDefaultValue(null)
+                        .addConstraint(ColumnInfo.UNIQUE_CONSTRAINT)
+                        .addConstraint(ColumnInfo.NOT_NULL_CONSTRAINT)
+                        .addConstraint(ColumnInfo.AUTO_INCREMENT_CONSTRAINT)
+                        .build());
+
+        expectedColumnListFirstTable.put(
+                "stage_start_time",
+                new ColumnInfo.Builder("stage_start_time", DATA_TYPE_INTEGER)
+                        .setDefaultValue(null)
+                        .addConstraint(ColumnInfo.NOT_NULL_CONSTRAINT)
+                        .addCheckConstraint("stage_start_timer>0")
+                        .build());
+
+        expectedColumnListFirstTable.put(
+                "stage_end_time",
+                new ColumnInfo.Builder("stage_end_time", DATA_TYPE_INTEGER)
+                        .setDefaultValue(null)
+                        .addConstraint(ColumnInfo.NOT_NULL_CONSTRAINT)
+                        .build());
+
+        expectedColumnListFirstTable.put(
+                "stage_type",
+                new ColumnInfo.Builder("stage_type", DATA_TYPE_INTEGER)
+                        .setDefaultValue(null)
+                        .addConstraint(ColumnInfo.NOT_NULL_CONSTRAINT)
+                        .build());
+
+        HashMap<String, ColumnInfo> columnListFirstTable =
+                mTableList.get(FIRST_TABLE_NAME).getColumnInfoMapping();
+
+        assertThat(columnListFirstTable.size() == expectedColumnListFirstTable.size()).isTrue();
+
+        for (Map.Entry<String, ColumnInfo> column : expectedColumnListFirstTable.entrySet()) {
+            String columnName = column.getKey();
+            assertThat(columnListFirstTable.containsKey(columnName)).isTrue();
+            assertThat(columnListFirstTable.get(columnName).isEqual(column.getValue())).isTrue();
+        }
+
+        HashMap<String, ColumnInfo> expectedColumnListSecondTable = new HashMap<>();
+
+        expectedColumnListSecondTable.put(
+                "row_id",
+                new ColumnInfo.Builder("row_id", DATA_TYPE_INTEGER).setDefaultValue(null).build());
+
+        expectedColumnListSecondTable.put(
+                "package_name",
+                new ColumnInfo.Builder("package_name", DATA_TYPE_TEXT)
+                        .setDefaultValue(null)
+                        .addConstraint(ColumnInfo.UNIQUE_CONSTRAINT)
+                        .addConstraint(ColumnInfo.NOT_NULL_CONSTRAINT)
+                        .build());
+
+        expectedColumnListSecondTable.put(
+                "app_name",
+                new ColumnInfo.Builder("app_name", DATA_TYPE_TEXT).setDefaultValue(null).build());
+
+        expectedColumnListSecondTable.put(
+                "app_icon",
+                new ColumnInfo.Builder("app_icon", DATA_TYPE_BLOB).setDefaultValue(null).build());
+
+        expectedColumnListSecondTable.put(
+                "record_types_used",
+                new ColumnInfo.Builder("record_types_used", DATA_TYPE_TEXT)
+                        .setDefaultValue("'Empty'")
+                        .build());
+
+        HashMap<String, ColumnInfo> columnListSecondTable =
+                mTableList.get(SECOND_TABLE_NAME).getColumnInfoMapping();
+
+        assertThat(columnListSecondTable.size() == expectedColumnListSecondTable.size()).isTrue();
+
+        for (Map.Entry<String, ColumnInfo> column : expectedColumnListSecondTable.entrySet()) {
+            String columnName = column.getKey();
+            assertThat(columnListSecondTable.containsKey(columnName)).isTrue();
+            assertThat(columnListSecondTable.get(columnName).isEqual(column.getValue())).isTrue();
+        }
+    }
+
+    /** tests the primary key for each table. */
+    @Test
+    public void test_primaryKey_matches() {
+
+        List<String> primaryKeyFirstTable = mTableList.get(FIRST_TABLE_NAME).getPrimaryKey();
+        /**
+         * Directly checking whether primary key of first table is empty because expected list of
+         * primary key column is empty.
+         */
+        assertThat(primaryKeyFirstTable).isNotNull();
+        assertThat(primaryKeyFirstTable.isEmpty()).isTrue();
+
+        List<String> expectedPrimaryKeySecondTable = new ArrayList<>();
+        expectedPrimaryKeySecondTable.add("row_id");
+
+        List<String> primaryKeySecondTable = mTableList.get(SECOND_TABLE_NAME).getPrimaryKey();
+
+        assertThat(expectedPrimaryKeySecondTable.size() == primaryKeySecondTable.size()).isTrue();
+
+        for (String primaryKeyColumn : expectedPrimaryKeySecondTable) {
+            assertThat(primaryKeySecondTable.contains(primaryKeyColumn)).isTrue();
+        }
+    }
+
+    /** tests the list of foreign keys for each table. */
+    @Test
+    public void test_foreignKey_matches() {
+        HashMap<String, ForeignKeyInfo> expectedForeignKeyListSecondTable = new HashMap<>();
+        expectedForeignKeyListSecondTable.put(
+                "parent_key",
+                new ForeignKeyInfo.Builder("parent_key", "application_info_table", "row_id")
+                        .addFlag(ForeignKeyInfo.ON_DELETE_CASCADE)
+                        .build());
+
+        HashMap<String, ForeignKeyInfo> foreignKeyListSecondTable =
+                mTableList.get(FIRST_TABLE_NAME).getForeignKeyMapping();
+
+        assertThat(expectedForeignKeyListSecondTable.size() == foreignKeyListSecondTable.size())
+                .isTrue();
+
+        for (Map.Entry<String, ForeignKeyInfo> foreignKey :
+                expectedForeignKeyListSecondTable.entrySet()) {
+            String foreignKeyName = foreignKey.getKey();
+            assertThat(foreignKeyListSecondTable.containsKey(foreignKeyName)).isTrue();
+            assertThat(
+                            expectedForeignKeyListSecondTable
+                                    .get(foreignKeyName)
+                                    .isEqual(foreignKeyListSecondTable.get(foreignKeyName)))
+                    .isTrue();
+        }
+    }
+
+    /** tests the list of all indexes. */
+    @Test
+    public void test_index_matches() {
+
+        IndexInfo expectedIndexInfoFirstTable =
+                new IndexInfo.Builder("idx_sleep_session_record_table_0", FIRST_TABLE_NAME)
+                        .setUniqueFlag(true)
+                        .addIndexCols("stage_start_time")
+                        .build();
+
+        HashMap<String, IndexInfo> indexInfoFirstTable =
+                mTableList.get(FIRST_TABLE_NAME).getIndexInfoMapping();
+
+        for (Map.Entry<String, IndexInfo> index : indexInfoFirstTable.entrySet()) {
+            assertThat(index.getValue().isEqual(expectedIndexInfoFirstTable)).isTrue();
+        }
+
+        HashMap<String, IndexInfo> indexInfoSecondTable =
+                mTableList.get(SECOND_TABLE_NAME).getIndexInfoMapping();
+
+        assertThat(indexInfoSecondTable.isEmpty()).isTrue();
+    }
+}
diff --git a/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/IndexInfo.java b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/IndexInfo.java
new file mode 100644
index 0000000..5ae4324
--- /dev/null
+++ b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/IndexInfo.java
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.healthconnect.cts.database;
+
+import androidx.annotation.NonNull;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+
+/** IndexInfo contains information about all the attributes that an index can hold. */
+class IndexInfo {
+    private final String mIndexName;
+    private final String mTableName;
+    private final List<String> mColumnList;
+    private final boolean mCheckUniqueFlag;
+
+    /** Creates an instance for IndexInfo. */
+    IndexInfo(Builder builder) {
+        mIndexName = builder.mIndexName;
+        mTableName = builder.mTableName;
+        mColumnList = builder.mColumnList;
+        mCheckUniqueFlag = builder.mCheckUniqueFlag;
+    }
+
+    /** Builder pattern for IndexInfo. */
+    public static class Builder {
+        private final String mIndexName;
+        private final String mTableName;
+        private final List<String> mColumnList;
+        private boolean mCheckUniqueFlag;
+
+        Builder(String indexName, String tableName) {
+            mIndexName = indexName;
+            mTableName = tableName;
+            mColumnList = new ArrayList<>();
+        }
+
+        /**
+         * Sets the unique constraint flag of the index(if index has been made on unique flag then
+         * it is set to true otherwise false).
+         */
+        public Builder setUniqueFlag(boolean flag) {
+            mCheckUniqueFlag = flag;
+            return this;
+        }
+
+        /** Appends column to the existing list of columns. */
+        public Builder addIndexCols(@NonNull String column) {
+            Objects.requireNonNull(column);
+            mColumnList.add(column);
+            return this;
+        }
+
+        /** Builds the IndexInfo object. */
+        public IndexInfo build() {
+            return new IndexInfo(this);
+        }
+    }
+
+    /**
+     * @return name of the index.
+     */
+    @NonNull
+    public String getIndexName() {
+        return mIndexName;
+    }
+
+    /**
+     * @return name of the table of the index.
+     */
+    @NonNull
+    public String getTableName() {
+        return mTableName;
+    }
+
+    /**
+     * @return list of the columns of the table of the index.
+     */
+    @NonNull
+    public List<String> getColumnList() {
+        return mColumnList;
+    }
+
+    /**
+     * @return boolean value which shows whether index is made unique or not.
+     */
+    @NonNull
+    public boolean isUnique() {
+        return mCheckUniqueFlag;
+    }
+
+    /**
+     * @return true if the objects of the two IndexInfo are same otherwise false
+     */
+    @NonNull
+    public boolean isEqual(IndexInfo expectedIndex) {
+        if (mIndexName.equals(expectedIndex.mIndexName)
+                && mTableName.equals(expectedIndex.mTableName)
+                && mCheckUniqueFlag == expectedIndex.mCheckUniqueFlag) {
+            List<String> columnListCheck = mColumnList;
+            List<String> expectedColumnList = expectedIndex.mColumnList;
+            Collections.sort(columnListCheck);
+            Collections.sort(expectedColumnList);
+            return columnListCheck.equals(expectedColumnList);
+        }
+        return false;
+    }
+
+    /**
+     * Compares two IndexInfo and stores any backward incompatible change to the corresponding
+     * ErrorInfo of index.
+     */
+    public void checkIndexDiff(
+            IndexInfo expectedIndex, List<String> modificationOfIndex, String tableName) {
+
+        for (String columnName : mColumnList) {
+            if (!expectedIndex.mColumnList.contains(columnName)) {
+                modificationOfIndex.add(
+                        "Column: "
+                                + columnName
+                                + " has been deleted from the  index : "
+                                + mIndexName
+                                + " of table: "
+                                + tableName);
+            }
+        }
+
+        for (String columnName : expectedIndex.mColumnList) {
+            if (!mColumnList.contains(columnName)) {
+                modificationOfIndex.add(
+                        "Column: "
+                                + columnName
+                                + " has been added to the index : "
+                                + mIndexName
+                                + " of table: "
+                                + tableName);
+            }
+        }
+
+        if (mCheckUniqueFlag != expectedIndex.mCheckUniqueFlag) {
+            if (mCheckUniqueFlag) {
+                modificationOfIndex.add(
+                        "Unique flag has been removed from the index: "
+                                + mIndexName
+                                + " of table: "
+                                + tableName);
+            } else {
+                modificationOfIndex.add(
+                        "Unique flag has been added to the index: "
+                                + mIndexName
+                                + " of table: "
+                                + tableName);
+            }
+        }
+    }
+}
diff --git a/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/TableInfo.java b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/TableInfo.java
new file mode 100644
index 0000000..3b598f8
--- /dev/null
+++ b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/database/TableInfo.java
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.healthconnect.cts.database;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Objects;
+
+/** TableInfo contains information about all the attributes that a table cna hold. */
+class TableInfo {
+    private final String mTableName;
+    private final List<String> mPrimaryKey;
+
+    private final HashMap<String, ColumnInfo> mColumnNameColumnInfoMap;
+
+    private final HashMap<String, ForeignKeyInfo> mForeignKeyNameForeignKeyInfoMap;
+
+    private final HashMap<String, IndexInfo> mIndexNameIndexInfoMap;
+
+    /** Creates an instance for TableInfo. */
+    TableInfo(Builder builder) {
+        mTableName = builder.mTableName;
+        mColumnNameColumnInfoMap = builder.mColumnNameColumnInfoMap;
+        mForeignKeyNameForeignKeyInfoMap = builder.mForeignKeyNameForeignKeyInfoMap;
+        mIndexNameIndexInfoMap = builder.mIndexNameIndexInfoMap;
+        mPrimaryKey = builder.mPrimaryKey;
+    }
+
+    /** Builder pattern for TableInfo. */
+    public static class Builder {
+        private final String mTableName;
+
+        private final List<String> mPrimaryKey;
+
+        private final HashMap<String, ColumnInfo> mColumnNameColumnInfoMap;
+
+        private final HashMap<String, ForeignKeyInfo> mForeignKeyNameForeignKeyInfoMap;
+
+        private final HashMap<String, IndexInfo> mIndexNameIndexInfoMap;
+
+        Builder(String tableName) {
+            mTableName = tableName;
+            mColumnNameColumnInfoMap = new HashMap<>();
+            mForeignKeyNameForeignKeyInfoMap = new HashMap<>();
+            mIndexNameIndexInfoMap = new HashMap<>();
+            mPrimaryKey = new ArrayList<>();
+        }
+
+        /** Adds primary key column to the existing list of column. */
+        public Builder addPrimaryKeyColumn(@NonNull String primaryKey) {
+            Objects.requireNonNull(primaryKey);
+            mPrimaryKey.add(primaryKey);
+            return this;
+        }
+
+        /** Adds mapping for ColumnName and corresponding ColumnInfo. */
+        public Builder addColumnInfoMapping(
+                @NonNull String columnName, @NonNull ColumnInfo columnInfo) {
+            Objects.requireNonNull(columnName);
+            Objects.requireNonNull(columnInfo);
+            mColumnNameColumnInfoMap.put(columnName, columnInfo);
+            return this;
+        }
+
+        /** Adds mapping for ForeignKeyName and corresponding ForeignKeyInfo. */
+        public Builder addForeignKeyInfoMapping(
+                @NonNull String foreignKeyName, @NonNull ForeignKeyInfo foreignKeyInfo) {
+            Objects.requireNonNull(foreignKeyName);
+            Objects.requireNonNull(foreignKeyInfo);
+            mForeignKeyNameForeignKeyInfoMap.put(foreignKeyName, foreignKeyInfo);
+            return this;
+        }
+
+        /** Adds mapping for IndexName and corresponding IndexInfo. */
+        public Builder addIndexInfoMapping(
+                @NonNull String indexName, @NonNull IndexInfo indexInfo) {
+            Objects.requireNonNull(indexName);
+            Objects.requireNonNull(indexInfo);
+            mIndexNameIndexInfoMap.put(indexName, indexInfo);
+            return this;
+        }
+
+        /** Builds the TableInfo object. */
+        public TableInfo build() {
+            return new TableInfo(this);
+        }
+    }
+
+    /**
+     * @return name of the table.
+     */
+    @NonNull
+    public String getTableName() {
+        return mTableName;
+    }
+
+    /**
+     * @return primary key of a table.
+     */
+    @Nullable
+    public List<String> getPrimaryKey() {
+        return mPrimaryKey;
+    }
+
+    /**
+     * @return the columnName-ColumnInfo HashMap.
+     */
+    @NonNull
+    public HashMap<String, ColumnInfo> getColumnInfoMapping() {
+        return mColumnNameColumnInfoMap;
+    }
+
+    /**
+     * @return the ForeignKeyName-ForeignKeyInfo HashMap.
+     */
+    @Nullable
+    public HashMap<String, ForeignKeyInfo> getForeignKeyMapping() {
+        return mForeignKeyNameForeignKeyInfoMap;
+    }
+
+    /**
+     * @return the indexName-IndexInfo HashMap.
+     */
+    public HashMap<String, IndexInfo> getIndexInfoMapping() {
+        return mIndexNameIndexInfoMap;
+    }
+}
diff --git a/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/logging/HealthConnectDailyLogsStatsTests.java b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/logging/HealthConnectDailyLogsStatsTests.java
index c2c26a4..eb2a5e7 100644
--- a/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/logging/HealthConnectDailyLogsStatsTests.java
+++ b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/logging/HealthConnectDailyLogsStatsTests.java
@@ -24,6 +24,7 @@
 import android.cts.statsdatom.lib.ConfigUtils;
 import android.cts.statsdatom.lib.DeviceUtils;
 import android.cts.statsdatom.lib.ReportUtils;
+import android.healthconnect.cts.HostSideTestUtil;
 
 import com.android.os.StatsLog;
 import com.android.os.healthfitness.api.ApiExtensionAtoms;
@@ -51,9 +52,6 @@
     private static final String DAILY_LOG_TESTS_ACTIVITY = ".DailyLogsTests";
     private static final String HEALTH_CONNECT_SERVICE_LOG_TESTS_ACTIVITY =
             ".HealthConnectServiceLogsTests";
-    public static final String ENABLE_RATE_LIMITER_FLAG = "enable_rate_limiter";
-    public static final String NAMESPACE_HEALTH_FITNESS = "health_fitness";
-    private String mRateLimiterFeatureFlagDefaultValue;
     private IBuildInfo mCtsBuild;
     private Instant mTestStartTime;
     private Instant mTestStartTimeOnDevice;
@@ -67,7 +65,7 @@
         assertThat(mCtsBuild).isNotNull();
         assertThat(isHardwareSupported(getDevice())).isTrue();
         // TODO(b/313055175): Do not disable rate limiting once b/300238889 is resolved.
-        setupRateLimitingFeatureFlag();
+        HostSideTestUtil.setupRateLimitingFeatureFlag(getDevice());
         mTestStartTime = Instant.now();
         mTestStartTimeOnDevice = Instant.ofEpochMilli(getDevice().getDeviceDate());
         ConfigUtils.removeConfig(getDevice());
@@ -80,7 +78,7 @@
     @Override
     protected void tearDown() throws Exception {
         // TODO(b/313055175): Do not disable rate limiting once b/300238889 is resolved.
-        restoreRateLimitingFeatureFlag();
+        HostSideTestUtil.restoreRateLimitingFeatureFlag(getDevice());
         ConfigUtils.removeConfig(getDevice());
         ReportUtils.clearReports(getDevice());
         clearData();
@@ -359,28 +357,4 @@
                                 + " --user_should_confirm_time false --elapsed_realtime 0");
         getDevice().executeShellCommand("am broadcast -a android.intent.action.TIME_SET");
     }
-
-    private void setupRateLimitingFeatureFlag() throws Exception {
-        // Store default value of the flag on device for teardown.
-        mRateLimiterFeatureFlagDefaultValue =
-                DeviceUtils.getDeviceConfigFeature(
-                        getDevice(), NAMESPACE_HEALTH_FITNESS, ENABLE_RATE_LIMITER_FLAG);
-
-        DeviceUtils.putDeviceConfigFeature(
-                getDevice(), NAMESPACE_HEALTH_FITNESS, ENABLE_RATE_LIMITER_FLAG, "false");
-    }
-
-    private void restoreRateLimitingFeatureFlag() throws Exception {
-        if (mRateLimiterFeatureFlagDefaultValue == null
-                || mRateLimiterFeatureFlagDefaultValue.equals("null")) {
-            DeviceUtils.deleteDeviceConfigFeature(
-                    getDevice(), NAMESPACE_HEALTH_FITNESS, ENABLE_RATE_LIMITER_FLAG);
-        } else {
-            DeviceUtils.putDeviceConfigFeature(
-                    getDevice(),
-                    NAMESPACE_HEALTH_FITNESS,
-                    ENABLE_RATE_LIMITER_FLAG,
-                    mRateLimiterFeatureFlagDefaultValue);
-        }
-    }
 }
diff --git a/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/logging/HealthConnectServiceStatsTests.java b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/logging/HealthConnectServiceStatsTests.java
index 12846ae..8a27f02 100644
--- a/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/logging/HealthConnectServiceStatsTests.java
+++ b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/logging/HealthConnectServiceStatsTests.java
@@ -23,6 +23,7 @@
 import android.cts.statsdatom.lib.ConfigUtils;
 import android.cts.statsdatom.lib.DeviceUtils;
 import android.cts.statsdatom.lib.ReportUtils;
+import android.healthconnect.cts.HostSideTestUtil;
 import android.healthfitness.api.ApiMethod;
 import android.healthfitness.api.ApiStatus;
 import android.healthfitness.api.ForegroundState;
@@ -50,6 +51,8 @@
         if (!isHardwareSupported(getDevice())) {
             return;
         }
+        // TODO(b/313055175): Do not disable rate limiting once b/300238889 is resolved.
+        HostSideTestUtil.setupRateLimitingFeatureFlag(getDevice());
         assertThat(mCtsBuild).isNotNull();
         ConfigUtils.removeConfig(getDevice());
         ReportUtils.clearReports(getDevice());
@@ -57,6 +60,8 @@
 
     @Override
     protected void tearDown() throws Exception {
+        // TODO(b/313055175): Do not disable rate limiting once b/300238889 is resolved.
+        HostSideTestUtil.restoreRateLimitingFeatureFlag(getDevice());
         ConfigUtils.removeConfig(getDevice());
         ReportUtils.clearReports(getDevice());
         super.tearDown();
diff --git a/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/logging/HealthConnectUiLogsTests.kt b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/logging/HealthConnectUiLogsTests.kt
index 2209137..a05eb41 100644
--- a/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/logging/HealthConnectUiLogsTests.kt
+++ b/tests/cts/hostsidetests/healthconnect/host/src/android/healthconnect/cts/logging/HealthConnectUiLogsTests.kt
@@ -20,6 +20,7 @@
 import android.cts.statsdatom.lib.ConfigUtils
 import android.cts.statsdatom.lib.DeviceUtils
 import android.cts.statsdatom.lib.ReportUtils
+import android.healthconnect.cts.HostSideTestUtil
 import android.healthconnect.cts.HostSideTestUtil.isHardwareSupported
 import android.healthfitness.ui.ElementId
 import android.healthfitness.ui.PageId
@@ -43,12 +44,14 @@
 
     override fun setUp() {
         super.setUp()
-        if(!isHardwareSupported(device)) {
+        if (!isHardwareSupported(device)) {
             return
         }
         assertThat(mCtsBuild).isNotNull()
         ConfigUtils.removeConfig(device)
         ReportUtils.clearReports(device)
+        // TODO(b/313055175): Do not disable rate limiting once b/300238889 is resolved.
+        HostSideTestUtil.setupRateLimitingFeatureFlag(device)
         val pmResult =
             device.executeShellCommand(
                 "pm list packages com.google.android.healthconnect.controller")
@@ -72,6 +75,8 @@
     override fun tearDown() {
         ConfigUtils.removeConfig(device)
         ReportUtils.clearReports(device)
+        // TODO(b/313055175): Do not disable rate limiting once b/300238889 is resolved.
+        HostSideTestUtil.restoreRateLimitingFeatureFlag(device)
         super.tearDown()
     }
 
@@ -80,7 +85,7 @@
     }
 
     fun testImpressionsAndInteractionsSent() {
-        if(!isHardwareSupported(device)) {
+        if (!isHardwareSupported(device)) {
             return
         }
         DeviceUtils.runDeviceTests(
@@ -120,49 +125,43 @@
         assertThat(dataAndAccessInteraction.size).isAtLeast(1)
 
         val appPermissionsImpression =
-            filterImpressionLogs(data, homePageId, ElementId.APP_PERMISSIONS_BUTTON)
+            filterImpressionLogs(data, ElementId.APP_PERMISSIONS_BUTTON)
         assertThat(appPermissionsImpression.size).isAtLeast(1)
 
         val dataAndAccessImpression =
-            filterImpressionLogs(data, homePageId, ElementId.DATA_AND_ACCESS_BUTTON)
+            filterImpressionLogs(data, ElementId.DATA_AND_ACCESS_BUTTON)
         assertThat(dataAndAccessImpression.size).isAtLeast(1)
 
         val recentAccessDataImpression =
-            filterImpressionLogs(data, homePageId, ElementId.RECENT_ACCESS_ENTRY)
+            filterImpressionLogs(data, ElementId.RECENT_ACCESS_ENTRY)
         assertThat(recentAccessDataImpression.size).isAtLeast(1)
 
         val seeAllRecentAccessImpression =
-            filterImpressionLogs(data, homePageId, ElementId.SEE_ALL_RECENT_ACCESS_BUTTON)
+            filterImpressionLogs(data, ElementId.SEE_ALL_RECENT_ACCESS_BUTTON)
         assertThat(seeAllRecentAccessImpression.size).isAtLeast(1)
 
         val toolbarImpression =
-            filterImpressionLogs(data, homePageId, ElementId.TOOLBAR_SETTINGS_BUTTON)
+            filterImpressionLogs(data, ElementId.TOOLBAR_SETTINGS_BUTTON)
         assertThat(toolbarImpression.size).isAtLeast(1)
 
         val categoryImpression =
-            filterImpressionLogs(data, categoriesPageId, ElementId.CATEGORY_BUTTON)
+            filterImpressionLogs(data, ElementId.CATEGORY_BUTTON)
         assertThat(categoryImpression.size).isAtLeast(2)
 
         val seeAllCategoriesImpression =
-            filterImpressionLogs(data, categoriesPageId, ElementId.SEE_ALL_CATEGORIES_BUTTON)
+            filterImpressionLogs(data, ElementId.SEE_ALL_CATEGORIES_BUTTON)
         assertThat(seeAllCategoriesImpression.size).isAtLeast(1)
 
-        val autoDeleteImpression =
-            filterImpressionLogs(data, categoriesPageId, ElementId.AUTO_DELETE_BUTTON)
-        assertThat(autoDeleteImpression.size).isAtLeast(1)
-
         val deleteAllDataImpression =
-            filterImpressionLogs(data, categoriesPageId, ElementId.DELETE_ALL_DATA_BUTTON)
+            filterImpressionLogs(data, ElementId.DELETE_ALL_DATA_BUTTON)
         assertThat(deleteAllDataImpression.size).isAtLeast(1)
     }
 
     private fun filterImpressionLogs(
         data: List<StatsLog.EventMetricData>,
-        pageId: PageId,
         elementId: ElementId
     ): List<StatsLog.EventMetricData> {
         return data.filter {
-            it.atom.getExtension(UiExtensionAtoms.healthConnectUiImpression).page == pageId &&
                 it.atom.getExtension(UiExtensionAtoms.healthConnectUiImpression).element ==
                     elementId
         }
diff --git a/tests/cts/hostsidetests/healthconnect/host/src/util/HostSideTestUtil.java b/tests/cts/hostsidetests/healthconnect/host/src/util/HostSideTestUtil.java
index b1e1ea3..9a74363 100644
--- a/tests/cts/hostsidetests/healthconnect/host/src/util/HostSideTestUtil.java
+++ b/tests/cts/hostsidetests/healthconnect/host/src/util/HostSideTestUtil.java
@@ -41,6 +41,10 @@
     private static final String FEATURE_LEANBACK = "android.software.leanback";
     private static final String FEATURE_AUTOMOTIVE = "android.hardware.type.automotive";
 
+    private static final String ENABLE_RATE_LIMITER_FLAG = "enable_rate_limiter";
+    private static final String NAMESPACE_HEALTH_FITNESS = "health_fitness";
+    private static String sRateLimiterFlagDefaultValue;
+
     /** Clears all data on the device, including access logs. */
     public static void clearData(ITestDevice device) throws Exception {
         triggerTestInTestApp(device, DAILY_LOG_TESTS_ACTIVITY, "deleteAllRecordsAddedForTest");
@@ -127,4 +131,29 @@
             return false;
         }
     }
+
+    /** Temporarily disables the rate limiter feature flag. */
+    public static void setupRateLimitingFeatureFlag(ITestDevice device) throws Exception {
+        // Store default value of the flag on device for teardown.
+        sRateLimiterFlagDefaultValue =
+                DeviceUtils.getDeviceConfigFeature(
+                        device, NAMESPACE_HEALTH_FITNESS, ENABLE_RATE_LIMITER_FLAG);
+
+        DeviceUtils.putDeviceConfigFeature(
+                device, NAMESPACE_HEALTH_FITNESS, ENABLE_RATE_LIMITER_FLAG, "false");
+    }
+
+    /** Restores the rate limiter feature flag. */
+    public static void restoreRateLimitingFeatureFlag(ITestDevice device) throws Exception {
+        if (sRateLimiterFlagDefaultValue == null || sRateLimiterFlagDefaultValue.equals("null")) {
+            DeviceUtils.deleteDeviceConfigFeature(
+                    device, NAMESPACE_HEALTH_FITNESS, ENABLE_RATE_LIMITER_FLAG);
+        } else {
+            DeviceUtils.putDeviceConfigFeature(
+                    device,
+                    NAMESPACE_HEALTH_FITNESS,
+                    ENABLE_RATE_LIMITER_FLAG,
+                    sRateLimiterFlagDefaultValue);
+        }
+    }
 }
diff --git a/tests/cts/src/android/healthconnect/cts/HealthConnectChangeLogsTests.java b/tests/cts/src/android/healthconnect/cts/HealthConnectChangeLogsTests.java
index 33a3187..bba6498 100644
--- a/tests/cts/src/android/healthconnect/cts/HealthConnectChangeLogsTests.java
+++ b/tests/cts/src/android/healthconnect/cts/HealthConnectChangeLogsTests.java
@@ -47,7 +47,6 @@
 @AppModeFull(reason = "HealthConnectManager is not accessible to instant apps")
 @RunWith(AndroidJUnit4.class)
 public class HealthConnectChangeLogsTests {
-
     @After
     public void tearDown() throws InterruptedException {
         Context context = ApplicationProvider.getApplicationContext();
@@ -59,6 +58,13 @@
         TestUtils.deleteAllStagedRemoteData();
     }
 
+    @Before
+    public void setUp() {
+        // TODO(b/283737434): Update the HC code to use user aware context on permission change.
+        // Temporary fix to set firstGrantTime for the correct user in HSUM.
+        TestUtils.deleteAllStagedRemoteData();
+    }
+
     @Test
     public void testGetChangeLogToken() throws InterruptedException {
         ChangeLogTokenRequest changeLogTokenRequest = new ChangeLogTokenRequest.Builder().build();
diff --git a/tests/cts/src/android/healthconnect/cts/ui/CategoriesFragmentTest.kt b/tests/cts/src/android/healthconnect/cts/ui/CategoriesFragmentTest.kt
index 2eff621..90ca2f5 100644
--- a/tests/cts/src/android/healthconnect/cts/ui/CategoriesFragmentTest.kt
+++ b/tests/cts/src/android/healthconnect/cts/ui/CategoriesFragmentTest.kt
@@ -19,13 +19,12 @@
 import android.health.connect.datatypes.DistanceRecord
 import android.health.connect.datatypes.Record
 import android.health.connect.datatypes.StepsRecord
-import android.healthconnect.cts.utils.TestUtils.insertRecords
-import android.healthconnect.cts.utils.TestUtils.setAutoDeletePeriod
-import android.healthconnect.cts.utils.TestUtils.verifyDeleteRecords
 import android.healthconnect.cts.lib.ActivityLauncher.launchDataActivity
 import android.healthconnect.cts.lib.UiTestUtils.clickOnText
 import android.healthconnect.cts.lib.UiTestUtils.stepsRecordFromTestApp
 import android.healthconnect.cts.lib.UiTestUtils.waitDisplayed
+import android.healthconnect.cts.utils.TestUtils.insertRecords
+import android.healthconnect.cts.utils.TestUtils.verifyDeleteRecords
 import androidx.test.uiautomator.By
 import java.time.Instant
 import org.junit.AfterClass
@@ -37,8 +36,6 @@
 
     companion object {
 
-        private const val THREE_MONTHS = 3 * 30
-
         @JvmStatic
         @BeforeClass
         fun setup() {
@@ -72,26 +69,6 @@
         }
     }
 
-    @Test
-    fun categoriesFragment_never_showsAutoDeleteOption() {
-        setAutoDeletePeriod(0)
-
-        context.launchDataActivity {
-            waitDisplayed(By.text("Auto-delete"))
-            waitDisplayed(By.text("Off"))
-        }
-    }
-
-    @Test
-    fun categoriesFragment_3months_showsAutoDeleteOption() {
-        setAutoDeletePeriod(THREE_MONTHS)
-
-        context.launchDataActivity {
-            waitDisplayed(By.text("Auto-delete"))
-            waitDisplayed(By.text("After 3 months"))
-        }
-    }
-
     // TODO(b/274920669) Fix flaky tests
     //    @Test
     //    fun categoriesFragment_deleteAllData() {
diff --git a/tests/cts/src/android/healthconnect/cts/ui/HomeFragmentTest.kt b/tests/cts/src/android/healthconnect/cts/ui/HomeFragmentTest.kt
index 6adcbd1..c5828ed 100644
--- a/tests/cts/src/android/healthconnect/cts/ui/HomeFragmentTest.kt
+++ b/tests/cts/src/android/healthconnect/cts/ui/HomeFragmentTest.kt
@@ -19,11 +19,11 @@
 import android.health.connect.datatypes.BasalMetabolicRateRecord
 import android.health.connect.datatypes.HeartRateRecord
 import android.health.connect.datatypes.StepsRecord
-import android.healthconnect.cts.utils.TestUtils.verifyDeleteRecords
 import android.healthconnect.cts.lib.ActivityLauncher.launchMainActivity
 import android.healthconnect.cts.lib.MultiAppTestUtils.insertRecordAs
 import android.healthconnect.cts.lib.UiTestUtils.clickOnText
 import android.healthconnect.cts.lib.UiTestUtils.waitDisplayed
+import android.healthconnect.cts.utils.TestUtils.verifyDeleteRecords
 import androidx.test.uiautomator.By
 import com.android.cts.install.lib.TestApp
 import java.time.Instant
@@ -84,7 +84,7 @@
             clickOnText("App permissions")
 
             waitDisplayed(By.text("Allowed access"))
-            // TODO(b/265789268): Fix flaky "DNot allowed access" not found.
+            // TODO(b/265789268): Fix flaky "Not allowed access" not found.
             // waitDisplayed(By.text("Not allowed access"))
         }
     }
@@ -96,13 +96,23 @@
 
             waitDisplayed(By.text("Browse data"))
             waitDisplayed(By.text("Manage data"))
-            waitDisplayed(By.text("Auto-delete"))
 
             waitDisplayed(By.text("Delete all data"))
         }
     }
 
     @Test
+    fun homeFragment_openManageData() {
+        context.launchMainActivity {
+            clickOnText("Manage data")
+
+            waitDisplayed(By.text("Auto-delete"))
+            waitDisplayed(By.text("Data sources and priority"))
+            waitDisplayed(By.text("Set units"))
+        }
+    }
+
+    @Test
     fun homeFragment_recentAccessShownOnHomeScreen() {
         context.launchMainActivity {
             waitDisplayed(By.textContains("CtsHealthConnectTest"))
diff --git a/tests/cts/src/android/healthconnect/cts/ui/ManageDataFragmentTest.kt b/tests/cts/src/android/healthconnect/cts/ui/ManageDataFragmentTest.kt
new file mode 100644
index 0000000..3a83aff
--- /dev/null
+++ b/tests/cts/src/android/healthconnect/cts/ui/ManageDataFragmentTest.kt
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.healthconnect.cts.ui
+
+import android.healthconnect.cts.lib.ActivityLauncher.launchMainActivity
+import android.healthconnect.cts.lib.UiTestUtils
+import android.healthconnect.cts.lib.UiTestUtils.clickOnText
+import android.healthconnect.cts.utils.TestUtils
+import androidx.test.uiautomator.By
+import org.junit.Test
+
+/** CTS test for HealthConnect Manage data screen. */
+class ManageDataFragmentTest : HealthConnectBaseTest() {
+
+    companion object {
+        private const val THREE_MONTHS = 3 * 30
+    }
+
+    @Test
+    fun manageDataFragment_never_showsAutoDeleteOption() {
+        TestUtils.setAutoDeletePeriod(0)
+
+        context.launchMainActivity {
+            clickOnText("Manage data")
+            UiTestUtils.waitDisplayed(By.text("Auto-delete"))
+            UiTestUtils.waitDisplayed(By.text("Off"))
+        }
+    }
+
+    @Test
+    fun manageDataFragment_3months_showsAutoDeleteOption() {
+        TestUtils.setAutoDeletePeriod(THREE_MONTHS)
+
+        context.launchMainActivity {
+            clickOnText("Manage data")
+            UiTestUtils.waitDisplayed(By.text("Auto-delete"))
+            UiTestUtils.waitDisplayed(By.text("After 3 months"))
+        }
+    }
+}
diff --git a/tests/unittests/Android.bp b/tests/unittests/Android.bp
index 23d2c18..41cb913 100644
--- a/tests/unittests/Android.bp
+++ b/tests/unittests/Android.bp
@@ -27,15 +27,18 @@
     ],
     test_suites: [
         "mts-healthfitness",
-        "general-tests"
+        "general-tests",
     ],
-    defaults: ["mts-target-sdk-version-current", "modules-utils-testable-device-config-defaults"],
+    defaults: [
+        "mts-target-sdk-version-current",
+        "modules-utils-testable-device-config-defaults",
+    ],
     static_libs: [
         "service-healthfitness.impl",
         "framework-healthfitness.impl",
         "androidx.test.runner",
         "mockito-target-extended-minus-junit4",
-        "truth-prebuilt",
+        "truth",
         "services.core",
         "androidx.test.ext.truth",
     ],
@@ -54,4 +57,4 @@
     // Test coverage system runs on different devices. Need to
     // compile for all architecture.
     compile_multilib: "both",
-}
\ No newline at end of file
+}