FAQ
What's up with all the permissions?
ACCESS_NETWORK_STATE: to receive network updates (cellular network connected etc)
CHANGE_NETWORK_STATE: same as above, even though the app won't set/change any of the network state
ACCESS_WIFI_STATE: to detect when the Wi-Fi is manually turned on/off
RECEIVE_BOOT_COMPLETED: to start the service on boot
runtime permissions (can be enabled/disabled by the user in Settings):
READ_PHONE_STATE: to receive cellular connectivity changes. Without this, the purpose of the app is greatly degraded.
ACCESS_FINE_LOCATION / ACCESS_COARSE_LOCATION: starting in Android 9 (Pie), and for privacy purposes, this permission is required in order to access the SSID (Service Set Identifier or Wi-Fi name). Signal Info can function without it, but the name will be reported as "n/a" (not available).
Why a foreground service?
Starting in Android 8 (Oreo), due to performance and privacy reasons, apps are no longer able to perform actions like fetching location, or listening to connectivity change in the background. In order to capture all the network changes, Signal Info needs to have a foreground service (along with an ongoing notification), to indicate the user that a service is actively running. Even if a service is up, it's passively receiving events, and the impact on resources is extremely low. Users can kill the app (ie remove from the active app list), and the service will still capture the changes.
Moreover, the previous listeners CONNECTIVITY_CHANGE and ACTION_SERVICE_STATE_CHANGED have been deprecated, meaning that apps currently using them will stop working and will have to switch to a foreground service.
Why a zip file is now created as backup?
The database actually contains 3 files. In order to restore data properly, those 3 files are required, and are saved in a zip file.
Why switching to Sprint doesn't work anymore?
If you have a 5G device, switching to a carrier that doesn't support 5G bands will not work.