android - 如果我有 INTERNET,我需要 ACCESS_NETWORK_STATE 权限吗?

标签 android

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

最佳答案

这两种权限之间有一个基本的区别,

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

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

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

如上所示,ACCESS_NETWORK_STATE 权限允许应用程序访问有关网络的信息。

示例:

如果你想在WebView中加载一个URL,你只需要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;
}

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

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

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

希望它能消除您的疑虑。

引用

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

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

关于android - 如果我有 INTERNET,我需要 ACCESS_NETWORK_STATE 权限吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23753245/

相关文章:

android - 当我尝试开启蓝牙时,应用程式当机

Php脚本获取json字符串中目录中所有图像的url

android - 如何每天从上午 9 点到下午 4 点运行服务?

android - 将 Runnable 发布到 UI 线程是否保证布局在运行时完成?

java - 将单击按钮操作变为服务

android - 动画后 TranslateAnimated ImageView 不可点击 [Android]

java - 当手机没有任何互联网时无法从 url 获取图标,或者是否可以保存在内部存储然后从那里读取

android - 在 Android 应用中更改主题

java - 搜索对话框不显示

android - 如何从 fragment 中开始 Activity ?