我有通过两个操作检查Internet连接的代码。如果Internet连接为ON,则应用程序将启动一项特定的活动。如果Internet断开连接,该应用程序将显示一条消息,要求用户连接到Internet继续正常使用该应用程序。
因此,我要打开“无线设置页”,然后在用户enabling Wi-Fi, it should open a SplashScreen2 activity
时打开。这非常重要。仅在启用WI-FI或Internet连接之后。
但是,我的代码不是在if connection == false
之后变为true
时等待用户连接到Internet,而是直接将其关闭,因为我放了finish();
。我不希望我的应用程序完成它,也不知道该怎么做。我需要一些帮助。
有我的代码:
public class Splash extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splashscreen_layout);
ConnectivityManager connectivitymanager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkinfo = connectivitymanager.getActiveNetworkInfo();
final boolean connected = networkinfo != null && networkinfo.isAvailable()
&& networkinfo.isConnected();
Log.v("Network state : ", connected + "");
Thread splashThread = new Thread() {
@Override
public void run() {
try {
int waited = 0;
while (waited < 5000) {
sleep(100);
waited += 100;
}
} catch (InterruptedException e) {
// do nothing
} finally {
Looper.prepare();
if (connected == false) {
Splash.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast toast = Toast.makeText(Splash.this, "You must connect to the Internet to continue", Toast.LENGTH_LONG);
toast.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
toast.show();
}
});
**finish();**
} else {
finish();
startActivity(new Intent(Splash.this,
SplashScreen2.class));
}
Looper.loop();
}
}
};
splashThread.start();
}
}
最佳答案
而不是使用finish();在您的代码中,您可以打开设置页面,以便用户可以连接到互联网,并且当您打开设置页面时,不要像这样完成当前活动:
Intent intent=new Intent(Settings.ACTION_WIRELESS_SETTINGS);
startActivity(intent);
这样,用户可以再次尝试进行下一个活动。