diff --git a/.github/workflows/check-offline-permissions.yml b/.github/workflows/check-offline-permissions.yml index e506e290..66b01263 100644 --- a/.github/workflows/check-offline-permissions.yml +++ b/.github/workflows/check-offline-permissions.yml @@ -60,5 +60,20 @@ jobs: else echo "OK: No $PERMISSION in offline build manifest" fi + for COMPONENT in androidx.work.WorkManagerInitializer androidx.work.impl.background.systemjob.SystemJobService; do + if grep -q "$COMPONENT" "$MANIFEST"; then + echo "" + echo "ERROR: $COMPONENT found in offline build manifest!" + echo "WorkManager must never initialize in the offline flavor: it tracks" + echo "network-constrained work via ConnectivityManager, which crashes with" + echo "SecurityException because ACCESS_NETWORK_STATE is removed." + echo "" + echo "Offending lines:" + grep "$COMPONENT" "$MANIFEST" + FAILED=1 + else + echo "OK: No $COMPONENT in offline build manifest" + fi + done done exit $FAILED diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/Amber.kt b/app/src/main/java/com/greenart7c3/nostrsigner/Amber.kt index 16af1eb5..5bd3fdc2 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/Amber.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/Amber.kt @@ -337,6 +337,7 @@ class Amber : } fun cancelBackupApplicationsAlarm() { + if (BuildFlavorChecker.isOfflineFlavor()) return WorkManager.getInstance(this).cancelUniqueWork("BackupApplicationsWorker") } diff --git a/app/src/offline/AndroidManifest.xml b/app/src/offline/AndroidManifest.xml index ba3a49c5..3c68176e 100644 --- a/app/src/offline/AndroidManifest.xml +++ b/app/src/offline/AndroidManifest.xml @@ -29,6 +29,44 @@ android:enabled="true" android:exported="true" /> + + + + + + + + + + + + + + +