如何在android应用程序启动时检查互联网是否可用?
我的应用程序首先从internet加载数据(我正在使用webservice) 我想在应用程序启动时检查互联网接入如何在android应用程序启动时检查互联网是否可用?,android,connectivity,Android,Connectivity,我的应用程序首先从internet加载数据(我正在使用webservice) 我想在应用程序启动时检查互联网接入 我想检查一下是否有任何形式的互联网,无论是3G、WIFI、GPRS还是其他任何形式 如果不可用,请向用户发送消息,如“您需要访问互联网”,然后退出应用程序。(如果没有互联网接入,当前我的应用程序中出现强制关闭错误) 如果可用,请正常启动我的应用程序 另外,我的应用程序是在不同的阶段从webservice获取数据,在每个阶段或操作之前,我想首先检查互联网访问 我该怎么做 您可以使用Co
我该怎么做 您可以使用
ConnectivityManager
完成所有这些操作。此处提供了所有必需的信息
您可能希望在初始活动的onStart()
方法中粘贴类似的内容(取决于在代码中启动连接和下载数据的位置)
我还没有测试te代码,所以剪切和粘贴可能是个坏主意,但这应该给您一个好的起点。如果你查看文档,还有很多其他信息
另外,通过更改代码来处理缺乏连接的问题可能是一个好主意,这样当没有连接时它就不会崩溃,pre-haps会显示默认的加载屏幕吗?此外,即使有可用的连接,您的应用程序也可能无法获取数据,因此您也需要处理这种情况。您可以使用我的方法:
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;
}
公共静态布尔值isNetworkAvailable(上下文)
{
ConnectivityManager connectivity=(ConnectivityManager)context.getSystemService(context.connectivity\u SERVICE);
if(连接性!=null)
{
NetworkInfo[]info=connectivity.getAllNetworkInfo();
如果(信息!=null)
{
对于(int i=0;i
请参见前面的答案。如果我的wifi连接没有工作的internet连接,则代码返回true。你有其他选择吗?@MoHaNKRaJ嗨…很抱歉迟了回复。。以上代码适用于所有类型的网络连接。因此,如果连接了Wifi,则显然会返回true。如果只想检查移动数据连接的条件,则不要使用getAllNetworkInfo()
方法。请使用getNetworkInfo(ConnectivityManager.TYPE\u mobile)
,这样将只检查移动数据connection@dreamcoder这还不足以检查信息=空则网络已连接?@dreamcoder事实上,我只面对WiFi的问题,WiFi路由器没有互联网连接(只需打开WiFi路由器而不需要任何连接),但我们可以从手机连接到WiFi,对吗?这里我应该得到错误的值,因为我们无法访问互联网。但我已经连接到WiFi,上面提到的方法返回真值,因此,当从手机访问在线内容时,我遇到了例外情况。
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;
}
NetworkInfo i = conMgr.getActiveNetworkInfo();
if (i == null)
return false;
if (!i.isConnected())
return false;
if (!i.isAvailable())
return false;
return true;