Merge "Add test for AdapterService.dump()" into tm-qpr-dev
diff --git a/android/app/res/values-af/strings.xml b/android/app/res/values-af/strings.xml
index 3b74527..91613ca 100644
--- a/android/app/res/values-af/strings.xml
+++ b/android/app/res/values-af/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"Lêers groter as 4 GB kan nie oorgedra word nie"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Koppel aan Bluetooth"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"Bluetooth is aan in vliegtuigmodus"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"As jy Bluetooth aangeskakel hou, sal jou foon onthou om dit aan te hou wanneer jy weer in vliegtuigmodus is"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"Bluetooth bly aan"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"Jou foon onthou om Bluetooth aangeskakel te hou in vliegtuigmodus. Skakel Bluetooth af as jy nie wil hê dit moet aan bly nie."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"Wi-fi en Bluetooth bly aan"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"Jou foon onthou om wi‑fi en Bluetooth aan te hou in vliegtuigmodus. Skakel wi-fi en Bluetooth af as jy nie wil het hulle moet aan bly nie."</string>
</resources>
diff --git a/android/app/res/values-as/strings.xml b/android/app/res/values-as/strings.xml
index 1d08a04..526c3f0 100644
--- a/android/app/res/values-as/strings.xml
+++ b/android/app/res/values-as/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"৪ জি. বি. তকৈ ডাঙৰ ফাইল স্থানান্তৰ কৰিব নোৱাৰি"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"ব্লুটুথৰ সৈতে সংযোগ কৰক"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"এয়াৰপ্লেন ম’ডত ব্লুটুথ অন হৈ থাকিব"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"আপুনি যদি ব্লুটুথ অন কৰি ৰাখে, পৰৱৰ্তী সময়ত আপুনি এয়াৰপ্লেন ম’ড ব্যৱহাৰ কৰিলে আপোনাৰ ফ’নটোৱে এয়া অন কৰি ৰাখিবলৈ মনত ৰাখিব"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"ব্লুটুথ অন হৈ থাকে"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"আপোনাৰ ফ’নটোৱে এয়াৰপ্লেন ম’ডত ব্লুটুথ অন ৰাখিবলৈ মনত ৰাখে। আপুনি যদি ব্লুটুথ অন হৈ থকাটো নিবিচাৰে, তেন্তে ইয়াক অফ কৰক।"</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"ৱাই-ফাই আৰু ব্লুটুথ অন হৈ থাকে"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"আপোনাৰ ফ’নটোৱে এয়াৰপ্লেন ম’ডত ৱাই-ফাই আৰু ব্লুটুথ অন ৰাখিবলৈ মনত ৰাখে। আপুনি ৱাই-ফাই আৰু ব্লুটুথ অন হৈ থকাটো নিবিচাৰিলে সেইবোৰ অফ কৰক।"</string>
</resources>
diff --git a/android/app/res/values-az/strings.xml b/android/app/res/values-az/strings.xml
index 05d7db1..0791d10 100644
--- a/android/app/res/values-az/strings.xml
+++ b/android/app/res/values-az/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"4GB-dən böyük olan faylları köçürmək mümkün deyil"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Bluetooth\'a qoşulun"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"Bluetooth təyyarə rejimində aktivdir"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Bluetooth\'u aktiv saxlasanız, növbəti dəfə təyyarə rejimində olduqda telefonunuz onu aktiv saxlayacaq"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"Bluetooth aktiv qalacaq"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"Telefonunuz təyyarə rejimində Bluetooth\'u aktiv saxlayacaq. Aktiv qalmasını istəmirsinizsə, Bluetooth\'u deaktiv edin."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"Wi-Fi və Bluetooth aktiv qalır"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"Telefonunuz təyyarə rejimində Wi‑Fi və Bluetooth\'u aktiv saxlayacaq. Aktiv qalmasını istəmirsinizsə, Wi-Fi və Bluetooth\'u deaktiv edin."</string>
</resources>
diff --git a/android/app/res/values-bs/strings.xml b/android/app/res/values-bs/strings.xml
index 772e4c6..8c57a62 100644
--- a/android/app/res/values-bs/strings.xml
+++ b/android/app/res/values-bs/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"Nije moguće prenijeti fajlove veće od 4 GB"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Poveži se na Bluetooth"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"Bluetooth je uključen u načinu rada u avionu"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Ako ostavite Bluetooth uključenim, telefon će zapamtiti da ga ostavi uključenog sljedeći put kada budete u načinu rada u avionu"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"Bluetooth ostaje uključen"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"Telefon pamti da Bluetooth treba biti uključen u načinu rada u avionu. Isključite Bluetooth ako ne želite da ostane uključen."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"WiFi i Bluetooth ostaju uključeni"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"Telefon pamti da WiFi i Bluetooth trebaju biti uključeni u načinu rada u avionu. Isključite WiFi i Bluetooth ako ne želite da ostanu uključeni."</string>
</resources>
diff --git a/android/app/res/values-de/strings.xml b/android/app/res/values-de/strings.xml
index a55b68b..82283c3 100644
--- a/android/app/res/values-de/strings.xml
+++ b/android/app/res/values-de/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"Dateien mit mehr als 4 GB können nicht übertragen werden"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Mit Bluetooth verbinden"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"Bluetooth im Flugmodus eingeschaltet"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Wenn du Bluetooth nicht ausschaltest, bleibt es eingeschaltet, wenn du das nächste Mal in den Flugmodus wechselst"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"Bluetooth bleibt aktiviert"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"Auf deinem Smartphone bleibt Bluetooth im Flugmodus eingeschaltet. Schalte Bluetooth aus, wenn du das nicht möchtest."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"WLAN und Bluetooth bleiben eingeschaltet"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"Auf deinem Smartphone bleiben WLAN und Bluetooth im Flugmodus eingeschaltet. Schalte sie aus, wenn du das nicht möchtest."</string>
</resources>
diff --git a/android/app/res/values-el/strings.xml b/android/app/res/values-el/strings.xml
index ae31bfd..6afca1f 100644
--- a/android/app/res/values-el/strings.xml
+++ b/android/app/res/values-el/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"Δεν είναι δυνατή η μεταφορά αρχείων που ξεπερνούν τα 4 GB"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Σύνδεση σε Bluetooth"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"Bluetooth ενεργοποιημένο σε λειτουργία πτήσης"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Αν διατηρήσετε το Bluetooth ενεργοποιημένο, το τηλέφωνό σας θα θυμάται να το διατηρήσει ενεργοποιημένο την επόμενη φορά που θα βρεθεί σε λειτουργία πτήσης"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"Το Bluetooth παραμένει ενεργό"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"Το τηλέφωνο θυμάται να διατηρεί ενεργοποιημένο το Bluetooth σε λειτουργία πτήσης. Απενεργοποιήστε το Bluetooth αν δεν θέλετε να παραμένει ενεργοποιημένο."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"Το Wi-Fi και το Bluetooth παραμένουν ενεργοποιημένα"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"Το τηλέφωνο θυμάται να διατηρεί ενεργοποιημένο το Wi‑Fi και το Bluetooth σε λειτουργία πτήσης. Απενεργοποιήστε το Wi-Fi και το Bluetooth αν δεν θέλετε να παραμένουν ενεργοποιημένα."</string>
</resources>
diff --git a/android/app/res/values-es-rUS/strings.xml b/android/app/res/values-es-rUS/strings.xml
index 7f3e6c1..89d6b57 100644
--- a/android/app/res/values-es-rUS/strings.xml
+++ b/android/app/res/values-es-rUS/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"No se pueden transferir los archivos de más de 4 GB"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Conectarse a Bluetooth"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"Bluetooth activado en modo de avión"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Si mantienes el Bluetooth activado, el teléfono lo dejará activado la próxima vez que actives el modo de avión"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"El Bluetooth permanece activado"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"El teléfono dejará activado el Bluetooth en el modo de avión. Desactívalo si no quieres que permanezca activado."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"El Wi-Fi y el Bluetooth permanecen activados"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"El teléfono dejará activado el Wi-Fi y el Bluetooth en el modo de avión. Si no quieres que permanezcan activados, desactívalos."</string>
</resources>
diff --git a/android/app/res/values-fr-rCA/strings.xml b/android/app/res/values-fr-rCA/strings.xml
index 7732b5b..1977da0 100644
--- a/android/app/res/values-fr-rCA/strings.xml
+++ b/android/app/res/values-fr-rCA/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"Les fichiers dépassant 4 Go ne peuvent pas être transférés"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Connexion au Bluetooth"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"Bluetooth activé en mode Avion"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Si vous laissez le Bluetooth activé, votre téléphone se souviendra qu\'il doit le laisser activé la prochaine fois que vous serez en mode Avion"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"Le Bluetooth reste activé"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"Votre téléphone se souvient de garder le Bluetooth activé en mode Avion. Désactivez le Bluetooth si vous ne souhaitez pas qu\'il reste activé."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"Le Wi-Fi et le Bluetooth restent activés"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"Votre téléphone se souvient de garder le Wi-Fi et le Bluetooth activés en mode Avion. Désactivez le Wi-Fi et le Bluetooth si vous ne souhaitez pas qu\'ils restent activés."</string>
</resources>
diff --git a/android/app/res/values-fr/strings.xml b/android/app/res/values-fr/strings.xml
index 6433175..48a84dc 100644
--- a/android/app/res/values-fr/strings.xml
+++ b/android/app/res/values-fr/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"Impossible de transférer les fichiers supérieurs à 4 Go"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Se connecter au Bluetooth"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"Bluetooth activé en mode Avion"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Si vous laissez le Bluetooth activé, votre téléphone s\'en souviendra et le Bluetooth restera activé la prochaine fois que vous serez en mode Avion"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"Le Bluetooth reste activé"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"Le Bluetooth restera activé en mode Avion. Vous pouvez le désactiver si vous le souhaitez."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"Le Wi-Fi et le Bluetooth restent activés"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"Le Wi‑Fi et le Bluetooth de votre téléphone resteront activés en mode Avion. Vous pouvez les désactivez si vous le souhaitez."</string>
</resources>
diff --git a/android/app/res/values-gl/strings.xml b/android/app/res/values-gl/strings.xml
index a6dfd07..d46049d 100644
--- a/android/app/res/values-gl/strings.xml
+++ b/android/app/res/values-gl/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"Non se poden transferir ficheiros de máis de 4 GB"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Conectar ao Bluetooth"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"Bluetooth activado no modo avión"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Se mantés o Bluetooth activado, o teléfono lembrará que ten que deixalo nese estado a próxima vez que esteas no modo avión"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"O Bluetooth permanece activado"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"O teu teléfono lembrará manter o Bluetooth activado no modo avión. Se non queres que permaneza nese estado, desactívao."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"A wifi e o Bluetooth permanecen activados"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"O teu teléfono lembrará manter a wifi e o Bluetooth activados no modo avión. Se non queres que permanezan nese estado, desactívaos."</string>
</resources>
diff --git a/android/app/res/values-gu/strings.xml b/android/app/res/values-gu/strings.xml
index 9b1846a..1832689 100644
--- a/android/app/res/values-gu/strings.xml
+++ b/android/app/res/values-gu/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"4GB કરતા મોટી ફાઇલ ટ્રાન્સફર કરી શકાતી નથી"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"બ્લૂટૂથ સાથે કનેક્ટ કરો"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"એરપ્લેન મોડમાં બ્લૂટૂથ ચાલુ છે"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"જો તમે બ્લૂટૂથ ચાલુ રાખો, તો તમે જ્યારે આગલી વખતે એરપ્લેન મોડ પર જશો, ત્યારે તમારો ફોન તેને ચાલુ રાખવાનું યાદ રાખશે"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"બ્લૂટૂથ ચાલુ રહેશે"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"તમારો ફોન બ્લૂટૂથને એરપ્લેન મોડમાં ચાલુ રાખવાનું યાદ રાખે છે. જો તમે બ્લૂટૂથ ચાલુ રાખવા માગતા ન હો, તો તેને બંધ કરો."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"વાઇ-ફાઇ અને બ્લૂટૂથ ચાલુ રહે છે"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"તમારો ફોન વાઇ-ફાઇ અને બ્લૂટૂથને એરપ્લેન મોડમાં ચાલુ રાખવાનું યાદ રાખે છે. જો તમે વાઇ-ફાઇ અને બ્લૂટૂથ ચાલુ રાખવા માગતા ન હો, તો તેને બંધ કરો."</string>
</resources>
diff --git a/android/app/res/values-hu/strings.xml b/android/app/res/values-hu/strings.xml
index 5e75b06..4b1c451 100644
--- a/android/app/res/values-hu/strings.xml
+++ b/android/app/res/values-hu/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"A 4 GB-nál nagyobb fájlokat nem lehet átvinni"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Csatlakozás Bluetooth-eszközhöz"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"Bluetooth bekapcsolva Repülős üzemmódban"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Ha bekapcsolva tartja a Bluetootht, a telefon emlékezni fog arra, hogy a következő alkalommal, amikor Repülős üzemmódban van, bekapcsolva tartsa a funkciót."</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"A Bluetooth bekapcsolva marad"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"A telefon bekapcsolva tartja a Bluetootht Repülős üzemmódban. Kapcsolja ki a Bluetootht, ha nem szeretné, hogy bekapcsolva maradjon."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"A Wi-Fi és a Bluetooth bekapcsolva marad"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"A telefon bekapcsolva tartja a Wi‑Fi-t és a Bluetootht Repülős üzemmódban. Ha nem szeretné, hogy bekapcsolva maradjon a Wi-Fi és a Bluetooth, kapcsolja ki őket."</string>
</resources>
diff --git a/android/app/res/values-in/strings.xml b/android/app/res/values-in/strings.xml
index 0bf4734..f9a8987 100644
--- a/android/app/res/values-in/strings.xml
+++ b/android/app/res/values-in/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"File yang berukuran lebih dari 4GB tidak dapat ditransfer"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Hubungkan ke Bluetooth"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"Bluetooth aktif dalam mode pesawat"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Jika Bluetooth tetap diaktifkan, ponsel akan ingat untuk tetap mengaktifkannya saat berikutnya ponsel Anda disetel ke mode pesawat"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"Bluetooth tetap aktif"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"Ponsel akan mengingat untuk tetap mengaktifkan Bluetooth dalam mode pesawat. Nonaktifkan jika Anda tidak ingin Bluetooth terus aktif."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"Wi-Fi dan Bluetooth tetap aktif"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"Ponsel akan mengingat untuk tetap mengaktifkan Wi-Fi dan Bluetooth dalam mode pesawat. Nonaktifkan jika Anda tidak ingin Wi-Fi dan Bluetooth terus aktif."</string>
</resources>
diff --git a/android/app/res/values-iw/strings.xml b/android/app/res/values-iw/strings.xml
index 9c08f97..92f929b 100644
--- a/android/app/res/values-iw/strings.xml
+++ b/android/app/res/values-iw/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"לא ניתן להעביר קבצים שגדולים מ-4GB"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"התחברות באמצעות Bluetooth"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"חיבור ה-Bluetooth מופעל במצב טיסה"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"אם חיבור ה-Bluetooth נשאר מופעל, הטלפון יזכור להשאיר אותו מופעל בפעם הבאה שהוא יועבר למצב טיסה"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"Bluetooth יישאר מופעל"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"חיבור ה-Bluetooth בטלפון יישאר מופעל במצב טיסה. אפשר להשבית את ה-Bluetooth אם לא רוצים שהוא יפעל."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"חיבורי ה-Wi‑Fi וה-Bluetooth יישארו מופעלים"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"חיבורי ה-Wi‑Fi וה-Bluetooth בטלפון יישארו מופעלים במצב טיסה. אפשר להשבית את ה-Wi-Fi וה-Bluetooth אם לא רוצים שהם יפעלו."</string>
</resources>
diff --git a/android/app/res/values-ja/strings.xml b/android/app/res/values-ja/strings.xml
index 0a92d5b..fc4fe4a 100644
--- a/android/app/res/values-ja/strings.xml
+++ b/android/app/res/values-ja/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"4 GB を超えるファイルは転送できません"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Bluetooth に接続する"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"機内モードで Bluetooth を ON にする"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Bluetooth を ON にしておくと、次に機内モードになったときも ON のままになります"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"Bluetooth を ON にしておく"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"機内モードでも、スマートフォンの Bluetooth は ON のままになります。Bluetooth を ON にしたくない場合は OFF にしてください。"</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"Wi-Fi と Bluetooth を ON のままにする"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"機内モードでも、スマートフォンの Wi-Fi と Bluetooth は ON のままになります。Wi-Fi と Bluetooth を ON にしたくない場合は OFF にしてください。"</string>
</resources>
diff --git a/android/app/res/values-kn/strings.xml b/android/app/res/values-kn/strings.xml
index ee97e4f..e9d376d 100644
--- a/android/app/res/values-kn/strings.xml
+++ b/android/app/res/values-kn/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"4GB ಗಿಂತ ದೊಡ್ಡದಾದ ಫೈಲ್ಗಳನ್ನು ವರ್ಗಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"ಬ್ಲೂಟೂತ್ಗೆ ಕನೆಕ್ಟ್ ಮಾಡಿ"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"ಏರ್ಪ್ಲೇನ್ ಮೋಡ್ನಲ್ಲಿ ಬ್ಲೂಟೂತ್ ಆನ್ ಆಗಿದೆ"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"ನೀವು ಬ್ಲೂಟೂತ್ ಆನ್ ಆಗಿರಿಸಿದರೆ, ಮುಂದಿನ ಬಾರಿ ನೀವು ಏರ್ಪ್ಲೇನ್ ಮೋಡ್ನಲ್ಲಿರುವಾಗ ಅದನ್ನು ಆನ್ ಆಗಿರಿಸಿಕೊಳ್ಳುವುದನ್ನು ನಿಮ್ಮ ಫೋನ್ ನೆನಪಿಸಿಕೊಳ್ಳುತ್ತದೆ"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"ಬ್ಲೂಟೂತ್ ಆನ್ ಆಗಿರುತ್ತದೆ"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"ಏರ್ಪ್ಲೇನ್ ಮೋಡ್ನಲ್ಲಿ ಬ್ಲೂಟೂತ್ ಆನ್ ಆಗಿರಿಸಿಕೊಳ್ಳುವುದನ್ನು ನಿಮ್ಮ ಫೋನ್ ನೆನಪಿಸಿಕೊಳ್ಳುತ್ತದೆ. ಬ್ಲೂಟೂತ್ ಆನ್ ಆಗಿರಿಸಲು ನೀವು ಬಯಸದಿದ್ದರೆ ಅದನ್ನು ಆಫ್ ಮಾಡಿ."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"ವೈ-ಫೈ ಮತ್ತು ಬ್ಲೂಟೂತ್ ಆನ್ ಆಗಿರುತ್ತದೆ"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"ಏರ್ಪ್ಲೇನ್ ಮೋಡ್ನಲ್ಲಿ ವೈಫೈ ಮತ್ತು ಬ್ಲೂಟೂತ್ ಆನ್ ಆಗಿರಿಸಿಕೊಳ್ಳುವುದನ್ನು ನಿಮ್ಮ ಫೋನ್ ನೆನಪಿಸಿಕೊಳ್ಳುತ್ತದೆ. ವೈಫೈ ಮತ್ತು ಬ್ಲೂಟೂತ್ ಆನ್ ಆಗಿರಿಸಲು ನೀವು ಬಯಸದಿದ್ದರೆ ಅವುಗಳನ್ನು ಆಫ್ ಮಾಡಿ."</string>
</resources>
diff --git a/android/app/res/values-lt/strings.xml b/android/app/res/values-lt/strings.xml
index 79d3ad1..f7972c0 100644
--- a/android/app/res/values-lt/strings.xml
+++ b/android/app/res/values-lt/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"Negalima perkelti didesnių nei 4 GB failų"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Prisijungti prie „Bluetooth“"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"„Bluetooth“ ryšys įjungtas lėktuvo režimu"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Jei paliksite „Bluetooth“ ryšį įjungtą, telefonas, prisimins palikti jį įjungtą, kai kitą kartą įjungsite lėktuvo režimą"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"„Bluetooth“ liks įjungtas"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"Telefonas prisimena, kad naudojant lėktuvo režimą reikia palikti įjungtą „Bluetooth“ ryšį. Išjunkite „Bluetooth“, jei nenorite, kad jis liktų įjungtas."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"„Wi‑Fi“ ir „Bluetooth“ ryšys lieka įjungtas"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"Telefonas prisimena, kad lėktuvo režimu reikia palikti įjungtą „Wi‑Fi“ ir „Bluetooth“ ryšį. Išjunkite „Wi-Fi“ ir „Bluetooth“, jei nenorite, kad jie liktų įjungti."</string>
</resources>
diff --git a/android/app/res/values-lv/strings.xml b/android/app/res/values-lv/strings.xml
index 547d722..9f82823 100644
--- a/android/app/res/values-lv/strings.xml
+++ b/android/app/res/values-lv/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"Nevar pārsūtīt failus, kas lielāki par 4 GB."</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Izveidot savienojumu ar Bluetooth"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"Tehnoloģija Bluetooth lidojuma režīmā paliek ieslēgta"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Ja Bluetooth savienojums paliks ieslēgts, tālrunī tas paliks ieslēgts arī nākamreiz, kad ieslēgsiet lidojuma režīmu."</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"Bluetooth savienojums joprojām ir ieslēgts"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"Lidojuma režīmā tālrunī joprojām būs ieslēgts Bluetooth savienojums. Izslēdziet Bluetooth savienojumu, ja nevēlaties, lai tas paliktu ieslēgts."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"Wi-Fi savienojums un tehnoloģija Bluetooth paliek ieslēgta"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"Lidojuma režīmā tālrunī joprojām būs ieslēgti Wi-Fi un Bluetooth savienojumi. Izslēdziet Wi-Fi un Bluetooth savienojumus, ja nevēlaties, lai tie paliktu ieslēgti."</string>
</resources>
diff --git a/android/app/res/values-mk/strings.xml b/android/app/res/values-mk/strings.xml
index 6db9bf2..b580d37 100644
--- a/android/app/res/values-mk/strings.xml
+++ b/android/app/res/values-mk/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"Не може да се пренесуваат датотеки поголеми од 4 GB"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Поврзи се со Bluetooth"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"Вклучен Bluetooth во авионски режим"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Ако го оставите Bluetooth вклучен, телефонот ќе запомни да го остави вклучен до следниот пат кога ќе бидете во авионски режим"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"Bluetooth останува вклучен"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"Телефонот помни да го задржи Bluetooth вклучен во авионски режим. Исклучете го Bluetooth ако не сакате да остане вклучен."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"Wi-Fi и Bluetooth остануваат вклучени"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"Телефонот помни да ги задржи Wi‑Fi и Bluetooth вклучени во авионски режим. Исклучете ги Wi-Fi и Bluetooth ако не сакате да бидат вклучени."</string>
</resources>
diff --git a/android/app/res/values-ml/strings.xml b/android/app/res/values-ml/strings.xml
index 40e3870..e511d2c 100644
--- a/android/app/res/values-ml/strings.xml
+++ b/android/app/res/values-ml/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"4GB-യിൽ കൂടുതലുള്ള ഫയലുകൾ കൈമാറാനാവില്ല"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Bluetooth-ലേക്ക് കണക്റ്റ് ചെയ്യുക"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"ഫ്ലൈറ്റ് മോഡിൽ Bluetooth ഓണാണ്"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Bluetooth ഓണാക്കി വച്ചാൽ, അടുത്ത തവണ നിങ്ങൾ ഫ്ലൈറ്റ് മോഡിൽ ആയിരിക്കുമ്പോൾ നിങ്ങളുടെ ഫോൺ അത് ഓണാക്കി വയ്ക്കാൻ ഓർക്കും"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"Bluetooth ഓണാക്കിയ നിലയിൽ തുടരും"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"ഫ്ലൈറ്റ് മോഡിലായിരിക്കുമ്പോൾ Bluetooth ഓണാക്കി വയ്ക്കാൻ നിങ്ങളുടെ ഫോൺ ഓർമ്മിക്കുന്നു. Bluetooth ഓണാക്കി വയ്ക്കാൻ താൽപ്പര്യമില്ലെങ്കിൽ അത് ഓഫാക്കുക."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"വൈഫൈ, Bluetooth എന്നിവ ഓണായ നിലയിൽ തുടരും"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"ഫ്ലൈറ്റ് മോഡിലായിരിക്കുമ്പോൾ വൈഫൈ, Bluetooth എന്നിവ ഓണാക്കി വയ്ക്കാൻ നിങ്ങളുടെ ഫോൺ ഓർമ്മിക്കുന്നു. വൈഫൈ, Bluetooth എന്നിവ ഓണാക്കി വയ്ക്കാൻ താൽപ്പര്യമില്ലെങ്കിൽ അവ ഓഫാക്കുക."</string>
</resources>
diff --git a/android/app/res/values-mn/strings.xml b/android/app/res/values-mn/strings.xml
index 5ee36d2..0eb7701 100644
--- a/android/app/res/values-mn/strings.xml
+++ b/android/app/res/values-mn/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"4ГБ-с дээш хэмжээтэй файлыг шилжүүлэх боломжгүй"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Bluetooth-тэй холбогдох"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"Нислэгийн горимд Bluetooth асаалттай"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Хэрэв та Bluetooth-г асаалттай байлгавал таныг дараагийн удаа нислэгийн горимд байх үед утас тань үүнийг асаалттай байлгахыг санана"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"Bluetooth асаалттай хэвээр байна"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"Таны утас Bluetooth-г нислэгийн горимд асаалттай байлгахыг санана. Хэрэв та асаалттай байлгахыг хүсэхгүй байгаа бол Bluetooth-г унтрааж болно."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"Wi-Fi болон Bluetooth асаалттай хэвээр байна"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"Таны утас Wi-Fi болон Bluetooth-г нислэгийн горимд асаалттай байлгахыг санана. Хэрэв та асаалттай байлгахыг хүсэхгүй байгаа бол Wi-Fi болон Bluetooth-г унтрааж болно."</string>
</resources>
diff --git a/android/app/res/values-ms/strings.xml b/android/app/res/values-ms/strings.xml
index 8ab41f4..07d1f3a 100644
--- a/android/app/res/values-ms/strings.xml
+++ b/android/app/res/values-ms/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"Fail lebih besar daripada 4GB tidak boleh dipindahkan"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Sambung ke Bluetooth"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"Bluetooth dihidupkan dalam mod pesawat"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Jika anda terus menghidupkan Bluetooth, telefon anda akan ingat untuk membiarkan Bluetooth hidup pada kali seterusnya telefon anda berada dalam mod pesawat"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"Bluetooth kekal dihidupkan"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"Telefon anda diingatkan untuk terus menghidupkan Bluetooth dalam mod pesawat. Matikan Bluetooth jika anda tidak mahu Bluetooth sentiasa hidup."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"Wi-Fi dan Bluetooth kekal dihidupkan"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"Telefon anda diingatkan untuk terus menghidupkan Wi-Fi dan Bluetooth dalam mod pesawat. Matikan Wi-Fi dan Bluetooth jika anda tidak mahu Wi-Fi dan Bluetooth sentiasa hidup."</string>
</resources>
diff --git a/android/app/res/values-nl/strings.xml b/android/app/res/values-nl/strings.xml
index 51d3c97..83493b1 100644
--- a/android/app/res/values-nl/strings.xml
+++ b/android/app/res/values-nl/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"Bestanden groter dan 4 GB kunnen niet worden overgedragen"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Verbinding maken met bluetooth"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"Bluetooth aan in de vliegtuigmodus"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Als je bluetooth laat aanstaan, onthoudt je telefoon dit en blijft bluetooth aanstaan als je de vliegtuigmodus weer aanzet"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"Bluetooth blijft aan"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"Bluetooth op je telefoon blijft aan in de vliegtuigmodus. Zet bluetooth uit als je niet wilt dat dit aan blijft."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"Wifi en bluetooth blijven aan"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"Wifi en bluetooth op je telefoon blijven aan in de vliegtuigmodus. Zet wifi en bluetooth uit als je niet wilt dat ze aan blijven."</string>
</resources>
diff --git a/android/app/res/values-pt/strings.xml b/android/app/res/values-pt/strings.xml
index 1f50e84..612ef7c 100644
--- a/android/app/res/values-pt/strings.xml
+++ b/android/app/res/values-pt/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"Não é possível transferir arquivos maiores que 4 GB"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Conectar ao Bluetooth"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"Bluetooth ativado no modo avião"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Se você escolher manter o Bluetooth ativado, essa configuração vai ser aplicada na próxima vez que usar o modo avião"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"O Bluetooth fica ativado"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"O smartphone vai manter o Bluetooth ativado no modo avião. Ele pode ser desativado manualmente se você preferir."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"O Wi-Fi e o Bluetooth ficam ativados"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"O smartphone vai manter o Wi-Fi e o Bluetooth ativados no modo avião. Eles podem ser desativados manualmente se você preferir."</string>
</resources>
diff --git a/android/app/res/values-ru/strings.xml b/android/app/res/values-ru/strings.xml
index 4a761f3..d1e42c8 100644
--- a/android/app/res/values-ru/strings.xml
+++ b/android/app/res/values-ru/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"Можно перенести только файлы размером до 4 ГБ."</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Подключиться по Bluetooth"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"Функция Bluetooth будет включена в режиме полета"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Если не отключить функцию Bluetooth, в следующий раз она останется включенной в режиме полета."</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"Функция Bluetooth остается включенной"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"Функция Bluetooth останется включенной в режиме полета. Вы можете отключить ее, если хотите."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"Функции Wi‑Fi и Bluetooth остаются включенными"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"Wi‑Fi и Bluetooth останутся включенными в режиме полета. Вы можете отключить их, если хотите."</string>
</resources>
diff --git a/android/app/res/values-sk/strings.xml b/android/app/res/values-sk/strings.xml
index 5b1630f..fa4a7d4 100644
--- a/android/app/res/values-sk/strings.xml
+++ b/android/app/res/values-sk/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"Súbory väčšie ako 4 GB sa nedajú preniesť"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Pripojiť k zariadeniu Bluetooth"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"Rozhranie Bluetooth bude v režime v lietadle zapnuté"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Ak ponecháte rozhranie Bluetooth zapnuté, váš telefón si zapamätá, že ho má ponechať zapnuté pri ďalšom aktivovaní režimu v lietadle"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"Rozhranie Bluetooth zostane zapnuté"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"Telefón si pamätá, aby v režime v lietadle nevypínal rozhranie Bluetooth. Ak ho nechcete ponechať zapnuté, vypnite ho."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"Wi‑Fi a Bluetooth zostanú zapnuté"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"Telefón si pamätá, aby v režime v lietadle nevypínal Wi‑Fi ani Bluetooth. Ak ich nechcete ponechať zapnuté, vypnite ich."</string>
</resources>
diff --git a/android/app/res/values-sl/strings.xml b/android/app/res/values-sl/strings.xml
index cbfe6c1..ac1de2b 100644
--- a/android/app/res/values-sl/strings.xml
+++ b/android/app/res/values-sl/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"Datotek, večjih od 4 GB, ni mogoče prenesti"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Povezovanje z Bluetoothom"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"Bluetooth je vklopljen v načinu za letalo"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Če pustite Bluetooth vklopljen, bo telefon ob naslednjem preklopu na način za letalo pustil Bluetooth vklopljen."</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"Bluetooth ostane vklopljen"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"Telefon v načinu za letalo pusti Bluetooth vklopljen. Če ne želite, da ostane vklopljen, izklopite vmesnik Bluetooth."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"Wi-Fi in Bluetooth ostaneta vklopljena"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"Telefon v načinu za letalo pusti Wi-Fi in Bluetooth vklopljena. Če ne želite, da Wi-Fi in Bluetooth ostaneta vklopljena, ju izklopite."</string>
</resources>
diff --git a/android/app/res/values-sv/strings.xml b/android/app/res/values-sv/strings.xml
index 0b01513..e8f951e 100644
--- a/android/app/res/values-sv/strings.xml
+++ b/android/app/res/values-sv/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"Det går inte att överföra filer som är större än 4 GB"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Anslut till Bluetooth"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"Håll Bluetooth aktiverat i flygplansläge"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Om du håller wifi aktiverat kommer telefonen ihåg att hålla det aktiverat nästa gång du använder flygplansläge."</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"Bluetooth förblir aktiverat"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"Telefonen kommer ihåg att hålla Bluetooth aktiverat i flygplansläge. Inaktivera Bluetooth om du inte vill att det ska hållas aktiverat."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"Wifi och Bluetooth ska vara aktiverade"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"Telefonen kommer ihåg att hålla wifi och Bluetooth aktiverade i flygplansläge. Du kan inaktivera wifi och Bluetooth om du inte vill hålla dem aktiverade."</string>
</resources>
diff --git a/android/app/res/values-th/strings.xml b/android/app/res/values-th/strings.xml
index 7d97ce7..a39afb5 100644
--- a/android/app/res/values-th/strings.xml
+++ b/android/app/res/values-th/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"โอนไฟล์ที่มีขนาดใหญ่กว่า 4 GB ไม่ได้"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"เชื่อมต่อบลูทูธ"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"บลูทูธเปิดอยู่ในโหมดบนเครื่องบิน"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"หากเปิดบลูทูธไว้ โทรศัพท์จะจำว่าต้องเปิดบลูทูธในครั้งถัดไปที่คุณอยู่ในโหมดบนเครื่องบิน"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"บลูทูธเปิดอยู่"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"โทรศัพท์จำว่าจะต้องเปิดบลูทูธไว้ในโหมดบนเครื่องบิน ปิดบลูทูธหากคุณไม่ต้องการให้เปิดไว้"</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"Wi-Fi และบลูทูธยังเปิดอยู่"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"โทรศัพท์จำว่าจะต้องเปิด Wi-Fi และบลูทูธไว้ในโหมดบนเครื่องบิน ปิด Wi-Fi และบลูทูธหากคุณไม่ต้องการให้เปิดไว้"</string>
</resources>
diff --git a/android/app/res/values-tl/strings.xml b/android/app/res/values-tl/strings.xml
index 660ff07..b84dc9a 100644
--- a/android/app/res/values-tl/strings.xml
+++ b/android/app/res/values-tl/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"Hindi maililipat ang mga file na mas malaki sa 4GB"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"Kumonekta sa Bluetooth"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"Naka-on ang Bluetooth sa airplane mode"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"Kung papanatilihin mong naka-on ang Bluetooth, tatandaan ng iyong telepono na panatilihin itong naka-on sa susunod na nasa airplane mode ka"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"Mananatiling naka-on ang Bluetooth"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"Tinatandaan ng iyong telepono na panatilihing naka-on ang Bluetooth habang nasa airplane mode. I-off ang Bluetooth kung ayaw mo itong manatiling naka-on."</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"Mananatiling naka-on ang Wi-Fi at Bluetooth"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"Tinatandaan ng iyong telepono na panatilihing naka-on ang Wi-Fi at Bluetooth habang nasa airplane mode. I-off ang Wi-Fi at Bluetooth kung ayaw mong manatiling naka-on ang mga ito."</string>
</resources>
diff --git a/android/app/res/values-ur/strings.xml b/android/app/res/values-ur/strings.xml
index 6bc0d39..fdbffdc 100644
--- a/android/app/res/values-ur/strings.xml
+++ b/android/app/res/values-ur/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"4GB سے بڑی فائلیں منتقل نہیں کی جا سکتیں"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"بلوٹوتھ سے منسلک کریں"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"ہوائی جہاز وضع میں بلوٹوتھ آن ہے"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"اگر آپ بلوٹوتھ کو آن رکھتے ہیں تو آپ کا فون آپ کے اگلی مرتبہ ہوائی جہاز وضع میں ہونے پر اسے آن رکھنا یاد رکھے گا"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"بلوٹوتھ آن رہتا ہے"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"آپ کا فون ہوائی جہاز وضع میں بلوٹوتھ کو آن رکھنا یاد رکھتا ہے۔ اگر آپ نہیں چاہتے ہیں کہ بلوٹوتھ آن رہے تو اسے آف کریں۔"</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"Wi-Fi اور بلوٹوتھ آن رہنے دیں"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"آپ کا فون ہوائی جہاز وضع میں Wi-Fi اور بلوٹوتھ کو آن رکھنا یاد رکھتا ہے۔ اگر آپ نہیں چاہتے ہیں کہ Wi-Fi اور بلوٹوتھ آن رہیں تو انہیں آف کریں۔"</string>
</resources>
diff --git a/android/app/res/values-zh-rHK/strings.xml b/android/app/res/values-zh-rHK/strings.xml
index 33f15fb..39f37d7 100644
--- a/android/app/res/values-zh-rHK/strings.xml
+++ b/android/app/res/values-zh-rHK/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"無法轉移 4 GB 以上的檔案"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"連接藍牙"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"在飛航模式中保持藍牙開啟"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"如果不關閉藍牙,下次手機進入飛航模式時,藍牙將保持開啟"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"保持藍牙連線"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"手機會記得在飛航模式下保持藍牙開啟。如果不要保持開啟,請關閉藍牙。"</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"Wi-Fi 和藍牙保持開啟"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"手機會記得在飛航模式下保持 Wi-Fi 和藍牙開啟。如果不要保持開啟,請關閉 Wi-Fi 和藍牙。"</string>
</resources>
diff --git a/android/app/res/values-zh-rTW/strings.xml b/android/app/res/values-zh-rTW/strings.xml
index b02e155..cbaadb2 100644
--- a/android/app/res/values-zh-rTW/strings.xml
+++ b/android/app/res/values-zh-rTW/strings.xml
@@ -129,12 +129,9 @@
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"無法轉移大於 4GB 的檔案"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"使用藍牙連線"</string>
<string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"在飛航模式下保持藍牙開啟狀態"</string>
- <!-- no translation found for bluetooth_enabled_apm_message (8409900562494838113) -->
- <skip />
+ <string name="bluetooth_enabled_apm_message" msgid="8409900562494838113">"如果不關閉藍牙,下次手機進入飛航模式時,藍牙將保持開啟"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"藍牙會保持開啟狀態"</string>
- <!-- no translation found for bluetooth_stays_on_message (7142453371222249965) -->
- <skip />
+ <string name="bluetooth_stays_on_message" msgid="7142453371222249965">"手機會記得在飛航模式下保持藍牙開啟。如果不要保持開啟,請關閉藍牙。"</string>
<string name="bluetooth_and_wifi_stays_on_title" msgid="5821932798860821244">"Wi-Fi 和藍牙會保持開啟狀態"</string>
- <!-- no translation found for bluetooth_and_wifi_stays_on_message (2390749828997719812) -->
- <skip />
+ <string name="bluetooth_and_wifi_stays_on_message" msgid="2390749828997719812">"手機會記得在飛航模式下保持 Wi-Fi 和藍牙開啟。如果不要保持開啟,請關閉 Wi-Fi 和藍牙。"</string>
</resources>
diff --git a/android/app/src/com/android/bluetooth/BluetoothMethodProxy.java b/android/app/src/com/android/bluetooth/BluetoothMethodProxy.java
index 855f1ff..84629e4 100644
--- a/android/app/src/com/android/bluetooth/BluetoothMethodProxy.java
+++ b/android/app/src/com/android/bluetooth/BluetoothMethodProxy.java
@@ -16,12 +16,16 @@
package com.android.bluetooth;
+import android.annotation.RequiresPermission;
import android.bluetooth.BluetoothAdapter;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
+import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
+import android.os.Bundle;
+import android.os.CancellationSignal;
import android.os.ParcelFileDescriptor;
import android.util.Log;
@@ -80,6 +84,23 @@
}
/**
+ * Proxies {@link ContentResolver#query(Uri, String[], Bundle, CancellationSignal)}.
+ */
+ public Cursor contentResolverQuery(ContentResolver contentResolver, final Uri contentUri,
+ final String[] projection, final Bundle queryArgs,
+ final CancellationSignal cancellationSignal) {
+ return contentResolver.query(contentUri, projection, queryArgs, cancellationSignal);
+ }
+
+ /**
+ * Proxies {@link ContentResolver#insert(Uri, ContentValues)}.
+ */
+ public Uri contentResolverInsert(ContentResolver contentResolver, final Uri contentUri,
+ final ContentValues contentValues) {
+ return contentResolver.insert(contentUri, contentValues);
+ }
+
+ /**
* Proxies {@link ContentResolver#update(Uri, ContentValues, String, String[])}.
*/
public int contentResolverUpdate(ContentResolver contentResolver, final Uri contentUri,
@@ -111,6 +132,12 @@
return contentResolver.openFileDescriptor(uri, mode);
}
+ /**
+ * Proxies {@link Context#sendBroadcast(Intent)}.
+ */
+ public void contextSendBroadcast(Context context, @RequiresPermission Intent intent) {
+ context.sendBroadcast(intent);
+ }
/**
* Proxies {@link HeaderSet#getHeader}.
diff --git a/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpBipClient.java b/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpBipClient.java
index 4f943bb..3f46b44 100644
--- a/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpBipClient.java
+++ b/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpBipClient.java
@@ -26,6 +26,7 @@
import android.util.Log;
import com.android.bluetooth.BluetoothObexTransport;
+import com.android.internal.annotations.VisibleForTesting;
import com.android.obex.ClientSession;
import com.android.obex.HeaderSet;
import com.android.obex.ResponseCodes;
@@ -229,7 +230,8 @@
/**
* Update our client's connection state and notify of the new status
*/
- private void setConnectionState(int state) {
+ @VisibleForTesting
+ void setConnectionState(int state) {
int oldState = -1;
synchronized (this) {
oldState = mState;
@@ -428,7 +430,8 @@
}
}
- private String getStateName() {
+ @VisibleForTesting
+ String getStateName() {
int state = getState();
switch (state) {
case BluetoothProfile.STATE_DISCONNECTED:
diff --git a/android/app/src/com/android/bluetooth/btservice/BondStateMachine.java b/android/app/src/com/android/bluetooth/btservice/BondStateMachine.java
index cc2ab9f..713545f 100644
--- a/android/app/src/com/android/bluetooth/btservice/BondStateMachine.java
+++ b/android/app/src/com/android/bluetooth/btservice/BondStateMachine.java
@@ -346,7 +346,7 @@
mAdapterService.obfuscateAddress(dev), transport, dev.getType(),
BluetoothDevice.BOND_BONDING,
BluetoothProtoEnums.BOND_SUB_STATE_LOCAL_START_PAIRING_OOB,
- BluetoothProtoEnums.UNBOND_REASON_UNKNOWN);
+ BluetoothProtoEnums.UNBOND_REASON_UNKNOWN, mAdapterService.getMetricId(dev));
result = mAdapterService.createBondOutOfBandNative(addr, transport,
remoteP192Data, remoteP256Data);
} else {
@@ -354,7 +354,7 @@
mAdapterService.obfuscateAddress(dev), transport, dev.getType(),
BluetoothDevice.BOND_BONDING,
BluetoothProtoEnums.BOND_SUB_STATE_LOCAL_START_PAIRING,
- BluetoothProtoEnums.UNBOND_REASON_UNKNOWN);
+ BluetoothProtoEnums.UNBOND_REASON_UNKNOWN, mAdapterService.getMetricId(dev));
result = mAdapterService.createBondNative(addr, transport);
}
BluetoothStatsLog.write(BluetoothStatsLog.BLUETOOTH_DEVICE_NAME_REPORTED,
diff --git a/android/app/src/com/android/bluetooth/hfp/AtPhonebook.java b/android/app/src/com/android/bluetooth/hfp/AtPhonebook.java
index 09c9cda..8f273aa 100644
--- a/android/app/src/com/android/bluetooth/hfp/AtPhonebook.java
+++ b/android/app/src/com/android/bluetooth/hfp/AtPhonebook.java
@@ -32,6 +32,7 @@
import android.telephony.PhoneNumberUtils;
import android.util.Log;
+import com.android.bluetooth.BluetoothMethodProxy;
import com.android.bluetooth.R;
import com.android.bluetooth.Utils;
import com.android.bluetooth.util.DevicePolicyUtils;
@@ -83,16 +84,20 @@
private Context mContext;
private ContentResolver mContentResolver;
private HeadsetNativeInterface mNativeInterface;
- private String mCurrentPhonebook;
- private String mCharacterSet = "UTF-8";
+ @VisibleForTesting
+ String mCurrentPhonebook;
+ @VisibleForTesting
+ String mCharacterSet = "UTF-8";
- private int mCpbrIndex1, mCpbrIndex2;
+ @VisibleForTesting
+ int mCpbrIndex1, mCpbrIndex2;
private boolean mCheckingAccessPermission;
// package and class name to which we send intent to check phone book access permission
private final String mPairingPackage;
- private final HashMap<String, PhonebookResult> mPhonebooks =
+ @VisibleForTesting
+ final HashMap<String, PhonebookResult> mPhonebooks =
new HashMap<String, PhonebookResult>(4);
static final int TYPE_UNKNOWN = -1;
@@ -434,8 +439,8 @@
queryArgs.putString(ContentResolver.QUERY_ARG_SQL_SELECTION, where);
queryArgs.putString(ContentResolver.QUERY_ARG_SQL_SORT_ORDER, Calls.DEFAULT_SORT_ORDER);
queryArgs.putInt(ContentResolver.QUERY_ARG_LIMIT, MAX_PHONEBOOK_SIZE);
- pbr.cursor = mContentResolver.query(Calls.CONTENT_URI, CALLS_PROJECTION,
- queryArgs, null);
+ pbr.cursor = BluetoothMethodProxy.getInstance().contentResolverQuery(mContentResolver,
+ Calls.CONTENT_URI, CALLS_PROJECTION, queryArgs, null);
if (pbr.cursor == null) {
return false;
@@ -450,8 +455,8 @@
queryArgs.putString(ContentResolver.QUERY_ARG_SQL_SELECTION, where);
queryArgs.putInt(ContentResolver.QUERY_ARG_LIMIT, MAX_PHONEBOOK_SIZE);
final Uri phoneContentUri = DevicePolicyUtils.getEnterprisePhoneUri(mContext);
- pbr.cursor = mContentResolver.query(phoneContentUri, PHONES_PROJECTION,
- queryArgs, null);
+ pbr.cursor = BluetoothMethodProxy.getInstance().contentResolverQuery(mContentResolver,
+ phoneContentUri, PHONES_PROJECTION, queryArgs, null);
if (pbr.cursor == null) {
return false;
@@ -547,7 +552,7 @@
// try caller id lookup
// TODO: This code is horribly inefficient. I saw it
// take 7 seconds to process 100 missed calls.
- Cursor c = mContentResolver.query(
+ Cursor c = BluetoothMethodProxy.getInstance().contentResolverQuery(mContentResolver,
Uri.withAppendedPath(PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI, number),
new String[]{
PhoneLookup.DISPLAY_NAME, PhoneLookup.TYPE
@@ -658,7 +663,8 @@
return permission;
}
- private static String getPhoneType(int type) {
+ @VisibleForTesting
+ static String getPhoneType(int type) {
switch (type) {
case Phone.TYPE_HOME:
return "H";
diff --git a/android/app/tests/unit/src/com/android/bluetooth/UtilsTest.java b/android/app/tests/unit/src/com/android/bluetooth/UtilsTest.java
new file mode 100644
index 0000000..6a63eb9
--- /dev/null
+++ b/android/app/tests/unit/src/com/android/bluetooth/UtilsTest.java
@@ -0,0 +1,171 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.bluetooth;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.content.Context;
+import android.location.LocationManager;
+import android.os.ParcelUuid;
+import android.os.UserHandle;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import com.android.bluetooth.btservice.ProfileService;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.util.UUID;
+
+/**
+ * Test for Utils.java
+ */
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class UtilsTest {
+ @Test
+ public void byteArrayToShort() {
+ byte[] valueBuf = new byte[] {0x01, 0x02};
+ short s = Utils.byteArrayToShort(valueBuf);
+ assertThat(s).isEqualTo(0x0201);
+ }
+
+ @Test
+ public void byteArrayToString() {
+ byte[] valueBuf = new byte[] {0x01, 0x02};
+ String str = Utils.byteArrayToString(valueBuf);
+ assertThat(str).isEqualTo("01 02");
+ }
+
+ @Test
+ public void uuidsToByteArray() {
+ ParcelUuid[] uuids = new ParcelUuid[] {
+ new ParcelUuid(new UUID(10, 20)),
+ new ParcelUuid(new UUID(30, 40))
+ };
+ ByteBuffer converter = ByteBuffer.allocate(uuids.length * 16);
+ converter.order(ByteOrder.BIG_ENDIAN);
+ converter.putLong(0, 10);
+ converter.putLong(8, 20);
+ converter.putLong(16, 30);
+ converter.putLong(24, 40);
+ assertThat(Utils.uuidsToByteArray(uuids)).isEqualTo(converter.array());
+ }
+
+ @Test
+ public void checkServiceAvailable() {
+ final String tag = "UTILS_TEST";
+ assertThat(Utils.checkServiceAvailable(null, tag)).isFalse();
+
+ ProfileService mockProfile = Mockito.mock(ProfileService.class);
+ when(mockProfile.isAvailable()).thenReturn(false);
+ assertThat(Utils.checkServiceAvailable(mockProfile, tag)).isFalse();
+
+ when(mockProfile.isAvailable()).thenReturn(true);
+ assertThat(Utils.checkServiceAvailable(mockProfile, tag)).isTrue();
+ }
+
+ @Test
+ public void blockedByLocationOff() throws Exception {
+ Context context = InstrumentationRegistry.getTargetContext();
+ UserHandle userHandle = new UserHandle(UserHandle.USER_SYSTEM);
+ LocationManager locationManager = context.getSystemService(LocationManager.class);
+ boolean enableStatus = locationManager.isLocationEnabledForUser(userHandle);
+ assertThat(Utils.blockedByLocationOff(context, userHandle)).isEqualTo(!enableStatus);
+
+ locationManager.setLocationEnabledForUser(!enableStatus, userHandle);
+ assertThat(Utils.blockedByLocationOff(context, userHandle)).isEqualTo(enableStatus);
+
+ locationManager.setLocationEnabledForUser(enableStatus, userHandle);
+ }
+
+ @Test
+ public void checkCallerHasCoarseLocation_doesNotCrash() {
+ Context context = InstrumentationRegistry.getTargetContext();
+ UserHandle userHandle = new UserHandle(UserHandle.USER_SYSTEM);
+ LocationManager locationManager = context.getSystemService(LocationManager.class);
+ boolean enabledStatus = locationManager.isLocationEnabledForUser(userHandle);
+
+ locationManager.setLocationEnabledForUser(false, userHandle);
+ assertThat(Utils.checkCallerHasCoarseLocation(context, null, userHandle)).isFalse();
+
+ locationManager.setLocationEnabledForUser(true, userHandle);
+ Utils.checkCallerHasCoarseLocation(context, null, userHandle);
+ if (!enabledStatus) {
+ locationManager.setLocationEnabledForUser(false, userHandle);
+ }
+ }
+
+ @Test
+ public void checkCallerHasCoarseOrFineLocation_doesNotCrash() {
+ Context context = InstrumentationRegistry.getTargetContext();
+ UserHandle userHandle = new UserHandle(UserHandle.USER_SYSTEM);
+ LocationManager locationManager = context.getSystemService(LocationManager.class);
+ boolean enabledStatus = locationManager.isLocationEnabledForUser(userHandle);
+
+ locationManager.setLocationEnabledForUser(false, userHandle);
+ assertThat(Utils.checkCallerHasCoarseOrFineLocation(context, null, userHandle)).isFalse();
+
+ locationManager.setLocationEnabledForUser(true, userHandle);
+ Utils.checkCallerHasCoarseOrFineLocation(context, null, userHandle);
+ if (!enabledStatus) {
+ locationManager.setLocationEnabledForUser(false, userHandle);
+ }
+ }
+
+ @Test
+ public void checkPermissionMethod_doesNotCrash() {
+ Context context = InstrumentationRegistry.getTargetContext();
+ try {
+ Utils.checkAdvertisePermissionForDataDelivery(context, null, "message");
+ Utils.checkAdvertisePermissionForPreflight(context);
+ Utils.checkCallerHasWriteSmsPermission(context);
+ Utils.checkScanPermissionForPreflight(context);
+ Utils.checkConnectPermissionForPreflight(context);
+ } catch (SecurityException e) {
+ // SecurityException could happen.
+ }
+ }
+
+ @Test
+ public void enforceDumpPermission_doesNotCrash() {
+ Context context = InstrumentationRegistry.getTargetContext();
+ try {
+ Utils.enforceDumpPermission(context);
+ } catch (SecurityException e) {
+ // SecurityException could happen.
+ }
+ }
+
+ @Test
+ public void getLoggableAddress() {
+ assertThat(Utils.getLoggableAddress(null)).isEqualTo("00:00:00:00:00:00");
+
+ BluetoothDevice device = TestUtils.getTestDevice(BluetoothAdapter.getDefaultAdapter(), 1);
+ String loggableAddress = "xx:xx:xx:xx:" + device.getAddress().substring(12);
+ assertThat(Utils.getLoggableAddress(device)).isEqualTo(loggableAddress);
+ }
+}
diff --git a/android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/AvrcpBipClientTest.java b/android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/AvrcpBipClientTest.java
new file mode 100644
index 0000000..aa2f28e
--- /dev/null
+++ b/android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/AvrcpBipClientTest.java
@@ -0,0 +1,144 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.bluetooth.avrcpcontroller;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.junit.Assert.assertThrows;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.doReturn;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothProfile;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.rule.ServiceTestRule;
+import androidx.test.runner.AndroidJUnit4;
+
+import com.android.bluetooth.TestUtils;
+import com.android.bluetooth.btservice.AdapterService;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class AvrcpBipClientTest {
+ private static final int TEST_PSM = 1;
+
+ @Rule
+ public final ServiceTestRule mServiceRule = new ServiceTestRule();
+
+ @Mock
+ private AdapterService mAdapterService;
+
+ private BluetoothAdapter mAdapter;
+ private BluetoothDevice mTestDevice;
+ private AvrcpControllerService mService = null;
+ private AvrcpCoverArtManager mArtManager;
+ private AvrcpBipClient mClient;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ TestUtils.setAdapterService(mAdapterService);
+ doReturn(true, false).when(mAdapterService).isStartedProfile(anyString());
+ TestUtils.startService(mServiceRule, AvrcpControllerService.class);
+ mService = AvrcpControllerService.getAvrcpControllerService();
+
+ mAdapter = BluetoothAdapter.getDefaultAdapter();
+ mTestDevice = mAdapter.getRemoteDevice("00:01:02:03:04:05");
+
+ AvrcpCoverArtManager.Callback callback = (device, event) -> {
+ };
+ mArtManager = new AvrcpCoverArtManager(mService, callback);
+
+ mClient = new AvrcpBipClient(mTestDevice, TEST_PSM,
+ mArtManager.new BipClientCallback(mTestDevice));
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ TestUtils.stopService(mServiceRule, AvrcpControllerService.class);
+ mService = AvrcpControllerService.getAvrcpControllerService();
+ assertThat(mService).isNull();
+ TestUtils.clearAdapterService(mAdapterService);
+ mArtManager.cleanup();
+ }
+
+ @Test
+ public void constructor() {
+ AvrcpBipClient client = new AvrcpBipClient(mTestDevice, TEST_PSM,
+ mArtManager.new BipClientCallback(mTestDevice));
+
+ assertThat(client.getL2capPsm()).isEqualTo(TEST_PSM);
+ }
+
+ @Test
+ public void constructor_withNullDevice() {
+ assertThrows(NullPointerException.class, () -> new AvrcpBipClient(null, TEST_PSM,
+ mArtManager.new BipClientCallback(mTestDevice)));
+ }
+
+ @Test
+ public void constructor_withNullCallback() {
+ assertThrows(NullPointerException.class, () -> new AvrcpBipClient(mTestDevice, TEST_PSM,
+ null));
+ }
+
+ @Test
+ public void setConnectionState() {
+ mClient.setConnectionState(BluetoothProfile.STATE_CONNECTING);
+
+ assertThat(mClient.getState()).isEqualTo(BluetoothProfile.STATE_CONNECTING);
+ }
+
+ @Test
+ public void getConnectionState() {
+ mClient.setConnectionState(BluetoothProfile.STATE_DISCONNECTED);
+ assertThat(mClient.getStateName()).isEqualTo("Disconnected");
+
+ mClient.setConnectionState(BluetoothProfile.STATE_CONNECTING);
+ assertThat(mClient.getStateName()).isEqualTo("Connecting");
+
+ mClient.setConnectionState(BluetoothProfile.STATE_CONNECTED);
+ assertThat(mClient.getStateName()).isEqualTo("Connected");
+
+ mClient.setConnectionState(BluetoothProfile.STATE_DISCONNECTING);
+ assertThat(mClient.getStateName()).isEqualTo("Disconnecting");
+
+ int invalidState = 4;
+ mClient.setConnectionState(invalidState);
+ assertThat(mClient.getStateName()).isEqualTo("Unknown");
+ }
+
+ @Test
+ public void toString_returnsClientInfo() {
+ AvrcpBipClient client = new AvrcpBipClient(mTestDevice, TEST_PSM,
+ mArtManager.new BipClientCallback(mTestDevice));
+
+ String expected = "<AvrcpBipClient" + " device=" + mTestDevice.getAddress() + " psm="
+ + TEST_PSM + " state=" + client.getStateName() + ">";
+ assertThat(client.toString()).isEqualTo(expected);
+ }
+}
diff --git a/android/app/tests/unit/src/com/android/bluetooth/hfp/AtPhonebookTest.java b/android/app/tests/unit/src/com/android/bluetooth/hfp/AtPhonebookTest.java
index 5cdfd9d..ac30e35 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/hfp/AtPhonebookTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/hfp/AtPhonebookTest.java
@@ -18,19 +18,30 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.any;
import static org.mockito.Mockito.atLeastOnce;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.Context;
+import android.database.Cursor;
+import android.provider.CallLog;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.telephony.PhoneNumberUtils;
import androidx.test.InstrumentationRegistry;
import androidx.test.runner.AndroidJUnit4;
+import com.android.bluetooth.BluetoothMethodProxy;
+import com.android.bluetooth.R;
import com.android.bluetooth.TestUtils;
import com.android.bluetooth.btservice.AdapterService;
+import com.android.internal.telephony.GsmAlphabet;
import org.junit.After;
import org.junit.Before;
@@ -38,6 +49,7 @@
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
@RunWith(AndroidJUnit4.class)
public class AtPhonebookTest {
@@ -50,6 +62,8 @@
private AdapterService mAdapterService;
private HeadsetNativeInterface mNativeInterface;
private AtPhonebook mAtPhonebook;
+ @Spy
+ private BluetoothMethodProxy mHfpMethodProxy = BluetoothMethodProxy.getInstance();
@Before
public void setUp() throws Exception {
@@ -57,6 +71,7 @@
MockitoAnnotations.initMocks(this);
TestUtils.setAdapterService(mAdapterService);
+ BluetoothMethodProxy.setInstanceForTesting(mHfpMethodProxy);
mAdapter = BluetoothAdapter.getDefaultAdapter();
mTestDevice = mAdapter.getRemoteDevice("00:01:02:03:04:05");
// Spy on native interface
@@ -67,6 +82,7 @@
@After
public void tearDown() throws Exception {
TestUtils.clearAdapterService(mAdapterService);
+ BluetoothMethodProxy.setInstanceForTesting(null);
}
@Test
@@ -78,6 +94,7 @@
@Test
public void getAndSetCheckingAccessPermission_setCorrectly() {
mAtPhonebook.setCheckingAccessPermission(true);
+
assertThat(mAtPhonebook.getCheckingAccessPermission()).isTrue();
}
@@ -173,11 +190,125 @@
mAtPhonebook.handleCpbsCommand("command=ME", AtPhonebook.TYPE_SET, mTestDevice);
assertThat(mAtPhonebook.processCpbrCommand(mTestDevice)).isEqualTo(
HeadsetHalConstants.AT_RESPONSE_OK);
+
+ mAtPhonebook.mCurrentPhonebook = "ER";
+ assertThat(mAtPhonebook.processCpbrCommand(mTestDevice)).isEqualTo(
+ HeadsetHalConstants.AT_RESPONSE_ERROR);
+ }
+
+ @Test
+ public void processCpbrCommand_withMobilePhonebook() {
+ Cursor mockCursorOne = mock(Cursor.class);
+ when(mockCursorOne.getCount()).thenReturn(1);
+ when(mockCursorOne.getColumnIndex(Phone.TYPE)).thenReturn(1); //TypeColumn
+ when(mockCursorOne.getColumnIndex(Phone.NUMBER)).thenReturn(2); //numberColumn
+ when(mockCursorOne.getColumnIndex(Phone.DISPLAY_NAME)).thenReturn(3); // nameColumn
+ when(mockCursorOne.getInt(1)).thenReturn(Phone.TYPE_WORK);
+ when(mockCursorOne.getString(2)).thenReturn(null);
+ when(mockCursorOne.getString(3)).thenReturn(null);
+ when(mockCursorOne.moveToNext()).thenReturn(false);
+ doReturn(mockCursorOne).when(mHfpMethodProxy).contentResolverQuery(any(), any(), any(),
+ any(), any());
+
+ mAtPhonebook.mCurrentPhonebook = "ME";
+ mAtPhonebook.mCpbrIndex1 = 1;
+ mAtPhonebook.mCpbrIndex2 = 2;
+
+ mAtPhonebook.processCpbrCommand(mTestDevice);
+
+ String expected = "+CPBR: " + 1 + ",\"" + "" + "\"," + PhoneNumberUtils.toaFromString("")
+ + ",\"" + "" + "/" + AtPhonebook.getPhoneType(Phone.TYPE_WORK) + "\"" + "\r\n\r\n";
+ verify(mNativeInterface).atResponseString(mTestDevice, expected);
+ }
+
+ @Test
+ public void processCpbrCommand_withMissedCalls() {
+ Cursor mockCursorOne = mock(Cursor.class);
+ when(mockCursorOne.getCount()).thenReturn(1);
+ when(mockCursorOne.getColumnIndexOrThrow(CallLog.Calls.NUMBER)).thenReturn(1);
+ when(mockCursorOne.getColumnIndexOrThrow(CallLog.Calls.NUMBER_PRESENTATION)).thenReturn(2);
+ String number = "1".repeat(31);
+ when(mockCursorOne.getString(1)).thenReturn(number);
+ when(mockCursorOne.getInt(2)).thenReturn(CallLog.Calls.PRESENTATION_RESTRICTED);
+ doReturn(mockCursorOne).when(mHfpMethodProxy).contentResolverQuery(any(), any(), any(),
+ any(), any());
+
+ Cursor mockCursorTwo = mock(Cursor.class);
+ when(mockCursorTwo.moveToFirst()).thenReturn(true);
+ String name = "k".repeat(30);
+ when(mockCursorTwo.getString(0)).thenReturn(name);
+ when(mockCursorTwo.getInt(1)).thenReturn(1);
+ doReturn(mockCursorTwo).when(mHfpMethodProxy).contentResolverQuery(any(), any(), any(),
+ any(), any(), any());
+
+ mAtPhonebook.mCurrentPhonebook = "MC";
+ mAtPhonebook.mCpbrIndex1 = 1;
+ mAtPhonebook.mCpbrIndex2 = 2;
+
+ mAtPhonebook.processCpbrCommand(mTestDevice);
+
+ String expected = "+CPBR: " + 1 + ",\"" + "" + "\"," + PhoneNumberUtils.toaFromString(
+ number) + ",\"" + mTargetContext.getString(R.string.unknownNumber) + "\""
+ + "\r\n\r\n";
+ verify(mNativeInterface).atResponseString(mTestDevice, expected);
+ }
+
+ @Test
+ public void processCpbrCommand_withReceivcedCallsAndCharsetGsm() {
+ Cursor mockCursorOne = mock(Cursor.class);
+ when(mockCursorOne.getCount()).thenReturn(1);
+ when(mockCursorOne.getColumnIndexOrThrow(CallLog.Calls.NUMBER)).thenReturn(1);
+ when(mockCursorOne.getColumnIndexOrThrow(CallLog.Calls.NUMBER_PRESENTATION)).thenReturn(-1);
+ String number = "1".repeat(31);
+ when(mockCursorOne.getString(1)).thenReturn(number);
+ when(mockCursorOne.getInt(2)).thenReturn(CallLog.Calls.PRESENTATION_RESTRICTED);
+ doReturn(mockCursorOne).when(mHfpMethodProxy).contentResolverQuery(any(), any(), any(),
+ any(), any());
+
+ Cursor mockCursorTwo = mock(Cursor.class);
+ when(mockCursorTwo.moveToFirst()).thenReturn(true);
+ String name = "k".repeat(30);
+ when(mockCursorTwo.getString(0)).thenReturn(name);
+ when(mockCursorTwo.getInt(1)).thenReturn(1);
+ doReturn(mockCursorTwo).when(mHfpMethodProxy).contentResolverQuery(any(), any(), any(),
+ any(), any(), any());
+
+ mAtPhonebook.mCurrentPhonebook = "RC";
+ mAtPhonebook.mCpbrIndex1 = 1;
+ mAtPhonebook.mCpbrIndex2 = 2;
+ mAtPhonebook.mCharacterSet = "GSM";
+
+ mAtPhonebook.processCpbrCommand(mTestDevice);
+
+ String expectedName = new String(GsmAlphabet.stringToGsm8BitPacked(name.substring(0, 28)));
+ String expected = "+CPBR: " + 1 + ",\"" + number.substring(0, 30) + "\","
+ + PhoneNumberUtils.toaFromString(number) + ",\"" + expectedName + "\"" + "\r\n\r\n";
+ verify(mNativeInterface).atResponseString(mTestDevice, expected);
+ }
+
+ @Test
+ public void setCpbrIndex() {
+ int index = 1;
+
+ mAtPhonebook.setCpbrIndex(index);
+
+ assertThat(mAtPhonebook.mCpbrIndex1).isEqualTo(index);
+ assertThat(mAtPhonebook.mCpbrIndex2).isEqualTo(index);
}
@Test
public void resetAtState() {
mAtPhonebook.resetAtState();
+
assertThat(mAtPhonebook.getCheckingAccessPermission()).isFalse();
}
+
+ @Test
+ public void getPhoneType() {
+ assertThat(AtPhonebook.getPhoneType(Phone.TYPE_HOME)).isEqualTo("H");
+ assertThat(AtPhonebook.getPhoneType(Phone.TYPE_MOBILE)).isEqualTo("M");
+ assertThat(AtPhonebook.getPhoneType(Phone.TYPE_WORK)).isEqualTo("W");
+ assertThat(AtPhonebook.getPhoneType(Phone.TYPE_FAX_WORK)).isEqualTo("F");
+ assertThat(AtPhonebook.getPhoneType(Phone.TYPE_CUSTOM)).isEqualTo("O");
+ }
}
\ No newline at end of file
diff --git a/system/bta/av/bta_av_act.cc b/system/bta/av/bta_av_act.cc
index ebb0353..7e786dd 100644
--- a/system/bta/av/bta_av_act.cc
+++ b/system/bta/av/bta_av_act.cc
@@ -2004,8 +2004,23 @@
if (p_lcb) {
rc_handle = bta_av_rc_create(p_cb, AVCT_INT,
(uint8_t)(p_scb->hdi + 1), p_lcb->lidx);
- p_cb->rcb[rc_handle].peer_features = peer_features;
- p_cb->rcb[rc_handle].cover_art_psm = cover_art_psm;
+ if (rc_handle < BTA_AV_NUM_RCB) {
+ p_cb->rcb[rc_handle].peer_features = peer_features;
+ p_cb->rcb[rc_handle].cover_art_psm = cover_art_psm;
+ } else {
+ /* cannot create valid rc_handle for current device. report failure
+ */
+ APPL_TRACE_ERROR("%s: no link resources available", __func__);
+ p_scb->use_rc = false;
+ tBTA_AV_RC_OPEN rc_open;
+ rc_open.peer_addr = p_scb->PeerAddress();
+ rc_open.peer_features = 0;
+ rc_open.cover_art_psm = 0;
+ rc_open.status = BTA_AV_FAIL_RESOURCES;
+ tBTA_AV bta_av_data;
+ bta_av_data.rc_open = rc_open;
+ (*p_cb->p_cback)(BTA_AV_RC_OPEN_EVT, &bta_av_data);
+ }
} else {
APPL_TRACE_ERROR("%s: can not find LCB!!", __func__);
}
diff --git a/system/bta/dm/bta_dm_act.cc b/system/bta/dm/bta_dm_act.cc
index 7bc0de3..e1ce23d 100644
--- a/system/bta/dm/bta_dm_act.cc
+++ b/system/bta/dm/bta_dm_act.cc
@@ -1715,6 +1715,14 @@
/* Do not perform RNR for LE devices at inquiry complete*/
bta_dm_search_cb.name_discover_done = true;
}
+ // If we already have the name we can skip getting the name
+ if (BTM_IsRemoteNameKnown(remote_bd_addr, transport) &&
+ bluetooth::common::init_flags::sdp_skip_rnr_if_known_is_enabled()) {
+ LOG_DEBUG("Security record already known skipping read remote name peer:%s",
+ PRIVATE_ADDRESS(remote_bd_addr));
+ bta_dm_search_cb.name_discover_done = true;
+ }
+
/* if name discovery is not done and application needs remote name */
if ((!bta_dm_search_cb.name_discover_done) &&
((bta_dm_search_cb.p_btm_inq_info == NULL) ||
@@ -1898,7 +1906,7 @@
static void bta_dm_service_search_remname_cback(const RawAddress& bd_addr,
UNUSED_ATTR DEV_CLASS dc,
tBTM_BD_NAME bd_name) {
- tBTM_REMOTE_DEV_NAME rem_name;
+ tBTM_REMOTE_DEV_NAME rem_name = {};
tBTM_STATUS btm_status;
APPL_TRACE_DEBUG("%s name=<%s>", __func__, bd_name);
@@ -1912,7 +1920,7 @@
rem_name.length = BD_NAME_LEN;
}
rem_name.status = BTM_SUCCESS;
-
+ rem_name.hci_status = HCI_SUCCESS;
bta_dm_remname_cback(&rem_name);
} else {
/* get name of device */
@@ -1933,6 +1941,7 @@
rem_name.length = 0;
rem_name.remote_bd_name[0] = 0;
rem_name.status = btm_status;
+ rem_name.hci_status = HCI_SUCCESS;
bta_dm_remname_cback(&rem_name);
}
}
@@ -1960,11 +1969,28 @@
BTM_SecDeleteRmtNameNotifyCallback(&bta_dm_service_search_remname_cback);
}
} else {
- // if we got a different response, ignore it
+ // if we got a different response, maybe ignore it
// we will have made a request directly from BTM_ReadRemoteDeviceName so we
// expect a dedicated response for us
- LOG_INFO("ignoring remote name response in DM callback since it's for the wrong bd_addr");
- return;
+ if (p_remote_name->hci_status == HCI_ERR_CONNECTION_EXISTS) {
+ if (bluetooth::shim::is_gd_security_enabled()) {
+ bluetooth::shim::BTM_SecDeleteRmtNameNotifyCallback(
+ &bta_dm_service_search_remname_cback);
+ } else {
+ BTM_SecDeleteRmtNameNotifyCallback(
+ &bta_dm_service_search_remname_cback);
+ }
+ LOG_INFO(
+ "Assume command failed due to disconnection hci_status:%s peer:%s",
+ hci_error_code_text(p_remote_name->hci_status).c_str(),
+ PRIVATE_ADDRESS(p_remote_name->bd_addr));
+ } else {
+ LOG_INFO(
+ "Ignored remote name response for the wrong address exp:%s act:%s",
+ PRIVATE_ADDRESS(bta_dm_search_cb.peer_bdaddr),
+ PRIVATE_ADDRESS(p_remote_name->bd_addr));
+ return;
+ }
}
/* remote name discovery is done but it could be failed */
@@ -4164,6 +4190,8 @@
return ::allocate_device_for(bd_addr, transport);
}
+void bta_dm_remname_cback(void* p) { ::bta_dm_remname_cback(p); }
+
} // namespace testing
} // namespace legacy
} // namespace bluetooth
diff --git a/system/bta/test/bta_dm_test.cc b/system/bta/test/bta_dm_test.cc
index 1ae79cd..b108067 100644
--- a/system/bta/test/bta_dm_test.cc
+++ b/system/bta/test/bta_dm_test.cc
@@ -27,8 +27,11 @@
#include "bta/include/bta_hf_client_api.h"
#include "btif/include/stack_manager.h"
#include "common/message_loop_thread.h"
+#include "osi/include/compat.h"
#include "stack/include/btm_status.h"
+#include "test/common/main_handler.h"
#include "test/mock/mock_osi_alarm.h"
+#include "test/mock/mock_osi_allocator.h"
#include "test/mock/mock_stack_acl.h"
#include "test/mock/mock_stack_btm_sec.h"
@@ -46,12 +49,21 @@
namespace {
constexpr uint8_t kUnusedTimer = BTA_ID_MAX;
+const RawAddress kRawAddress({0x11, 0x22, 0x33, 0x44, 0x55, 0x66});
+const RawAddress kRawAddress2({0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc});
+constexpr char kRemoteName[] = "TheRemoteName";
const char* test_flags[] = {
"INIT_logging_debug_enabled_for_all=true",
nullptr,
};
+bool bta_dm_search_sm_execute(BT_HDR_RIGID* p_msg) { return true; }
+void bta_dm_search_sm_disable() { bta_sys_deregister(BTA_ID_DM_SEARCH); }
+
+const tBTA_SYS_REG bta_dm_search_reg = {bta_dm_search_sm_execute,
+ bta_dm_search_sm_disable};
+
} // namespace
struct alarm_t {
@@ -70,7 +82,22 @@
test::mock::osi_alarm::alarm_free.body = [](alarm_t* alarm) {
delete alarm;
};
+ test::mock::osi_allocator::osi_malloc.body = [](size_t size) {
+ return malloc(size);
+ };
+ test::mock::osi_allocator::osi_calloc.body = [](size_t size) {
+ return calloc(1UL, size);
+ };
+ test::mock::osi_allocator::osi_free.body = [](void* ptr) { free(ptr); };
+ test::mock::osi_allocator::osi_free_and_reset.body = [](void** ptr) {
+ free(*ptr);
+ *ptr = nullptr;
+ };
+ main_thread_start_up();
+ post_on_bt_main([]() { LOG_INFO("Main thread started up"); });
+
+ bta_sys_register(BTA_ID_DM_SEARCH, &bta_dm_search_reg);
bta_dm_init_cb();
for (int i = 0; i < BTA_DM_NUM_PM_TIMER; i++) {
@@ -80,9 +107,17 @@
}
}
void TearDown() override {
+ bta_sys_deregister(BTA_ID_DM_SEARCH);
bta_dm_deinit_cb();
+ post_on_bt_main([]() { LOG_INFO("Main thread shutting down"); });
+ main_thread_shut_down();
+
test::mock::osi_alarm::alarm_new = {};
test::mock::osi_alarm::alarm_free = {};
+ test::mock::osi_allocator::osi_malloc = {};
+ test::mock::osi_allocator::osi_calloc = {};
+ test::mock::osi_allocator::osi_free = {};
+ test::mock::osi_allocator::osi_free_and_reset = {};
}
};
@@ -212,6 +247,9 @@
namespace testing {
tBTA_DM_PEER_DEVICE* allocate_device_for(const RawAddress& bd_addr,
tBT_TRANSPORT transport);
+
+void bta_dm_remname_cback(void* p);
+
} // namespace testing
} // namespace legacy
} // namespace bluetooth
@@ -364,3 +402,75 @@
static_cast<tBTA_DM_STATE>(std::numeric_limits<int>::max()))
.c_str());
}
+
+TEST_F(BtaDmTest, bta_dm_remname_cback__typical) {
+ bta_dm_search_cb = {
+ .name_discover_done = false,
+ .peer_bdaddr = kRawAddress,
+ };
+
+ tBTM_REMOTE_DEV_NAME name = {
+ .status = BTM_SUCCESS,
+ .bd_addr = kRawAddress,
+ .length = static_cast<uint16_t>(strlen(kRemoteName)),
+ .remote_bd_name = {},
+ .hci_status = HCI_SUCCESS,
+ };
+ strlcpy(reinterpret_cast<char*>(&name.remote_bd_name), kRemoteName,
+ strlen(kRemoteName));
+
+ bluetooth::legacy::testing::bta_dm_remname_cback(static_cast<void*>(&name));
+
+ sync_main_handler();
+
+ ASSERT_EQ(1, mock_function_count_map["BTM_SecDeleteRmtNameNotifyCallback"]);
+ ASSERT_TRUE(bta_dm_search_cb.name_discover_done);
+}
+
+TEST_F(BtaDmTest, bta_dm_remname_cback__wrong_address) {
+ bta_dm_search_cb = {
+ .name_discover_done = false,
+ .peer_bdaddr = kRawAddress,
+ };
+
+ tBTM_REMOTE_DEV_NAME name = {
+ .status = BTM_SUCCESS,
+ .bd_addr = kRawAddress2,
+ .length = static_cast<uint16_t>(strlen(kRemoteName)),
+ .remote_bd_name = {},
+ .hci_status = HCI_SUCCESS,
+ };
+ strlcpy(reinterpret_cast<char*>(&name.remote_bd_name), kRemoteName,
+ strlen(kRemoteName));
+
+ bluetooth::legacy::testing::bta_dm_remname_cback(static_cast<void*>(&name));
+
+ sync_main_handler();
+
+ ASSERT_EQ(0, mock_function_count_map["BTM_SecDeleteRmtNameNotifyCallback"]);
+ ASSERT_FALSE(bta_dm_search_cb.name_discover_done);
+}
+
+TEST_F(BtaDmTest, bta_dm_remname_cback__HCI_ERR_CONNECTION_EXISTS) {
+ bta_dm_search_cb = {
+ .name_discover_done = false,
+ .peer_bdaddr = kRawAddress,
+ };
+
+ tBTM_REMOTE_DEV_NAME name = {
+ .status = BTM_SUCCESS,
+ .bd_addr = RawAddress::kEmpty,
+ .length = static_cast<uint16_t>(strlen(kRemoteName)),
+ .remote_bd_name = {},
+ .hci_status = HCI_ERR_CONNECTION_EXISTS,
+ };
+ strlcpy(reinterpret_cast<char*>(&name.remote_bd_name), kRemoteName,
+ strlen(kRemoteName));
+
+ bluetooth::legacy::testing::bta_dm_remname_cback(static_cast<void*>(&name));
+
+ sync_main_handler();
+
+ ASSERT_EQ(1, mock_function_count_map["BTM_SecDeleteRmtNameNotifyCallback"]);
+ ASSERT_TRUE(bta_dm_search_cb.name_discover_done);
+}
diff --git a/system/gd/common/init_flags.fbs b/system/gd/common/init_flags.fbs
index ae561ef..c641e40 100644
--- a/system/gd/common/init_flags.fbs
+++ b/system/gd/common/init_flags.fbs
@@ -13,6 +13,7 @@
gd_core_enabled:bool (privacy:"Any");
btaa_hci_log_enabled:bool (privacy:"Any");
btm_dm_flush_discovery_queue_on_search_cancel:bool (privacy:"Any");
+ sdp_skip_rnr_if_known_is_enabled:bool (privacy:"Any");
}
root_type InitFlagsData;
diff --git a/system/gd/dumpsys/init_flags.cc b/system/gd/dumpsys/init_flags.cc
index 237219e..f14272b 100644
--- a/system/gd/dumpsys/init_flags.cc
+++ b/system/gd/dumpsys/init_flags.cc
@@ -31,5 +31,7 @@
builder.add_gd_controller_enabled(true);
builder.add_gd_core_enabled(bluetooth::common::init_flags::gd_core_is_enabled());
builder.add_btaa_hci_log_enabled(bluetooth::common::init_flags::btaa_hci_is_enabled());
+ builder.add_sdp_skip_rnr_if_known_is_enabled(bluetooth::common::init_flags::sdp_skip_rnr_if_known_is_enabled());
+
return builder.Finish();
}
diff --git a/system/gd/rust/common/src/init_flags.rs b/system/gd/rust/common/src/init_flags.rs
index fba517a..cfbec5e 100644
--- a/system/gd/rust/common/src/init_flags.rs
+++ b/system/gd/rust/common/src/init_flags.rs
@@ -83,6 +83,7 @@
gd_rust,
gd_link_policy,
irk_rotation,
+ sdp_skip_rnr_if_known,
pass_phy_update_callback
},
dependencies: {
diff --git a/system/gd/rust/shim/src/init_flags.rs b/system/gd/rust/shim/src/init_flags.rs
index da1969d..89554d7 100644
--- a/system/gd/rust/shim/src/init_flags.rs
+++ b/system/gd/rust/shim/src/init_flags.rs
@@ -14,6 +14,7 @@
fn gd_link_policy_is_enabled() -> bool;
fn irk_rotation_is_enabled() -> bool;
fn pass_phy_update_callback_is_enabled() -> bool;
+ fn sdp_skip_rnr_if_known_is_enabled() -> bool;
}
}
diff --git a/system/stack/btm/btm_ble_int_types.h b/system/stack/btm/btm_ble_int_types.h
index 5a09528..d9b4e67 100644
--- a/system/stack/btm/btm_ble_int_types.h
+++ b/system/stack/btm/btm_ble_int_types.h
@@ -72,6 +72,24 @@
BTM_BLE_SEC_REQ_ACT_DISCARD = 3,
} tBTM_BLE_SEC_REQ_ACT;
+#ifndef CASE_RETURN_TEXT
+#define CASE_RETURN_TEXT(code) \
+ case code: \
+ return #code
+#endif
+
+inline std::string btm_ble_sec_req_act_text(
+ const tBTM_BLE_SEC_REQ_ACT& action) {
+ switch (action) {
+ CASE_RETURN_TEXT(BTM_BLE_SEC_REQ_ACT_NONE);
+ CASE_RETURN_TEXT(BTM_BLE_SEC_REQ_ACT_ENCRYPT);
+ CASE_RETURN_TEXT(BTM_BLE_SEC_REQ_ACT_PAIR);
+ CASE_RETURN_TEXT(BTM_BLE_SEC_REQ_ACT_DISCARD);
+ }
+}
+
+#undef CASE_RETURN_TEXT
+
#define BTM_VSC_CHIP_CAPABILITY_L_VERSION 55
#define BTM_VSC_CHIP_CAPABILITY_M_VERSION 95
#define BTM_VSC_CHIP_CAPABILITY_S_VERSION 98
diff --git a/system/stack/btm/btm_inq.cc b/system/stack/btm/btm_inq.cc
index f42b160..9352c9d 100644
--- a/system/stack/btm/btm_inq.cc
+++ b/system/stack/btm/btm_inq.cc
@@ -27,6 +27,7 @@
#define LOG_TAG "bluetooth"
+#include <base/logging.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
@@ -41,6 +42,7 @@
#include "osi/include/log.h"
#include "osi/include/osi.h"
#include "stack/btm/btm_ble_int.h"
+#include "stack/btm/btm_dev.h"
#include "stack/btm/btm_int_types.h"
#include "stack/include/acl_api.h"
#include "stack/include/bt_hdr.h"
@@ -50,8 +52,6 @@
#include "types/bluetooth/uuid.h"
#include "types/raw_address.h"
-#include <base/logging.h>
-
namespace {
constexpr char kBtmLogTag[] = "SCAN";
}
@@ -640,6 +640,11 @@
return (BTM_WRONG_MODE);
}
+bool BTM_IsRemoteNameKnown(const RawAddress& bd_addr, tBT_TRANSPORT transport) {
+ tBTM_SEC_DEV_REC* p_dev_rec = btm_find_dev(bd_addr);
+ return (p_dev_rec == nullptr) ? false : p_dev_rec->is_name_known();
+}
+
/*******************************************************************************
*
* Function BTM_InqDbRead
@@ -755,7 +760,7 @@
*
******************************************************************************/
void btm_inq_db_reset(void) {
- tBTM_REMOTE_DEV_NAME rem_name;
+ tBTM_REMOTE_DEV_NAME rem_name = {};
tBTM_INQUIRY_VAR_ST* p_inq = &btm_cb.btm_inq_vars;
uint8_t num_responses;
uint8_t temp_inq_active;
@@ -785,6 +790,7 @@
if (p_inq->p_remname_cmpl_cb) {
rem_name.status = BTM_DEV_RESET;
+ rem_name.hci_status = HCI_SUCCESS;
(*p_inq->p_remname_cmpl_cb)(&rem_name);
p_inq->p_remname_cmpl_cb = NULL;
@@ -1440,6 +1446,7 @@
rem_name.length = (evt_len < BD_NAME_LEN) ? evt_len : BD_NAME_LEN;
rem_name.remote_bd_name[rem_name.length] = 0;
rem_name.status = BTM_SUCCESS;
+ rem_name.hci_status = hci_status;
temp_evt_len = rem_name.length;
while (temp_evt_len > 0) {
@@ -1447,12 +1454,11 @@
temp_evt_len--;
}
rem_name.remote_bd_name[rem_name.length] = 0;
- }
-
- /* If processing a stand alone remote name then report the error in the
- callback */
- else {
+ } else {
+ /* If processing a stand alone remote name then report the error in the
+ callback */
rem_name.status = BTM_BAD_VALUE_RET;
+ rem_name.hci_status = hci_status;
rem_name.length = 0;
rem_name.remote_bd_name[0] = 0;
}
diff --git a/system/stack/btm/neighbor_inquiry.h b/system/stack/btm/neighbor_inquiry.h
index d00e5bf..20f76d4 100644
--- a/system/stack/btm/neighbor_inquiry.h
+++ b/system/stack/btm/neighbor_inquiry.h
@@ -242,10 +242,11 @@
/* Structure returned with remote name request */
typedef struct {
- uint16_t status;
+ tBTM_STATUS status;
RawAddress bd_addr;
uint16_t length;
BD_NAME remote_bd_name;
+ tHCI_STATUS hci_status;
} tBTM_REMOTE_DEV_NAME;
typedef union /* contains the inquiry filter condition */
diff --git a/system/stack/include/btm_api.h b/system/stack/include/btm_api.h
index fb6cd16..774a1f4 100644
--- a/system/stack/include/btm_api.h
+++ b/system/stack/include/btm_api.h
@@ -404,6 +404,22 @@
/*******************************************************************************
*
+ * Function BTM_IsRemoteNameKnown
+ *
+ * Description This function checks if the remote name is known.
+ *
+ * Input Params: bd_addr: Address of remote
+ * transport: Transport, auto if unknown
+ *
+ * Returns
+ * true if name is known, false otherwise
+ *
+ ******************************************************************************/
+bool BTM_IsRemoteNameKnown(const RawAddress& remote_bda,
+ tBT_TRANSPORT transport);
+
+/*******************************************************************************
+ *
* Function BTM_ReadRemoteVersion
*
* Description This function is called to read a remote device's version
diff --git a/system/stack/test/btm/stack_btm_test.cc b/system/stack/test/btm/stack_btm_test.cc
index ecd14fe..49ae48c 100644
--- a/system/stack/test/btm/stack_btm_test.cc
+++ b/system/stack/test/btm/stack_btm_test.cc
@@ -421,3 +421,14 @@
std::numeric_limits<std::uint16_t>::max()))
.c_str());
}
+
+TEST_F(StackBtmTest, btm_ble_sec_req_act_text) {
+ ASSERT_EQ("BTM_BLE_SEC_REQ_ACT_NONE",
+ btm_ble_sec_req_act_text(BTM_BLE_SEC_REQ_ACT_NONE));
+ ASSERT_EQ("BTM_BLE_SEC_REQ_ACT_ENCRYPT",
+ btm_ble_sec_req_act_text(BTM_BLE_SEC_REQ_ACT_ENCRYPT));
+ ASSERT_EQ("BTM_BLE_SEC_REQ_ACT_PAIR",
+ btm_ble_sec_req_act_text(BTM_BLE_SEC_REQ_ACT_PAIR));
+ ASSERT_EQ("BTM_BLE_SEC_REQ_ACT_DISCARD",
+ btm_ble_sec_req_act_text(BTM_BLE_SEC_REQ_ACT_DISCARD));
+}
diff --git a/system/test/mock/mock_stack_btm_inq.cc b/system/test/mock/mock_stack_btm_inq.cc
index 356fe6d..c010262 100644
--- a/system/test/mock/mock_stack_btm_inq.cc
+++ b/system/test/mock/mock_stack_btm_inq.cc
@@ -177,3 +177,7 @@
mock_function_count_map[__func__]++;
}
void btm_sort_inq_result(void) { mock_function_count_map[__func__]++; }
+bool BTM_IsRemoteNameKnown(const RawAddress& bd_addr, tBT_TRANSPORT transport) {
+ mock_function_count_map[__func__]++;
+ return false;
+}