该方法不适用于参数(Context)Android

时间:2014-10-06 09:53:45

标签: android methods android-context

我想添加我的应用程序布尔值来检查设备是否连接到Internet。 我找到了this question

但我无法在我的应用中使用它。 这是代码:

private boolean isNetworkAvailable() {
        ConnectivityManager connectivityManager 
             = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        return activeNetworkInfo != null;
    }
    public static boolean hasActiveInternetConnection(Context context) {
        if (isNetworkAvailable(context)) {
            try {
                HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection());
                urlc.setRequestProperty("User-Agent", "Test");
                urlc.setRequestProperty("Connection", "close");
                urlc.setConnectTimeout(1500); 
                urlc.connect();
                return (urlc.getResponseCode() == 200);
            } catch (IOException e) {
            }
        } else {
        }
        return false;

    }

这是我的MainActivity。我收到这个错误:

  

MainActivity类型中的方法isNetworkAvailable()不是   适用于参数(上下文)

为什么我收到此错误?我的代码出了什么问题?或者我只是需要将这些方法放在不同的活动中?

2 个答案:

答案 0 :(得分:2)

确保您在androidmanifest.xml中添加特定权限,然后

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

替换为此代码

private boolean isNetworkAvailable(Context context) {
    ConnectivityManager connectivityManager 
         = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null;
}
public static boolean hasActiveInternetConnection(Context context) {
    if (isNetworkAvailable(context)) {
        try {
            HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection());
            urlc.setRequestProperty("User-Agent", "Test");
            urlc.setRequestProperty("Connection", "close");
            urlc.setConnectTimeout(1500); 
            urlc.connect();
            return (urlc.getResponseCode() == 200);
        } catch (IOException e) {
        }
    } else {
    }
    return false;

}

答案 1 :(得分:0)

你的isNetworkAvailable,不是参数,而是你用上下文对象调用它

if (isNetworkAvailable(context))

导致编译时错误。您可以更改isNetworkAbailable的签名

private static boolean isNetworkAvailable(Context context) {

}