バックグラウンドでWIFI_STATE_CHANGED_ACTIONをチェックするために、サービスからBroadcastReceiverを登録しようとしています。これまでのところ、コンパイルエラーはありません..しかし!
私が行ったり試したりしたことは何でも、 onReceive() コードに到達することはありませんでした。ハードウェア デバイスでテストし、Wi-Fi のオンとオフを切り替えていますが、何も起こりません。同様に、マニフェストにサービス/レシーバーを登録し、デモやチュートリアル、本から見つけたすべてを行いました^^ (サービスを使用しているのは、BroadcastReceiver をバックグラウンドで実行し、必要に応じて動作させるためだけです..)
だからここに私のコードがあります:
「私のアクティビティクラス」
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startService(new Intent(this, IntelliRingService.class));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
「私のサービスクラス」
public class IntelliRingService extends Service {
public BroadcastReceiver myWifiBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
final String action = intent.getAction();
if (action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION))
{
// DO SOMETHING
}
}
};
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
IntentFilter theFilter;
theFilter = new IntentFilter();
theFilter.addAction(WIFI_SERVICE);
getApplicationContext().registerReceiver(myWifiBroadcastReceiver, theFilter);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
getApplicationContext().unregisterReceiver(myWifiBroadcastReceiver);
}
}