Android自动检查互联网连接

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

Hello world如何始终自动检测我是否已连接或断开与Internet的连接。 示例:当我连接并关闭3G或wifi时,在我启动3G或wifi 3秒钟后,吐司会显示我已断开连接,吐司会显示我已连接

我使用这个方法,但它会在应用程序启动时告诉我连接的状态,而不是在应用程序导航期间

 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();

        }