/* SPDX-License-Identifier: GPL-3.0-or-later
- * SPDX-FileCopyrightText: 2021-2025 Soren Stoutner <soren@stoutner.com>
+ * SPDX-FileCopyrightText: 2021-2026 Soren Stoutner <soren@stoutner.com>
*
* This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell/>.
*
plugins {
id 'com.android.application'
- id 'kotlin-android'
}
android {
dependencies {
// Include the following AndroidX libraries.
implementation 'androidx.appcompat:appcompat:1.7.1'
- implementation 'androidx.core:core-ktx:1.17.0'
+ implementation 'androidx.core:core-ktx:1.18.0'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.10.0'
implementation 'androidx.preference:preference-ktx:1.2.1'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.2.0'
implementation 'androidx.webkit:webkit:1.15.0'
- implementation 'androidx.work:work-runtime-ktx:2.11.0'
+ implementation 'androidx.work:work-runtime-ktx:2.11.1'
// Include the Kotlin standard library. This should be the same version number listed in the project build.gradle.
- implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.2.0'
+ implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.2.10'
// Include the Google material library.
implementation 'com.google.android.material:material:1.13.0'
<body>
<h3><a href="https://www.stoutner.com/privacy-cell-1-12">1.12</a> (Code-Version 14)</h3>
- <p>22. Dezember 2025 - Mindest-API 30, Ziel-API 36</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=0fa07d5a7cd9364358e7afc8c075ea526c71ee29;ds=sidebyside">22. Dezember 2025</a> - Mindest-API 30, Ziel-API 36</p>
<ul>
<li><a href="https://redmine.stoutner.com/issues/1284">Ziel-API auf 36</a> (Android 16) angehoben. Dies bringt u.A. ein großes Icon für erweiterte Benachrichtigungen mit sich.</li>
<li>Farbe des zusätzlichen Netzwerk-Info-Texts <a href="https://redmine.stoutner.com/issues/1282">entspricht jetzt immer</a> jener des Netzwerk-Info-Texts.</li>
<body>
<h3><a href="https://www.stoutner.com/privacy-cell-1-12">1.12</a> (version code 14)</h3>
- <p>22 December 2025 - minimum API 30, target API 36</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=0fa07d5a7cd9364358e7afc8c075ea526c71ee29;ds=sidebyside">22 December 2025</a> - minimum API 30, target API 36</p>
<ul>
<li>Bump the <a href="https://redmine.stoutner.com/issues/1284">target API to 36</a> (Android 16), adding a large icon to the expanded notifications.</li>
<li>Make the additional network info text color <a href="https://redmine.stoutner.com/issues/1282">always match</a> the data network text color.</li>
<body>
<h3><a href="https://www.stoutner.com/privacy-cell-1-12">1.12</a> (versión del código 14)</h3>
- <p>22 de diciembre de 2025 - API mínimo 30, API objetivo 36</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=0fa07d5a7cd9364358e7afc8c075ea526c71ee29;ds=sidebyside">22 de diciembre de 2025</a> - API mínimo 30, API objetivo 36</p>
<ul>
<li>Aumentar la <a href="https://redmine.stoutner.com/issues/1284">API objetivo a 36</a> (Android 16), y añadir un icono grande a las notificaciones expandidas.</li>
<li>Hacer que el color del texto de la información adicional de la red <a href="https://redmine.stoutner.com/issues/1282">coincida siempre</a> con el color del texto de la red de datos.</li>
<body>
<h3><a href="https://www.stoutner.com/privacy-cell-1-12">1.12</a> (version du code 14)</h3>
- <p>22 Décembre 2025 - API minimale : 30, API optimale : 36</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=0fa07d5a7cd9364358e7afc8c075ea526c71ee29;ds=sidebyside">22 Décembre 2025</a> - API minimale : 30, API optimale : 36</p>
<ul>
<li>Bump the <a href="https://redmine.stoutner.com/issues/1284">target API to 36</a> (Android 16), adding a large icon to the expanded notifications.</li>
<li>Make the additional network info text color <a href="https://redmine.stoutner.com/issues/1282">always match</a> the data network text color.</li>
<body>
<h3><a href="https://www.stoutner.com/privacy-cell-1-12">1.12</a> (versione codice 14)</h3>
- <p>22 Dicembre 2025 - minima API 30, target API 36</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=0fa07d5a7cd9364358e7afc8c075ea526c71ee29;ds=sidebyside">22 Dicembre 2025</a> - minima API 30, target API 36</p>
<ul>
<li>Spostamento della <a href="https://redmine.stoutner.com/issues/1284">target API a 36</a> (Android 16), aggiungendo una icona grande nelle notifiche espanse.</li>
<li>Modifica per far sì che il colore del testo delle info aggiuntive sulla rete <a href="https://redmine.stoutner.com/issues/1282">sia sempre uguale</a> al colore del testo della rete dati.</li>
<body>
<h3><a href="https://www.stoutner.com/privacy-cell-1-12">1.12</a> (код версии 14)</h3>
- <p>22 декабря 2025 года - минимальный API 30, целевой API 36</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=0fa07d5a7cd9364358e7afc8c075ea526c71ee29;ds=sidebyside">22 декабря 2025 года</a> - минимальный API 30, целевой API 36</p>
<ul>
<li>Целевой <a href="https://redmine.stoutner.com/issues/1284">API повышен до 36</a> (Android 16), в расширенные уведомления добавлена большая иконка.</li>
<li>Предусмотрена возможность настройки цвета текста дополнительной информации о сети <a href="https://redmine.stoutner.com/issues/1282">в советском</a> с цветом текста о сети передачи данных.</li>
/* SPDX-License-Identifier: GPL-3.0-or-later
- * SPDX-FileCopyrightText: 2021-2022, 2025 Soren Stoutner <soren@stoutner.com>
+ * SPDX-FileCopyrightText: 2021-2022, 2025-2026 Soren Stoutner <soren@stoutner.com>
*
* This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell/>.
*
// Create the voice subscription info string.
var voiceSubscriptionInfoString = ""
- // Populate the voice carrier info string if the appropriate permission has been granted.
- if (ActivityCompat.checkSelfPermission(applicationContext, Manifest.permission.READ_PHONE_NUMBERS) == PackageManager.PERMISSION_GRANTED) {
+ // Populate the voice carrier info string if the subscription ID is valid and the appropriate permission has been granted.
+ if ((voiceSubscriptionId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) &&
+ (ActivityCompat.checkSelfPermission(applicationContext, Manifest.permission.READ_PHONE_NUMBERS) == PackageManager.PERMISSION_GRANTED)) {
// Populate the voice carrier info string. The deprecated command must be used until the API >= 33.
voiceSubscriptionInfoString = if (Build.VERSION.SDK_INT <= 32)
"${subscriptionManager.getActiveSubscriptionInfo(voiceSubscriptionId).carrierName} – ${subscriptionManager.getActiveSubscriptionInfo(voiceSubscriptionId).number}"
var dataSubscriptionInfoString = ""
// Populate the data carrier info string if the appropriate permission has been granted.
- if (ActivityCompat.checkSelfPermission(applicationContext, Manifest.permission.READ_PHONE_NUMBERS) == PackageManager.PERMISSION_GRANTED) {
+ if ((dataSubscriptionId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) &&
+ (ActivityCompat.checkSelfPermission(applicationContext, Manifest.permission.READ_PHONE_NUMBERS) == PackageManager.PERMISSION_GRANTED)) {
// Populate the data carrier info string. The deprecated command must be used until the API >= 33.
dataSubscriptionInfoString = if (Build.VERSION.SDK_INT <= 32)
"${subscriptionManager.getActiveSubscriptionInfo(dataSubscriptionId).carrierName} – ${subscriptionManager.getActiveSubscriptionInfo(dataSubscriptionId).number}"
// Set the notification icon.
notificationBuilder.setSmallIcon(R.drawable.antiquated_notification_enabled)
+ // Set the large icon.
+ notificationBuilder.setLargeIcon(Icon.createWithResource(this, R.drawable.antiquated))
+
// Set the color.
notificationBuilder.setColor(getColor(R.color.red_notification_icon))
<string name="insecure_network_notification">Benachrichtigung über unsicheres Netzwerk</string>
<string name="antiquated_network_notification">Benachrichtigung über veraltetes Netzwerk</string>
<string name="consider_3g_antiquated">3G als veraltet ansehen</string>
- <string name="consider_3g_antiquated_summary">3G-Protokolle als veraltet ansehen. Zu einem späteren Zeitpunkt wird dies zur Standard-Einstellung werden.
- Das Ändern dieser Einstellung startet Privacy Cell neu.</string>
+ <string name="consider_3g_antiquated_summary">3G-Protokolle als veraltet ansehen. Das Ändern dieser Einstellung startet Privacy Cell neu.</string>
<string name="interface_title">Anschluss</string>
<string name="bottom_app_bar">Anwendungs-Leiste unten</string>
<string name="bottom_app_bar_summary">Zeigt die Anwendungs-Leiste am unteren Bildschirmrand an. Nach Ändern dieser Einstellung wird Privacy Cell neu gestartet.</string>
<string name="insecure_network_notification">Notificación de red insegura</string>
<string name="antiquated_network_notification">Notificación de red obsoleta</string>
<string name="consider_3g_antiquated">Considera obsoleto 3G</string>
- <string name="consider_3g_antiquated_summary">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.</string>
+ <string name="consider_3g_antiquated_summary">Considera los protocolos 3G como obsoletos. Al cambiar esta configuración se reiniciará Privacy Cell.</string>
<string name="interface_title">Interfaz</string>
<string name="bottom_app_bar">Barra inferior de app</string>
<string name="bottom_app_bar_summary">Mueve la barra de aplicaciones a la parte inferior de la pantalla. Al cambiar esta configuración se reiniciará Privacy Cell.</string>
<string name="insecure_network_notification">Notification de réseau non sécurisé</string>
<string name="antiquated_network_notification">Notification de réseau obsolète</string>
<string name="consider_3g_antiquated">Considérer la 3G comme obsolète</string>
- <string name="consider_3g_antiquated_summary">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.</string>
+ <string name="consider_3g_antiquated_summary">Considérez les protocoles 3G comme désuets. Changer ce paramètre redémarrera Privacy Cell.</string>
<string name="interface_title">Interface</string>
<string name="bottom_app_bar">Barre d\'apps inférieure</string>
<string name="bottom_app_bar_summary">Déplacer la barre d\'apps en bas de l\'écran. Changer ce paramètre redémarrera Privacy Cell.</string>
<string name="insecure_network_notification">Notifica di rete insicura</string>
<string name="antiquated_network_notification">Notifiche di Rete Antiquata</string>
<string name="consider_3g_antiquated">Considera il 3G come antiquato</string>
- <string name="consider_3g_antiquated_summary">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.</string>
+ <string name="consider_3g_antiquated_summary">Considera il protocollo 3G come antiquato. La modifica di questa impostazione provocherà il riavvio di Privacy Cell.</string>
<string name="interface_title">Interfaccia</string>
<string name="bottom_app_bar">Barra dell\'app in basso</string>
<string name="bottom_app_bar_summary">Sposta la barra dell\'app nella parte inferiore dello schermo. La modifica di questa impostazione provoca il riavvio di Privacy Cell.</string>
<string name="insecure_network_notification">Уведомление о небезопасной сети</string>
<string name="antiquated_network_notification">Оповещение об устаревшей сети</string>
<string name="consider_3g_antiquated">Считать 3G устаревшей</string>
- <string name="consider_3g_antiquated_summary">СÑ\87иÑ\82аÑ\82Ñ\8c пÑ\80оÑ\82околÑ\8b 3G Ñ\83Ñ\81Ñ\82аÑ\80евÑ\88ими. Ð\92 бÑ\83дÑ\83Ñ\89ем Ñ\8dÑ\82о Ñ\81Ñ\82анеÑ\82 Ñ\83Ñ\81Ñ\82ановкой по Ñ\83молÑ\87аниÑ\8e. Ð\98зменение Ñ\8dÑ\82ой наÑ\81Ñ\82Ñ\80ойки пÑ\80иведеÑ\82 к пеÑ\80езапÑ\83Ñ\81кÑ\83 Privacy Cell.</string>
+ <string name="consider_3g_antiquated_summary">Считать протоколы 3G устаревшими. Изменение этой настройки приведет к перезапуску Privacy Cell.</string>
<string name="interface_title">Интерфейс</string>
<string name="bottom_app_bar">Панель приложения внизу</string>
<string name="bottom_app_bar_summary">Переместить панель приложения в нижнюю часть экрана. Изменение этой настройки приведет к перезапуску Privacy Cell.</string>
<string name="insecure_network_notification">Insecure network notification</string>
<string name="antiquated_network_notification">Antiquated network notification</string>
<string name="consider_3g_antiquated">Consider 3G antiquated</string>
- <string name="consider_3g_antiquated_summary">Consider the 3G protocols to be antiquated. At a future point this will become the default. Changing this setting will restart Privacy Cell.</string>
+ <string name="consider_3g_antiquated_summary">Consider the 3G protocols to be antiquated. Changing this setting will restart Privacy Cell.</string>
<string name="interface_title">Interface</string>
<string name="bottom_app_bar">Bottom app bar</string>
<string name="bottom_app_bar_summary">Move the app bar to the bottom of the screen. Changing this setting will restart Privacy Cell.</string>
/* SPDX-License-Identifier: GPL-3.0-or-later
- * SPDX-FileCopyrightText: 2021-2025 Soren Stoutner <soren@stoutner.com>
+ * SPDX-FileCopyrightText: 2021-2026 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:8.13.2'
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:2.2.0"
+ classpath 'com.android.tools.build:gradle:9.1.0'
+ classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:2.2.10'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
# SPDX-License-Identifier: GPL-3.0-or-later
-# SPDX-FileCopyrightText: 2023, 2025 Soren Stoutner <soren@stoutner.com>
+# SPDX-FileCopyrightText: 2023, 2025-2026 Soren Stoutner <soren@stoutner.com>
#
# This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell/>.
#
# this program. If not, see <https://www.gnu.org/licenses/>.
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.0-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME