]> gitweb.stoutner.com Git - PrivacyCell.git/commitdiff
Bump target API to 34. https://redmine.stoutner.com/issues/1104
authorSoren Stoutner <soren@stoutner.com>
Tue, 17 Oct 2023 21:44:49 +0000 (14:44 -0700)
committerSoren Stoutner <soren@stoutner.com>
Tue, 17 Oct 2023 21:44:49 +0000 (14:44 -0700)
16 files changed:
app/build.gradle
app/src/main/AndroidManifest.xml
app/src/main/assets/de/permissions.html
app/src/main/assets/en/permissions.html
app/src/main/assets/es/permissions.html
app/src/main/assets/fr/permissions.html
app/src/main/assets/it/permissions.html
app/src/main/assets/ru/permissions.html
app/src/main/java/com/stoutner/privacycell/fragments/SettingsFragment.kt
app/src/main/java/com/stoutner/privacycell/helpers/ProtocolHelper.kt
app/src/main/java/com/stoutner/privacycell/receivers/OnBootCompletedReceiver.kt
app/src/main/java/com/stoutner/privacycell/workers/RegisterRealtimeListenerWorker.kt
app/src/main/java/com/stoutner/privacycell/workers/RestartServiceWorker.kt
build.gradle
gradle.properties
gradle/wrapper/gradle-wrapper.properties

index 39d64f4d697150cc4a596f384dd161345dc0de17..ccdfa9ad471a8e763e46b983d4c0febe73a132d4 100644 (file)
@@ -23,15 +23,26 @@ plugins {
 }
 
 android {
-    compileSdk 33
+    compileSdk 34
 
     defaultConfig {
         applicationId "com.stoutner.privacycell"
         minSdk 30
-        targetSdk 33
+        targetSdk 34
         versionCode 11
         versionName "1.9"
-        resConfigs "en", "de", "es", "fr", "it", "ru"
+        resourceConfigurations += ['en', 'de', 'es', 'fr', 'it', 'ru']
+    }
+
+    // Specify the compile Java version.  This must match the Kotlin JVM target.  For some reason the system was not setting this correctly.  These can probably be removed in the future.
+    compileOptions {
+        sourceCompatibility JavaVersion.VERSION_17
+        targetCompatibility JavaVersion.VERSION_17
+    }
+
+    // Specify the Kotlin JVM target.  This must match the compile Java version.  For some reason the system was not setting this correctly.  These can probably be removed in the future.
+    kotlinOptions {
+        jvmTarget = 17
     }
 
     buildTypes {
@@ -53,16 +64,16 @@ android {
 dependencies {
     // Include the following AndroidX libraries.
     implementation 'androidx.appcompat:appcompat:1.6.1'
-    implementation 'androidx.core:core-ktx:1.9.0'
-    implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.0'
-    implementation 'androidx.preference:preference-ktx:1.2.0'
+    implementation 'androidx.core:core-ktx:1.12.0'
+    implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
+    implementation 'androidx.preference:preference-ktx:1.2.1'
     implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
-    implementation 'androidx.webkit:webkit:1.6.0'
+    implementation 'androidx.webkit:webkit:1.8.0'
     implementation 'androidx.work:work-runtime-ktx:2.8.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:1.8.0'
+    implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22'
 
     // Include the Google material library.
-    implementation 'com.google.android.material:material:1.8.0'
+    implementation 'com.google.android.material:material:1.10.0'
 }
index 528c4c3e33ab33d601143f3b87fe6d3365e480d6..a0b62383835c711a17d948af3da5fe1bd4eb7afd 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 
 <!--
-  Copyright 2021-2022 Soren Stoutner <soren@stoutner.com>.
+  Copyright 2021-2023 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -32,6 +32,7 @@
 
     <!-- Required to run a foreground service (which is the only type of service that can display notifications). -->
     <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
+    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
 
     <!-- Required to start the realtime notification icon at boot. -->
     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
             android:screenOrientation="fullUser" />
 
         <!-- Realtime Monitoring Service. -->
-        <service android:name=".services.RealtimeMonitoringService" />
+        <service
+            android:name=".services.RealtimeMonitoringService"
+            android:foregroundServiceType="specialUse" >
+
+            <property
+                android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
+                android:value="Displays current cell protocol security information." />
+        </service>
 
         <!-- On Boot Completed Receiver. -->
         <receiver
index 8c137594e7eac60a96ae363a512d1a7f3a3867d8..8eb987efd417567c1ce9ba74d9ebb093e585219c 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright 2021,2023 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
         <p><a href="https://developer.android.com/reference/android/Manifest.permission#FOREGROUND_SERVICE">android.permission.<wbr>FOREGROUND_SERVICE</a></p>
         <p>Erlaubt Privacy Cell, ein Benachrichtigungs-Icon für die Echtzeit-Überwachung in der Status-Zeile anzuzeigen.</p>
 
+        <p><a href="https://developer.android.com/reference/android/Manifest.permission#FOREGROUND_SERVICE_SPECIAL_USE">android.permission.<wbr>FOREGROUND_SERVICE_<wbr>SPECIAL_USE</a></p>
+        <p>Specifies the type of foreground service.
+            Special Use is for services that don't fit into any of the <a href="https://developer.android.com/about/versions/14/changes/fgs-types-required">standard categories</a>.</p>
+
         <h3>Ausführung bei Systemstart</h3>
         <p><a href="https://developer.android.com/reference/android/Manifest.permission#RECEIVE_BOOT_COMPLETED">android.permission.<wbr>RECEIVE_BOOT_COMPLETED</a></p>
         <p>Erlaubt Privacy Cell die Echtzeit-Überwachung zu aktivieren, wenn das Smartphone gebootet wird.</p>
index be792c7cc15057f5a99e3e2937923b5f9f815e6b..5317604fc253e31cf4e0bdb071aac5b9650de4da 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright 2021,2023 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
         <p><a href="https://developer.android.com/reference/android/Manifest.permission#FOREGROUND_SERVICE">android.permission.<wbr>FOREGROUND_SERVICE</a></p>
         <p>Allows Privacy Cell to display a realtime monitoring notification icon in the status bar.</p>
 
+        <p><a href="https://developer.android.com/reference/android/Manifest.permission#FOREGROUND_SERVICE_SPECIAL_USE">android.permission.<wbr>FOREGROUND_SERVICE_<wbr>SPECIAL_USE</a></p>
+        <p>Specifies the type of foreground service.
+            Special Use is for services that don't fit into any of the <a href="https://developer.android.com/about/versions/14/changes/fgs-types-required">standard categories</a>.</p>
+
         <h3>Run at startup</h3>
         <p><a href="https://developer.android.com/reference/android/Manifest.permission#RECEIVE_BOOT_COMPLETED">android.permission.<wbr>RECEIVE_BOOT_COMPLETED</a></p>
         <p>Allows Privacy Cell to enable the realtime monitoring service when the phone boots.</p>
index dd8000eb9041b9336404fc33f7277feae1a65d06..2d1378c31ac62e12a836493d5d13b9022f81a237 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright 2021,2023 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2021 Jose A. León.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
         <p><a href="https://developer.android.com/reference/android/Manifest.permission#FOREGROUND_SERVICE">android.permission.<wbr>FOREGROUND_SERVICE</a></p>
         <p>Allows Privacy Cell to display a realtime monitoring notification icon in the status bar.</p>
 
+        <p><a href="https://developer.android.com/reference/android/Manifest.permission#FOREGROUND_SERVICE_SPECIAL_USE">android.permission.<wbr>FOREGROUND_SERVICE_<wbr>SPECIAL_USE</a></p>
+        <p>Specifies the type of foreground service.
+            Special Use is for services that don't fit into any of the <a href="https://developer.android.com/about/versions/14/changes/fgs-types-required">standard categories</a>.</p>
+
         <h3>Run at startup</h3>
         <p><a href="https://developer.android.com/reference/android/Manifest.permission#RECEIVE_BOOT_COMPLETED">android.permission.<wbr>RECEIVE_BOOT_COMPLETED</a></p>
         <p>Allows Privacy Cell to enable the realtime monitoring service when the phone boots.</p>
index 04e1c79fb7da7b888ab995d7a0acde603b15c937..275c3c1631e8a6136455c123a7f0b667ee2c680f 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright 2021,2023 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2021 Kévin L. <kevinliste@framalistes.org>.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
         <p><a href="https://developer.android.com/reference/android/Manifest.permission#FOREGROUND_SERVICE">android.permission.<wbr>FOREGROUND_SERVICE</a></p>
         <p>Permet à Privacy Cell d'afficher une icône de notification de surveillance en temps réel dans la barre d'état.</p>
 
+        <p><a href="https://developer.android.com/reference/android/Manifest.permission#FOREGROUND_SERVICE_SPECIAL_USE">android.permission.<wbr>FOREGROUND_SERVICE_<wbr>SPECIAL_USE</a></p>
+        <p>Specifies the type of foreground service.
+            Special Use is for services that don't fit into any of the <a href="https://developer.android.com/about/versions/14/changes/fgs-types-required">standard categories</a>.</p>
+
         <h3>Exécution au démarrage</h3>
         <p><a href="https://developer.android.com/reference/android/Manifest.permission#RECEIVE_BOOT_COMPLETED">android.permission.<wbr>RECEIVE_BOOT_COMPLETED</a></p>
         <p>Permet à Privacy Cell d'activer le service de surveillance en temps réel lorsque le téléphone démarre.</p>
index 5062c6a3d26b23164d860f5c4d5e3d2e26191dfe..caeae35b4f904783c1893498eff567ba1277be46 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright 2021,2023 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2021 Francesco Buratti.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
         <p><a href="https://developer.android.com/reference/android/Manifest.permission#FOREGROUND_SERVICE">android.permission.<wbr>FOREGROUND_SERVICE</a></p>
         <p>Allows Privacy Cell to display a realtime monitoring notification icon in the status bar.</p>
 
+        <p><a href="https://developer.android.com/reference/android/Manifest.permission#FOREGROUND_SERVICE_SPECIAL_USE">android.permission.<wbr>FOREGROUND_SERVICE_<wbr>SPECIAL_USE</a></p>
+        <p>Specifies the type of foreground service.
+            Special Use is for services that don't fit into any of the <a href="https://developer.android.com/about/versions/14/changes/fgs-types-required">standard categories</a>.</p>
+
         <h3>Run at startup</h3>
         <p><a href="https://developer.android.com/reference/android/Manifest.permission#RECEIVE_BOOT_COMPLETED">android.permission.<wbr>RECEIVE_BOOT_COMPLETED</a></p>
         <p>Allows Privacy Cell to enable the realtime monitoring service when the phone boots.</p>
index 8c84905142f45a8eeaeefd8fd1762109a3cb186a..29c24b93577aaaec4ca3ccf7fcaeb72a34220241 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright 2021,2023 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
         <p><a href="https://developer.android.com/reference/android/Manifest.permission#FOREGROUND_SERVICE">android.permission.<wbr>FOREGROUND_SERVICE</a></p>
         <p>Разрешает Privacy Cell отображать значок уведомления о мониторинге в реальном времени в строке состояния.</p>
 
+        <p><a href="https://developer.android.com/reference/android/Manifest.permission#FOREGROUND_SERVICE_SPECIAL_USE">android.permission.<wbr>FOREGROUND_SERVICE_<wbr>SPECIAL_USE</a></p>
+        <p>Specifies the type of foreground service.
+            Special Use is for services that don't fit into any of the <a href="https://developer.android.com/about/versions/14/changes/fgs-types-required">standard categories</a>.</p>
+
         <h3>Запуск при загрузке</h3>
         <p><a href="https://developer.android.com/reference/android/Manifest.permission#RECEIVE_BOOT_COMPLETED">android.permission.<wbr>RECEIVE_BOOT_COMPLETED</a></p>
         <p>Разрешает Privacy Cell включать службу мониторинга в реальном времени при загрузке телефона.</p>
index dc8545ffb0abcfa96225bc19f86dcb6f29b250b9..911ab08e856c55040304edde0bdeb70a3ee515ee 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021-2022 Soren Stoutner <soren@stoutner.com>.
+ * Copyright 2021-2023 Soren Stoutner <soren@stoutner.com>.
  *
  * This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
  *
@@ -56,7 +56,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
     private lateinit var bottomAppBarPreference: Preference
 
     companion object {
-        // Declare the private static class variables.  Otherwise, onRestart will not pull the same values that are populated from the saved instance state.
+        // Declare the private static class variables.  For some reason (I'm looking at you Android's Activity Lifecycle) this only works if these are static.
         private var fragmentRestarted: Boolean = false
         private var scrollY: Int = 0
     }
@@ -140,7 +140,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
 
         // Check if the fragment has been restarted.
         if (savedInstanceState != null) {
-            // Set the fragment restored flag.
+            // Set the fragment restarted flag.
             fragmentRestarted = true
 
             // Save the scroll Y.
index 11407f7517d0e9e87941876f5597c0c20b8ec50d..cb6ca1db880210aa4f7712b5bea247ac653009ca 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022 Soren Stoutner <soren@stoutner.com>.
+ * Copyright 2022-2023 Soren Stoutner <soren@stoutner.com>.
  *
  * This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
  *
@@ -84,7 +84,8 @@ class ProtocolHelper {
     }
 
     fun getNetworkTypeStringArray(networkType: Int, context: Context) : Array<String> {
-        // Return the string array that corresponds to the network type.
+        // Return the string array that corresponds to the network type.  The deprecated `NETWORK_TYPE_IDEN` can be removed once the minimum API >= 34.
+        @Suppress("DEPRECATION")
         return when(networkType) {
             TelephonyManager.NETWORK_TYPE_UNKNOWN -> arrayOf(context.getString(R.string.unknown), "")
             TelephonyManager.NETWORK_TYPE_GPRS -> arrayOf(context.getString(R.string.gprs), context.getString(R.string.gprs_detail))
index 54e23e937281a57004921a4ccbd98fb4745e1162..72cc4532f52596b767f9d3eed6e912a9e00a157a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ * Copyright 2021,2023 Soren Stoutner <soren@stoutner.com>.
  *
  * This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
  *
@@ -42,4 +42,4 @@ class OnBootCompletedReceiver : BroadcastReceiver() {
             }
         }
     }
-}
\ No newline at end of file
+}
index 6bb76add73692863138dcc4930427af3a1af7239..d899bf78252196c2d5583cf63be9e24851fa6398 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
+ * Copyright 2021-2023 Soren Stoutner <soren@stoutner.com>.
  *
  * This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
  *
@@ -100,4 +100,4 @@ class RegisterRealtimeListenerWorker(appContext: Context, workerParameters: Work
         // Return a success.
         return Result.success()
     }
-}
\ No newline at end of file
+}
index 720ca7a937353ac758216d94250cc559904be230..ed1fddebd66a3024184aa0cde21adafef044350c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
+ * Copyright 2021-2023 Soren Stoutner <soren@stoutner.com>.
  *
  * This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
  *
@@ -51,4 +51,4 @@ class RestartServiceWorker(appContext: Context, workerParameters: WorkerParamete
         // Return a success.
         return Result.success()
     }
-}
\ No newline at end of file
+}
index 70457335de86266093404068d0412595bc308428..428e4af4b2c89a4c77ec504471e12ed54c3dc768 100644 (file)
@@ -25,14 +25,14 @@ buildscript {
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:7.4.2'
-        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0"
+        classpath 'com.android.tools.build:gradle:8.1.2'
+        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.22"
 
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
     }
 }
 
-task clean(type: Delete) {
+tasks.register('clean', Delete) {
     delete rootProject.buildDir
 }
index 02ba79e46097d108f452b5f2efbd8bdaa96141b2..06cfed7280dbbae234ce4ff14333d98a54c128d3 100644 (file)
 # Specifies the JVM arguments used for the daemon process.
 # The setting is particularly useful for tweaking memory settings.
 org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+
 # When configured, Gradle will run in incubating parallel mode.
 # This option should only be used with decoupled projects. More details, visit
 # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
 # org.gradle.parallel=true
+
 # AndroidX package structure to make it clearer which packages are bundled with the
 # Android operating system, and which are packaged with your app"s APK
 # https://developer.android.com/topic/libraries/support-library/androidx-rn
 android.useAndroidX=true
+
 # Automatically convert third-party libraries to use AndroidX
 android.enableJetifier=true
+
 # Kotlin code style for this project: "official" or "obsolete":
 kotlin.code.style=official
+
 # Enable the configuration cache, which improves build speed.
-org.gradle.unsafe.configuration-cache=true
\ No newline at end of file
+org.gradle.unsafe.configuration-cache=true
+
+# Use non-transitive R classes, which speed up the build process when the configuration has not changed.
+android.nonTransitiveRClass=true
+
+# Use non-final resource IDs for faster incremental compilation.
+android.nonFinalResIds=true
+
+android.defaults.buildfeatures.buildconfig=true
\ No newline at end of file
index 1e2b5c5373c840fe8935521e152bf125c927fd46..2f3069e14d472d61382a89927f95336793e61f3b 100644 (file)
@@ -1,6 +1,23 @@
+# Copyright 2023 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 Browser.  If not, see <http://www.gnu.org/licenses/>.
+
 #Thu Aug 12 09:15:13 MST 2021
 distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
 distributionPath=wrapper/dists
 zipStorePath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME