Skip to content

Commit 1bed7a5

Browse files
author
Parth Barot
committed
Mergin issue 13 into master
2 parents 5cbe8a9 + ee4aaa5 commit 1bed7a5

1 file changed

Lines changed: 59 additions & 1 deletion

File tree

android/src/main/java/com/devstepbcn/wifi/AndroidWifiModule.java

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@
1919
import android.net.NetworkInfo;
2020
import android.net.wifi.WifiInfo;
2121
import android.content.Context;
22-
22+
import android.content.Intent;
23+
import android.content.IntentFilter;
24+
import android.content.BroadcastReceiver;
2325
import android.os.Bundle;
2426
import android.widget.Toast;
2527
import java.util.List;
@@ -233,6 +235,14 @@ public void isRemoveWifiNetwork(String ssid, final Callback callback) {
233235
callback.invoke(false);
234236
}
235237

238+
// This method is similar to `loadWifiList` but it forcefully starts the wifi scanning on android and in the callback fetches the list
239+
@ReactMethod
240+
public void reScanAndLoadWifiList(Callback successCallback, Callback errorCallback) {
241+
WifiReceiver receiverWifi = new WifiReceiver(wifi, successCallback, errorCallback);
242+
getReactApplicationContext().getCurrentActivity().registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
243+
wifi.startScan();
244+
}
245+
236246
public static String longToIP(int longIp){
237247
StringBuffer sb = new StringBuffer("");
238248
String[] strip=new String[4];
@@ -249,4 +259,52 @@ public static String longToIP(int longIp){
249259
sb.append(strip[3]);
250260
return sb.toString();
251261
}
262+
263+
class WifiReceiver extends BroadcastReceiver {
264+
265+
private Callback successCallback;
266+
private Callback errorCallback;
267+
private WifiManager wifi;
268+
269+
public WifiReceiver(final WifiManager wifi, Callback successCallback, Callback errorCallback) {
270+
super();
271+
this.successCallback = successCallback;
272+
this.errorCallback = errorCallback;
273+
this.wifi = wifi;
274+
}
275+
276+
// This method call when number of wifi connections changed
277+
public void onReceive(Context c, Intent intent) {
278+
// LocalBroadcastManager.getInstance(c).unregisterReceiver(this);
279+
c.unregisterReceiver(this);
280+
// getReactApplicationContext().getCurrentActivity().registerReceiver
281+
try {
282+
List < ScanResult > results = this.wifi.getScanResults();
283+
JSONArray wifiArray = new JSONArray();
284+
285+
for (ScanResult result: results) {
286+
JSONObject wifiObject = new JSONObject();
287+
if(!result.SSID.equals("")){
288+
try {
289+
wifiObject.put("SSID", result.SSID);
290+
wifiObject.put("BSSID", result.BSSID);
291+
wifiObject.put("capabilities", result.capabilities);
292+
wifiObject.put("frequency", result.frequency);
293+
wifiObject.put("level", result.level);
294+
wifiObject.put("timestamp", result.timestamp);
295+
} catch (JSONException e) {
296+
this.errorCallback.invoke(e.getMessage());
297+
return;
298+
}
299+
wifiArray.put(wifiObject);
300+
}
301+
}
302+
this.successCallback.invoke(wifiArray.toString());
303+
return;
304+
} catch (IllegalViewOperationException e) {
305+
this.errorCallback.invoke(e.getMessage());
306+
return;
307+
}
308+
}
309+
}
252310
}

0 commit comments

Comments
 (0)