当前位置: 首页 > 知识库问答 >
问题:

如何停止异步任务时,互联网连接,但没有互联网访问android

刘博雅
2023-03-14
String url = "http://xyzcloud.com/xyz/xyz.php";

这是我试图从云端获取数据的url,如果互联网已连接,则将执行异步任务。我编写了此方法,用于检查互联网是否已连接,在我的移动wifi中,当我尝试执行时,出现异常

public boolean checkOnlineState()
    {
        boolean val = false;
        ConnectivityManager CManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo NInfo = CManager.getActiveNetworkInfo();
        if (NInfo != null && NInfo.isConnectedOrConnecting()) {
            try {
                if (InetAddress.getByName(url).isReachable(10000))
                {
                    // host reachable
                    val=true;
                    Log.e("checkOnlineState", "" + val);
                }
                else
                {
                    // host not reachable
                    val = false;
                    Log.e("checkOnlineState", "" + val);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        return val;
    }

共有1个答案

娄利
2023-03-14
import android.app.Service;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

public class ConnectionDetector {

    private Context context;

    public ConnectionDetector(Context context) {

        this.context = context;
    }

    public boolean isConnected() {

        ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Service.CONNECTIVITY_SERVICE);

        if ( connectivity != null) {

            NetworkInfo info = connectivity.getActiveNetworkInfo();

            if (info != null) {

                if (info.getState() == NetworkInfo.State.CONNECTED) {

                    return true;
                }
            }
        }

        return false;
    }
}

例如,您可以利用它:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ConnectionDetector cd = new ConnectionDetector(this);

        if (cd.isConnected()) {
            // do something
        } else {
            //do something
        }

        setContentView(R.layout.activity_main);
    }
}

我在我的应用程序中使用这种方法(需要Internet连接),并且还没有遇到任何问题。

 类似资料:
  • Android我的设备与wifi连接,但如果wifi已连接,但这些没有互联网连接,该怎么做 以下是我尝试检查是否没有互联网连接的代码 当无法访问互联网时,它总是返回true

  • 若要使用PS Vita与互联网连接,需先准备无线通信的环境。 若您的住家等地无法通过无线通信,可使用公众无线LAN服务(Hotspot)在公众场所与互联网连接。 公众无线LAN服务的使用方法与费用会因该服务的提供者而异。详细请询问该服务的提供者。 使用Wi-Fi连接 若要使用Wi-Fi与互联网连接,需准备以下内容。此外,接入点的设定通常会通过电脑进行。 与网络服务商签订合约 接入点或无线路由器 接

  • 问题内容: 正在使用Spring,并且·具有以下定义: ..... 当我的互联网连接断开时,我无法通过tomcat或码头运行我的应用程序。 它给: 有什么建议如何解决吗? 问题答案: 如果正确配置了名称空间且XSD文件位于类路径中,则无需在schemaLocation URL中使用classpath:协议。 Spring doc“ 注册处理程序和模式 ”显示了应如何完成。 在你的情况下,问题可能出

  • 可确认目前连接的接入点信息或网络的连接状态。

  • 进行与互联网间的连接测试,并显示结果。 名称* 目前使用的互联网连接之连接名称 SSID* 接入点的SSID 获取IP地址 显示是否可获取IP地址 互联网连接 显示是否可与互联网连接 登陆PlayStation®Network 显示是否能登陆PlayStation®Network NAT类型 显示PS Vita与互联网的连接方式 使用游戏的通信功能等时,可确认与其它PS Vita间的连接稳定性。

  • 我有一个SpringBoot应用程序,它实现了一个Websocket服务器(SockJS)。 我可以在本地网络上将客户端连接到该服务器,只要托管该应用程序的Ubuntu机器可以访问互联网。 2016-10-27 11:22:20.802调试9390---[nio-8085-exec-9]o.a.coyote.http11.org.apache.tomcat.util.net.NioEndpoint