【问题标题】:Android - Checking internet connection before starting an intentAndroid - 在开始意图之前检查互联网连接
【发布时间】:2015-01-22 15:26:12
【问题描述】:

我想在打开意图之前检查互联网连接。我怎样才能做到这一点?我是这个领域的初学者。任何帮助将不胜感激。

【问题讨论】:

标签: android


【解决方案1】:

此方法检查手机是否已连接到互联网,如果已连接则返回 true,并且您需要更新清单文件

private boolean isNetworkConnected() {

  ConnectivityManager cm = (ConnectivityManager)   getSystemService(Context.CONNECTIVITY_SERVICE);
  NetworkInfo networkInfo = cm.getActiveNetworkInfo();
  if (networkInfo == null) {
      // There are no active networks.
      return false;
  } else
  return true;
 }

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

【讨论】:

  • 是否需要访问WIFI_STATE?
  • 它是可选的,但你也可以遵循它
  • "ACCESS_WIFI_STATE "允许应用程序访问有关 Wi-Fi 网络的信息
  • 我做了............顺便说一句,访问网络状态也会检查 wifi 网络,对吧?
【解决方案2】:

试试下面的代码

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

在清单中添加权限

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

【讨论】:

    【解决方案3】:

    在开始新 Intent 之前使用ConnectivityManager,如果isConnectedOrConnecting() 返回true,您可以继续使用Intent.startActivity()

    不要忘记清单中的android.permission.ACCESS_NETWORK_STATE

    查看重复的here 以获得更深入的解释

    【讨论】:

      【解决方案4】:

      非常简单地将这个函数复制到你想要 Intent 的 Activity。

      public boolean CheckInternet() {
              ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
              if (connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||
                      connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
                  //we are connected to a network
                  return true;
              }
              return false;
          }//end of check int
      

      现在在 Intent 之前只需在 if 条件下调用这个函数

      if(CheckInternet()){
      Intent intent=new Intent(this,NextActivity.class);
      startActivity(intent);
      }
      else{
      Toast.makeText(this, "No Internet.", Toast.LENGTH_SHORT).show();
      }
      

      不要忘记在 AndroidManifest.xml 中添加这些行

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

      谢谢。

      【讨论】:

        猜你喜欢
        • 2012-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多