The WiFi API provided with the SDK is really interesting. In this tutorial, we will learn and develop a simple WiFi scanning application with Android Studio!
Please note that I will not go into managing the permissions in this tutorial because I only focus on the WiFi API. You can refer to the video in this link to understand how to manage Permission: https://youtu.be/wy2EMWDpIGE
Step 1: Add Permisson
The first step is to add the correct permissions in the application's Android Manifest file. We will need to add permission ACCESS_WIFI_STATE. It will allow your application to access information about WiFi networks.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <span class="token prolog"><?xml version="1.0" encoding="utf-8"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> manifest</span> <span class="token attr-name"><span class="token namespace">xmlns:</span> android</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> http://schemas.android.com/apk/res/android <span class="token punctuation">"</span></span> <span class="token attr-name">package</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> com.ssaurel.scanwifi <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> uses-permission</span> <span class="token attr-name"><span class="token namespace">android:</span> name</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> android.permission.ACCESS_WIFI_STATE <span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> application</span> <span class="token attr-name"><span class="token namespace">android:</span> allowBackup</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> true <span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">android:</span> icon</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> @mipmap/ic_launcher <span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">android:</span> label</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> @string/app_name <span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">android:</span> roundIcon</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> @mipmap/ic_launcher_round <span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">android:</span> supportsRtl</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> true <span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">android:</span> theme</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> @style/AppTheme <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> activity</span> <span class="token attr-name"><span class="token namespace">android:</span> name</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> .WiFiScannerActivity <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> intent-filter</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> action</span> <span class="token attr-name"><span class="token namespace">android:</span> name</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> android.intent.action.MAIN <span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> category</span> <span class="token attr-name"><span class="token namespace">android:</span> name</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> android.intent.category.LAUNCHER <span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> intent-filter</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> activity</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> application</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> manifest</span> <span class="token punctuation">></span></span> |
Step 2: Create the main interface for the application
The next step is to create the interface for our WiFi scanning application. It will be designed simply with a ListView and a Button. In particular, ListView will display WiFi networks detected by our device. When the Button is clicked, the application will allow the user to start the WiFi scanning process.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <span class="token prolog"><?xml version="1.0" encoding="utf-8"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> LinearLayout</span> <span class="token attr-name"><span class="token namespace">xmlns:</span> android</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> http://schemas.android.com/apk/res/android <span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">android:</span> orientation</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> vertical <span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">android:</span> padding</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> 10dp <span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">android:</span> layout_width</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> match_parent <span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">android:</span> layout_height</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> match_parent <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> ListView</span> <span class="token attr-name"><span class="token namespace">android:</span> id</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> @+id/wifiList <span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">android:</span> layout_width</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> match_parent <span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">android:</span> layout_height</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> 312dp <span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">android:</span> layout_weight</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> 0.97 <span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> Button</span> <span class="token attr-name"><span class="token namespace">android:</span> id</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> @+id/scanBtn <span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">android:</span> layout_width</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> match_parent <span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">android:</span> layout_height</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> 50dp <span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">android:</span> layout_gravity</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> bottom <span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">android:</span> layout_margin</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> 15dp <span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">android:</span> background</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> @android:color/holo_red_light <span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">android:</span> text</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> Scan WiFi <span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> LinearLayout</span> <span class="token punctuation">></span></span> |
Step 3: Write code for MainActivity
Now, we will write code for MainActivity. On the Android SDK, the WiFi API is accessed through a System Service named WifiManager. We need to check if WiFi is enabled on the device. If not, we need to enable it by calling the setWifiEnables method with the parameter passed as true:
1 2 3 4 5 | <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token operator">!</span> wifiManager <span class="token punctuation">.</span> <span class="token function">isWifiEnabled</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> Toast <span class="token punctuation">.</span> <span class="token function">makeText</span> <span class="token punctuation">(</span> <span class="token keyword">this</span> <span class="token punctuation">,</span> <span class="token string">"WiFi is disabled ... We need to enable it"</span> <span class="token punctuation">,</span> Toast <span class="token punctuation">.</span> LENGTH_LONG <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">show</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> wifiManager <span class="token punctuation">.</span> <span class="token function">setWifiEnabled</span> <span class="token punctuation">(</span> <span class="token boolean">true</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> |
Then we can start scanning for WiFi networks around us. We need to use a dedicated BroadcastReceiver: WifiManager.SCAN_RESULTS_AVAILABLE_ACTION
Upon successful registration of BroadcastReceiver, we can start scanning for WiFi networks by calling the startScan method of WifiManager Service:
1 2 3 4 5 6 7 | <span class="token keyword">private</span> <span class="token keyword">void</span> <span class="token function">scanWifi</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> arrayList <span class="token punctuation">.</span> <span class="token function">clear</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">registerReceiver</span> <span class="token punctuation">(</span> wifiReceiver <span class="token punctuation">,</span> <span class="token keyword">new</span> <span class="token class-name">IntentFilter</span> <span class="token punctuation">(</span> WifiManager <span class="token punctuation">.</span> SCAN_RESULTS_AVAILABLE_ACTION <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> wifiManager <span class="token punctuation">.</span> <span class="token function">startScan</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> Toast <span class="token punctuation">.</span> <span class="token function">makeText</span> <span class="token punctuation">(</span> <span class="token keyword">this</span> <span class="token punctuation">,</span> <span class="token string">"Scanning WiFi ..."</span> <span class="token punctuation">,</span> Toast <span class="token punctuation">.</span> LENGTH_SHORT <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">show</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> |
When the scan is finished, in the BroadcastReceiver's onReceive function, we need to call the WifiManager Service's getScanResults method to get the result. And do not forget to unsubscribe BroadcastReceiver to save battery for the device.
1 2 3 4 5 6 7 8 9 10 11 12 13 | BroadcastReceiver wifiReceiver <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">BroadcastReceiver</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token annotation punctuation">@Override</span> <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">onReceive</span> <span class="token punctuation">(</span> Context context <span class="token punctuation">,</span> Intent intent <span class="token punctuation">)</span> <span class="token punctuation">{</span> results <span class="token operator">=</span> wifiManager <span class="token punctuation">.</span> <span class="token function">getScanResults</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">unregisterReceiver</span> <span class="token punctuation">(</span> <span class="token keyword">this</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span> ScanResult scanResult <span class="token operator">:</span> results <span class="token punctuation">)</span> <span class="token punctuation">{</span> arrayList <span class="token punctuation">.</span> <span class="token function">add</span> <span class="token punctuation">(</span> scanResult <span class="token punctuation">.</span> SSID <span class="token operator">+</span> <span class="token string">" - "</span> <span class="token operator">+</span> scanResult <span class="token punctuation">.</span> capabilities <span class="token punctuation">)</span> <span class="token punctuation">;</span> adapter <span class="token punctuation">.</span> <span class="token function">notifyDataSetChanged</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> |
Our main activity will look like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | <span class="token keyword">package</span> com <span class="token punctuation">.</span> ssaurel <span class="token punctuation">.</span> scanwifi <span class="token punctuation">;</span> <span class="token keyword">import</span> android <span class="token punctuation">.</span> content <span class="token punctuation">.</span> BroadcastReceiver <span class="token punctuation">;</span> <span class="token keyword">import</span> android <span class="token punctuation">.</span> content <span class="token punctuation">.</span> Context <span class="token punctuation">;</span> <span class="token keyword">import</span> android <span class="token punctuation">.</span> content <span class="token punctuation">.</span> Intent <span class="token punctuation">;</span> <span class="token keyword">import</span> android <span class="token punctuation">.</span> content <span class="token punctuation">.</span> IntentFilter <span class="token punctuation">;</span> <span class="token keyword">import</span> android <span class="token punctuation">.</span> net <span class="token punctuation">.</span> wifi <span class="token punctuation">.</span> ScanResult <span class="token punctuation">;</span> <span class="token keyword">import</span> android <span class="token punctuation">.</span> net <span class="token punctuation">.</span> wifi <span class="token punctuation">.</span> WifiManager <span class="token punctuation">;</span> <span class="token keyword">import</span> android <span class="token punctuation">.</span> os <span class="token punctuation">.</span> Bundle <span class="token punctuation">;</span> <span class="token keyword">import</span> android <span class="token punctuation">.</span> support <span class="token punctuation">.</span> v7 <span class="token punctuation">.</span> app <span class="token punctuation">.</span> AppCompatActivity <span class="token punctuation">;</span> <span class="token keyword">import</span> android <span class="token punctuation">.</span> view <span class="token punctuation">.</span> View <span class="token punctuation">;</span> <span class="token keyword">import</span> android <span class="token punctuation">.</span> widget <span class="token punctuation">.</span> ArrayAdapter <span class="token punctuation">;</span> <span class="token keyword">import</span> android <span class="token punctuation">.</span> widget <span class="token punctuation">.</span> Button <span class="token punctuation">;</span> <span class="token keyword">import</span> android <span class="token punctuation">.</span> widget <span class="token punctuation">.</span> ListView <span class="token punctuation">;</span> <span class="token keyword">import</span> android <span class="token punctuation">.</span> widget <span class="token punctuation">.</span> Toast <span class="token punctuation">;</span> <span class="token keyword">import</span> java <span class="token punctuation">.</span> util <span class="token punctuation">.</span> ArrayList <span class="token punctuation">;</span> <span class="token keyword">import</span> java <span class="token punctuation">.</span> util <span class="token punctuation">.</span> List <span class="token punctuation">;</span> <span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">WiFiScannerActivity</span> <span class="token keyword">extends</span> <span class="token class-name">AppCompatActivity</span> <span class="token punctuation">{</span> <span class="token keyword">private</span> WifiManager wifiManager <span class="token punctuation">;</span> <span class="token keyword">private</span> ListView listView <span class="token punctuation">;</span> <span class="token keyword">private</span> Button buttonScan <span class="token punctuation">;</span> <span class="token keyword">private</span> <span class="token keyword">int</span> size <span class="token operator">=</span> <span class="token number">0</span> <span class="token punctuation">;</span> <span class="token keyword">private</span> List <span class="token generics function"><span class="token punctuation"><</span> ScanResult <span class="token punctuation">></span></span> results <span class="token punctuation">;</span> <span class="token keyword">private</span> ArrayList <span class="token generics function"><span class="token punctuation"><</span> String <span class="token punctuation">></span></span> arrayList <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">ArrayList</span> <span class="token operator"><</span> <span class="token operator">></span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">private</span> ArrayAdapter adapter <span class="token punctuation">;</span> <span class="token annotation punctuation">@Override</span> <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">onCreate</span> <span class="token punctuation">(</span> Bundle savedInstanceState <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">super</span> <span class="token punctuation">.</span> <span class="token function">onCreate</span> <span class="token punctuation">(</span> savedInstanceState <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">setContentView</span> <span class="token punctuation">(</span> R <span class="token punctuation">.</span> layout <span class="token punctuation">.</span> activity_main <span class="token punctuation">)</span> <span class="token punctuation">;</span> buttonScan <span class="token operator">=</span> <span class="token function">findViewById</span> <span class="token punctuation">(</span> R <span class="token punctuation">.</span> id <span class="token punctuation">.</span> scanBtn <span class="token punctuation">)</span> <span class="token punctuation">;</span> buttonScan <span class="token punctuation">.</span> <span class="token function">setOnClickListener</span> <span class="token punctuation">(</span> <span class="token keyword">new</span> <span class="token class-name">View <span class="token punctuation">.</span> OnClickListener</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token annotation punctuation">@Override</span> <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">onClick</span> <span class="token punctuation">(</span> View view <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">scanWifi</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> listView <span class="token operator">=</span> <span class="token function">findViewById</span> <span class="token punctuation">(</span> R <span class="token punctuation">.</span> id <span class="token punctuation">.</span> wifiList <span class="token punctuation">)</span> <span class="token punctuation">;</span> wifiManager <span class="token operator">=</span> <span class="token punctuation">(</span> WifiManager <span class="token punctuation">)</span> <span class="token function">getApplicationContext</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">getSystemService</span> <span class="token punctuation">(</span> Context <span class="token punctuation">.</span> WIFI_SERVICE <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token operator">!</span> wifiManager <span class="token punctuation">.</span> <span class="token function">isWifiEnabled</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> Toast <span class="token punctuation">.</span> <span class="token function">makeText</span> <span class="token punctuation">(</span> <span class="token keyword">this</span> <span class="token punctuation">,</span> <span class="token string">"WiFi is disabled ... We need to enable it"</span> <span class="token punctuation">,</span> Toast <span class="token punctuation">.</span> LENGTH_LONG <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">show</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> wifiManager <span class="token punctuation">.</span> <span class="token function">setWifiEnabled</span> <span class="token punctuation">(</span> <span class="token boolean">true</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> adapter <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">ArrayAdapter</span> <span class="token operator"><</span> <span class="token operator">></span> <span class="token punctuation">(</span> <span class="token keyword">this</span> <span class="token punctuation">,</span> android <span class="token punctuation">.</span> R <span class="token punctuation">.</span> layout <span class="token punctuation">.</span> simple_list_item_1 <span class="token punctuation">,</span> arrayList <span class="token punctuation">)</span> <span class="token punctuation">;</span> listView <span class="token punctuation">.</span> <span class="token function">setAdapter</span> <span class="token punctuation">(</span> adapter <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">scanWifi</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">private</span> <span class="token keyword">void</span> <span class="token function">scanWifi</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> arrayList <span class="token punctuation">.</span> <span class="token function">clear</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">registerReceiver</span> <span class="token punctuation">(</span> wifiReceiver <span class="token punctuation">,</span> <span class="token keyword">new</span> <span class="token class-name">IntentFilter</span> <span class="token punctuation">(</span> WifiManager <span class="token punctuation">.</span> SCAN_RESULTS_AVAILABLE_ACTION <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> wifiManager <span class="token punctuation">.</span> <span class="token function">startScan</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> Toast <span class="token punctuation">.</span> <span class="token function">makeText</span> <span class="token punctuation">(</span> <span class="token keyword">this</span> <span class="token punctuation">,</span> <span class="token string">"Scanning WiFi ..."</span> <span class="token punctuation">,</span> Toast <span class="token punctuation">.</span> LENGTH_SHORT <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">show</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> BroadcastReceiver wifiReceiver <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">BroadcastReceiver</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token annotation punctuation">@Override</span> <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">onReceive</span> <span class="token punctuation">(</span> Context context <span class="token punctuation">,</span> Intent intent <span class="token punctuation">)</span> <span class="token punctuation">{</span> results <span class="token operator">=</span> wifiManager <span class="token punctuation">.</span> <span class="token function">getScanResults</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">unregisterReceiver</span> <span class="token punctuation">(</span> <span class="token keyword">this</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span> ScanResult scanResult <span class="token operator">:</span> results <span class="token punctuation">)</span> <span class="token punctuation">{</span> arrayList <span class="token punctuation">.</span> <span class="token function">add</span> <span class="token punctuation">(</span> scanResult <span class="token punctuation">.</span> SSID <span class="token operator">+</span> <span class="token string">" - "</span> <span class="token operator">+</span> scanResult <span class="token punctuation">.</span> capabilities <span class="token punctuation">)</span> <span class="token punctuation">;</span> adapter <span class="token punctuation">.</span> <span class="token function">notifyDataSetChanged</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
Run the app
Click the scan button and see the results!