Required permissions
Network Survey asks for each Android permission at the moment it is needed, with a short explanation first. This page lists when each one is asked, what it is used for, and what happens if you deny it.
When the app asks
Section titled “When the app asks”First run
Section titled “First run”On a fresh install, the second first-run card, Permissions, and why, lists what the app needs and why:
- Location: “Every record needs a position, and Android requires it to scan Wi-Fi and Bluetooth.”
- Phone: “To read which cell tower you are connected to and how strong it is.”
- Notifications (Android 13 and later): “One ongoing notification shows the survey is running, even with the screen off.”
- Storage (Android 12 and lower): “To save log files on this phone.”
A phone shows either Notifications or Storage, never both. Allow and continue opens Android’s permission prompts; Skip moves on without asking. The card ends with “Bluetooth and call records ask for their own permissions when you turn them on.”
![]()
![]()
First run is skipped on a phone with a managed configuration, on a phone already registered with NS Analytics, and when the app was opened from a registration link. See First run.
Later launches
Section titled “Later launches”If you skipped first run, or a permission from that list is still missing, the app shows Android’s prompts for the missing ones when it opens.
If Location is missing, the Survey tab also says Location permission needed with Allow. If you denied Location permanently, Allow opens the app’s page in Android’s settings instead.
Turning on a record type
Section titled “Turning on a record type”- Bluetooth (Android 12 and later): when you turn on the Bluetooth tile, the app explains “The Find Nearby Devices permission is needed to perform a Bluetooth scan for survey” and then shows Android’s prompt.
- Call records: when you turn on the Call records tile, the app first asks for the permissions Call records cannot work without (Location, Phone, and Notifications on Android 13 and later), then for the optional ones (see Call records permissions). The optional ones offer Request or Continue without permissions; Call records turns on either way.
Tapping Start survey
Section titled “Tapping Start survey”When the survey records Call records to Log files, Start survey checks the required call records permissions again. If you deny them, the rest of the survey still starts, and the Survey tab lists Call records as left out.
On Android 17 and later, Start also asks for local network access when the survey sends to MQTT or gRPC (see Local network access). Then comes the battery optimization question, if it is due. See Battery optimization.
Turning on Start survey automatically
Section titled “Turning on Start survey automatically”Background location is only asked for after you turn on Settings > Survey > Start survey automatically, and again when the app opens while that setting is on and background location is still missing (unless you declined it before). See Background location.
Scanning a QR code
Section titled “Scanning a QR code”The camera permission is asked when you open a QR code scanner.
Location
Section titled “Location”android.permission.ACCESS_FINE_LOCATION, android.permission.ACCESS_COARSE_LOCATION
Every record carries the phone’s location, and Android requires location permission to scan Wi-Fi and Bluetooth and to read cell details.
If you deny it: most of the app cannot record. Grant it in Android Settings > Apps > Network Survey > Permissions > Location.
Background location
Section titled “Background location”android.permission.ACCESS_BACKGROUND_LOCATION (Android 10 and later)
Only needed to start a survey when the phone restarts, while the app is not open. The app explains this and sends you to Android’s settings, where you choose Allow all the time.
If you deny it: everything works, except that the survey cannot start at boot.
android.permission.READ_PHONE_STATE (shown by Android as “Make and manage phone calls”)
Needed to read the cellular network: the serving and neighbor cells, the network type, signal strength, and Phone state and Call records events.
Network Survey does not make, end, or manage phone calls. Android simply groups cellular network information under this permission name.
If you deny it: Cellular, Phone state, and Call records cannot be recorded. The app also only starts its survey service from the main screen once this permission is granted, so grant it even if you mainly survey Wi-Fi, Bluetooth, or GNSS.
This phone’s number
Section titled “This phone’s number”android.permission.READ_PHONE_NUMBERS (optional, both builds)
Only asked as an optional permission when you turn on Call records. When granted, this phone’s own number is written to Call records. Denying it changes nothing else.
Notifications
Section titled “Notifications”android.permission.POST_NOTIFICATIONS (Android 13 and later)
Used for the survey notification while a survey runs, whose title reads Recording, Paused, No records for N min, or Ready (see Mission ID and notification), and for upload progress and the alerts you ask for: New tower alerts, Watchlist alerts, and NS Analytics notices.
If you deny it: surveys still run, but the survey notification and the alerts are hidden, and Call records cannot be turned on (on Android 13 and later it needs this permission).
Storage
Section titled “Storage”android.permission.WRITE_EXTERNAL_STORAGE (Android 12 and lower only)
Used to write CSV log files to Download/NetworkSurveyData/csv. Android 13 and later need no storage permission for this, so the app does not ask.
If you deny it (Android 12 and lower): Log files cannot be written. Other destinations still work.
Nearby devices (Bluetooth)
Section titled “Nearby devices (Bluetooth)”- Android 12 and later:
android.permission.BLUETOOTH_SCANandandroid.permission.BLUETOOTH_CONNECT(shown by Android as “Nearby devices”). For the Bluetooth record type, Android requires the connect permission to read the names of scanned devices. - Android 11 and lower:
android.permission.BLUETOOTHandandroid.permission.BLUETOOTH_ADMIN, granted at install. Finding an NS Scout on these versions also needs the location permission.
The Bluetooth record type only listens: it records what nearby devices broadcast and never pairs with or connects to them. The one Bluetooth device Network Survey pairs with and connects to is an NS Scout, if you add one. The Add a Scout sheet asks for Nearby devices when it needs it.
If you deny it: Bluetooth cannot be recorded, and the phone can’t reach an NS Scout. Everything else works.
Local network access
Section titled “Local network access”android.permission.ACCESS_LOCAL_NETWORK (Android 17 and later)
Needed to reach an MQTT broker or gRPC server on your local network. The app asks when you tap Start for a survey that sends to MQTT or gRPC, when you turn either of those destinations on, and when you save or select a broker or server. Whatever you answer, the app goes on: a server on the internet works without it; only a server on the local network does not.
Camera
Section titled “Camera”android.permission.CAMERA (optional)
Used to scan QR codes for MQTT broker settings and NS Analytics registration. Asked when you open a scanner. On a phone without a camera, the scanner does not open and the app says “This device has no camera, so it cannot scan a code.”
If you deny it: QR codes cannot be scanned, so you type broker settings by hand; everything else works.
Other permissions
Section titled “Other permissions”Android grants these at install, without a prompt: internet and network state, Wi-Fi state, foreground service (for the survey service), wake lock (keeps the phone processing while a survey runs with the screen off), start at boot, and the request to ignore battery optimizations (for the battery optimization question).
Call records permissions
Section titled “Call records permissions”| Google Play (regular) build | CDR build | |
|---|---|---|
| Required | Location, Phone, Notifications (Android 13 and later) | Same |
| Optional | READ_PHONE_NUMBERS (this phone’s number) | READ_PHONE_NUMBERS, READ_CALL_LOG (the other party’s number on calls), READ_SMS (SMS and MMS events) |
READ_CALL_LOG and READ_SMS are declared only in the CDR build, because Google Play does not allow them for an app like this. With READ_SMS, Network Survey logs that a message was sent or received (time, direction, and the other party’s number), not its content. See Build variants and Call records.
Summary
Section titled “Summary”| Permission | Asked when | Android | If denied |
|---|---|---|---|
| Location | First run, then at launch | All | Almost nothing can be recorded |
| Phone | First run, then at launch | All | No Cellular, Phone state, or Call records |
| Notifications | First run, then at launch | 13 and later | No survey notification or alerts, no Call records |
| Storage | First run, then at launch | 12 and lower | No Log files |
| Nearby devices | Turning on Bluetooth, or adding an NS Scout | 12 and later | No Bluetooth, no NS Scout |
| Phone numbers | Turning on Call records (optional) | All | This phone’s number left out |
| Call log, SMS | Turning on Call records (optional, CDR build) | All | Other party’s number and texts left out |
| Background location | Turning on Start survey automatically | 10 and later | No start at boot |
| Local network | Start or turning on MQTT or gRPC | 17 and later | Local servers unreachable |
| Camera | Opening a QR scanner | All | No QR scanning |
Granting a permission later
Section titled “Granting a permission later”- Open Android Settings > Apps > Network Survey > Permissions.
- Pick the permission and choose Allow (for background location, Allow all the time).