1

Android アプリでインターネット接続を確認する必要があります。

私はこのコードを使用しています:

 ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo ni = cm.getActiveNetworkInfo();
        if (ni!=null && ni.isAvailable() && ni.isConnected()) {
            return true;
        } else {
            return false; 
        }

そして、次のエラーを渡すことができません:

メソッド getSystemService(String) はタイプ ConxsMTD に対して未定義です

使用してみgetContext().getSystemServiceましたが、次のエラーで失敗しました:

メソッド getContext() は、タイプ ConxsMTD に対して未定義です

私が間違っていることは何か分かりますか?

4

2 に答える 2

1

これはあなたの与えられた例を修正しませんが、私の例は機能し、より単純です(私の考えでは)。

あなたがしたいことは、接続を確認するために「ping」を送信することです(それを呼び出したい場合)。接続が完了すると、まだ接続されていることがわかります。IOExceptionまたはが表示された場合はNullPointerException、おそらくタイムアウトしており、接続されていません。

try {
    URL url = new URL("http://www.google.com");
    HttpURLConnection urlConnect = (HttpURLConnection) url.openConnection();
    urlConnect.setConnectTimeout(1000);
    urlConnect.getContent();
    System.out.println("Connection established.");
} catch (NullPointerException np) {
    np.printStackTrace();
} catch (IOException io) {
    io.printStackTrace();
}
于 2013-03-25T18:38:28.963 に答える
0

このスニペットを使用してください。私はすべてのプロジェクトで使用しています。

public static boolean checkNetworkState(Context context) {
    ConnectivityManager conMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo infos[] = conMgr.getAllNetworkInfo();
    for (NetworkInfo info : infos) {
        if (info.getState() == State.CONNECTED)
            return true;
    }
    return false;
}

getApplicationContext()したがって、次のようにこのメソッドに渡すだけで済みますboolean hasConnection = checkNetworkState(getApplicationContext());

于 2013-03-25T18:53:24.817 に答える