即使在启用互联网连接后,应用程序仍停留在启动画面

App stuck at Splash screen even after enabling internet connection

我设置启动画面 activity 以检查活动的互联网连接。如果没有 Internet 连接,我会设置一个弹出的警告对话框和一个打开 Internet 设置的按钮。现在我面临的问题是,即使在启用互联网连接并返回后,它仍停留在启动画面中。应用程序无法打开新 activity.

SplashActivity.java

public class SplashActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);

    boolean mobileNwInfo;
    ConnectivityManager conxMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
    try {     
          mobileNwInfo = conxMgr.getActiveNetworkInfo().isConnected();   
      }
    catch (NullPointerException e) {     
          mobileNwInfo = false;
      }
    if (!mobileNwInfo) {
        new SweetAlertDialog(this, SweetAlertDialog.WARNING_TYPE)
                .setTitleText("Info ")
                .setCustomImage(R.mipmap.alert)
                .setContentText("No internet connection!")
                .setConfirmText("OPEN SETTINGS")
                .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
                    @Override
                    public void onClick(SweetAlertDialog sDialog) {
                        sDialog.dismissWithAnimation();
                        startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0);
                    }
                }).show();
    }
    else
    {
      Splash();
    }
}

public void Splash()
{
    int SPLASH_TIME_OUT = 5000;
    new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {

            Intent i = new Intent(SplashActivity.this, Main2Activity.class);
            startActivity(i);
            finish();
        }
    }, SPLASH_TIME_OUT);
}
}
public class SplashActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);

boolean mobileNwInfo;
ConnectivityManager conxMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
try { 
   mobileNwInfo = conxMgr.getActiveNetworkInfo().isConnected(); 
    }
catch (NullPointerException e) { mobileNwInfo = false; }
if (!mobileNwInfo) {
    new SweetAlertDialog(this, SweetAlertDialog.WARNING _TYPE)
            .setTitleText("Info ")
            .setCustomImage(R.mipmap.alert)
            .setContentText("No internet connection!")
            .setConfirmText("OPEN SETTINGS")
            .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
                @Override
                public void onClick(SweetAlertDialog sDialog) {
                    sDialog.dismissWithAnimation();
                    startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0);
                }
            })
            .show();
}
else
{
  Splash();
}


}

  public void Splash()
 {
int SPLASH_TIME_OUT = 5000;
new Handler().postDelayed(new Runnable() {

    @Override
    public void run() {

        Intent i = new Intent(SplashActivity.this, Main2Activity.class);
        startActivity(i);
        finish();
    }
}, SPLASH_TIME_OUT);
}

  }

将此添加到 Manifest.xml

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

只需将此代码粘贴到 onStart() 中并删除其他 阻止 onCreate(Bundle savedInstanceState)

void onStart()
{
    boolean mobileNwInfo;
    ConnectivityManager conxMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
    try { 
           mobileNwInfo = conxMgr.getActiveNetworkInfo().isConnected(); 
        }catch (NullPointerException e) { mobileNwInfo = false; }


if (mobileNwInfo) {

  Splash();
}

}

您必须在 onResume() 中检查互联网状况。试试下面的代码:

public class SplashActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
    }

    @Override
    public void onResume() {
        super.onResume();
        if (!checkInternet()) {
            new SweetAlertDialog(this, SweetAlertDialog.WARNING_TYPE)
                    .setTitleText("Info ")
                    .setCustomImage(R.mipmap.alert)
                    .setContentText("No internet connection!")
                    .setConfirmText("OPEN SETTINGS")
                    .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
                        @Override
                        public void onClick(SweetAlertDialog sDialog) {
                            sDialog.dismissWithAnimation();
                            startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0);
                        }
                    })
                    .show();
        } else {
            Splash();
        }
    }

    public boolean checkInternet() {
        boolean mobileNwInfo;
        ConnectivityManager conxMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
        try {
            mobileNwInfo = conxMgr.getActiveNetworkInfo().isConnected();
        } catch (NullPointerException e) {
            mobileNwInfo = false;
        }
        return mobileNwInfo;
    }

    public void Splash() {
        int SPLASH_TIME_OUT = 5000;
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent i = new Intent(SplashActivity.this, Main2Activity.class);
                startActivity(i);
                finish();
            }
        }, SPLASH_TIME_OUT);
    }
}