如何检查Android设备是否连接到网络?

问题描述:

我怎么知道我的设备是否连接到网络?我如何检测连接?任何示例代码?如何检查Android设备是否连接到网络?

+0

[安卓检查互联网连接(http://*.com/questions/9570237/android-check-internet-connection) – 2017-02-09 12:10:33

首先,你需要许可才能知道设备是否连接到网络或没有。这需要在您的清单,在<manifest>元素:

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

接下来,你需要去的ConnectivityManager参考:

ConnectivityManager cm = (ConnectivityManager) Context.getSystemService(Context.CONNECTIVITY_SERVICE); 

从那里,你需要获得一个NetworkInfo对象。对于大多数人来说,这将意味着使用ConnectivityManager. getActiveNetworkInfo()

NetworkInfo ni = cm.getActiveNetworkInfo(); 
if (ni == null) { 
    // There are no active networks. 
    return false; 
} 

从那里,你只需要使用的NetworkInfo的方法之一,以确定该设备连接到互联网:

boolean isConnected = ni.isConnected(); 
+3

我得到这个说法一个空指针异常的可能重复:布尔isConnected = ni.isConnected(); 为什么? – 2010-05-18 10:08:02

+0

是的,我也是! – xpepermint 2011-07-02 22:05:49

+3

@Maxood,这意味着没有活动的网络。换句话说,该设备没有连接到网络。我会改变代码。 – 2011-10-21 03:01:55

首先,你需要有权知道设备是否连接到网络。这需要在你的清单中的元素:

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

然后

ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 

if (connec != null && (
    (connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) || 
    (connec.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED))) { 

     //You are connected, do something online. 

} else if (connec != null && (
    (connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.DISCONNECTED) || 
    (connec.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.DISCONNECTED))) {    

     //Not connected.  
     Toast.makeText(getApplicationContext(), "You must be connected to the internet", Toast.LENGTH_LONG).show(); 

} 

在AppManifest.xml文件中添加此权限:

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

的方法检查如果网络可用或不可用:

boolean isNetworkAvailable() { 
    ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); 

    NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
    boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting(); 
    return isConnected; 
} 

Source