【问题标题】: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 更通用吗?

【问题讨论】:

    标签: android android-manifest android-permissions


    【解决方案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) 的示例代码,告诉你是否有互联网连接。
      猜你喜欢
      • 1970-01-01
      • 2018-08-11
      • 1970-01-01
      • 1970-01-01
      • 2018-02-06
      • 1970-01-01
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多