只要互联网无法正常工作,我如何才能重新打开对话框

how i can Reopen Dialog long as the Internet does not work

我的应用程序需要互联网才能工作,所以我正在尝试检查互联网连接是否正常 我想在互联网关闭时应用程序向用户显示 dialog 再试一次 按钮,当用户点击 TRY AGAIN 按钮和 interent 连接仍然不起作用显示 Dialog(互联网不起作用再试一次)

检查互联网连接方法:

public Boolean CheckInternetConnection(){
    ConnectivityManager manager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = manager.getActiveNetworkInfo();
    if(networkInfo != null && networkInfo.isConnected()) {
        return true;
    }
    else
        return false;
}

里面onCreate

 protected void onCreate(){
  ......
  ......
 if(CheckInternetConnection()){
        Toast.makeText(this, "OK", Toast.LENGTH_SHORT).show();
    }
    else{
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setIcon(R.mipmap.info)
                .setTitle("Internet Connection !")
                .setMessage("No Internet Connection")
                .setNegativeButton("Try Again", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        if(CheckInternetConnection()){

                            //TRY AGAIN and REOPEN DIALOG   



                        }
                    }
                });
        builder.setCancelable(false);
        AlertDialog about = builder.create();
        about.show();
        TextView messageText = (TextView) about.findViewById(android.R.id.message);
        assert messageText != null;
        messageText.setGravity(Gravity.CENTER);
        Button nbutton = about.getButton(DialogInterface.BUTTON_NEGATIVE);
        nbutton.setTextColor(Color.BLACK);

  }

如果连接失败,然后显示 "your connection fail" 之类的对话框,请尝试下面的代码。

主要活动

public class MyActivity implements NetworkStateReceiverListener {
        private NetworkStateReceiver networkStateReceiver;
    }

创建

public void onCreate(Bundle savedInstanceState) {
    /* ... */
    networkStateReceiver = new NetworkStateReceiver();
    networkStateReceiver.addListener(this);
    this.registerReceiver(networkStateReceiver, new IntentFilter(android.net.ConnectivityManager.CONNECTIVITY_ACTION));
}

主要活动

@Override
public void networkAvailable() {
  // internet connection success
}

@Override
public void networkUnavailable() {
      //REOPEN DIALOG           
}

接受者

public class NetworkStateReceiver extends BroadcastReceiver {

    protected List<NetworkStateReceiverListener> listeners;
    protected Boolean connected;

    public NetworkStateReceiver() {
        listeners = new ArrayList<NetworkStateReceiverListener>();
        connected = null;
    }

    public void onReceive(Context context, Intent intent) {
        if(intent == null || intent.getExtras() == null)
            return;

        ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo ni = manager.getActiveNetworkInfo();

        if(ni != null && ni.getState() == NetworkInfo.State.CONNECTED) {
            connected = true;
        } else if(intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY,Boolean.FALSE)) {
            connected = false;
        }

        notifyStateToAll();
    }

    private void notifyStateToAll() {
        for(NetworkStateReceiverListener listener : listeners)
            notifyState(listener);
    }

    private void notifyState(NetworkStateReceiverListener listener) {
        if(connected == null || listener == null)
            return;

        if(connected == true)
            listener.networkAvailable();
        else
            listener.networkUnavailable();
    }

    public void addListener(NetworkStateReceiverListener l) {
        listeners.add(l);
        notifyState(l);
    }

    public void removeListener(NetworkStateReceiverListener l) {
        listeners.remove(l);
    }

    public interface NetworkStateReceiverListener {
        public void networkAvailable();
        public void networkUnavailable();
    }
}

创建 showDialog() 单独的方法并在需要再次显示对话框时调用它。

@Override
protected void onCreate(Bundle savedInstanceState) {
    // ...
    if (isNetworkConnected()) {
        Toast.makeText(this, "OK", Toast.LENGTH_SHORT).show();
    } else {
        showDialog();
    }
}

private void showDialog() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setCancelable(false);
    builder.setMessage("No Internet Connection");
    builder.setNegativeButton("Try Again", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            if (isNetworkConnected()) {
                Toast.makeText(MainActivity.this, "OK", Toast.LENGTH_SHORT).show();
            } else {
                showDialog();
            }
        }
    });
    AlertDialog alertDialog = builder.create();
    alertDialog.show();
}