接入网络状态(ACCESS_NETWORK_STATE)和WIFI状态(ACCESS_WIFI_STATE)权限有啥区别?

Posted

技术标签:

【中文标题】接入网络状态(ACCESS_NETWORK_STATE)和WIFI状态(ACCESS_WIFI_STATE)权限有啥区别?【英文标题】:What's the difference between access network state (ACCESS_NETWORK_STATE) and WIFI state (ACCESS_WIFI_STATE) permissions?接入网络状态(ACCESS_NETWORK_STATE)和WIFI状态(ACCESS_WIFI_STATE)权限有什么区别? 【发布时间】:2012-03-16 13:22:25 【问题描述】:

android Manifest 的 Permissions 选项卡中,下拉菜单中有名为 android.permission.ACCESS_NETWORK_STATEandroid.permission.ACCESS_WIFI_STATE 的选项。它们之间有什么区别? ACCESS_NETWORK_STATEACCESS_WIFI_STATE 更通用吗?

【问题讨论】:

【参考方案1】:

android.permission.ACCESS_NETWORK_STATE 用于访问ConnectivityManager(主要用于监控一般网络连接),而android.permission.ACCESS_WIFI_STATE 授予对WifiManager 的访问权限(尤其是用于管理 Wi-Fi 连接的各个方面)。

【讨论】:

所以如果我使用 ACCESS_NETWORK_STATE,并检查连接性:如果在 WiFi 上,它将返回在线还是离线?我需要同时检查吗? 查看developer.android.com/training/basics/network-ops/managing.html 了解一个有用的功能 (isOnline),它可以判断是否有互联网连接。 ACCESS_NETWORK_STATE 可用于通过 ConnectivityManager 的 getActiveNetworkInfo() 方法检查一般网络状态(即正在连接、已连接),即使它是 Wifi。【参考方案2】:

ACCESS_NETWORK_STATE 用于检查您是否连接到网络,无论是哪种类型(Wi-Fi、GPRS、UMTS 等)都没有关系。

ACCESS_WIFI_STATE 不需要支持互联网连接。

要回答大多数问题,是的,如果只是检查连接,则不需要ACCESS_WIFI_STATE

【讨论】:

【参考方案3】:

网络状态是指蜂窝网络连接。

Wifi状态是指手机的Wifi连接状态。

【讨论】:

不完全是,请参阅developer.android.com/training/basics/network-ops/managing.html,它使用“网络状态”来指代任何类型的互联网连接。它区分 ConnectivityManager.TYPE_MOBILE 和 ConnectivityManager.TYPE_WIFI。它甚至给出了有用的函数 (isOnline) 的示例代码,告诉你是否有互联网连接。

以上是关于接入网络状态(ACCESS_NETWORK_STATE)和WIFI状态(ACCESS_WIFI_STATE)权限有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

华为云网络覆盖全球2500+站点,打造高品质低成本接入体验

5G核心网技术基础自学系列 | 5G核心网网络功能

移动网络状态断开连接

iOS开发网络篇—监测网络状态

OS开发网络篇—监测网络状态

监测网络状态