3

我正在尝试检查非活动课程中的互联网连接。

我正在使用以下代码:

public boolean isNetworkAvailable() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = cm.getActiveNetworkInfo();        
    if (networkInfo != null && networkInfo.isConnected()) {
        return true;
    }
    return false;
}

但以下代码行带有红色下划线:

getSystemService(Context.CONNECTIVITY_SERVICE)

我假设这是因为它无法获取 systemService。如何获得系统服务?

4

3 回答 3

5

ContextActivity你所在的地方传递

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

因此,如果从这样的Activity使用中调用来传递Activity'sContext

boolean hasConnection = isNetworkAvailable(this);

显然在创建封闭类的实例之后

于 2013-08-05T20:29:12.947 回答
0

context.getSystemService(Context.CONNECTIVITY_SERVICE)使用该活动是从上下文中派生的,这就是为什么您可以getSystemService在没有上下文的情况下在活动中使用

于 2013-08-05T20:28:15.467 回答
0

用这个 :-

public class CheckInternet {
    
        public Context context;
    
        public CheckInternet(Context context) {
            this.context = context;
        }
    
        public boolean isNetworkConnected() {
            ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    
            return cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected();
        }  }

并像这样打电话:-

CheckInternet checkInternet = new CheckInternet(this);
boolean connection = checkInternet.isNetworkConnected();
于 2020-11-24T05:00:35.047 回答