0

接続のステータスが変更されたときに Receive でメソッドを呼び出し、変更を示すトーストを表示するために、ブロードキャスト レシーバーを利用するコードを作成しました。その意味で、ブロードキャストレシーバーをそのように実装する別のクラスがあります。

public class Receiver extends BroadcastReceiver {

private static final String DEBUG_TAG = "NetworkStatusExample";

  @Override

  public void onReceive(Context context, Intent intent) {

      // Shows a toast when the connectivity state change
      Toast.makeText(context, "stato wifi cambiato",
      Toast.LENGTH_LONG).show();
      Log.d("prova", "action: "
                 + intent.getAction())     

  }
}

ネットワーク状態が変化したときに OnReceive() メソッドを正しく呼び出して動作し、トーストを表示します。

メインファイルには、ボタンが押されるとWifiが接続されているかどうかを確認するコードを入れました。この場合、接続の有無に応じて「Wifi接続: true/false」というメッセージを表示する. この場合にも機能するコードは次のとおりです。

public class MainActivity extends Activity {

private static final String DEBUG_TAG = "NetworkStatusExample";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ConnectivityManager connMgr = (ConnectivityManager) 
            getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo =     connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
    final boolean isWifiConn = networkInfo.isConnected();
    String wifiStateText = "No State";
    Log.d(DEBUG_TAG, "Wifi connected: " + isWifiConn);
    Button prova = (Button) findViewById(R.id.button1);
    prova.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Context context = getApplicationContext();

            CharSequence text = "Wifi connected: " + isWifiConn;
            int duration = Toast.LENGTH_SHORT;

            Toast toast = Toast.makeText(context, text, duration);
            toast.show();
        }
    });

}

ここで、コードの最後の部分を上記で定義したメソッド OnReceive() に埋め込んで、ネットワーク接続が変更されたときにすべてを自動で実行しようとしているので、ブロードキャスト レシーバーの結果のコードは次のようになります。

public class Receiver extends BroadcastReceiver {

private static final String DEBUG_TAG = "NetworkStatusExample";
  // Verifica se il wifi è connesso

  @Override

  public void onReceive(Context context, Intent intent) {

      // Shows a toast when the connectivity state change
      Toast.makeText(context, "stato wifi cambiato",
      Toast.LENGTH_LONG).show();
      Log.d("prova", "action: "
                 + intent.getAction());


      ConnectivityManager connMgr = (ConnectivityManager) 
                getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
            final boolean isWifiConn = networkInfo.isConnected();
          String wifiStateText = "No State";
            Log.d(DEBUG_TAG, "Wifi connected: " + isWifiConn);

      // Toast that shows if the wifi is connected
      CharSequence text = "Wifi connected: " + isWifiConn;
        int duration = Toast.LENGTH_SHORT;

        Toast toast = Toast.makeText(context, text, duration);
        toast.show();     


  }


}

その場合、次のエラーが発生します。

the method getsystemservice(string) is undefined for the type Receiver

この行で:

getSystemService(Context.CONNECTIVITY_SERVICE);

どうしたの?それを修正するにはどうすればよいですか?

4

2 に答える 2

1

'context'次のパラメーターを使用する必要があります。context.getSystemService(Context.CONNECTIVITY_SERVICE);

BroadcastReceiverは から派生したものではありませんContext

于 2013-05-03T12:01:39.543 に答える