2015-10-20 208 views
1

我写了这段代码。getAllNetworkInfo()已过时

ConnectivityManager connectivity = (ConnectivityManager) 
      context.getSystemService(Context.CONNECTIVITY_SERVICE); 

    if (connectivity != null) { 
     NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
     if (info != null) { 
      for (int i = 0; i < info.length; i++) { 
       if (info[i].getState() == NetworkInfo.State.CONNECTED) {} 

但是,不推荐使用getAllNetworkInfo()。请帮忙。谢谢。

回答

5

作为文档说:

getAllNetworkInfo()

此方法在API级别23.此方法不支持同一类型的多个连接的网络被弃用。改为使用getAllNetworks()getNetworkInfo(android.net.Network)

我认为你可以使用getActiveNetworkInfo()

下面是代码:

ConnectivityManager connectivity = (ConnectivityManager) 
      MainActivity.this.getSystemService(Context.CONNECTIVITY_SERVICE); 

    if (connectivity != null) { 
     NetworkInfo nInfo=connectivity.getActiveNetworkInfo(); 

     if (nInfo != null && nInfo.getState()== NetworkInfo.State.CONNECTED) { 
      //do your thing 
     } 
    } 
+0

我有一个停止的错误。 – user3793875

+0

你能发布异常吗? – pgiitu

0
public class ConnectionDetector { 

private Context _context; 

public ConnectionDetector(Context context) { 
    this._context = context; 
} 

public boolean isConnectingToInternet() { 
    ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     Network[] networks = connectivity.getAllNetworks(); 
     NetworkInfo networkInfo; 
     for (Network mNetwork : networks) { 
      networkInfo = connectivity.getNetworkInfo(mNetwork); 
      if (networkInfo.getState().equals(NetworkInfo.State.CONNECTED)) { 
       return true; 
      } 
     } 
    } else { 
     if (connectivity != null) { 
      NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
      if (info != null) 
       for (int i = 0; i < info.length; i++) { 
        if (info[i].getState() == NetworkInfo.State.CONNECTED) { 
         return true; 
        } 
       } 

     } 
    } 

    return false; 
}} 

你可以使用这个类用于检测互联网连接。希望这会帮助你。

0

见我的答案在:https://stackoverflow.com/a/32771164/4279451

您可以使用:

getActiveNetworkInfo();

 ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
     if (activeNetwork != null) { // connected to the internet 
      if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) { 
       // connected to wifi 
       Toast.makeText(context, activeNetwork.getTypeName(), Toast.LENGTH_SHORT).show(); 
      } else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) { 
       // connected to the mobile provider's data plan 
       Toast.makeText(context, activeNetwork.getTypeName(), Toast.LENGTH_SHORT).show(); 
      } 
     } else { 
      // not connected to the internet 
     }