我的应用程序首先从互联网加载数据(我正在使用网络服务)我想在应用程序启动时检查互联网访问。
- 我想检查一下 3G 或 WIFI 或 GPRS 或任何其他形式的互联网是否可用。
- 如果不可用,请向用户发送“您需要访问互联网”之类的消息并退出应用程序。(目前,如果无法访问互联网,我的应用程序中会出现强制关闭错误)
- 如果可用,请正常启动我的应用程序。
- 此外,我的应用程序在不同阶段从 web 服务获取数据,在每个阶段或操作之前,我想首先检查互联网访问。
我该怎么做呢 ?
我的应用程序首先从互联网加载数据(我正在使用网络服务)我想在应用程序启动时检查互联网访问。
我该怎么做呢 ?
你可以使用我的方法:
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;
}
您可以使用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
}
我还没有测试过代码,所以剪切和粘贴可能不是一个好主意,但这应该会给你一个很好的起点。如果您查看文档,还有很多其他信息。
此外,通过更改代码来处理缺乏连接可能是一个想法,这样如果没有连接它就不会崩溃,可能会显示默认加载屏幕?此外,即使有可用的连接,您的应用也可能无法获取数据,因此您也需要处理这种情况。
NetworkInfo i = conMgr.getActiveNetworkInfo();
if (i == null)
return false;
if (!i.isConnected())
return false;
if (!i.isAvailable())
return false;
return true;