如果我有INTERNET,我是否需要ACCESS_NETWORK_STATE权限?

时间:2014-05-20 07:16:13

标签: android

我在我的应用中获得了INTERNET权限。但现在我想在我的应用中添加谷歌分析。它说它需要一个CHECK_INTERNET_SATE。我必须添加它吗?如果是这样,它看起来很奇怪 - 可以访问互联网的应用程序无法读取它的状态。我不认为这是正常的

1 个答案:

答案 0 :(得分:7)

这两个权限之间存在基本差异,

<uses-permission android:name="android.permission.INTERNET" />

以上权限允许应用程序打开网络套接字

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

上述ACCESS_NETWORK_STATE权限允许应用访问有关网络的信息。

示例:

如果您要在WebView中加载网址,则只需要android.permission.INTERNET权限。

如果您需要从服务器下载某些数据,则需要在下载前检查互联网连接的可用性。否则,如果没有连接,应用程序可能会崩溃。如下所示,您可以检查互联网连接,

public boolean isOnline() {
    ConnectivityManager cm =
        (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    if (netInfo != null && netInfo.isConnectedOrConnecting()) {
        return true;
    }
    return false;
}

在上面的代码段中,您将获取有关网络的信息,因此您必须获得android.permission.ACCESS_NETWORK_STATE权限。

And it says it need a CHECK_INTERNET_SATE. Do I have to add it?

Google AnalyticsSDK 会在向服务器发送信息之前检查网络可用性,因此您也需要该权限。

希望它能清除你的怀疑。

参考

http://developer.android.com/reference/android/Manifest.permission.html

https://stackoverflow.com/a/19642087/1665507