如何检测android中热点网络上的Internet连接

时间:2016-03-07 14:31:24

标签: android

我和我的朋友们共同构建了一个需要互联网连接才能运行的Android应用程序。这是我们的第一个应用程序,我们只是初学者,非常感谢堆栈溢出。它帮助了我们很多。

所以我使用下面的代码来检测连接性

public class ConnectionDetector {

private Context _context;

public ConnectionDetector(Context context){
    this._context = context;
}

public boolean isConnectingToInternet(){
    ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivity != null)
    {
        NetworkInfo[] info = connectivity.getAllNetworkInfo();
        if (info != null)
            for (int i = 0; i < info.length; i++)
                if (info[i].getState() == NetworkInfo.State.CONNECTED)
                {
                    return true;
                }

    }
    return false;
  }
}

并在splash活动中使用了以下方法:

cd = new ConnectionDetector(getApplicationContext());

            if (cd.isConnectingToInternet()) {
                Intent intent = new Intent(SplashActivity.this, Home.class);
                SplashActivity.this.startActivity(intent);
                SplashActivity.this.finish();
            } else {
                Toast.makeText(SplashActivity.this, "No Internet Connection. Press back to exit", Toast.LENGTH_SHORT).show();
                finish();
            }

所以问题是当移动设备连接到移动数据时它工作正常但是当它连接到热点网络时,它只检测网络连接而不是互联网。

因此方法返回true并进入下一个活动,应用程序崩溃。

有什么方法可以解决这个问题吗?

我只是希望我的应用程序不会崩溃。

1 个答案:

答案 0 :(得分:1)

可能会帮助你。

  public boolean isInternetConnected(Context context) {
            ConnectivityManager cm = (ConnectivityManager) context.getSystemService
                    (Context
                            .CONNECTIVITY_SERVICE);
            NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
            return activeNetwork != null && activeNetwork.isConnectedOrConnecting();
        }