4

サーバーがダウンしているUnknownHostException場合、またはインターネット接続がない場合は、 がスローされます。UnknownHostExceptionサーバーがダウンしているか、インターネットに接続されていないために がスローされたかどうかを判断するにはどうすればよいですか?

この理由は、エラーの原因についてユーザーに通知する必要があるためです。そして、私はこのようなものを「ごめんなさい。サービスは現在利用できません。後でもう一度やり直してください」または「インターネット接続がない」と表示する必要があります。

4

3 に答える 3

4

ネットワークの状態をチェックして、インターネット接続が利用可能かどうかを判断できます (ただし、100% 信頼できるわけではありません)。

ConnectivityManager conMgr =  (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);

if ( conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED 
    ||  conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING  ) {
...
}

編集 :

IMHO、電話のインターネット接続がダウンしていることを確認する方法はありません. ただし、ネットワークの状態を確認するだけでなく、インターネット上の Web サイトから小さなページをダウンロードするような簡単なテストを行うこともできます (信頼できるサーバーを選択してください)。

この二重テストの結果は、99% の確率で正確である必要があります。

于 2012-04-03T12:30:42.547 に答える
2

UnKnownHostExceptionがスローされ、ホストのIPアドレスを判別できなかったことを示します。インターネット接続やサーバーがダウンしていないわけではありません。

また、マニフェストファイルにインターネット許可を追加したかどうかを確認してください。

このリンクを参照してください

インターネット接続を確認するには、bwlowメソッドを使用します::

//To check whether network connection is available on device or not
public boolean checkInternetConnection(Activity _activity) {
    ConnectivityManager conMgr = (ConnectivityManager) _activity.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (conMgr.getActiveNetworkInfo() != null
            && conMgr.getActiveNetworkInfo().isAvailable()
            && conMgr.getActiveNetworkInfo().isConnected())
        return true;
    else
        return false;
}//checkInternetConnection()

また、サーバーがほとんどダウンしている場合は、接続タイムアウト例外が発生します

于 2012-04-03T12:33:29.740 に答える
0

を使用しConnectivityManagerて、ネットワーク ステータスを確認できます。

ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
bool hasConnectivity = connectivityManager.getActiveNetworkInfo().isConnectedOrConnecting();
于 2012-04-03T12:29:33.987 に答える