3

アクティビティではないクラスでインターネット接続を確認しようとしています。

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

public boolean isNetworkAvailable() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = cm.getActiveNetworkInfo();        
    if (networkInfo != null && networkInfo.isConnected()) {
        return true;
    }
    return false;
}

ただし、次のコード行には赤い下線が引かれています。

getSystemService(Context.CONNECTIVITY_SERVICE)

systemServiceを取得できないためだと推測しています。システムサービスを利用するにはどうすればよいですか?

4

3 に答える 3

5

あなたがいるContextから渡しますActivity

public boolean isNetworkAvailable(Context c) {
ConnectivityManager cm = (ConnectivityManager) c.getSystemService(Context.CONNECTIVITY_SERVICE);

したがって、このようなものを使用して'sActivityを渡す場合ActivityContext

boolean hasConnection = isNetworkAvailable(this);

明らかに、囲んでいるクラスのインスタンスを作成した後

于 2013-08-05T20:29:12.947 に答える
0

そのcontext.getSystemService(Context.CONNECTIVITY_SERVICE)アクティビティを使用することはコンテキストから派生しているためgetSystemService、アクティビティの前にコンテキストがなくてもアクティビティで使用できるのはそのためです

于 2013-08-05T20:28:15.467 に答える