我使用volley和异步任务从VPS下载数据并将其显示在片段和活动中。当我连接到公共网络时,我经常会遇到这个错误,而且网络信号非常微弱。我使用一个简单的网络检查功能,在应用程序显示吐司时,我没有连接到任何网络。在这些情况下,活动不会启动,并且会显示Toast。然而,当我在线和网络信号是非常微弱的,活动开始,截击运行和抛出一个错误
java.net.ConnectException: failed to connect to www.website.com/XX.XX.XX.XXX (port 80) after 2500ms: isConnected failed: EHOSTUNREACH (where Xs are the server address).在应用程序的这种状态下,当我单击导航项时,它会打开活动并抛出相同的错误。我就是这样检查连接的:
public static boolean isInternetAvailable(Context context)
{
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
if (info == null) {
Log.d(TAG,"no internet connection");
return false;
}
else
{
if(info.isConnected()) {
Log.d(TAG," internet connection available...");
return true;
}
else {
Log.d(TAG," noninternet connection");
return false;
}
}
}您对解决此错误或升级我的网络检查功能以检查弱网络信号有什么想法吗?
发布于 2015-03-10 16:57:07
ConnectivityManager connectivityManager = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
DetailedState detailedState = info.getDetailedState();
if(detailedState == DetailedState.VERIFYING_POOR_LINK){
// Your checks goes here
}请检查这段代码。我希望这会有所帮助。
发布于 2017-02-09 11:56:12
我在另一条线上找到了这个:
Get Signal Strength in Android
public class myPhoneStateListener extends PhoneStateListener {
public int signalStrengthValue;
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
super.onSignalStrengthsChanged(signalStrength);
if (signalStrength.isGsm()) {
if (signalStrength.getGsmSignalStrength() != 99)
signalStrengthValue = signalStrength.getGsmSignalStrength() * 2- 113;
else
signalStrengthValue = signalStrength.getGsmSignalStrength();
} else {
signalStrengthValue = signalStrength.getCdmaDbm();
}
txtSignalStr.setText("Signal Strength : " + signalStrengthValue);
}
}所以你可以检查信号强度。
https://stackoverflow.com/questions/28969505
复制相似问题