【问题标题】:How to check internet connection available or not when application start [duplicate]应用程序启动时如何检查可用的互联网连接[重复]
【发布时间】:2013-10-14 23:00:06
【问题描述】:

我想知道如何在应用程序启动之前检查互联网连接是否可用。当单击应用程序列表中的应用程序按钮时,我想显示对话框连接到互联网,或者请在启动此应用程序之前连接到互联网。

我试过了,但我做不到。

谁能帮帮我?

【问题讨论】:

    标签: android


    【解决方案1】:

    试试这个:

    public boolean isNetworkAvailable(Context context)
        {
            ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
            return activeNetworkInfo != null;
        }
    

    您应该从您的第一个 Activity 的 onCreate 中调用它,或者如果您想真正完成整个过程,您可以覆盖 Application,并在那里调用它(您需要在您的 Activity 中连接它)。

    希望这会有所帮助。

    【讨论】:

    【解决方案2】:

    第 1 步: 在 Manifest.xml 中添加访问 NetworkState 的权限。

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    

    第 2 步:

    public static boolean isNetworkAvailable(Context context) {
        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();
        if (netInfo != null && netInfo.isConnected()) {
            return true;
        }
        return false;
    }
    

    尝试这些步骤,如果您有任何问题,请告诉我...:)

    【讨论】:

    • 我想用应用程序负载来识别它。那么我应该在哪里添加这个?
    • 你可以在Utility.java中保留这个方法,你可以从Application类的onCreate()调用这个方法。有关应用程序类的更多详细信息,请关注this link
    【解决方案3】:
    public boolean isNetworkAvailable(Context ct)
    {
        ConnectivityManager connectivityManager = (ConnectivityManager) ct.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        return activeNetworkInfo != null;
    }
    

    只需在此处发送上下文。如果有互联网,它将返回 True 否则返回 False

    【讨论】:

      【解决方案4】:

      试试这个:

      public static boolean isOnline(Context ctx) {
      
          NetworkInfo info = (NetworkInfo) ((ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
          if (info == null && !info.isConnected() ) {
              return false;
          }
          if (info.isRoaming()) {
              return false;
          }
          return true;
      }
      

      【讨论】:

        【解决方案5】:

        使用以下代码。

        package com.example.app;
        
        import android.content.Context;
        import android.net.ConnectivityManager;
        import android.net.NetworkInfo;
        
        
        public class ConnectionManager {
        
            private Context context;
        
            public ConnectionManager(Context context){
                this.context = context;
            }
            public boolean isConnectingToInternet(){
        
                ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
                NetworkInfo[] info = cm.getAllNetworkInfo();
                if (info != null){
                    for (int i = 0; i < info.length; i++){
                        if (info[i].getState() == NetworkInfo.State.CONNECTED){
                            return true;
                        }
                    }
                }
                return false;
            }
        }
        

        然后在您的 MainActivity 中调用 isConnectingToInternet,如下所示。

        ConnectionManager cm = new ConnectionManager(this);
        
        boolean connection = cm.isConnectingToInternet();
        

        【讨论】:

        • 嗨,一旦我连接到我的 Wi-Fi,此方法返回 true,但没有可用的互联网连接,那么我如何检测网络是否真的可用
        • 然后你必须在后台调用 isConnectingToInternet() 方法不断检查互联网连接的可用性。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-07
        • 1970-01-01
        • 1970-01-01
        • 2019-08-22
        • 1970-01-01
        相关资源
        最近更新 更多