Android自动检查互联网连接
Hello world如何始终自动检测我是否已连接或断开与Internet的连接。 示例:当我连接并关闭3G或wifi时,在我启动3G或wifi 3秒钟后,吐司会显示我已断开连接,吐司会显示我已连接 我使用这个方法,但它会在应用程序启动时告诉我连接的状态,而不是在应用程序导航期间Android自动检查互联网连接,android,connection,wifi,3g,disconnection,Android,Connection,Wifi,3g,Disconnection,Hello world如何始终自动检测我是否已连接或断开与Internet的连接。 示例:当我连接并关闭3G或wifi时,在我启动3G或wifi 3秒钟后,吐司会显示我已断开连接,吐司会显示我已连接 我使用这个方法,但它会在应用程序启动时告诉我连接的状态,而不是在应用程序导航期间 ConnectivityManager manager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); //For 3G check
ConnectivityManager manager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
//For 3G check
boolean is3g = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
.isConnectedOrConnecting();
//For WiFi Check
boolean isWifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
.isConnectedOrConnecting();
if (!is3g && !isWifi)
{
Toast.makeText(getApplicationContext(),"Network Connection is OFF", Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(getApplicationContext(),"Network Connection is ON", Toast.LENGTH_LONG).show();
}
请帮助我为此,您可以使用
实用程序
类和广播接收器
。下面的链接显示了一步一步的步骤
您可以使用
计时器的时间表来运行线程。请注意最后一个3000
,它将每3秒运行一次
Timer timer = new Timer();
timer.schedule(new TimerTask()
{
@Override
public void run()
{
ConnectivityManager manager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
//For 3G check
boolean is3g = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
.isConnectedOrConnecting();
//For WiFi Check
boolean isWifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
.isConnectedOrConnecting();
if (!is3g && !isWifi)
{
Toast.makeText(getApplicationContext(),"Network Connection is OFF", Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(getApplicationContext(),"Network Connection is ON", Toast.LENGTH_LONG).show();
}
}
}, 0, 3000);
答案是BroadcastReceiver
!
每次从WIFI/3g/开/关更改网络连接时,您都会收到通知
看这里:
这里:你可以在任何你喜欢的地方使用这个方法:)
在您的活动中使用以下代码:
activity=this;
if(isDeviceOnline(activity))
{
//you are online
}
else
{
//you are offline
}
很好的解决方案。正是我需要的!我得到“不能在未调用Looper.prepare()的线程上烤面包”error@A.Najafi这个错误消息有点误导人。您所做的是从工作线程调用它。你需要从主线程中调用你的祝酒词,而这个代码可能会回答你可能会考虑添加一些解释性句子的问题,因为这会增加你的答案对其他用户的价值。
activity=this;
if(isDeviceOnline(activity))
{
//you are online
}
else
{
//you are offline
}
private boolean checknet(){
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkinfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkinfo != null && activeNetworkinfo.isConnected();
}
//write below methodcall in every button click event wherever u want to check internet connection
if(!checknet())
{
Toast.makeText(getApplicationContext(), "No Internet Connecction.", Toast.LENGTH_SHORT).show();
}