-Privacy Cell copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+Privacy Cell copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
/*
- * Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ * Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
*
* This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
*
dependencies {
// Include the following AndroidX libraries.
- implementation 'androidx.appcompat:appcompat:1.4.0'
+ implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'androidx.core:core-ktx:1.7.0'
- implementation 'androidx.preference:preference-ktx:1.1.1'
+ implementation 'androidx.preference:preference-ktx:1.2.0'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
implementation 'androidx.webkit:webkit:1.4.0'
implementation 'androidx.work:work-runtime-ktx:2.7.1'
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10'
// Include the Google material library.
- implementation 'com.google.android.material:material:1.4.0'
+ implementation 'com.google.android.material:material:1.5.0'
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
<!-- Support Chromebooks that don't have a touch screen. -->
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
- <!-- App data is automatically backed up to Google cloud servers unless `android:allowBackup="false"` and `android:fullBackupContent="false"` is set. -->
+ <!-- App data is automatically backed up to Google cloud servers unless `android:allowBackup="false"` and `android:fullBackupContent="false"` is set.
+ `tools:ignore="DataExtractionRules` removes the warning that backups can still transfer data device to device. -->
<application
android:label="@string/privacy_cell"
android:icon="@mipmap/privacy_cell"
android:allowBackup="false"
android:fullBackupContent="false"
android:supportsRtl="true"
- android:theme="@style/Theme.PrivacyCell" >
+ android:theme="@style/Theme.PrivacyCell"
+ tools:ignore="DataExtractionRules" >
<!-- Privacy Cell Activity. The label uses the short name so that it isn't truncated under the icon in the launcher on most phones.
`android:launchMode="singleTask"` makes the app launch in a new task instead of inside the task of the program that sends it an intent.
android:screenOrientation="fullUser"
android:parentActivityName=".activities.PrivacyCellActivity" />
+ <!-- Protocols Activity. The `parentActivityName` is used when navigating back. -->
+ <activity
+ android:name=".activities.ProtocolsActivity"
+ android:label="@string/protocols"
+ android:screenOrientation="fullUser"
+ android:parentActivityName=".activities.PrivacyCellActivity" />
+
<!-- Logcat Activity. The `parentActivityName` is used when navigating back. -->
<activity
android:name=".activities.LogcatActivity"
</head>
<body>
- <h3>1.6 (version code 7)</h3>
- <p>21. Dezember 2021 - Mindest-API 30, Ziel-API 31</p>
+ <h3><a href="https://www.stoutner.com/privacy-cell-1-6/">1.6</a> (version code 7)</h3>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=2be052aa618f414a18d73f5075b3b3776180bee5">21. Dezember 2021</a> - Mindest-API 30, Ziel-API 31</p>
<ul>
<li>Von <a href="https://redmine.stoutner.com/issues/775">androidx.work</a> hinzugefügte, nicht benötigte Berechtigungen entfernt.</li>
<li>Fehler behoben, durch den unter Android 12 der <a href="https://redmine.stoutner.com/issues/777">Benachrichtigungs-Dienst im Hintergrund nicht neu gestartet</a> werden konnte.</li>
<!--
- Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
Translation 2021 Bernhard G. Keller. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
<body>
<h3>Copyright</h3>
- <p>Privacy Cell ist Copyright © 2021 von <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+ <p>Privacy Cell ist Copyright © 2021-2022 von <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
<h3>Lizenz</h3>
<p>Privacy Cell wird unter der <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+-Lizenz</a> veröffentlicht. Den gesamten Text der Lizenz finden Sie unterhalb.
</head>
<body>
- <h3>1.6 (version code 7)</h3>
- <p>21 December 2021 - minimum API 30, target API 31</p>
+ <h3><a href="https://www.stoutner.com/privacy-cell-1-6/">1.6</a> (version code 7)</h3>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=2be052aa618f414a18d73f5075b3b3776180bee5">21 December 2021</a> - minimum API 30, target API 31</p>
<ul>
<li>Remove unneeded permissions added by <a href="https://redmine.stoutner.com/issues/775">androidx.work</a>.</li>
<li>Fix the notification service not being able to <a href="https://redmine.stoutner.com/issues/777">restart itself in the background</a> on Android 12.</li>
<!--
- Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
<body>
<h3>Copyright</h3>
- <p>Privacy Cell copyright © 2021 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+ <p>Privacy Cell copyright © 2021-2022 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
<h3>License</h3>
<p>Privacy Cell is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>. The full text of the license is below.
</head>
<body>
- <h3>1.6 (versión del código 7)</h3>
- <p>21 de diciembre de 2021 - API mínimo 30, API objetivo 31</p>
+ <h3><a href="https://www.stoutner.com/privacy-cell-1-6/">1.6</a> (versión del código 7)</h3>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=2be052aa618f414a18d73f5075b3b3776180bee5">21 de diciembre de 2021</a> - API mínimo 30, API objetivo 31</p>
<ul>
<li>Eliminar los permisos innecesarios añadidos por <a href="https://redmine.stoutner.com/issues/775">androidx.work</a>.</li>
<li>Arreglar el problema del servicio de notificaciones que no podía <a href="https://redmine.stoutner.com/issues/777">reiniciarse en segundo plano</a> en Android 12.</li>
<!--
- Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
Translation 2021 Jose A. León. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
<body>
<h3>Copyright</h3>
- <p>Copyright de Privacy Cell © 2021 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+ <p>Copyright de Privacy Cell © 2021-2022 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
<h3>Licencia</h3>
<p>Privacy Cell se libera bajo la <a href="https://www.gnu.org/licenses/gpl-3.0.html">licencia GPLv3+</a>. El texto completo de la licencia se muestra abajo.
<!--
- Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
- Translation 2021 Kévin L. <kevinliste@framalistes.org>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+ Translation 2021-2022 Kévin L. <kevinliste@framalistes.org>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
</head>
<body>
- <h3>1.6 (version de code 7)</h3>
- <p>21 December 2021 - API minimum 30, API cible 31</p>
+ <h3><a href="https://www.stoutner.com/privacy-cell-1-6/">1.6</a> (version de code 7)</h3>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=2be052aa618f414a18d73f5075b3b3776180bee5">21 Décembre 2021</a> - API minimum 30, API cible 31</p>
<ul>
- <li>Remove unneeded permissions added by <a href="https://redmine.stoutner.com/issues/775">androidx.work</a>.</li>
- <li>Fix the notification service not being able to <a href="https://redmine.stoutner.com/issues/777">restart itself in the background</a> on Android 12.</li>
- <li>Updated French translation contributed by <a href="mailto:kevinliste@framalistes.org">Kévin L</a>.</li>
- <li>First full Russian translation.</li>
+ <li>Suppression des permissions inutiles ajoutées <a href="https://redmine.stoutner.com/issues/775">androidx.work</a>.</li>
+ <li>Correction du service de notification ne pouvant pas <a href="https://redmine.stoutner.com/issues/777">se redémarrer en arrière-plan</a> sur Android 12.</li>
+ <li>Mise à jour de la traduction française par <a href="mailto:kevinliste@framalistes.org">Kévin L</a>.</li>
+ <li>Première traduction complète en russe.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-cell-1-5/">1.5</a> (version de code 6)</h3>
<!--
- Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
Translation 2021 Kévin L. <kevinliste@framalistes.org>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
<body>
<h3>Copyright</h3>
- <p>Privacy Cell copyright © 2021 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+ <p>Privacy Cell copyright © 2021-2022 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
<h3>Licence</h3>
<p>Privacy Cell est publiée sous la <a href="https://www.gnu.org/licenses/gpl-3.0.html">licence GPLv3+</a>. Le texte intégral de la licence se trouve ci-dessous.
</head>
<body>
- <h3>1.6 (versione codice 7)</h3>
- <p>21 Dicembre 2021 - minima API 30, target API 31</p>
+ <h3><a href="https://www.stoutner.com/privacy-cell-1-6/">1.6</a> (versione codice 7)</h3>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=2be052aa618f414a18d73f5075b3b3776180bee5">21 Dicembre 2021</a> - minima API 30, target API 31</p>
<ul>
<li>Rimozione delle autorizzazioni non necessarie aggiunte da <a href="https://redmine.stoutner.com/issues/775">androidx.work</a>.</li>
<li>Sistemazione del servizio di notifica che non riusciva a <a href="https://redmine.stoutner.com/issues/777">riavviarsi da solo in background</a> su Android 12.</li>
<!--
- Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
Translation 2021 Francesco Buratti. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
<body>
<h3>Copyright</h3>
- <p>Privacy Cell copyright © 2021 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+ <p>Privacy Cell copyright © 2021-2022 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
<h3>Licenza</h3>
<p>Privacy Cell è rilasciato con <a href="https://www.gnu.org/licenses/gpl-3.0.html">Licenza GPLv3+</a>. Il testo completo è riportato di seguito.
</head>
<body>
- <h3>1.6 (код версии 7)</h3>
- <p>21 декабря 2021 года - минимальный API 30, целевой API 31</p>
+ <h3><a href="https://www.stoutner.com/privacy-cell-1-6/">1.6</a> (код версии 7)</h3>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=2be052aa618f414a18d73f5075b3b3776180bee5">21 декабря 2021 года</a> - минимальный API 30, целевой API 31</p>
<ul>
<li>Удалены неиспользуемые разрешения, добавленные <a href="https://redmine.stoutner.com/issues/775">androidx.work</a>.</li>
<li>Исправлена невозможность перезапуска <a href="https://redmine.stoutner.com/issues/777">в фоновом режиме службы уведомлений</a> на Android 12.</li>
<!--
- Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
<body>
<h3>Авторские права</h3>
- <p>Авторские права Privacy Cell © 2021 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+ <p>Авторские права Privacy Cell © 2021-2022 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
<h3>Лицензия</h3>
<p>Privacy Cell выпускается под <a href="https://www.gnu.org/licenses/gpl-3.0.html">лицензией GPLv3+</a>. Полный текст лицензии приведен ниже.
/*
- * Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ * Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
*
* This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
*
* along with Privacy Cell. If not, see <http://www.gnu.org/licenses/>.
*/
+// The suppression of deprecation lint can be removed once the minimum API >= 31.
+@file:Suppress("DEPRECATION")
+
package com.stoutner.privacycell.activities
import android.Manifest
+import android.annotation.SuppressLint
import android.app.ActivityManager
import android.content.Context
import android.content.Intent
// Define the phone state listener. The `PhoneStateListener` can be replaced by `TelephonyCallback` once the minimum API >= 31.
phoneStateListener = object : PhoneStateListener() {
+ @SuppressLint("SwitchIntDef")
override fun onDisplayInfoChanged(telephonyDisplayInfo: TelephonyDisplayInfo) {
// Populate the stingray security information. <https://source.android.com/devices/tech/connect/acts-5g-testing>
if (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_NR) { // This is a secure 5G NR SA network.
startActivity(settingsIntent)
}
+ R.id.protocols -> {
+ // Create an intent to load the Protocols activity.
+ val protocolsIntent = Intent(this, ProtocolsActivity::class.java)
+
+ // Make it so.
+ startActivity(protocolsIntent)
+ }
+
R.id.logcat -> { // Logcat.
// Create an intent to load the Logcat activity.
val logcatIntent = Intent(this, LogcatActivity::class.java)
--- /dev/null
+/*
+ * Copyright © 2022 Soren Stoutner <soren@stoutner.com>.
+ *
+ * This file is part of Privacy Cell <https://www.stoutner.com/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 <http://www.gnu.org/licenses/>.
+ */
+
+package com.stoutner.privacycell.activities
+
+import android.os.Bundle
+import android.view.View
+import android.widget.AdapterView
+import android.widget.ListView
+import android.widget.TextView
+
+import androidx.appcompat.app.AppCompatActivity
+import androidx.appcompat.widget.Toolbar
+import androidx.preference.PreferenceManager
+
+import com.stoutner.privacycell.R
+import com.stoutner.privacycell.adapters.ProtocolArrayAdapter
+import com.stoutner.privacycell.dialogs.WebViewDialog
+
+class ProtocolsActivity : AppCompatActivity() {
+ public override fun onCreate(savedInstanceState: Bundle?) {
+ // Run the default commands.
+ super.onCreate(savedInstanceState)
+
+ // Get a handle for the shared preferences.
+ val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
+
+ // Get the bottom app bar preference.
+ val bottomAppBar = sharedPreferences.getBoolean(getString(R.string.bottom_app_bar_key), false)
+
+ // Set the content view.
+ if (bottomAppBar) {
+ setContentView(R.layout.protocols_bottom_appbar)
+ } else {
+ setContentView(R.layout.protocols_top_appbar)
+ }
+
+ // Get handles for the views.
+ val toolbar = findViewById<Toolbar>(R.id.toolbar)
+ val listView = findViewById<ListView>(R.id.listview)
+
+ // Set the toolbar as the action bar.
+ setSupportActionBar(toolbar)
+
+ // Get a handle for the action bar.
+ val actionBar = supportActionBar!!
+
+ // Display the back arrow in the action bar.
+ actionBar.setDisplayHomeAsUpEnabled(true)
+
+ // Create a protocol array list.
+ val protocolArrayList = ArrayList<Pair<String, Boolean>>()
+
+ // 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))
+
+ // Instantiate the protocol array adapter.
+ val protocolArrayAdapter = ProtocolArrayAdapter(this, protocolArrayList)
+
+ // Set the list view adapter.
+ listView.adapter = protocolArrayAdapter
+
+ // Listen for clicks on items in the list view.
+ listView.onItemClickListener = AdapterView.OnItemClickListener { _: AdapterView<*>?, view: View, _: Int, _: Long ->
+ // Get a handle for the text view.
+ val textview = view.findViewById<TextView>(R.id.textview)
+
+ // Show an alert dialog if a protocol item was selected.
+ when (textview.text) {
+ getString(R.string.gprs_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_GPRS)
+ getString(R.string.edge_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_EDGE)
+ getString(R.string.umts_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_UMTS)
+ getString(R.string.cdma_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_CDMA)
+ getString(R.string.evdo_0_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_EVDO_0)
+ getString(R.string.evdo_a_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_EVDO_A)
+ getString(R.string.rtt_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_1xRTT)
+ getString(R.string.hsdpa_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_HSDPA)
+ getString(R.string.hsupa_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_HSUPA)
+ getString(R.string.hspa_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_HSPA)
+ getString(R.string.iden_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_IDEN)
+ getString(R.string.evdo_b_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_EVDO_B)
+ getString(R.string.lte_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_LTE)
+ getString(R.string.ehrpd_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_EHRPD)
+ getString(R.string.hspap_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_HSPAP)
+ getString(R.string.gsm_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_GSM)
+ getString(R.string.td_scdma_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_TD_SCDMA)
+ getString(R.string.iwlan_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_IWLAN)
+ getString(R.string.nr_detail) -> WebViewDialog().type(WebViewDialog.NETWORK_NR)
+ getString(R.string.lte_ca_detail) -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_LTE_CA)
+ getString(R.string.lte_advanced_pro_detail) -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_LTE_ADVANCED_PRO)
+ getString(R.string.nr_nsa_detail) -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_NR_NSA)
+ getString(R.string.nr_nsa_mmwave_detail) -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_NR_NSA_MMWAVE)
+ getString(R.string.nr_advanced_detail) -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_NR_ADVANCED)
+ else -> null
+ }?.show(supportFragmentManager, getString(R.string.protocols))
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
+ *
+ * This file is part of Privacy Cell <https://www.stoutner.com/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 <http://www.gnu.org/licenses/>.
+ */
+
+package com.stoutner.privacycell.adapters
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ArrayAdapter
+import android.widget.TextView
+
+import com.stoutner.privacycell.R
+
+class ProtocolArrayAdapter(context: Context, protocolArrayList: ArrayList<Pair<String, Boolean>>) : ArrayAdapter<Pair<String, Boolean>>(context, 0, protocolArrayList) {
+ override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
+ // Create a populated view and inflate the layout.
+ val populatedView = if (getItem(position)!!.second) { // 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)
+ }
+
+ // Get a handle for the text view.
+ val textView = populatedView.findViewById<TextView>(R.id.textview)
+
+ // Populate the text view with the corresponding item from the protocol array list.
+ textView.text = getItem(position)!!.first
+
+ // Return the populated view.
+ return populatedView
+ }
+}
\ No newline at end of file
/*
- * Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ * Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
*
* This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
*
dialogBuilder.setIcon(R.drawable.privacy_policy)
// Set the title.
- dialogBuilder.setTitle(R.string.lte_ca)
+ dialogBuilder.setTitle(R.string.lte_advanced_pro)
}
OVERRIDE_NETWORK_NR_NSA -> {
setPreferencesFromResource(R.xml.preferences, rootKey)
// Get a handle for the shared preferences.
- val sharedPreferences = preferenceScreen.sharedPreferences
+ val sharedPreferences = preferenceScreen.sharedPreferences!!
// Get handles for the preferences.
realtimeMonitoringPreference = findPreference(getString(R.string.realtime_monitoring_key))!!
super.onPause()
// Get a handle for the shared preferences.
- val sharedPreferences = preferenceScreen.sharedPreferences
+ val sharedPreferences = preferenceScreen.sharedPreferences!!
// Unregister the shared preference listener.
sharedPreferences.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener)
sharedPreferenceChangeListener = getSharedPreferenceChangeListener()
// Get a handle for the shared preferences.
- val sharedPreferences = preferenceScreen.sharedPreferences
+ val sharedPreferences = preferenceScreen.sharedPreferences!!
// Re-register the shared preference listener.
sharedPreferences.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener)
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
- android:autoMirrored="true"
android:height="24dp"
android:width="24dp"
android:viewportHeight="24"
- android:viewportWidth="24" >
+ android:viewportWidth="24"
+ android:autoMirrored="true" >
<path
android:fillColor="@color/icon_enabled"
<!--
- This file is derived from `security` and `do_not_disturb`, which are part of the Android Material icon set. They are released under the Apache License 2.0.
+ Copyright © 2016,2021-2022 Soren Stoutner <soren@stoutner.com>. The resulting image is released under the GPLv3+ license.
- Changes copyright © 2016,2021 Soren Stoutner <soren@stoutner.com>. The resulting image is released under the GPLv3+ license.
+ This file is derived from `security` and `do_not_disturb`, which are part of the Android Material icon set. They are released under the Apache License 2.0.
This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
<!--
- This file is derived from `security` and `do_not_disturb`, which are part of the Android Material icon set. They are released under the Apache License 2.0.
+ Copyright © 2016,2021-2022 Soren Stoutner <soren@stoutner.com>. The resulting image is released under the GPLv3+ license.
- Changes copyright © 2016,2021 Soren Stoutner <soren@stoutner.com>. The resulting image is released under the GPLv3+ license.
+ This file is derived from `security` and `do_not_disturb`, which are part of the Android Material icon set. They are released under the Apache License 2.0.
This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
<!--
- This file is derived from `security` and `5g`, which are part of the Android Material icon set. They are released under the Apache License 2.0.
+ Copyright © 2016,2021-2022 Soren Stoutner <soren@stoutner.com>. The resulting image is released under the GPLv3+ license.
- Changes copyright © 2016,2021 Soren Stoutner <soren@stoutner.com>. The resulting image is released under the GPLv3+ license.
+ This file is derived from `security` and `5g`, which are part of the Android Material icon set. They are released under the Apache License 2.0.
This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
--- /dev/null
+<!-- This file comes from the Android Material icon set, where it is called `settings_input_antenna_rounded`. It is released under the Apache License 2.0. -->
+
+<vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="24dp"
+ android:width="24dp"
+ android:viewportHeight="24"
+ android:viewportWidth="24" >
+
+ <path
+ android:fillColor="@color/icon_enabled"
+ android:pathData="M12,5c-3.87,0 -7,3.13 -7,7h2c0,-2.76 2.24,-5 5,-5s5,2.24 5,5h2c0,-3.87 -3.13,-7 -7,-7zM13,14.29c0.88,-0.39 1.5,-1.26 1.5,-2.29 0,-1.38 -1.12,-2.5 -2.5,-2.5S9.5,10.62 9.5,12c0,1.02 0.62,1.9 1.5,2.29v3.3L7.59,21 9,22.41l3,-3 3,3L16.41,21 13,17.59v-3.3zM12,1C5.93,1 1,5.93 1,12h2c0,-4.97 4.03,-9 9,-9s9,4.03 9,9h2c0,-6.07 -4.93,-11 -11,-11z" />
+</vector>
\ No newline at end of file
<!--
- This file is derived from `security` and `5g`, which are part of the Android Material icon set. They are released under the Apache License 2.0.
+ Copyright © 2016,2021-2022 Soren Stoutner <soren@stoutner.com>. The resulting image is released under the GPLv3+ license.
- Changes copyright © 2016,2021 Soren Stoutner <soren@stoutner.com>. The resulting image is released under the GPLv3+ license.
+ This file is derived from `security` and `5g`, which are part of the Android Material icon set. They are released under the Apache License 2.0.
This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
<!--
- This file is derived from `security` and `5g`, which are part of the Android Material icon set. They are released under the Apache License 2.0.
+ Copyright © 2016,2021-2022 Soren Stoutner <soren@stoutner.com>. The resulting image is released under the GPLv3+ license.
- Changes copyright © 2016,2021 Soren Stoutner <soren@stoutner.com>. The resulting image is released under the GPLv3+ license.
+ This file is derived from `security` and `5g`, which are part of the Android Material icon set. They are released under the Apache License 2.0.
This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
<!--
- This file is derived from `security` and `5g`, which are part of the Android Material icon set. They are released under the Apache License 2.0.
+ Copyright © 2016,2021-2022 Soren Stoutner <soren@stoutner.com>. The resulting image is released under the GPLv3+ license.
- Changes copyright © 2016,2021 Soren Stoutner <soren@stoutner.com>. The resulting image is released under the GPLv3+ license.
+ This file is derived from `security` and `5g`, which are part of the Android Material icon set. They are released under the Apache License 2.0.
This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
<!--
- This file is derived from `security` and `5g`, which are part of the Android Material icon set. They are released under the Apache License 2.0.
+ Copyright © 2016,2021-2022 Soren Stoutner <soren@stoutner.com>. The resulting image is released under the GPLv3+ license.
- Changes copyright © 2016,2021 Soren Stoutner <soren@stoutner.com>. The resulting image is released under the GPLv3+ license.
+ This file is derived from `security` and `5g`, which are part of the Android Material icon set. They are released under the Apache License 2.0.
This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
<!--
- This file is derived from `security` and `5g`, which are part of the Android Material icon set. They are released under the Apache License 2.0.
+ Copyright © 2016,2021-2022 Soren Stoutner <soren@stoutner.com>. The resulting image is released under the GPLv3+ license.
- Changes copyright © 2016,2021 Soren Stoutner <soren@stoutner.com>. The resulting image is released under the GPLv3+ license.
+ This file is derived from `security` and `5g`, which are part of the Android Material icon set. They are released under the Apache License 2.0.
This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2022 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Cell <https://www.stoutner.com/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 <http://www.gnu.org/licenses/>. -->
+
+<TextView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/textview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:paddingStart="16dp"
+ android:paddingEnd="16dp"
+ android:paddingTop="16dp"
+ android:paddingBottom="4dp"
+ android:textAlignment="center"
+ android:textSize="28sp"
+ android:textStyle="bold"
+ android:textColor="@color/blue_text" />
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2022 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Cell <https://www.stoutner.com/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 <http://www.gnu.org/licenses/>. -->
+
+<TextView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/textview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:paddingStart="16dp"
+ android:paddingEnd="16dp"
+ android:paddingTop="10dp"
+ android:paddingBottom="10dp"
+ android:textSize="20sp"
+ android:textColor="?android:attr/textColorPrimary" />
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2022 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Cell <https://www.stoutner.com/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 <http://www.gnu.org/licenses/>. -->
+
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent" >
+
+ <!-- The linear layout with `orientation="vertical"` keeps the content above the app bar layout. `app:layout_dodgeInsetEdges="bottom"` as a child of a coordinator layout moves the view above snackbars. -->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical"
+ app:layout_dodgeInsetEdges="bottom" >
+
+ <ListView
+ android:id="@+id/listview"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:layout_width="match_parent"
+ android:divider="@color/transparent"
+ android:dividerHeight="0dp" />
+
+ <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
+ <com.google.android.material.appbar.AppBarLayout
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="?android:attr/colorBackground"
+ android:theme="@style/ThemeOverlay.AppCompat.DayNight.ActionBar" >
+
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/toolbar"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" />
+ </com.google.android.material.appbar.AppBarLayout>
+ </LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2022 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Cell <https://www.stoutner.com/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 <http://www.gnu.org/licenses/>. -->
+
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent" >
+
+ <!-- The linear layout with `orientation="vertical"` moves the content below the app bar layout. -->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical" >
+
+ <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
+ <com.google.android.material.appbar.AppBarLayout
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="?android:attr/colorBackground"
+ android:theme="@style/ThemeOverlay.AppCompat.DayNight.ActionBar" >
+
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/toolbar"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" />
+ </com.google.android.material.appbar.AppBarLayout>
+
+ <ListView
+ android:id="@+id/listview"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:divider="@color/transparent"
+ android:dividerHeight="0dp" />
+ </LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
<item
android:id="@+id/copy"
- android:title="@string/copy"
+ android:title="@string/copy_string"
android:orderInCategory="10"
android:icon="@drawable/copy"
app:showAsAction="always" />
<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
android:icon="@drawable/logcat"
android:orderInCategory="110" />
+ <item
+ android:id="@+id/protocols"
+ android:title="@string/protocols"
+ android:icon="@drawable/protocols"
+ android:orderInCategory="120" />
+
<item
android:id="@+id/settings"
android:title="@string/settings"
android:icon="@drawable/settings"
- android:orderInCategory="120" />
+ android:orderInCategory="130" />
</group>
</menu>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
android:icon="@drawable/settings"
android:orderInCategory="10" />
+ <item
+ android:id="@+id/protocols"
+ android:title="@string/protocols"
+ android:icon="@drawable/protocols"
+ android:orderInCategory="20" />
+
<item
android:id="@+id/logcat"
android:title="@string/logcat"
android:icon="@drawable/logcat"
- android:orderInCategory="20" />
+ android:orderInCategory="30" />
<!-- If a group has an id, a line is drawn above it in the navigation view. -->
<group android:id="@+id/dialogs" >
android:id="@+id/permissions"
android:title="@string/permissions"
android:icon="@drawable/permissions"
- android:orderInCategory="30" />
+ android:orderInCategory="40" />
<item
android:id="@+id/privacy_policy"
android:title="@string/privacy_policy"
android:icon="@drawable/privacy_policy"
- android:orderInCategory="40" />
+ android:orderInCategory="50" />
<item
android:id="@+id/changelog"
android:title="@string/changelog"
android:icon="@drawable/changelog"
- android:orderInCategory="50" />
+ android:orderInCategory="60" />
<item
android:id="@+id/licenses"
android:title="@string/licenses"
android:icon="@drawable/licenses"
- android:orderInCategory="60" />
+ android:orderInCategory="70" />
<item
android:id="@+id/contributors"
android:title="@string/contributors"
android:icon="@drawable/contributors"
- android:orderInCategory="70" />
+ android:orderInCategory="80" />
</group>
<!-- If a group has an id, a line is drawn above it in the navigation view. -->
android:id="@+id/news"
android:title="@string/news"
android:icon="@drawable/news"
- android:orderInCategory="80" />
+ android:orderInCategory="90" />
<item
android:id="@+id/roadmap"
android:title="@string/roadmap"
android:icon="@drawable/roadmap"
- android:orderInCategory="90" />
+ android:orderInCategory="100" />
<item
android:id="@+id/bug_tracker"
android:title="@string/bug_tracker"
android:icon="@drawable/bug_tracker"
- android:orderInCategory="100" />
+ android:orderInCategory="110" />
<item
android:id="@+id/forum"
android:title="@string/forum"
android:icon="@drawable/forum"
- android:orderInCategory="110" />
+ android:orderInCategory="120" />
</group>
<!-- If a group has an id, a line is drawn above it in the navigation view. -->
android:id="@+id/donations"
android:title="@string/donations"
android:icon="@drawable/donations"
- android:orderInCategory="120" />
+ android:orderInCategory="130" />
</group>
</menu>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2016,2021-2022 Soren Stoutner <soren@stoutner.com>. The resulting image is released under the GPLv3+ license.
+
+ This file is derived from `security` and `5g`, which are part of the Android Material icon set. They are released under the Apache License 2.0.
This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
+<?xml version="1.0" encoding="utf-8"?>
+
<!--
- Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
Translation 2021 Bernhard G. Keller. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
You should have received a copy of the GNU General Public License
along with Privacy Cell. If not, see <http://www.gnu.org/licenses/>. -->
-<resources>
+<resources xmlns:tools="http://schemas.android.com/tools">
<!-- General. -->
<string name="privacy_cell">Privacy Cell</string>
<string name="cell">Zelle</string>
<!-- Network types. -->
<string name="unknown">Unbekannt</string>
<string name="gprs">GPRS – 2.5G/3G</string>
- <string name="gprs_detail">General Packet Radio Service</string>
+ <string name="gprs_detail" tools:ignore="Typos">General Packet Radio Service</string>
<string name="edge">EDGE – 2.5G/3G</string>
<string name="edge_detail">Enhanced Data rates for GSM Evolution</string>
<string name="umts">UMTS – 3G</string>
<string name="rtt">1xRTT – 3G</string>
<string name="rtt_detail">Single-Carrier Radio Transmission Technology</string>
<string name="hsdpa">HSDPA – 3.5G</string>
- <string name="hsdpa_detail">High Speed Downlink Packet Access</string>
+ <string name="hsdpa_detail" tools:ignore="Typos">High Speed Downlink Packet Access</string>
<string name="hsupa">HSUPA – 3.5G</string>
- <string name="hsupa_detail">High-Speed Uplink Packet Access</string>
+ <string name="hsupa_detail" tools:ignore="Typos">High-Speed Uplink Packet Access</string>
<string name="hspa">HSPA – 3.5G</string>
- <string name="hspa_detail">High Speed Packet Access</string>
+ <string name="hspa_detail" tools:ignore="Typos">High Speed Packet Access</string>
<string name="iden">IDEN – 2G</string>
<string name="iden_detail">Integrated Digital Enhanced Network</string>
<string name="evdo_b">EVDO B – 3.5G</string>
<string name="lte">LTE – 4G</string>
<string name="lte_detail">Long-Term Evolution</string>
<string name="ehrpd">EHRPD – 3.5G/4G</string>
- <string name="ehrpd_detail">Enhanced High-Rate Packet Data</string>
+ <string name="ehrpd_detail" tools:ignore="Typos">Enhanced High-Rate Packet Data</string>
<string name="hspap">HSPAP – 3.5G</string>
- <string name="hspap_detail">High Speed Packet Access Plus</string>
+ <string name="hspap_detail" tools:ignore="Typos">High Speed Packet Access Plus</string>
<string name="gsm">GSM – 2G</string>
<string name="gsm_detail">Global System for Mobile Communications</string>
<string name="td_scdma">TD-SCDMA – 3G</string>
<!-- Logcat. Android removes double spaces, but extra spaces can be manually specified with the Unicode `\u0020` formatting.
The `%1$s` code inserts variables into the displayed text and should be preserved in translation.-->
- <string name="copy">Kopieren</string>
+ <string name="copy_string">Kopieren</string>
<string name="save">Speichern</string>
<string name="clear">Löschen</string>
<string name="logcat_copied">Logcat wurde kopiert.</string>
+<?xml version="1.0" encoding="utf-8"?>
+
<!--
- Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
Translation 2021 Jose A. León. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
<!-- Logcat. Android removes double spaces, but extra spaces can be manually specified with the Unicode `\u0020` formatting.
The `%1$s` code inserts variables into the displayed text and should be preserved in translation.-->
- <string name="copy">Copiar</string>
+ <string name="copy_string">Copiar</string>
<string name="save">Guardar</string>
<string name="clear">Limpiar</string>
<string name="logcat_copied">Logcat copiado.</string>
+<?xml version="1.0" encoding="utf-8"?>
+
<!--
- Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
Translation 2021 Kévin L. <kevinliste@framalistes.org>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
<!-- Logcat. Android removes double spaces, but extra spaces can be manually specified with the Unicode `\u0020` formatting.
The `%1$s` code inserts variables into the displayed text and should be preserved in translation.-->
- <string name="copy">Copier</string>
+ <string name="copy_string">Copier</string>
<string name="save">Sauvegarder</string>
<string name="clear">Nettoyer</string>
<string name="logcat_copied">Logcat copié.</string>
+<?xml version="1.0" encoding="utf-8"?>
+
<!--
- Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
Translation 2021 Francesco Buratti. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
<!-- Logcat. Android removes double spaces, but extra spaces can be manually specified with the Unicode `\u0020` formatting.
The `%1$s` code inserts variables into the displayed text and should be preserved in translation.-->
- <string name="copy">Copia</string>
+ <string name="copy_string">Copia</string>
<string name="save">Salva</string>
<string name="clear">Cancella</string>
<string name="logcat_copied">Logcat copiato.</string>
<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
<color name="violet_500">#FF8AB4F8</color>
<color name="white">#FFFFFFFF</color>
+
+ <color name="transparent">#00000000</color>
</resources>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+
<!--
Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+<?xml version="1.0" encoding="utf-8"?>
+
<!--
- Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
<!-- Logcat. Android removes double spaces, but extra spaces can be manually specified with the Unicode `\u0020` formatting.
The `%1$s` code inserts variables into the displayed text and should be preserved in translation.-->
- <string name="copy">Скопировать</string>
+ <string name="copy_string">Скопировать</string>
<string name="save">Сохранить</string>
<string name="clear">Очистить</string>
<string name="logcat_copied">Logcat скопирован.</string>
<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
<color name="violet_500">#FF8AB4F8</color>
<color name="white">#FFFFFFFF</color>
+
+ <color name="transparent">#00000000</color>
</resources>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+
<!--
- Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
<!-- Navigation menu. -->
<string name="settings">Settings</string>
+ <string name="protocols">Protocols</string>
<string name="logcat">Logcat</string>
<string name="permissions">Permissions</string>
<string name="privacy_policy">Privacy Policy</string>
<string name="forum">Forum</string>
<string name="donations">Donations</string>
+ <!-- Protocol families. -->
+ <string name="protocol_2g">2G</string>
+ <string name="protocol_3g">3G</string>
+ <string name="protocol_4g">4G</string>
+ <string name="protocol_5g">5G</string>
+ <string name="protocol_other">Other</string>
+
<!-- Network types. -->
<string name="unknown">Unknown</string>
<string name="gprs">GPRS – 2.5G/3G</string>
<!-- Logcat. Android removes double spaces, but extra spaces can be manually specified with the Unicode `\u0020` formatting.
The `%1$s` code inserts variables into the displayed text and should be preserved in translation.-->
- <string name="copy">Copy</string>
+ <string name="copy_string">Copy</string>
<string name="save">Save</string>
<string name="clear">Clear</string>
<string name="logcat_copied">Logcat copied.</string>
+<?xml version="1.0" encoding="utf-8"?>
+
<!--
Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
/*
- * Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ * Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
*
* This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
*
}
dependencies {
- classpath 'com.android.tools.build:gradle:7.0.4'
+ classpath 'com.android.tools.build:gradle:7.1.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10"
// NOTE: Do not place your application dependencies here; they belong
--- /dev/null
+• Suppression des permissions inutiles ajoutées androidx.work.
+• Correction du service de notification ne pouvant pas se redémarrer en arrière-plan sur Android 12.
+• Mise à jour de la traduction française par Kévin L.
+• Première traduction complète en russe.
\ No newline at end of file
#Thu Aug 12 09:15:13 MST 2021
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME