我想在我的Android应用程序中显示连接不可用的警告。
我在我的应用程序中调用了一些休息请求。要检查此网络不可用情况,我手动断开我的笔记本电脑中的wifi(我在模拟器中测试)。
我称之为服务的代码在这里
resp = client.execute(httpPostRequest);
在这里,我正在捕捉异常
catch (IllegalStateException e) {
//assertTrue(e.getLocalizedMessage(), false);
e.printStackTrace();
} catch (ClientProtocolException e) {
//assertTrue(e.getLocalizedMessage(), false);
e.printStackTrace();
} catch (IOException e) {
//assertTrue(e.getLocalizedMessage(), false);
e.printStackTrace();
}
当我得到异常时,我尝试获取设备网络连接的状态 这个功能
public boolean IsInternetConnectted()
{
ConnectivityManager conMgr = (ConnectivityManager)this.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo i = conMgr.getActiveNetworkInfo();
conMgr = null;
if (i == null)
return false;
if (!i.isConnected())
return false;
if (!i.isAvailable())
return false;
return true;
}
即使wi-fi断开连接,我的模拟器也会从此函数返回true。
如何解决这种情况?
答案 0 :(得分:4)
使用此代码段:
// added as an instance method to an Activity
boolean isNetworkConnectionAvailable() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
if (info == null) return false;
State network = info.getState();
return (network == NetworkInfo.State.CONNECTED || network == NetworkInfo.State.CONNECTING);
}
答案 1 :(得分:2)
您好请检查以下答案:
http://stackoverflow.com/questions/13217676/how-to-check-the-real-internet-connected-in-android/13217956#13217956
但我想建议您建议您在真实设备而不是模拟器中测试连接代码。因为模拟器有时候没有给出准确的输出。
答案 2 :(得分:1)
我在我的模拟器中发现了同样的错误...... 但是在移动设备上试试你的代码这段代码运行完美,并且在真实设备中没有出现任何错误...
答案 3 :(得分:0)
试试这个
public static Boolean checknetwork(Context mContext) {
NetworkInfo info = ((ConnectivityManager) mContext
.getSystemService(Context.CONNECTIVITY_SERVICE))
.getActiveNetworkInfo();
if (info == null || !info.isConnected())
{
return false;
}
if (info.isRoaming()) {
// here is the roaming option you can change it if you want to
// disable internet while roaming, just return false
return true;
}
return true;
}
答案 4 :(得分:0)
试试这个:
public static boolean isOnline(Context context) {
boolean state=false;
ConnectivityManager cm = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo wifiNetwork =
cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (wifiNetwork != null) {
state=wifiNetwork.isConnectedOrConnecting();
}
NetworkInfo mobileNetwork =
cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (mobileNetwork != null) {
state=mobileNetwork.isConnectedOrConnecting();
}
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork != null) {
state=activeNetwork.isConnectedOrConnecting();
}
return state;
}
为了获得更好的结果,请检查真实设备..
答案 5 :(得分:0)
发送Http请求,然后检查您获得的200
是否已连接到互联网的其他响应代码,否则您可以相应地通知用户
答案 6 :(得分:0)
检查互联网连接
public class CheckNetwork {
private static final String TAG = CheckNetwork.class.getSimpleName();
public static boolean isInternetAvailable(Context context)
{
NetworkInfo info = (NetworkInfo) ((ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
if (info == null)
{
Log.d(TAG,"no internet connection");
//Toast.makeText(context, "No Internet Connection", 1000);
return false;
}
else
{
if(info.isConnected())
{
Log.d(TAG," internet connection available...");
return true;
}
else
{
Log.d(TAG," internet connection");
return true;
}
}
}
}
在您的活动类
中 if(CheckNetwork.isInternetAvailable(YourActivity.this))
{
//your studd
}
使用f7断开连接并在仿真器中连接。我不确定。谷歌一下。 或者,您可以使用广播接收器或服务。
答案 7 :(得分:0)
试试这个:
public static boolean isNetworkAvailable(Context context)
{
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
return (info != null);
}