1

デバイスのネットワーク ステータスを確認しています。使用:-

private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager 
              = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();

これをもう少し進めて、デバイスがインターネットまたはhttp://www.google.comなどの特定のサイトにアクセスできるかどうか、および true を返すことができるかどうか、できない場合は確認したいと思います。 false として返します。

私のコードの問題は、デバイスがルーターに接続されていて、ルーターがオフラインの場合に true を返すことです。実際のインターネット接続チェックが必要です。

修正コード

public void GoToStation(View v)
{

    try {
        InetAddress ina = InetAddress.getByName("http://188.65.176.98/");

        if(ina.isReachable(3000)) {

                  Intent myIntent = new Intent(MainActivity.this, CustomizedListViewStation.class);
                  startActivityForResult(myIntent, 0);

        } else {
            Toast.makeText(this, "You need a data connection to view Safety Zones", Toast.LENGTH_LONG).show(); 
        } 
    } catch (IOException ioe) {
        ioe.printStackTrace();

    }
4

2 に答える 2

3

次のようなことができます。

boolean isAvailable(URL url){
    try {
      HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
      urlConnection.connect();
      urlConnection.disconnect();
      return true;
    } catch (IOException e) {
          Log.e(TAG, "Exception", e);
    }
    return false;
}
于 2013-08-07T20:11:47.310 に答える