broadcastreceiver - Android Wifi broadcast receiver not working as expected -
i have wifi ssid whenever phone connects new wifi network. registered following
receiver `registerreceiver(this.mybroadcast, new intentfilter(wifimanager.supplicant_connection_change_action));`
this part of code works perfectly. in onreceive
method,
networkinfo info = intent.getparcelableextra(wifimanager.extra_wifi_info));
always returns null. tried extra_network_info
well, returns null.
i can't use
this.registerreceiver(this.mybroadcast, new intentfilter(connectivitymanager.connectivity_action));,
as service stop/start after n minutes , using generate event on every restart of service.
any ideas how can solve issue?
you can create broadcast within activity
step 1 :
@override public void onresume() { registerreceiver(); super.onresume(); } private void registerreceiver() { intentfilter filter = new intentfilter(); filter.addaction(connectivitymanager.connectivity_action); filter.addaction(wifimanager.supplicant_state_changed_action); registerreceiver(mreceiver, filter); }
step 2
private broadcastreceiver mreceiver = new broadcastreceiver() { @override public void onreceive(context context, intent intent) { networkinfo info = intent.getparcelableextra(wifimanager.extra_network_info); if (info != null) { if (info.isconnected()) { wifimanager wifimanager = (wifimanager) context.getsystemservice(context.wifi_service); wifiinfo wifiinfo = wifimanager.getconnectioninfo(); string ssid = wifiinfo.getssid(); if (ssid != null) { if (isconnectclicked) { //your connected wifi } } } } } else { if (intent.getaction().equals(wifimanager.supplicant_state_changed_action)) { if (intent.hasextra(wifimanager.extra_supplicant_error)) { //connection failed } } } } };
step 3
@override public void onpause() { unregisterreceiver(mreceiver); super.onpause(); }
Comments
Post a Comment