7

我的应用程序首先从互联网加载数据(我正在使用网络服务)我想在应用程序启动时检查互联网访问。

  1. 我想检查一下 3G 或 WIFI 或 GPRS 或任何其他形式的互联网是否可用。
  2. 如果不可用,请向用户发送“您需要访问互联网”之类的消息并退出应用程序。(目前,如果无法访问互联网,我的应用程序中会出现强制关闭错误)
  3. 如果可用,请正常启动我的应用程序。
  4. 此外,我的应用程序在不同阶段从 web 服务获取数据,在每个阶段或操作之前,我想首先检查互联网访问。

我该怎么做呢 ?

4

3 回答 3

7

你可以使用我的方法:

public static boolean isNetworkAvailable(Context context) 
{
    ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

    if (connectivity != null) 
    {
        NetworkInfo[] info = connectivity.getAllNetworkInfo();

        if (info != null) 
        {
            for (int i = 0; i < info.length; i++) 
            {
                Log.i("Class", info[i].getState().toString());
                if (info[i].getState() == NetworkInfo.State.CONNECTED) 
                {
                    return true;
                }
            }
        }
    }
    return false;
}
于 2012-04-18T04:54:01.987 回答
3

您可以使用ConnectivityManager. 所有需要的信息都在这里

http://developer.android.com/reference/android/net/ConnectivityManager.html

您可能希望在onStart()初始活动的方法中加入这样的内容(取决于代码中连接的启动位置和数据的下载位置)

ConnectivityManager cm =  (ConnectivityManager) Context.getSystemService(Context.CONNECTIVITY_SERVICE);

if (cm.getAllNetworkInfo().isConnected()) {
 //proceed with loading 
} else { 
//showErrorDialog 
}

我还没有测试过代码,所以剪切和粘贴可能不是一个好主意,但这应该会给你一个很好的起点。如果您查看文档,还有很多其他信息。

此外,通过更改代码来处理缺乏连接可能是一个想法,这样如果没有连接它就不会崩溃,可能会显示默认加载屏幕?此外,即使有可用的连接,您的应用也可能无法获取数据,因此您也需要处理这种情况。

于 2012-04-17T15:54:16.447 回答
1
NetworkInfo i = conMgr.getActiveNetworkInfo();
  if (i == null)
    return false;
  if (!i.isConnected())
    return false;
  if (!i.isAvailable())
    return false;
  return true;
于 2012-04-18T05:58:16.920 回答