即使在启用互联网连接后,应用程序仍停留在启动画面
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);
}
}
我设置启动画面 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);
}
}