Skip to content

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.

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.”

The first-run card Permissions, and why on Android 13 or later, listing Location, Phone, and Notifications with their reasons, the Bluetooth and call records note, and the Skip and Allow and continue buttons

Android's prompt after Allow and continue: Allow Network Survey to access this device's location?, with Precise and Approximate, and While using the app, Only this time, and Don't allow

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.

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.

  • 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.

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.

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.

The camera permission is asked when you open a QR code scanner.


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.

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.

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.

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).

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.

  • Android 12 and later: android.permission.BLUETOOTH_SCAN and android.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.BLUETOOTH and android.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.

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.

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.

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).

Google Play (regular) buildCDR build
RequiredLocation, Phone, Notifications (Android 13 and later)Same
OptionalREAD_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.

PermissionAsked whenAndroidIf denied
LocationFirst run, then at launchAllAlmost nothing can be recorded
PhoneFirst run, then at launchAllNo Cellular, Phone state, or Call records
NotificationsFirst run, then at launch13 and laterNo survey notification or alerts, no Call records
StorageFirst run, then at launch12 and lowerNo Log files
Nearby devicesTurning on Bluetooth, or adding an NS Scout12 and laterNo Bluetooth, no NS Scout
Phone numbersTurning on Call records (optional)AllThis phone’s number left out
Call log, SMSTurning on Call records (optional, CDR build)AllOther party’s number and texts left out
Background locationTurning on Start survey automatically10 and laterNo start at boot
Local networkStart or turning on MQTT or gRPC17 and laterLocal servers unreachable
CameraOpening a QR scannerAllNo QR scanning
  1. Open Android Settings > Apps > Network Survey > Permissions.
  2. Pick the permission and choose Allow (for background location, Allow all the time).