对于NetworkChangeReceiver类型,未定义方法isNetworkAvailable(Context)

时间:2014-04-25 07:31:53

标签: java android

如何删除此错误:对于NetworkChangeReceiver类型,isNetworkAvailable(Context)是未定义的? 我是android的新手,所以我在处理这个错误时遇到了问题,有人可以帮我解决这个错误吗? 我的代码如下:

 public class NetworkChangeReceiver extends BroadcastReceiver {

        String status ;
        HttpURLConnection urlc;

        @Override
        public void onReceive(final Context context, final Intent intent) {
        String status = NetworkUtil.getConnectivityStatusString(context);   

    if (status == "Wifi enabled" || status =="Mobile data enabled")
    {


        sendonnetworkconnection(context);
        datasendonnetworkconnection(context);


    }

        Toast.makeText(context, status, Toast.LENGTH_SHORT).show();
    }




    public void sendonnetworkconnection(final Context context) {
    //do something
    }

    public void datasendonnetworkconnection(final Context context) {
    //do something
    }
public void retrieveValuesFromListMethod1(List AssetId,Context context)
{

    Iterator itr = AssetId.iterator();
    while(itr.hasNext())
    {
    //do something
    }
}
public static boolean hasActiveInternetConnection(Context context) {
    String LOG_TAG;
    if (isNetworkAvailable(context)) {
        try {
            HttpURLConnection urlc = (HttpURLConnection) (new URL("http://url").openConnection());
            urlc.setRequestProperty("User-Agent", "Test");
            urlc.setRequestProperty("Connection", "close");
            urlc.setConnectTimeout(1500); 
            urlc.connect();
            return (urlc.getResponseCode() == 200);
        } catch (IOException e) {
            Log.e(LOG_TAG, "Error checking internet connection", e);
        }
    } else {
        Log.d(LOG_TAG, "No network available!");
    }
    return false;
}

public void retrieveValuesFromListMethod2(List Asset,Context context)
{

    Iterator itr = Asset.iterator();
    while(itr.hasNext())
    {
//do something
    ]

        Toast.makeText(context, uniqueid, Toast.LENGTH_SHORT).show();

    }
}

}

2 个答案:

答案 0 :(得分:2)

我认为您要么缺少要导入,要么没有这种方法。理想情况下,它可以是这样的,

public static boolean isNetworkAvailable(Context c) {
    NetworkInfo netInfo = null;
    try {
        ConnectivityManager cm = (ConnectivityManager) c
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        netInfo = cm.getActiveNetworkInfo();
    } catch (SecurityException e) {
        e.printStackTrace();
    }
    return netInfo != null && netInfo.isConnectedOrConnecting();
}

答案 1 :(得分:1)

试试这个

改变这个..

if (status == "Wifi enabled" || status =="Mobile data enabled")
{
    sendonnetworkconnection(context);
    datasendonnetworkconnection(context);
}

if (status.equals("Wifi enabled") || status.equals("Mobile data enabled"))
{
    sendonnetworkconnection(context);
    datasendonnetworkconnection(context);
}

==总是只比较两个引用。 String你应该使用.equals(“”)