From b11b84b24c660fac3a69f2dbe4bd615d73811219 Mon Sep 17 00:00:00 2001
From: Soren Stoutner
Date: Thu, 24 Mar 2022 09:51:47 -0700
Subject: [PATCH] Release 1.7.
---
app/build.gradle | 4 +-
app/src/main/assets/de/changelog.html | 28 ++++---
.../de/explanations/antiquated_network.html | 37 ++++++++++
app/src/main/assets/en/changelog.html | 9 ++-
app/src/main/assets/es/changelog.html | 12 ++-
.../es/explanations/antiquated_network.html | 37 ++++++++++
app/src/main/assets/es/licenses.html | 20 +++--
app/src/main/assets/fr/changelog.html | 8 ++
.../fr/explanations/antiquated_network.html | 38 ++++++++++
app/src/main/assets/fr/licenses.html | 27 ++++---
app/src/main/assets/it/changelog.html | 12 ++-
.../it/explanations/antiquated_network.html | 38 ++++++++++
app/src/main/assets/it/licenses.html | 8 +-
app/src/main/assets/ru/changelog.html | 10 ++-
.../ru/explanations/antiquated_network.html | 36 +++++++++
app/src/main/assets/ru/licenses.html | 8 +-
.../activities/ProtocolsActivity.kt | 69 +++++++++---------
.../adapters/ProtocolArrayAdapter.kt | 15 +++-
.../privacycell/dataclasses/Protocol.kt | 23 ++++++
app/src/main/res/values-es/strings.xml | 12 +++
app/src/main/res/values-fr/strings.xml | 14 +++-
app/src/main/res/values-it/strings.xml | 12 +++
app/src/main/res/values-night/colors.xml | 32 +-------
app/src/main/res/values-ru/strings.xml | 11 +++
app/src/main/res/values/colors.xml | 9 +++
app/src/main/res/values/strings.xml | 4 +-
.../metadata/android/de-DE/changelogs/8.txt | 3 +
.../metadata/android/en-US/changelogs/8.txt | 2 +
.../metadata/android/es-ES/changelogs/8.txt | 3 +
.../android/es-ES/full_description.txt | 4 +-
.../phoneScreenshots/01-SecureNetwork-es.png | Bin 0 -> 140352 bytes
.../phoneScreenshots/01-Standalone5G-es.png | Bin 136535 -> 0 bytes
.../images/phoneScreenshots/02-Danger-es.png | Bin 160599 -> 0 bytes
.../02-InsecureNetwork-es.png | Bin 0 -> 160443 bytes
.../03-AntiquatedNetework-es.png | Bin 0 -> 164971 bytes
.../phoneScreenshots/03-Stingrays-es.png | Bin 388692 -> 0 bytes
.../phoneScreenshots/04-NavigationMenu-es.png | Bin 124222 -> 131616 bytes
.../phoneScreenshots/05-DarkTheme-es.png | Bin 159134 -> 160530 bytes
.../android/fr-FR/full_description.txt | 4 +-
.../phoneScreenshots/01-SecureNetwork-fr.png | Bin 0 -> 153252 bytes
.../phoneScreenshots/01-Standalone5G-fr.png | Bin 147480 -> 0 bytes
.../images/phoneScreenshots/02-Danger-fr.png | Bin 175911 -> 0 bytes
.../02-InsecureNetwork-fr.png | Bin 0 -> 171748 bytes
.../03-AntiquatedNetwork-fr.png | Bin 0 -> 167973 bytes
.../phoneScreenshots/03-Stingrays-fr.png | Bin 439593 -> 0 bytes
.../phoneScreenshots/04-NavigationMenu-fr.png | Bin 120157 -> 128387 bytes
.../phoneScreenshots/05-DarkTheme-fr.png | Bin 176430 -> 171883 bytes
.../metadata/android/it-IT/changelogs/8.txt | 3 +
.../android/it-IT/full_description.txt | 4 +-
.../phoneScreenshots/01-SecureNetwork-it.png | Bin 0 -> 140495 bytes
.../phoneScreenshots/01-Standalone5G-it.png | Bin 133372 -> 0 bytes
.../images/phoneScreenshots/02-Danger-it.png | Bin 159369 -> 0 bytes
.../02-InsecureNetwork-it.png | Bin 0 -> 155145 bytes
.../03-AntiquatedNetwork-it.png | Bin 0 -> 161763 bytes
.../phoneScreenshots/03-Stingrays-it.png | Bin 368360 -> 0 bytes
.../phoneScreenshots/04-NavigationMenu-it.png | Bin 114865 -> 119053 bytes
.../phoneScreenshots/05-DarkTheme-it.png | Bin 157475 -> 157124 bytes
.../metadata/android/ru-RU/changelogs/8.txt | 3 +
.../android/ru-RU/full_description.txt | 4 +-
.../phoneScreenshots/01-SecureNetwork-ru.png | Bin 0 -> 159788 bytes
.../phoneScreenshots/01-Standalone5G-ru.png | Bin 149039 -> 0 bytes
.../02-InsecureNetwork-ru.png | Bin 0 -> 172260 bytes
.../phoneScreenshots/02-Standalone5G-ru.png | Bin 172571 -> 0 bytes
.../03-AntiquatedNetwork-ru.png | Bin 0 -> 175787 bytes
.../phoneScreenshots/03-Stingrays-ru.png | Bin 395966 -> 0 bytes
.../phoneScreenshots/04-NavigationMenu-ru.png | Bin 121635 -> 127629 bytes
.../phoneScreenshots/05-DarkTheme-ru.png | Bin 171296 -> 171733 bytes
67 files changed, 443 insertions(+), 120 deletions(-)
create mode 100644 app/src/main/assets/de/explanations/antiquated_network.html
create mode 100644 app/src/main/assets/es/explanations/antiquated_network.html
create mode 100644 app/src/main/assets/fr/explanations/antiquated_network.html
create mode 100644 app/src/main/assets/it/explanations/antiquated_network.html
create mode 100644 app/src/main/assets/ru/explanations/antiquated_network.html
create mode 100644 app/src/main/java/com/stoutner/privacycell/dataclasses/Protocol.kt
create mode 100644 fastlane/metadata/android/de-DE/changelogs/8.txt
create mode 100644 fastlane/metadata/android/en-US/changelogs/8.txt
create mode 100644 fastlane/metadata/android/es-ES/changelogs/8.txt
create mode 100644 fastlane/metadata/android/es-ES/images/phoneScreenshots/01-SecureNetwork-es.png
delete mode 100644 fastlane/metadata/android/es-ES/images/phoneScreenshots/01-Standalone5G-es.png
delete mode 100644 fastlane/metadata/android/es-ES/images/phoneScreenshots/02-Danger-es.png
create mode 100644 fastlane/metadata/android/es-ES/images/phoneScreenshots/02-InsecureNetwork-es.png
create mode 100644 fastlane/metadata/android/es-ES/images/phoneScreenshots/03-AntiquatedNetework-es.png
delete mode 100644 fastlane/metadata/android/es-ES/images/phoneScreenshots/03-Stingrays-es.png
create mode 100644 fastlane/metadata/android/fr-FR/images/phoneScreenshots/01-SecureNetwork-fr.png
delete mode 100644 fastlane/metadata/android/fr-FR/images/phoneScreenshots/01-Standalone5G-fr.png
delete mode 100644 fastlane/metadata/android/fr-FR/images/phoneScreenshots/02-Danger-fr.png
create mode 100644 fastlane/metadata/android/fr-FR/images/phoneScreenshots/02-InsecureNetwork-fr.png
create mode 100644 fastlane/metadata/android/fr-FR/images/phoneScreenshots/03-AntiquatedNetwork-fr.png
delete mode 100644 fastlane/metadata/android/fr-FR/images/phoneScreenshots/03-Stingrays-fr.png
create mode 100644 fastlane/metadata/android/it-IT/changelogs/8.txt
create mode 100644 fastlane/metadata/android/it-IT/images/phoneScreenshots/01-SecureNetwork-it.png
delete mode 100644 fastlane/metadata/android/it-IT/images/phoneScreenshots/01-Standalone5G-it.png
delete mode 100644 fastlane/metadata/android/it-IT/images/phoneScreenshots/02-Danger-it.png
create mode 100644 fastlane/metadata/android/it-IT/images/phoneScreenshots/02-InsecureNetwork-it.png
create mode 100644 fastlane/metadata/android/it-IT/images/phoneScreenshots/03-AntiquatedNetwork-it.png
delete mode 100644 fastlane/metadata/android/it-IT/images/phoneScreenshots/03-Stingrays-it.png
create mode 100644 fastlane/metadata/android/ru-RU/changelogs/8.txt
create mode 100644 fastlane/metadata/android/ru-RU/images/phoneScreenshots/01-SecureNetwork-ru.png
delete mode 100644 fastlane/metadata/android/ru-RU/images/phoneScreenshots/01-Standalone5G-ru.png
create mode 100644 fastlane/metadata/android/ru-RU/images/phoneScreenshots/02-InsecureNetwork-ru.png
delete mode 100644 fastlane/metadata/android/ru-RU/images/phoneScreenshots/02-Standalone5G-ru.png
create mode 100644 fastlane/metadata/android/ru-RU/images/phoneScreenshots/03-AntiquatedNetwork-ru.png
delete mode 100644 fastlane/metadata/android/ru-RU/images/phoneScreenshots/03-Stingrays-ru.png
diff --git a/app/build.gradle b/app/build.gradle
index a015f11..6474dbf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -29,8 +29,8 @@ android {
applicationId "com.stoutner.privacycell"
minSdk 30
targetSdk 31
- versionCode 7
- versionName "1.6"
+ versionCode 8
+ versionName "1.7"
}
buildTypes {
diff --git a/app/src/main/assets/de/changelog.html b/app/src/main/assets/de/changelog.html
index c6bc87c..842e2ef 100644
--- a/app/src/main/assets/de/changelog.html
+++ b/app/src/main/assets/de/changelog.html
@@ -1,7 +1,7 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ You are connected to a cell phone network using antiquated protocols, which have multiple known vulnerabilities.
+
+ 2G networks have been decommissioned in most of the world .
+ 3G networks are currently being decommissioned. Unless you know that the carrier in your area is running antiquated protocols, you should consider your device under active attack.
+
+
\ No newline at end of file
diff --git a/app/src/main/assets/en/changelog.html b/app/src/main/assets/en/changelog.html
index 38dadbc..1153bfa 100644
--- a/app/src/main/assets/en/changelog.html
+++ b/app/src/main/assets/en/changelog.html
@@ -1,5 +1,5 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Está conectado a una red de telefonÃa móvil que utiliza protocolos obsoletos, que tienen múltiples vulnerabilidades conocidas.
+
+ Las redes 2G han sido desmanteladas en la mayor parte del mundo .
+ Las redes 3G se están retirando actualmente. A menos que sepa que el operador de su zona está utilizando protocolos obsolotos, deberÃa considerar que su dispositivo está bajo ataque activo.
+
+
\ No newline at end of file
diff --git a/app/src/main/assets/es/licenses.html b/app/src/main/assets/es/licenses.html
index dcd9838..3a606fa 100644
--- a/app/src/main/assets/es/licenses.html
+++ b/app/src/main/assets/es/licenses.html
@@ -44,22 +44,26 @@
Iconos
derivan de security
y 5g
,
- que son parte del set de iconos de Android Material y se liberan bajo la Licencia Apache 2.0 .
+ que son parte del conjunto de iconos de Android Material
+ y son liberados bajo la Licencia Apache 2.0 .
El texto completo de la licencia se muestra abajo. Copyright de modificaciones © 2016, 2021-2022 Soren Stoutner .
Las imágenes resultante se liberan bajo la licencia GPLv3+ .
derivan de security
y warning_amber_rounded
,
- que son parte del set de iconos de Android Material y se liberan bajo la Licencia Apache 2.0 .
+ que son parte del conjunto de iconos de Android Material
+ y son liberados bajo la Licencia Apache 2.0 .
Copyright de modificaciones © 2016, 2022 Soren Stoutner .
Las imágenes resultantes se liberan bajo la licencia GPLv3+ .
derivan de security
y do_not_disturb
,
- que son parte del set de iconos de Android Material y se liberan bajo la Licencia Apache 2.0 .
+ que son parte del conjunto de iconos de Android Material
+ y son liberados bajo la Licencia Apache 2.0 .
Copyright de modificaciones © 2016, 2021-2022 Soren Stoutner .
Las imágenes resultantes se liberan bajo la licencia GPLv3+ .
- is derived from security
and 3g_mobiledata_rounded
,
- which are part of the Android Material icon set and are released under the Apache License 2.0 .
- Modifications copyright © 2016, 2022 Soren Stoutner .
- The resulting image is released under the GPLv3+ license .
- Los siguientes iconos vienen del set de iconos de Android Material ,
+
se deriva de security
y 3g_mobiledata_rounded
,
+ que son parte del conjunto de iconos de Android Material
+ y son liberados bajo la Licencia Apache 2.0 .
+ Copyright de modificaciones © 2016, 2022 Soren Stoutner .
+ La imagen resultante se libera bajo la licencia GPLv3+ .
+ Los siguientes iconos vienen del conjunto de iconos de Android Material ,
que se liberan bajo la licencia Apache 2.0 .
No se han modificado, salvo la información sobre el diseño, como el color y el tamaño. Algunos de ellos han sido renombrados para que coincidan con su uso en el código.
Los iconos y nombres originales se muestran a continuación.
diff --git a/app/src/main/assets/fr/changelog.html b/app/src/main/assets/fr/changelog.html
index c151d9a..c314e7b 100644
--- a/app/src/main/assets/fr/changelog.html
+++ b/app/src/main/assets/fr/changelog.html
@@ -29,6 +29,14 @@
+ 1.7 (version de code 8)
+ 24 March 2022 - API minimum 30, API cible 31
+
+
1.6 (version de code 7)
21 Décembre 2021 - API minimum 30, API cible 31
diff --git a/app/src/main/assets/fr/explanations/antiquated_network.html b/app/src/main/assets/fr/explanations/antiquated_network.html
new file mode 100644
index 0000000..c5cdd96
--- /dev/null
+++ b/app/src/main/assets/fr/explanations/antiquated_network.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vous êtes connecté à un réseau de téléphonie mobile utilisant des protocoles obsolètes, qui présentent de multiples vulnérabilités connues.
+
+ Les réseaux 2G ont été décommissionnés dans la plupart des pays du monde .
+ Les réseaux 3G sont actuellement en cours de décommissionnement.
+ à moins que vous ne sachiez que l'opérateur de votre région utilise des protocoles obsolètes, vous devez considérer que votre appareil fait l'objet d'une attaque active.
+
+
\ No newline at end of file
diff --git a/app/src/main/assets/fr/licenses.html b/app/src/main/assets/fr/licenses.html
index 9abd478..ddf7b86 100644
--- a/app/src/main/assets/fr/licenses.html
+++ b/app/src/main/assets/fr/licenses.html
@@ -44,24 +44,29 @@
Icônes
sont dérivés de security
et de 5g
,
- qui font partie de l'ensemble d'icônes Android Material et sont publiés sous la Licence Apache 2.0 .
- Le texte intégral de la licence est ci-dessous. Modifications copyright © 2016, 2021-2022 Soren Stoutner .
+ qui font partie de l'ensemble d'icônes Android Material
+ et sont publiés sous la Licence Apache 2.0 .
+ Le texte intégral de la licence est ci-dessous. Les modifications font l'objet d'un copyright © 2016, 2021-2022 Soren Stoutner .
Les images résultantes sont publiées sous la licence GPLv3+ .
sont dérivés de security
et de warning_amber_rounded
,
- qui font partie de l'ensemble d'icônes Android Material icon set et sont publiés sous la Licence Apache 2.0 .
- Modifications copyright © 2016, 2022 Soren Stoutner .
+ qui font partie de l'ensemble d'icônes Android Material
+ et sont publiés sous la Licence Apache 2.0 .
+ Les modifications font l'objet d'un copyright © 2016, 2022 Soren Stoutner .
Les images résultantes sont publiées sous la licence GPLv3+ .
sont dérivés de security
et de do_not_disturb
,
- qui font partie de l'ensemble d'icônes Android Material icon set et sont publiés sous la Licence Apache 2.0 .
- Modifications copyright © 2016, 2021-2022 Soren Stoutner .
+ qui font partie de l'ensemble d'icônes Android Material
+ et sont publiés sous la Licence Apache 2.0 .
+ Les modifications font l'objet d'un copyright © 2016, 2021-2022 Soren Stoutner .
Les images résultantes sont publiées sous la licence GPLv3+ .
- is derived from security
and 3g_mobiledata_rounded
,
- which are part of the Android Material icon set and are released under the Apache License 2.0 .
- Modifications copyright © 2016, 2022 Soren Stoutner .
- The resulting image is released under the GPLv3+ license .
+ est un dérivé de security
et de 3g_mobiledata_rounded
,
+ qui font partie de l'ensemble d'icônes Android Material
+ et sont publiés sous la Apache License 2.0 .
+ Les modifications font l'objet d'un copyright © 2016, 2022 Soren Stoutner .
+ L'image résultante est publiée sous la licence GPLv3+ .
Les icônes suivantes proviennent de l'ensemble d'icônes Android Material ,
qui sont publiées sous la Licence Apache 2.0 .
- Elles sont inchangés, à l'exception des informations de mise en page comme la couleur et la taille. Certaines d'entre elles ont été renommées pour correspondre à leur utilisation dans le code. Les icônes et les noms originaux sont présentés ci-dessous.
+ Elles sont inchangés, à l'exception des informations de mise en page comme la couleur et la taille. Certaines d'entre elles ont été renommées pour correspondre à leur utilisation dans le code.
+ Les icônes et les noms originaux sont présentés ci-dessous.
bug_report_rounded.
call_to_action_rounded.
chrome_reader_mode_rounded.
diff --git a/app/src/main/assets/it/changelog.html b/app/src/main/assets/it/changelog.html
index 4e711d5..318b4c0 100644
--- a/app/src/main/assets/it/changelog.html
+++ b/app/src/main/assets/it/changelog.html
@@ -1,7 +1,7 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Il dispositivo è connesso ad una rete che utilizza protocolli antiquati che hanno molteplici vulnerabilità conosciute.
+
+ Le reti 2G sono state abbandonate nella maggior parte del mondo .
+ Le reti 3G sono attualmente in fase di dismissione.
+ Se non si è sicuri che l'operatore stia utilizzando protocolli antiquati nell'area si dovrebbe considerare il proprio dispositivo sotto attacco attivo.
+
+
\ No newline at end of file
diff --git a/app/src/main/assets/it/licenses.html b/app/src/main/assets/it/licenses.html
index 3894559..4ac32f1 100644
--- a/app/src/main/assets/it/licenses.html
+++ b/app/src/main/assets/it/licenses.html
@@ -55,10 +55,10 @@
che sono parte del set di icone Android Material e sono rilasciate sotto la Licenza Apache 2.0 .
Il copyright delle modifiche © 2016, 2021-2022 appartiene a Soren Stoutner .
Le immagini risultanti sono rilasciate sotto la Licenza GPLv3+ .
- is derived from security
and 3g_mobiledata_rounded
,
- which are part of the Android Material icon set and are released under the Apache License 2.0 .
- Modifications copyright © 2016, 2022 Soren Stoutner .
- The resulting image is released under the GPLv3+ license .
+ è derivata da security
e 3g_mobiledata_rounded
,
+ che sono parte del set di icone Android Material e sono rilasciate sotto la Licenza Apache 2.0 .
+ Il copyright delle modifiche © 2016, 2022 appartiene a Soren Stoutner .
+ L'immagine risultante è rilasciata sotto la Licenza GPLv3+ .
Le icone seguenti provengono dal set di icone Android Material ,
che è rilasciato sotto la Licenza Apache 2.0 .
Non sono state modificate ad eccezione delle informazioni del layout come il colore e le dimensioni. Alcune sono state rinominate per essere coerenti con il loro utilizzo nel codice.
diff --git a/app/src/main/assets/ru/changelog.html b/app/src/main/assets/ru/changelog.html
index 314d4ba..a784937 100644
--- a/app/src/main/assets/ru/changelog.html
+++ b/app/src/main/assets/ru/changelog.html
@@ -1,5 +1,5 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ ÐÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑÐµÐ½Ñ Ðº ÑеÑи ÑоÑовой ÑвÑзи Ñ Ð¸ÑполÑзованием ÑÑÑаÑевÑиÑ
пÑоÑоколов, коÑоÑÑе имеÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво извеÑÑнÑÑ
ÑÑзвимоÑÑей.
+
+ СеÑи 2G бÑли вÑÐ²ÐµÐ´ÐµÐ½Ñ Ð¸Ð· ÑкÑплÑаÑаÑии в болÑÑинÑÑве ÑÑÑан миÑа .
+ СеÑи 3G в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð²ÑводÑÑÑÑ Ð¸Ð· ÑкÑплÑаÑаÑии.
+ ÐÑли Ð²Ñ Ð½Ðµ знаеÑе, ÑÑо опеÑаÑÐ¾Ñ ÑвÑзи в ваÑем Ñегионе иÑполÑзÑÐµÑ ÑÑÑаÑевÑие пÑоÑоколÑ, вам ÑледÑÐµÑ ÑÑиÑаÑÑ, ÑÑо ваÑе ÑÑÑÑойÑÑво подвеÑгаеÑÑÑ Ð°ÐºÑивной аÑаке.
+
+
\ No newline at end of file
diff --git a/app/src/main/assets/ru/licenses.html b/app/src/main/assets/ru/licenses.html
index be0d334..a45c0e7 100644
--- a/app/src/main/assets/ru/licenses.html
+++ b/app/src/main/assets/ru/licenses.html
@@ -53,10 +53,10 @@
коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ Ð½Ð°Ð±Ð¾Ñа знаÑков Android Material и вÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ лиÑензией Apache 2.0 .
ÐодиÑикаÑии авÑоÑÑкиÑ
пÑав © 2016, 2021-2022 Soren Stoutner .
ÐолÑÑивÑиеÑÑ Ð¸Ð·Ð¾Ð±ÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð²ÑпÑÑкаÑÑÑÑ Ð¿Ð¾Ð´ лиÑензией GPLv3+ .
- is derived from security
and 3g_mobiledata_rounded
,
- which are part of the Android Material icon set and are released under the Apache License 2.0 .
- Modifications copyright © 2016, 2022 Soren Stoutner .
- The resulting image is released under the GPLv3+ license .
+ ÑвлÑеÑÑÑ Ð¿Ñоизводной Ð¾Ñ security
и 3g_mobiledata_rounded
,
+ коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ Ð½Ð°Ð±Ð¾Ñа знаÑков Android Material и вÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ лиÑензией Apache 2.0 .
+ ÐодиÑикаÑии авÑоÑÑкиÑ
пÑав © 2016, 2022 Soren Stoutner .
+ ÐолÑÑивÑееÑÑ Ð¸Ð·Ð¾Ð±Ñажение вÑпÑÑкаеÑÑÑ Ð¿Ð¾Ð´ лиÑензией GPLv3+ .
СледÑÑÑие знаÑки взÑÑÑ Ð¸Ð· набоÑа знаÑков Android Material ,
коÑоÑÑй вÑпÑÑен под лиÑензией Apache 2.0 .
Ðни не изменилиÑÑ, за иÑклÑÑением инÑоÑмаÑии о макеÑе, Ñакой как ÑÐ²ÐµÑ Ð¸ ÑазмеÑ. ÐекоÑоÑÑе из ниÑ
бÑли пеÑеименованÑ, ÑÑÐ¾Ð±Ñ Ð¾Ð±ÐµÑпеÑиÑÑ Ð¸Ñ
ÑооÑвеÑÑÑвие иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² коде.
diff --git a/app/src/main/java/com/stoutner/privacycell/activities/ProtocolsActivity.kt b/app/src/main/java/com/stoutner/privacycell/activities/ProtocolsActivity.kt
index 1a926fe..8a5912f 100644
--- a/app/src/main/java/com/stoutner/privacycell/activities/ProtocolsActivity.kt
+++ b/app/src/main/java/com/stoutner/privacycell/activities/ProtocolsActivity.kt
@@ -31,6 +31,7 @@ import androidx.preference.PreferenceManager
import com.stoutner.privacycell.R
import com.stoutner.privacycell.adapters.ProtocolArrayAdapter
+import com.stoutner.privacycell.dataclasses.Protocol
import com.stoutner.privacycell.dialogs.WebViewDialog
class ProtocolsActivity : AppCompatActivity() {
@@ -65,42 +66,42 @@ class ProtocolsActivity : AppCompatActivity() {
actionBar.setDisplayHomeAsUpEnabled(true)
// Create a protocol array list.
- val protocolArrayList = ArrayList>()
+ val protocolArrayList = ArrayList()
// Populate the protocol array list. Headers are followed by `true`.
- protocolArrayList.add(Pair(getString(R.string.protocol_2g), true))
- protocolArrayList.add(Pair(getString(R.string.cdma_detail), false))
- protocolArrayList.add(Pair(getString(R.string.gsm_detail), false))
- protocolArrayList.add(Pair(getString(R.string.iden_detail), false))
- protocolArrayList.add(Pair(getString(R.string.gprs_detail), false))
- protocolArrayList.add(Pair(getString(R.string.edge_detail), false))
-
- protocolArrayList.add(Pair(getString(R.string.protocol_3g), true))
- protocolArrayList.add(Pair(getString(R.string.rtt_detail), false))
- protocolArrayList.add(Pair(getString(R.string.evdo_0_detail), false))
- protocolArrayList.add(Pair(getString(R.string.evdo_a_detail), false))
- protocolArrayList.add(Pair(getString(R.string.evdo_b_detail), false))
- protocolArrayList.add(Pair(getString(R.string.ehrpd_detail), false))
- protocolArrayList.add(Pair(getString(R.string.umts_detail), false))
- protocolArrayList.add(Pair(getString(R.string.td_scdma_detail), false))
- protocolArrayList.add(Pair(getString(R.string.hsdpa_detail), false))
- protocolArrayList.add(Pair(getString(R.string.hsupa_detail), false))
- protocolArrayList.add(Pair(getString(R.string.hspa_detail), false))
- protocolArrayList.add(Pair(getString(R.string.hspap_detail), false))
-
- protocolArrayList.add(Pair(getString(R.string.protocol_4g), true))
- protocolArrayList.add(Pair(getString(R.string.lte_detail), false))
- protocolArrayList.add(Pair(getString(R.string.lte_ca_detail), false))
- protocolArrayList.add(Pair(getString(R.string.lte_advanced_pro_detail), false))
- protocolArrayList.add(Pair(getString(R.string.nr_nsa_detail), false))
- protocolArrayList.add(Pair(getString(R.string.nr_nsa_mmwave_detail), false))
-
- protocolArrayList.add(Pair(getString(R.string.protocol_5g), true))
- protocolArrayList.add(Pair(getString(R.string.nr_detail), false))
- protocolArrayList.add(Pair(getString(R.string.nr_advanced_detail), false))
-
- protocolArrayList.add(Pair(getString(R.string.protocol_other), true))
- protocolArrayList.add(Pair(getString(R.string.iwlan_detail), false))
+ protocolArrayList.add(Protocol(getString(R.string.protocol_2g), isHeader = true, isAdditionalNetworkInfo = false))
+ protocolArrayList.add(Protocol(getString(R.string.cdma_detail), isHeader = false, isAdditionalNetworkInfo = false))
+ protocolArrayList.add(Protocol(getString(R.string.gsm_detail), isHeader = false, isAdditionalNetworkInfo = false))
+ protocolArrayList.add(Protocol(getString(R.string.iden_detail), isHeader = false, isAdditionalNetworkInfo = false))
+ protocolArrayList.add(Protocol(getString(R.string.gprs_detail), isHeader = false, isAdditionalNetworkInfo = false))
+ protocolArrayList.add(Protocol(getString(R.string.edge_detail), isHeader = false, isAdditionalNetworkInfo = false))
+
+ protocolArrayList.add(Protocol(getString(R.string.protocol_3g), isHeader = true, isAdditionalNetworkInfo = false))
+ protocolArrayList.add(Protocol(getString(R.string.rtt_detail), isHeader = false, isAdditionalNetworkInfo = false))
+ protocolArrayList.add(Protocol(getString(R.string.evdo_0_detail), isHeader = false, isAdditionalNetworkInfo = false))
+ protocolArrayList.add(Protocol(getString(R.string.evdo_a_detail), isHeader = false, isAdditionalNetworkInfo = false))
+ protocolArrayList.add(Protocol(getString(R.string.evdo_b_detail), isHeader = false, isAdditionalNetworkInfo = false))
+ protocolArrayList.add(Protocol(getString(R.string.ehrpd_detail), isHeader = false, isAdditionalNetworkInfo = false))
+ protocolArrayList.add(Protocol(getString(R.string.umts_detail), isHeader = false, isAdditionalNetworkInfo = false))
+ protocolArrayList.add(Protocol(getString(R.string.td_scdma_detail), isHeader = false, isAdditionalNetworkInfo = false))
+ protocolArrayList.add(Protocol(getString(R.string.hsdpa_detail), isHeader = false, isAdditionalNetworkInfo = false))
+ protocolArrayList.add(Protocol(getString(R.string.hsupa_detail), isHeader = false, isAdditionalNetworkInfo = false))
+ protocolArrayList.add(Protocol(getString(R.string.hspa_detail), isHeader = false, isAdditionalNetworkInfo = false))
+ protocolArrayList.add(Protocol(getString(R.string.hspap_detail), isHeader = false, isAdditionalNetworkInfo = false))
+
+ protocolArrayList.add(Protocol(getString(R.string.protocol_4g), isHeader = true, isAdditionalNetworkInfo = false))
+ protocolArrayList.add(Protocol(getString(R.string.lte_detail), isHeader = false, isAdditionalNetworkInfo = false))
+ protocolArrayList.add(Protocol(getString(R.string.lte_ca_detail), isHeader = false, isAdditionalNetworkInfo = true))
+ protocolArrayList.add(Protocol(getString(R.string.lte_advanced_pro_detail), isHeader = false, isAdditionalNetworkInfo = true))
+ protocolArrayList.add(Protocol(getString(R.string.nr_nsa_detail), isHeader = false, isAdditionalNetworkInfo = true))
+ protocolArrayList.add(Protocol(getString(R.string.nr_nsa_mmwave_detail), isHeader = false, isAdditionalNetworkInfo = true))
+
+ protocolArrayList.add(Protocol(getString(R.string.protocol_5g), isHeader = true, isAdditionalNetworkInfo = false))
+ protocolArrayList.add(Protocol(getString(R.string.nr_detail), isHeader = false, isAdditionalNetworkInfo = false))
+ protocolArrayList.add(Protocol(getString(R.string.nr_advanced_detail), isHeader = false, isAdditionalNetworkInfo = true))
+
+ protocolArrayList.add(Protocol(getString(R.string.protocol_other), isHeader = true, isAdditionalNetworkInfo = false))
+ protocolArrayList.add(Protocol(getString(R.string.iwlan_detail), isHeader = false, isAdditionalNetworkInfo = false))
// Instantiate the protocol array adapter.
val protocolArrayAdapter = ProtocolArrayAdapter(this, protocolArrayList)
diff --git a/app/src/main/java/com/stoutner/privacycell/adapters/ProtocolArrayAdapter.kt b/app/src/main/java/com/stoutner/privacycell/adapters/ProtocolArrayAdapter.kt
index 77576ac..54bfd65 100644
--- a/app/src/main/java/com/stoutner/privacycell/adapters/ProtocolArrayAdapter.kt
+++ b/app/src/main/java/com/stoutner/privacycell/adapters/ProtocolArrayAdapter.kt
@@ -27,11 +27,15 @@ import android.widget.ArrayAdapter
import android.widget.TextView
import com.stoutner.privacycell.R
+import com.stoutner.privacycell.dataclasses.Protocol
-class ProtocolArrayAdapter(context: Context, protocolArrayList: ArrayList>) : ArrayAdapter>(context, 0, protocolArrayList) {
+class ProtocolArrayAdapter(context: Context, protocolArrayList: ArrayList) : ArrayAdapter(context, 0, protocolArrayList) {
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
+ // Get a handle for the protocol.
+ val protocol = getItem(position)!!
+
// Create a populated view and inflate the layout.
- val populatedView = if (getItem(position)!!.second) { // The protocol is a header entry.
+ val populatedView = if (protocol.isHeader) { // The protocol is a header entry.
LayoutInflater.from(context).inflate(R.layout.protocol_header_textview, parent, false)
} else { // The protocol is not a header entry.
LayoutInflater.from(context).inflate(R.layout.protocol_item_textview, parent, false)
@@ -41,7 +45,12 @@ class ProtocolArrayAdapter(context: Context, protocolArrayList: ArrayList(R.id.textview)
// Populate the text view with the corresponding item from the protocol array list.
- textView.text = getItem(position)!!.first
+ textView.text = protocol.protocolName
+
+ // Change the text view background if the protocol is additional network info.
+ if (protocol.isAdditionalNetworkInfo) {
+ textView.setBackgroundColor(context.getColor(R.color.additional_network_info))
+ }
// Return the populated view.
return populatedView
diff --git a/app/src/main/java/com/stoutner/privacycell/dataclasses/Protocol.kt b/app/src/main/java/com/stoutner/privacycell/dataclasses/Protocol.kt
new file mode 100644
index 0000000..7118473
--- /dev/null
+++ b/app/src/main/java/com/stoutner/privacycell/dataclasses/Protocol.kt
@@ -0,0 +1,23 @@
+/*
+ * Copyright © 2022 Soren Stoutner .
+ *
+ * This file is part of Privacy Cell .
+ *
+ * Privacy Cell is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Privacy Cell is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Privacy Cell. If not, see .
+ */
+
+package com.stoutner.privacycell.dataclasses
+
+// Define the Protocol data class.
+class Protocol(val protocolName: String, val isHeader: Boolean, val isAdditionalNetworkInfo: Boolean)
\ No newline at end of file
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 1028db8..6b9f847 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -32,6 +32,9 @@
+ Su dispositivo está conectado a una red que utiliza protocolos seguros.\n\nEs seguro contra los ataques man-in-the-middle de stingray IMSI.
+ Su dispositivo está conectado a una red que utiliza protocolos inseguros.\n\nNo es seguro contra los ataques man-in-the-middlede stingray IMSI.
+ Su dispositivo está conectado a una red que utiliza protocolos obsoletos.\n\nEstá expuesto a numerosas vulnerabilidades de seguridad.
Red de voz: \u0020 %1$s
Red de datos: \u0020 %1$s
Información adicional sobre la red: \u0020 %1$s
@@ -120,6 +123,7 @@
Stingrays
+ Red obsoleta
Cerrar
@@ -128,6 +132,10 @@
Coloca un icono en la barra de estado que monitoriza la red celular.
Notificación de red segura
Notificación de red insegura
+ Notificación de red obsoleta
+ Considera obsoleto 3G
+ Considera los protocolos 3G como obsoletos. En un futuro esto se convertirá en el valor por defecto.
+ Al cambiar esta configuración se reiniciará Privacy Cell.
Interfaz
Barra inferior de app
Mueve la barra de aplicaciones a la parte inferior de la pantalla. Al cambiar esta configuración se reiniciará Privacy Cell.
@@ -145,9 +153,13 @@
Seguro
Inseguro
+ Obsoleto
Estás conectado a una red segura.
+ Está conectado a una red insegura.
+ Está conectado a una red obsoleta.
La seguridad de la red es desconocida.
Red segura
Red insegura
+ Red anticuada
Red desconocida
\ No newline at end of file
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 0dfa7c2..2e24f1a 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -32,6 +32,10 @@
+ Votre appareil est connecté à un réseau utilisant des protocoles sécurisés.\n\nIl est protégé contre les attaques de type "man-in-the-middle" par des IMSI catchers.
+ Votre appareil est connecté à un réseau utilisant des protocoles non sécurisés.
+ \n\nIl n\'est pas protégé contre les attaques de type "man-in-the-middle" par des IMSI catchers.
+ Votre appareil est connecté à un réseau utilisant des protocoles obsolètes.\n\nIl est exposé à de nombreuses failles de sécurité.
Réseau voix : \u0020 %1$s
Réseau de données : \u0020 %1$s
Informations réseau additionnelles : \u0020 %1$s
@@ -120,6 +124,7 @@
IMSI-catcher
+ Réseau obsolète
Fermer
@@ -128,9 +133,12 @@
Placez une icône dans la barre d\'état qui surveille le réseau cellulaire.
Notification de réseau sécurisé
Notification de réseau non sécurisé
+ Notification de réseau obsolète
+ Considérer la 3G comme obsolète
+ Considérez les protocoles 3G comme désuets. A l\'avenir, cela deviendra la valeur par défaut. Changer ce paramètre redémarrera Privacy Cell.
Interface
Barre d\'apps inférieure
- Déplacer la barre d\'apps en bas de l\'écran. La modification de ce paramètre entraîne le redémarrage de Privacy Cell.
+ Déplacer la barre d\'apps en bas de l\'écran. Changer ce paramètre redémarrera Privacy Cell.
@@ -145,9 +153,13 @@
Sécurisé
Non-sécurisé
+ Obsolète
Vous êtes connecté à un réseau sécurisé.
+ Vous êtes connecté à un réseau non sécurisé.
+ Vous êtes connecté à un réseau obsolète.
La sécurité du réseau est inconnue.
Réseau sécurisé
Réseau non-sécurisé
+ Réseau obsolète
Réseau inconnu
\ No newline at end of file
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index ee7e1eb..54689e8 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -32,6 +32,9 @@
+ Il tuo dispositivo è connesso ad una rete che utilizza protocolli sicuri.\n\nE\' sicura nei confronti di attacchi di tipo stingray IMSI man-in-the-middle.
+ Il tuo dispositivo è connesso ad una rete che utilizza protocolli non sicuri.\n\nNon è sicura nei confronti di attacchi di tipo stingray IMSI man-in-the-middle.
+ Il tuo dispositivo è connesso ad una rete che utilizza protocolli antiquati.\n\nE\' esposta a numerose vulnerabilità della sicurezza.
Rete voce: \u0020 %1$s
Rete dati: \u0020 %1$s
Informazioni aggiuntive sulla rete: \u0020 %1$s
@@ -120,6 +123,7 @@
Stingray
+ Rete Antiquata
Chiudi
@@ -128,6 +132,10 @@
Aggiunge un\'icona nella barra di stato che monitora la rete cellulare.
Notifica di rete sicura
Notifica di rete insicura
+ Notifiche di Rete Antiquata
+ Considera il 3G come antiquato
+ Considera il protocollo 3G come antiquato. Ad un certo punto in futuro questa impostazione sarà quella di default.
+ La modifica di questa impostazione provocherà il riavvio di Privacy Cell.
Interfaccia
Barra dell\'app in basso
Sposta la barra dell\'app nella parte inferiore dello schermo. La modifica di questa impostazione provoca il riavvio di Privacy Cell.
@@ -145,9 +153,13 @@
Sicura
Insicura
+ Antiquata
Sei connesso ad una rete sicura.
+ Sei connesso ad una rete non sicura.
+ Sei connesso ad una rete antiquata.
Il livello di sicurezza della rete è sconosciuto.
Rete sicura
Rete insicura
+ Rete Antiquata
Rete sconosciuta
\ No newline at end of file
diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml
index 16f3a88..fe387b1 100644
--- a/app/src/main/res/values-night/colors.xml
+++ b/app/src/main/res/values-night/colors.xml
@@ -20,6 +20,7 @@
+ @color/gray_825
@color/violet_500
@color/violet_500
@color/gray_500
@@ -30,35 +31,4 @@
@color/red_900
@color/salmon
@color/yellow_700
-
-
- #FF000000
-
- #FF2196F3
- #FF1976D2
- #FF0D47A1
-
- #FFB7B7B7
- #FF9E9E9E
- #FF757575
- #FF616161
- #FF202020
-
- #FFE53935
- #FFD32F2F
- #FFB71C1C
-
- #FFFC684E
-
- #FFC73625
-
- #FFFBC02D
- #FFF57F17
-
- #FF8AB4F8
- #FF5785C5
-
- #FFFFFFFF
-
- #00000000
\ No newline at end of file
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 47dcbb1..2b2ec2b 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -30,6 +30,9 @@
+ ÐаÑе ÑÑÑÑойÑÑво подклÑÑено к ÑеÑи Ñ Ð¸ÑполÑзованием безопаÑнÑÑ
пÑоÑоколов.\n\nÐÑ Ð·Ð°ÑиÑÐµÐ½Ñ Ð¾Ñ Ð»Ð¾Ð²ÑÑки IMSI (аÑак Ñипа "Ñеловек поÑеÑедине").
+ ÐаÑе ÑÑÑÑойÑÑво подклÑÑено к ÑеÑи Ñ Ð¸ÑполÑзованием небезопаÑнÑÑ
пÑоÑоколов.\n\nÐÑ Ð½Ðµ заÑиÑÐµÐ½Ñ Ð¾Ñ Ð»Ð¾Ð²ÑÑки IMSI (аÑак Ñипа "Ñеловек поÑеÑедине").
+ ÐаÑе ÑÑÑÑойÑÑво подклÑÑено к ÑеÑи Ñ Ð¸ÑполÑзованием ÑÑÑаÑевÑиÑ
пÑоÑоколов.\n\nÐÑ Ð¿Ð¾Ð´Ð²ÐµÑÐ¶ÐµÐ½Ñ Ð¼Ð½Ð¾Ð³Ð¾ÑиÑленнÑм ÑÑзвимоÑÑÑм безопаÑноÑÑи.
СеÑÑ Ð³Ð¾Ð»Ð¾Ñовой ÑвÑзи: \u0020 %1$s
СеÑÑ Ð¿ÐµÑедаÑи даннÑÑ
: \u0020 %1$s
ÐополниÑелÑÐ½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ ÑеÑи: \u0020 %1$s
@@ -118,6 +121,7 @@
Stingrays
+ УÑÑаÑевÑÐ°Ñ ÑеÑÑ
ÐакÑÑÑÑ
@@ -126,6 +130,9 @@
ÐомеÑÑиÑÑ Ð² ÑÑÑÐ¾ÐºÑ ÑоÑÑоÑÐ½Ð¸Ñ Ð·Ð½Ð°Ñок Ð´Ð»Ñ Ð¾ÑÑÐ»ÐµÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ ÑоÑовой ÑеÑи.
Уведомление о безопаÑной ÑеÑи
Уведомление о небезопаÑной ÑеÑи
+ ÐповеÑение об ÑÑÑаÑевÑей ÑеÑи
+ СÑиÑаÑÑ 3G ÑÑÑаÑевÑей
+ СÑиÑаÑÑ Ð¿ÑоÑÐ¾ÐºÐ¾Ð»Ñ 3G ÑÑÑаÑевÑими. РбÑдÑÑем ÑÑо ÑÑÐ°Ð½ÐµÑ ÑÑÑановкой по ÑмолÑаниÑ. Ðзменение ÑÑой наÑÑÑойки пÑÐ¸Ð²ÐµÐ´ÐµÑ Ðº пеÑезапÑÑÐºÑ Privacy Cell.
ÐнÑеÑÑейÑ
ÐÐ°Ð½ÐµÐ»Ñ Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð²Ð½Ð¸Ð·Ñ
ÐеÑемеÑÑиÑÑ Ð¿Ð°Ð½ÐµÐ»Ñ Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² нижнÑÑ ÑаÑÑÑ ÑкÑана. Ðзменение ÑÑой наÑÑÑойки пÑÐ¸Ð²ÐµÐ´ÐµÑ Ðº пеÑезапÑÑÐºÑ Privacy Cell.
@@ -143,9 +150,13 @@
ÐезопаÑна
ÐебезопаÑна
+ УÑÑаÑевÑаÑ
ÐÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑÐµÐ½Ñ Ðº безопаÑной ÑеÑи.
+ ÐÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑÐµÐ½Ñ Ðº небезопаÑной ÑеÑи.
+ ÐÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑÐµÐ½Ñ Ðº ÑÑÑаÑевÑей ÑеÑи.
ÐезопаÑноÑÑÑ ÑеÑи не опÑеделена.
ÐезопаÑÐ½Ð°Ñ ÑеÑÑ
ÐебезопаÑÐ½Ð°Ñ ÑеÑÑ
+ УÑÑаÑевÑÐ°Ñ ÑеÑÑ
ÐеизвеÑÑÐ½Ð°Ñ ÑеÑÑ
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 87a0154..a26fc5c 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -20,6 +20,7 @@
+ @color/gray_200
@color/blue_700
@color/blue_700
@color/gray_600
@@ -37,14 +38,22 @@
#FF000000
+ #FFE3F2FD
#FF2196F3
#FF1976D2
#FF0D47A1
+ #FFFAFAFA
+ #FFF5F5F5
+ #FFEEEEEE
#FFB7B7B7
#FF9E9E9E
#FF757575
#FF616161
+ #FF424242
+ #FF383838
+ #FF323232
+ #FF212121
#FF202020
#FFEEFF41
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 17356f3..648a078 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -136,10 +136,10 @@
Insecure network notification
Antiquated network notification
Consider 3G antiquated
- Consider the 3G protocols to be antiquated. At a future point this will become the default. Changing this setting will restart Privacy Cell.
+ Consider the 3G protocols to be antiquated. At a future point this will become the default. Changing this setting will restart Privacy Cell.
Interface
Bottom app bar
- Move the app bar to the bottom of the screen. Changing this setting will restart Privacy Cell.
+ Move the app bar to the bottom of the screen. Changing this setting will restart Privacy Cell.
diff --git a/fastlane/metadata/android/de-DE/changelogs/8.txt b/fastlane/metadata/android/de-DE/changelogs/8.txt
new file mode 100644
index 0000000..5ffb273
--- /dev/null
+++ b/fastlane/metadata/android/de-DE/changelogs/8.txt
@@ -0,0 +1,3 @@
+⢠Warnung bei Verbindungen zu älteren, unsicheren Netzwerken hinzugefügt.
+⢠Protokoll-Ansicht hinzugefügt.
+⢠Teilweise deutsche Ãbersetzung von Bernhard G. Keller.
\ No newline at end of file
diff --git a/fastlane/metadata/android/en-US/changelogs/8.txt b/fastlane/metadata/android/en-US/changelogs/8.txt
new file mode 100644
index 0000000..709c095
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/8.txt
@@ -0,0 +1,2 @@
+⢠Add a warning when connecting to older, insecure networks.
+⢠Add a protocols activity.
\ No newline at end of file
diff --git a/fastlane/metadata/android/es-ES/changelogs/8.txt b/fastlane/metadata/android/es-ES/changelogs/8.txt
new file mode 100644
index 0000000..b545f50
--- /dev/null
+++ b/fastlane/metadata/android/es-ES/changelogs/8.txt
@@ -0,0 +1,3 @@
+⢠Añadir una advertencia al conectarse a redes antiguas e inseguras.
+⢠Añadir una actividad de protocolos.
+⢠Traducción actualizada al español aportada por Jose A. León.
\ No newline at end of file
diff --git a/fastlane/metadata/android/es-ES/full_description.txt b/fastlane/metadata/android/es-ES/full_description.txt
index 42964a7..9049de9 100644
--- a/fastlane/metadata/android/es-ES/full_description.txt
+++ b/fastlane/metadata/android/es-ES/full_description.txt
@@ -1,3 +1,5 @@
Privacy Cell es una pequeña aplicación que muestra la información del protocolo del teléfono móvil.
-En el momento de escribir este artÃculo, muchas redes de telefonÃa móvil están cambiando de 4G (4ª generación) a redes 5G. Los protocolos de la red 5G se diseñaron especÃficamente para proteger contra algunas de las inseguridades conocidas de los protocolos más antiguos, incluidas las que permitÃan a los stingrays (captadores de IMSI) realizar ataques man-in-the-middle en las redes de telefonÃa móvil. Para facilitar el despliegue y la retrocompatibilidad, las redes 4G y 5G pueden funcionar juntas en lo que se conoce como modo 5G NR (New Radio) NSA (Non-Standalone). Esto utiliza la red 4G para el canal de control y la red 5G para la comunicación de datos. Sin embargo, el 5G NR NSA no proporciona protección contra los stingrays. Android tiene acceso a toda la información que necesita para saber si está conectado a una red 5G NR NSA o a una red 5G NR SA (Standalone), pero no muestra esa información al usuario. El objetivo de Privacy Cell es facilitar el acceso a esa información.
\ No newline at end of file
+En el momento de escribir este artÃculo, muchas redes de telefonÃa móvil están cambiando de 4G (4ª generación) a redes 5G. Los protocolos de la red 5G se diseñaron especÃficamente para proteger contra algunas de las inseguridades conocidas de los protocolos más antiguos, incluidas las que permitÃan a los stingrays (captadores de IMSI) realizar ataques man-in-the-middle en las redes de telefonÃa móvil. Para facilitar el despliegue y la retrocompatibilidad, las redes 4G y 5G pueden funcionar juntas en lo que se conoce como modo 5G NR (New Radio) NSA (Non-Standalone). Esto utiliza la red 4G para el canal de control y la red 5G para la comunicación de datos. Sin embargo, el 5G NR NSA no proporciona protección contra los stingrays. Android tiene acceso a toda la información que necesita para saber si está conectado a una red 5G NR NSA o a una red 5G NR SA (Standalone), pero no muestra esa información al usuario. El objetivo de Privacy Cell es facilitar el acceso a esa información.
+
+Privacy Cell también puede advertirle cuando esté conectado a redes 2G y 3G obsoletas.
\ No newline at end of file
diff --git a/fastlane/metadata/android/es-ES/images/phoneScreenshots/01-SecureNetwork-es.png b/fastlane/metadata/android/es-ES/images/phoneScreenshots/01-SecureNetwork-es.png
new file mode 100644
index 0000000000000000000000000000000000000000..a0a8a9158de189e3d37d7726454df21f503b0492
GIT binary patch
literal 140352
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