首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查弱网络可用性

检查弱网络可用性
EN

Stack Overflow用户
提问于 2015-03-10 16:49:56
回答 2查看 1.9K关注 0票数 0

我使用volley异步任务从VPS下载数据并将其显示在片段和活动中。当我连接到公共网络时,我经常会遇到这个错误,而且网络信号非常微弱。我使用一个简单的网络检查功能,在应用程序显示吐司时,我没有连接到任何网络。在这些情况下,活动不会启动,并且会显示Toast。然而,当我在线和网络信号是非常微弱的,活动开始,截击运行和抛出一个错误

代码语言:javascript
复制
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).

在应用程序的这种状态下,当我单击导航项时,它会打开活动并抛出相同的错误。我就是这样检查连接的:

代码语言:javascript
复制
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;
            }

        }
    }

您对解决此错误或升级我的网络检查功能以检查弱网络信号有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2015-03-10 16:57:07

代码语言:javascript
复制
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  
    }

请检查这段代码。我希望这会有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2017-02-09 11:56:12

我在另一条线上找到了这个:

Get Signal Strength in Android

代码语言:javascript
复制
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);
    }
}

所以你可以检查信号强度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28969505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档