检查是否存在ACTIVE Internet连接

时间:2017-10-28 05:25:20

标签: android networking

我一直在摆弄Android开发,我在尝试检查是否存在ACTIVE Internet连接时遇到了一些麻烦,即使网络已开启。

有时即使您连接到WIFI或DATA,有时也没有连接。

每次点击按钮,我的应用程序都会崩溃。我仍然是一个关于布尔方法的菜鸟。

感谢您提前提供任何帮助,如果您想到任何更好的方法,我会感激不尽:D

这是我的主动:

  @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

btnCheck = (Button) findViewById(R.id.btnCheck);

    btnCheck.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if (isInternetAvailable()){
                Toast.makeText(MainActivity.this, "There is a connection", Toast.LENGTH_SHORT).show();
            }
            else{
                Toast.makeText(MainActivity.this, "NO connection", Toast.LENGTH_SHORT).show();
            }

        }
    });

}

public boolean isInternetAvailable() {
   try {
        int timeoutMs = 1500;
        Socket sock = new Socket();
        SocketAddress sockaddr = new InetSocketAddress("8.8.8.8", 80);

        sock.connect(sockaddr, timeoutMs);
        sock.close();

        return true;
    } catch (IOException e) { return false; }

}

1 个答案:

答案 0 :(得分:0)

尝试以下代码

 Boolean isInternetPresent = false;
    ConnectionDetector cd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    btnCheck = (Button) findViewById(R.id.btnCheck);

    btnCheck.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            cd = new ConnectionDetector(getApplicationContext());
            isInternetPresent = cd.isConnectingToInternet();

            if (isInternetPresent) {

                Toast.makeText(MainActivity.this, "There is a connection", Toast.LENGTH_SHORT).show();

            }else {

              Toast.makeText(MainActivity.this, "NO connection", Toast.LENGTH_SHORT).show();

                }

            }
        });

    }

也不要忘记在清单文件中添加互联网权限。