Broadcast receiver for checking internet connection in android app

后端 未结 21 3501
温柔的废话
温柔的废话 2020-11-21 22:28

I am developing an android broadcast receiver for checking internet connection.

The problem is that my broadcast receiver is being called two times. I want it to get

21条回答
  •  深忆病人
    2020-11-21 22:57

    public class AsyncCheckInternet extends AsyncTask {
    
    public static final int TIME_OUT = 10 * 1000;
    
    private OnCallBack listener;
    
    public interface OnCallBack {
    
        public void onBack(Boolean value);
    }
    
    public AsyncCheckInternet(OnCallBack listener) {
        this.listener = listener;
    }
    
    @Override
    protected void onPreExecute() {
    }
    
    @Override
    protected Boolean doInBackground(String... params) {
    
        ConnectivityManager connectivityManager = (ConnectivityManager) General.context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
    
        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
    
        if ((networkInfo != null && networkInfo.isConnected())
                && ((networkInfo.getType() == ConnectivityManager.TYPE_WIFI) || (networkInfo
                        .getType() == ConnectivityManager.TYPE_MOBILE))) {
            HttpURLConnection urlc;
            try {
                urlc = (HttpURLConnection) (new URL("http://www.google.com")
                        .openConnection());
                urlc.setConnectTimeout(TIME_OUT);
                urlc.connect();
                if (urlc.getResponseCode() == HttpURLConnection.HTTP_OK) {
                    return true;
                } else {
                    return false;
                }
            } catch (MalformedURLException e) {
                e.printStackTrace();
                return false;
    
            } catch (IOException e) {
                e.printStackTrace();
                return false;
    
            }
        } else {
            return false;
        }
    }
    
    @Override
    protected void onPostExecute(Boolean result) {
        if (listener != null) {
            listener.onBack(result);
        }
    }
    

    }

提交回复
热议问题