My goal is a print log when wi-fi state changes.
I am using below code.
MainActivity.java (Main activity)
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 (Service)
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 (BroadcastReceiver)
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>
Problem:
The code works fine in versions of android 4.0 and lower. When I change the state of wi-fi, the broadcast receiver causes random times. Thus, the magazine prints random times. I need only once. It works great, and all versions for Android remain android 4.1.0. or higher version (Jelly Bean). I am using android.net.wifi.WIFI_STATE_CHANGED. But still the same mistake.
source share