首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在android studio中检测网络连接

如何在android studio中检测网络连接
EN

Stack Overflow用户
提问于 2017-02-21 01:25:19
回答 2查看 6.5K关注 0票数 0

我有以下代码来检测是否有可用的互联网连接。但是,如果我没有互联网连接,只有数据连接是“开”的,它仍然可以工作。我该怎么做?

代码语言:javascript
复制
   ConnectivityManager cManager = (ConnectivityManager) getSystemService(this.CONNECTIVITY_SERVICE);


    NetworkInfo ninfo = cManager.getActiveNetworkInfo();


    if(ninfo!=null && ninfo.isConnected())

    {
      Toast.makeText(this, "Available",Toast.LENGTH_LONG).show();
    }

    else
    {
      Toast.makeText(this, "Not Available",Toast.LENGTH_LONG).show();
    }
EN

回答 2

Stack Overflow用户

发布于 2017-02-21 12:25:41

使用此NetworkUtils类:

代码语言:javascript
复制
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

public class NetworkUtils {

  private static int TYPE_WIFI = 1;
  private static int TYPE_MOBILE = 2;
  private static int TYPE_NOT_CONNECTED = 0;

  public static int getConnectivityStatus(Context context) {
    ConnectivityManager connectivityManager = (ConnectivityManager) context
        .getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();

    if (networkInfo != null) {
      if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI
          && networkInfo.getState() == NetworkInfo.State.CONNECTED) {

        return TYPE_WIFI;

      } else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE
          && networkInfo.getState() == NetworkInfo.State.CONNECTED) {
        return TYPE_MOBILE;
      }
    }
    return TYPE_NOT_CONNECTED;
  }

  public static boolean isNetworkConnected(Context context) {
    int networkStatus = getConnectivityStatus(context);
    if (networkStatus == TYPE_WIFI || networkStatus == TYPE_MOBILE) {
      return true;
    } else {
      return false;
    }
  }
}

像这样使用:

代码语言:javascript
复制
if(NetworkUtils.isNetworkConnected(this)){

}
票数 2
EN

Stack Overflow用户

发布于 2018-02-06 03:19:11

使用ConnectivityManager类。下面是java类:

代码语言:javascript
复制
 ConnectivityManager manager =(ConnectivityManager) getApplicationContext()
                .getSystemService(Context.CONNECTIVITY_SERVICE);
 NetworkInfo activeNetwork = manager.getActiveNetworkInfo();
        if (null != activeNetwork) {
            if(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI){
                //we have WIFI
            }
            if(activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE){
                //we have cellular data
            }
        } else{
            //we have no connection :(
        }

别忘了在AndroidManifest.xml中询问权限

代码语言:javascript
复制
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42350780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档