What's the difference between access network state (ACCESS_NETWORK_STATE) and WIFI state (ACCESS_WIFI_STATE) permissions?

36,454

Solution 1

android.permission.ACCESS_NETWORK_STATE is needed for accessing ConnectivityManager (mainly for monitoring network connections in general), while android.permission.ACCESS_WIFI_STATE grants access to WifiManager (for managing all aspects of Wi-Fi connectivity in particular).

Solution 2

ACCESS_NETWORK_STATE is required to check if you are connected to a network, it does not matter of what type it is (Wi-Fi, GPRS, UMTS, etc.).

ACCESS_WIFI_STATE is not required to prope for internet connections.

To answer most of the questions, yes you don’t need the ACCESS_WIFI_STATE if merely checking for connectivity.

Share:
36,454
Admin
Author by

Admin

Updated on April 13, 2020

Comments

  • Admin
    Admin about 4 years

    In Permissions tab of Android Manifest, in the drop down there are options called android.permission.ACCESS_NETWORK_STATE and android.permission.ACCESS_WIFI_STATE. What is the difference between them? Is ACCESS_NETWORK_STATE more generalized than ACCESS_WIFI_STATE?

  • shkschneider
    shkschneider over 11 years
    So if I use ACCESS_NETWORK_STATE, and check connectivity: if on WiFi will it return online or offline? Do I need to check both?
  • Kevin Whitefoot
    Kevin Whitefoot over 9 years
    Not exactly, see developer.android.com/training/basics/network-ops/managing.h‌​tml where it uses 'network status' to refer to any internet connection regardless of type. It distinguishes between ConnectivityManager.TYPE_MOBILE and ConnectivityManager.TYPE_WIFI. It even gives example code for useful function (isOnline) that tells whether there is an internet connection at all.
  • Kevin Whitefoot
    Kevin Whitefoot over 9 years
    See developer.android.com/training/basics/network-ops/managing.h‌​tml for a useful function (isOnline) that tells whether there is an internet connection at all.
  • Ben Baron
    Ben Baron over 5 years
    ACCESS_NETWORK_STATE can be used to check the general network state (i.e. connecting, connected) even if it's Wifi by using the ConnectivityManager's getActiveNetworkInfo() method.