互联网连接检查在android中不起作用

时间:2013-12-12 11:39:39

标签: android android-listview

我想在填充列表视图之后检查互联网连接。但我检查互联网连接的代码不起作用。我断开我的网络连接测试但mycodes(检查连接不起作用)。 请帮我解决错误。

connectionDetector:

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 (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;
    }
}

我的活动:

  protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView(R.layout.updateapp);
        oslist = new ArrayList<HashMap<String, String>>();
        Btngetdata = (Button)findViewById(R.id.getdata);
        Btngetdata.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //check Internet Connection
                Boolean isInternetPresent = false;
                ConnectionDetector cd;
                cd = new ConnectionDetector(getApplicationContext());
                isInternetPresent = cd.isConnectingToInternet();

                if (isInternetPresent) {
                new JSONParse().execute();  }

                else {
                    // Internet connection is not present
                    // Ask user to connect to Internet
                    showAlertDialog(UpdateFromSite.this, "No Internet Connection",
                            "You don't have internet connection.", false);
                }

            }
        });
    }

    public void showAlertDialog(Context context, String title, String message, Boolean status) {
        AlertDialog alertDialog = new AlertDialog.Builder(context).create();
        alertDialog.setTitle(title);
        alertDialog.setMessage(message);
        alertDialog.setIcon((status) ? R.drawable.success : R.drawable.fail);
        alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
            }
        });
        alertDialog.show();
    }

    private class JSONParse extends AsyncTask<String, String, JSONObject> {
        private ProgressDialog pDialog;
        @Override
        protected void onPreExecute() {
            super.onPreExecute();

            name = (TextView)findViewById(R.id.nameNewItem);
            description = (TextView)findViewById(R.id.descriptionNewItem);
            price = (TextView)findViewById(R.id.priceNewItem);
            pDialog = new ProgressDialog(UpdateFromSite.this);
            pDialog.setMessage("Getting Data ...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }
        @Override
        protected JSONObject doInBackground(String... args) {
            JSONParser jParser = new JSONParser();
            // Getting JSON from URL
            JSONObject json = jParser.getJSONFromUrl(url);
            return json;
        }
        @Override
        protected void onPostExecute(JSONObject json) {
            pDialog.dismiss();
            try {
                // Getting JSON Array from URL
                android = json.getJSONArray(TAG_OS);
                for(int i = 0; i < android.length(); i++){
                    JSONObject c = android.getJSONObject(i);

                    // Storing  JSON item in a Variable
                    String name = c.getString(TAG_NAME);
                    String description = c.getString(TAG_DESCRIPTION);
                    String price = c.getString(TAG_PRICE);

                    // Adding value HashMap key => value
                    HashMap<String, String> map = new HashMap<String, String>();
                    map.put(TAG_NAME, name);
                    map.put(TAG_DESCRIPTION, description);
                    map.put(TAG_PRICE, price);
                    oslist.add(map);
                    list=(ListView)findViewById(R.id.listupdate);
                    ListAdapter adapter = new SimpleAdapter(UpdateFromSite.this, oslist,
                            R.layout.updateapprow,
                            new String[] { TAG_NAME,TAG_DESCRIPTION, TAG_PRICE }, new int[] {
                            R.id.nameNewItem,R.id.descriptionNewItem, R.id.priceNewItem});
                    list.setAdapter(adapter);}
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }

的manifest.xml:

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

8 个答案:

答案 0 :(得分:1)

使用以下方法检查网络连接:

 public static boolean isNetworkAvailable(Context context) {
    ConnectivityManager connectivityManager = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager
            .getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}

答案 1 :(得分:0)

public static void getNetworkState(Context context,OnConnectListener onConnectListener) {
    final ConnectivityManager conMgr =  (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    final NetworkInfo activeNetwork = conMgr.getActiveNetworkInfo();
    if (activeNetwork != null && activeNetwork.isConnected()) {
        //notify user you are online
        onConnectListener.onConnect();
    } else {
        //notify user you are not online
        onConnectListener.onDisConnect();
    }
}

答案 2 :(得分:0)

使用此代码检查互联网连接

只需调用 checkInternetConnection(getBaseContext())

/** Check network availability */
public static boolean checkInternetConnection(Context context) {
    ConnectivityManager conMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo i = conMgr.getActiveNetworkInfo();
    if (i == null)
        return false;
    if (!i.isConnected())
        return false;
    if (!i.isAvailable())
        return false;
    return true;
}


}

此代码经过测试!

答案 3 :(得分:0)

试试这个

public static boolean isNetworkConnection(Context context)
    {
        final ConnectivityManager connMgr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
         NetworkInfo activeNetworkInfo = connMgr.getActiveNetworkInfo();
        if(activeNetworkInfo!= null && activeNetworkInfo.isAvailable() && activeNetworkInfo.isConnected()) 
            return true;
        else
            return false;
    }

答案 4 :(得分:0)

试试这个。

if(isNetworkConnected()){
    // your task
} else {
    Toast.makeText(getBaseContext(), "No internet connection available.",Toast.LENGTH_SHORT).show();
}

isNetworkConnected()如下:

private boolean isNetworkConnected() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo ni = cm.getActiveNetworkInfo();
    if (ni == null) {
        // There are no active networks.
        return false;
    } else
    return true;
}

答案 5 :(得分:0)

我一直在使用和工作的一个:

public class DetectConnection {

    private Context _context;

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

    public boolean isConnectedToInternet(){
        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)
                      {
                          return true;
                      }

          }
          return false;
    }
}
活动中的

DetectConnection dc = new DetectConnection(getApplicationContext());
        if(dc.isConnectedToInternet()==true)
        {
        new AsyncGet().execute();
        }
        else
        {
            Toast.makeText(getSherlockActivity(), "No Active Connection", Toast.LENGTH_SHORT).show();
        }

答案 6 :(得分:0)

试试这个..

public class ConnectionDetector {
    private Context _context;

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

    public boolean isConnectingToInternet(){
        if( _context != null)
        {
            ConnectivityManager connec = (ConnectivityManager)  _context.getSystemService(Context.CONNECTIVITY_SERVICE);
            try {
                android.net.NetworkInfo wifi = connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

                android.net.NetworkInfo mobile = connec.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

                if (wifi.isConnected()||mobile.isConnected())
                    return true;
                else if (wifi.isConnected() && mobile.isConnected())
                    return true;
                else
                    return false;

            } catch (NullPointerException e) {
                Log.d("ConStatus", "No Active Connection");
                return false;
            }
        }
        else
        {
            return false;
        }
    }

答案 7 :(得分:0)

试试这段代码。

public static boolean isConnectingToInternet(Context context) {
        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) {
                        return true;
                    }
        }
        return false;

    }