接続のステータスが変更されたときに 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);
どうしたの?それを修正するにはどうすればよいですか?