【问题标题】:Android internet connection test安卓网络连接测试
【发布时间】:2012-02-20 17:03:52
【问题描述】:

我有以下代码在调用 AsyncTask 方法之前检查是否有 Internet 连接,“Task”然后从 Internet 检索信息。只有当手机处于飞行模式或者手机未连接到外部无线互联网时,它似乎才真正起作用,即没有在手机计划附带的自己的互联网上工作。

如果手机连接到外部无线调制解调器但调制解调器未连接到互联网,我会强制关闭!

 if (isOnline()) {
    new Task().execute();
 } else {
     Toast.makeText(this, "There seems to be no internet access, please try again later!", Toast.LENGTH_LONG).show();
 }

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

有没有人有“行之有效”的方法来解决这个问题?

干杯,

迈克。

【问题讨论】:

    标签: android


    【解决方案1】:

    我用来检查If case中的另一个条件

     netInfo .isAvailable()
    

    我认为这是唯一的方法,我们可以知道互联网是否可用。

    【讨论】:

      【解决方案2】:

      检查此代码sn-p

      try {
      
          ConnectivityManager nInfo = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
          nInfo.getActiveNetworkInfo().isConnectedOrConnecting();
      
          Log.d(tag, "Net avail:"
                  + nInfo.getActiveNetworkInfo().isConnectedOrConnecting());
      
          ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
          NetworkInfo netInfo = cm.getActiveNetworkInfo();
          if (netInfo != null && netInfo.isConnectedOrConnecting()) {
              Log.d(tag, "Network available");
              return true;
          } else {
              Log.d(tag, "Network not available");
              return false;
          }
      
      } catch (Exception e) {
          return false;
      }
      

      确保您已在 android-manifest.xml

      中写入以下权限详细信息
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
      

      查看以下问题了解更多详情 android network connectivity

      【讨论】:

        【解决方案3】:


        不,它不像它在每种模式下都能正常工作。我试过自己用这个

        public boolean isOnline() {
            boolean flag = false;
            ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
            if (cm.getActiveNetworkInfo() != null) {
                flag = cm.getActiveNetworkInfo().isConnectedOrConnecting();
            }
            return flag;
        }
        

        【讨论】:

          【解决方案4】:

          看看这个:

          ConnectivityManager cm,cm1;
          
          
          
          
          private static boolean isConnected(Context context) {
          
                  NetworkInfo networkInfo = null;
          
                  if (cm != null) {
                      networkInfo = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
          
                  }
                  return networkInfo == null ? false : networkInfo.isConnected();
              }
          
              private static boolean isConnected1(Context context) {
          
                  NetworkInfo networkInfo1 = null;
          
                  if (cm1 != null) {
          
                      networkInfo1 = cm1.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
          
                  }
                  return networkInfo1 == null ? false : networkInfo1.isConnected();
              }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-11-20
            • 2011-05-05
            • 2022-07-22
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多