Android 如果internet连接错误,则应等待连接
我有两个动作检查互联网连接的代码。如果Internet连接打开,应用程序将启动一个特定的活动。如果Internet断开连接,应用程序将显示一条消息,要求连接到Internet的用户继续正常使用该应用程序 所以,我想打开一个无线设置页面,然后当用户Android 如果internet连接错误,则应等待连接,android,android-intent,android-internet,Android,Android Intent,Android Internet,我有两个动作检查互联网连接的代码。如果Internet连接打开,应用程序将启动一个特定的活动。如果Internet断开连接,应用程序将显示一条消息,要求连接到Internet的用户继续正常使用该应用程序 所以,我想打开一个无线设置页面,然后当用户启用Wi-Fi时,它应该打开一个SplashScreen2活动。这非常重要。在启用WI-FI或INTERNET连接之后 但是,当if connection==false然后变为true时,我的代码不是等待用户连接到Internet,应用程序只是关闭它,因
启用Wi-Fi时,它应该打开一个SplashScreen2活动。这非常重要。在启用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();
}
}
公共类启动扩展活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.splashscreen_布局);
ConnectivityManager ConnectivityManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_服务);
NetworkInfo NetworkInfo=connectivitymanager.getActiveNetworkInfo();
最终布尔值connected=networkinfo!=null&&networkinfo.isAvailable()
&&networkinfo.isConnected();
Log.v(“网络状态:,已连接+”);
线程飞溅线程=新线程(){
@凌驾
公开募捐{
试一试{
int=0;
等待时间(等待时间<5000){
睡眠(100);
平均值+=100;
}
}捕捉(中断异常e){
//无所事事
}最后{
Looper.prepare();
if(connected==false){
Splash.this.rununuithread(新的Runnable(){
@凌驾
公开募捐{
Toast Toast=Toast.makeText(Splash.this,“必须连接到Internet才能继续”,Toast.LENGTH\u LONG);
toast.setGravity(Gravity.BOTTOM | Gravity.CENTER_卧式,0,0);
toast.show();
}
});
**完成()**
}否则{
完成();
startActivity(新意图(Splash.this、,
(2.类别),;
}
loop.loop();
}
}
};
splashtread.start();
}
}
而不是使用finish();在您的代码中,您可以打开“设置”页面,以便用户可以连接到internet,并且当您打开“设置”页面时,不要像这样完成当前活动:
Intent intent=new Intent(Settings.ACTION_WIRELESS_SETTINGS);
startActivity(intent);
通过这种方式,用户可以再次尝试进行下一个活动。可能重复的“否”,这是一个不重复的问题!!我的问题不同!!你们生活在异步世界中,所以你们应该对异步事件做出反应,不要阻止你们的用户,这是不自然的。例如,您点了一杯咖啡,您会站着等一杯咖啡,还是会检查您的电子邮件,发短信给您的朋友,等咖啡准备好了再拿?我完全按照您说的做了,然后在代码中删除了“finish();”。设置无线页面已打开,但我的应用程序已停止并同时完成。必须存在一些异常,请检查您的logcat}catch(InterruptedException e){//什么都不做请将您的日志发布到您获得例外的地方我正在尝试这样做。我单击了作为android应用程序的调试…当应用程序启动时,屏幕冻结,什么也没有发生。因此,我的另一个问题是,当设置无线页面打开,并且我启用wi-fi时,例如,它应该打开SPLAhsScreen 2活动。上面的代码在启用wi-fi后没有任何操作。我应该如何操作?