私の目標は、wi-fi 状態を変更したときにログを印刷することです。
以下のコードを使用します。
MainActivity.java (メイン アクティビティ)
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startService(new Intent(this,WiFiService.class));
}
@Override
protected void onStart()
{
super.onStart();
Log.d("Start Service", "Start Service");;
startService(new Intent(this,WiFiService.class));
}
}
WiFiService.java (サービス)
public class WiFiService extends Service
{
WiFiBroadCasetReceiver brod;
@Override
public IBinder onBind(Intent intent)
{
return null;
}
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
brod=new WiFiBroadCasetReceiver();
this.registerReceiver(brod, new IntentFilter(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION));
}
@Override
public void onDestroy()
{
super.onDestroy();
}
}
WiFiBroadCasetReceiver.java (ブロードキャストレシーバー)
public class WiFiBroadCasetReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context arg0, Intent arg1)
{
Log.d("on receiver", "receiver");
}
}
AndroidManifest.xml
<application>
........
........
<receiver android:name=".WiFiBroadCasetReceiver" >
<intent-filter>
<action android:name="android.net.wifi.supplicant.STATE_CHANGE" />
</intent-filter>
</receiver>
</application>
問題 :
上記のコードは、Android 4.0 以下のバージョンで正常に動作します。wi-fi の状態を変更すると、ブロードキャスト レシーバーがランダムに呼び出されます。したがって、ログはランダムに出力されます。私は一度だけ必要です。すべてのAndroidバージョンはAndroid 4.1.0のままで正常に動作します。以上のバージョン(Jelly Bean)。私はandroid.net.wifi.WIFI_STATE_CHANGEDを使用しています。しかし、それでも同じエラーが発生します。