我需要检测安卓设备是否连接到互联网。
该类提供了一个听起来很完美NetworkInfo的非静态方法。isAvailable()
NetworkInfo
isAvailable()
问题是:
NetworkInfo ni = new NetworkInfo(); if (!ni.isAvailable()) { // do something }
抛出此错误:
The constructor NetworkInfo is not visible.
安全的赌注是有另一个类返回一个NetworkInfo对象。但我不知道是哪个。
该getActiveNetworkInfo()方法ConnectivityManager返回一个NetworkInfo实例,表示它可以找到的第一个连接的网络接口,或者null如果没有连接任何接口。检查此方法是否返回null应该足以判断 Internet 连接是否可用。
getActiveNetworkInfo()
ConnectivityManager
null
private boolean isNetworkAvailable() { ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); return activeNetworkInfo != null && activeNetworkInfo.isConnected(); }
您还需要:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
在你的 android 清单中。
编辑:
请注意,拥有活动的网络接口并不能保证特定的网络服务可用。网络问题、服务器停机、低信号、强制门户、内容过滤器等都会阻止您的应用程序到达服务器。例如,在您收到来自 Twitter 服务的有效响应之前,您无法确定您的应用程序是否可以访问 Twitter。