4

你好世界如何始终检测我是否自动连接或断开互联网。示例:当我连接并关闭 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();

    }

请帮帮我

4

5 回答 5

3

你可以在任何你喜欢的地方简单地使用这个方法:)

 public static boolean isDeviceOnline(Context context) {

    ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
    boolean isOnline = (networkInfo != null && networkInfo.isConnected());
    if(!isOnline)
        Toast.makeText(context, " No internet Connection ", Toast.LENGTH_SHORT).show();

    return isOnline;
}

在您的活动中使用以下代码:

activity=this;
if(isDeviceOnline(activity))
 {
 //you are online
 }
 else
 {
 //you are offline
 } 
于 2015-10-13T09:02:38.500 回答
3

您可以 为此目的使用一个utility类。BroadcastReceiver下面的链接显示了一步一步的过程

http://viralpatel.net/blogs/android-internet-connection-status-network-change/

于 2015-10-13T08:50:52.543 回答
3

您可以使用Timer's schedule 来运行线程。注意最后一个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);
于 2015-10-13T08:50:59.210 回答
1

答案是BroadcastReceiver!每次您network connectivity从 WIFI/3g/ON/OFF 更改时都会收到通知。

看这里:http: //developer.android.com/training/monitoring-device-state/connectivity-monitoring.html

在这里:http ://www.grokkingandroid.com/android-getting-notified-of-connectivity-changes/

于 2015-10-13T08:57:09.027 回答
-2
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();

        }
于 2018-08-24T08:06:14.473 回答