Android 如何在Internet不工作的情况下重新打开对话框

Android 如何在Internet不工作的情况下重新打开对话框,android,dialog,internet-connection,Android,Dialog,Internet Connection,我的应用程序需要internet才能工作,因此我正在尝试检查internet连接是否正常。当internet关闭时,应用程序显示用户对话框和重试按钮当用户单击重试按钮且internet连接仍不工作时显示对话框internet不工作重试 检查internet连接方法: public Boolean CheckInternetConnection(){ ConnectivityManager manager = (ConnectivityManager)getSystemService(Co

我的应用程序需要internet才能工作,因此我正在尝试检查internet连接是否正常。当internet关闭时,应用程序显示用户对话框和重试按钮当用户单击重试按钮且internet连接仍不工作时显示对话框internet不工作重试

检查internet连接方法:

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


如果您遇到连接失败,然后显示类似连接失败的对话框,请尝试下面的代码

主要活动

public class MyActivity implements NetworkStateReceiverListener {
        private NetworkStateReceiver networkStateReceiver;
    }
@Override
public void networkAvailable() {
  // internet connection success
}

@Override
public void networkUnavailable() {
      //REOPEN DIALOG           
}
一次创建

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

public class MyActivity implements NetworkStateReceiverListener {
        private NetworkStateReceiver networkStateReceiver;
    }
@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();
}

感谢您提供的relpy,但我已经有了公共类MainActivity扩展AppCompativeActivity实现NavigationView.OnNavigationItemSelectedListener我做了什么?公共类MainActivity扩展AppCompativeActivity实现NavigationView.OnNavigationItemSelectedListener,NetworkStateReceiverListener{}