检测Android上是否有可用的Internet连接

检测Android上是否有可用的Internet连接

我需要检测一下Android设备是否连接到互联网上。

这个NetworkInfo类提供非静态方法。isAvailable()听起来很完美。

问题是:

NetworkInfo ni = new NetworkInfo();if (!ni.isAvailable()) {
    // do something}

抛出此错误:

The constructor NetworkInfo is not visible.

可以肯定的是,还有另一个类返回NetworkInfo对象。但我不知道是哪一个。

  1. 如何使上述代码片段工作?
  2. 我怎么能在网上文档中找到我所需要的信息呢?
  3. 你能为这种类型的检测提出更好的方法吗?


交互式爱情
浏览 919回答 3
3回答

互换的青春

这个getActiveNetworkInfo()方法ConnectivityManager返回NetworkInfo实例,表示它可以找到的第一个连接的网络接口,或者null如果没有任何接口连接。检查此方法是否返回null应该足以判断是否有互联网连接可用。private&nbsp;boolean&nbsp;isNetworkAvailable()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;ConnectivityManager&nbsp;connectivityManager&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;(ConnectivityManager)&nbsp;getSystemService(Context.CONNECTIVITY_SERVICE); &nbsp;&nbsp;&nbsp;&nbsp;NetworkInfo&nbsp;activeNetworkInfo&nbsp;=&nbsp;connectivityManager.getActiveNetworkInfo(); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;activeNetworkInfo&nbsp;!=&nbsp;null&nbsp;&&&nbsp;activeNetworkInfo.isConnected();}你还需要:<uses-permission&nbsp;android:name="android.permission.ACCESS_NETWORK_STATE"&nbsp;/>在你的机器人名单里。编辑:请注意,拥有活动的网络接口并不能保证特定的网络服务是可用的。网络问题、服务器停机、低信号、受限门户、内容过滤器等等都会阻止应用程序到达服务器。例如,在收到Twitter服务的有效响应之前,您无法确定应用程序是否可以到达Twitter。

红颜莎娜

我检查WI-FI和移动互联网如下.private&nbsp;boolean&nbsp;haveNetworkConnection()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;haveConnectedWifi&nbsp;=&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;haveConnectedMobile&nbsp;=&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;ConnectivityManager&nbsp;cm&nbsp;=&nbsp;(ConnectivityManager)&nbsp;getSystemService(Context.CONNECTIVITY_SERVICE); &nbsp;&nbsp;&nbsp;&nbsp;NetworkInfo[]&nbsp;netInfo&nbsp;=&nbsp;cm.getAllNetworkInfo(); &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(NetworkInfo&nbsp;ni&nbsp;:&nbsp;netInfo)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ni.getTypeName().equalsIgnoreCase("WIFI")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ni.isConnected()) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;haveConnectedWifi&nbsp;=&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ni.getTypeName().equalsIgnoreCase("MOBILE")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ni.isConnected()) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;haveConnectedMobile&nbsp;=&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;haveConnectedWifi&nbsp;||&nbsp;haveConnectedMobile;}显然,它可以很容易地修改,以检查单个特定的连接类型,例如,如果您的应用程序需要WI-FI的潜在更高的速度来正确工作等等。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android
Java