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

kan*_*ndi 3 android

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

Spr*_*ker 9

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

<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)

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

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Run Code Online (Sandbox Code Playgroud)

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

例:

如果要在a中加载URL 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;
}
Run Code Online (Sandbox Code Playgroud)

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

And it says it need a CHECK_INTERNET_SATE. Do I have to add it?
Run Code Online (Sandbox Code Playgroud)

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

希望它能清除你的怀疑.

参考

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

/sf/answers/1374946121/