【问题标题】:What's the difference between ACCESS_NETWORK_STATE and INTERNET?ACCESS_NETWORK_STATE 和 INTERNET 有什么区别?
【发布时间】:2013-11-07 15:39:31
【问题描述】:

ACCESS_NETWORK_STATE 和 INTERNET 有什么区别?

如果我使用 INTERNET,是否需要使用 ACCESS_NETWORK_STATE?

换句话说,我可以在不使用 ACCESS_NETWORK_STATE 的情况下使用 INTERNET 吗?

【问题讨论】:

标签: android android-permissions


【解决方案1】:

INTERNET 允许您使用互联网

ACCESS_NETWORK_STATE 允许您获取网络状态 (wifi ,3g,4g) 也可以检查网络是否已连接

如果没有互联网,HTTP 请求将失败,您将获得某种必须处理的异常

【讨论】:

    【解决方案2】:

    来自the documentation

    ACCESS_NETWORK_STATE:

    允许应用程序访问有关网络的信息

    INTERNET:

    允许应用程序打开网络套接字。

    简而言之,INTERNET 权限允许您使用互联网,而ACCESS_NETWORK_STATE 只会为您提供有关网络的信息,例如您是否已连接到网络。

    您可以使用其中一个而不需要另一个。如果您在尝试使用 Internet 之前没有检查您的网络连接是否有效,那么您的 HTTP 请求将会失败。

    【讨论】:

    • 是的,但是如果我要打开一个网络套接字,我当然需要检查是否有互联网连接,不是吗?
    • @Mageek 你不必检查是否有连接,如果没有,请求将失败或其他什么
    • 谢谢,这是我的答案,你能把它添加到你的答案中,我会接受它
    【解决方案3】:
    android.permission.INTERNET
    

    如果您只想使用互联网(连接到网络服务或在 webView 上显示网页)就足够了。

    android.permission.ACCESS_NETWORK_STATE
    

    在使用互联网之前查询网络状态是“很高兴”。

    【讨论】:

    • 查询网络状态吗?捕获HTTP请求失败时抛出的异常还不够吗?
    • 不,您不必查询网络状态。 ACCESS_NETWORK 使用案例:在你的应用程序中,你想上传/下载大量数据,并且你更喜欢在用户通过 wi-fi 连接时进行(你不想花费用户移动数据包),你可以查询连接具有此权限的状态。
    猜你喜欢
    • 1970-01-01
    • 2012-03-16
    • 2013-06-26
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    • 2012-02-06
    • 2011-02-25
    相关资源
    最近更新 更多