
朋友们,我想找到所有可用的WiFi网络并将其显示在我尝试过的列表中,如下所示.但它不起作用.我已经编辑了我的代码,现在我得到了结果但是得到了我不需要的所有结果.我只需要列表中的wifi网络名称.
public class MainActivity extends Activity { TextVIEw mainText; WifiManager mainWifi; WifiReceiver receiverWifi; List<ScanResult> wifiList; StringBuilder sb = new StringBuilder(); @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); mainText = (TextVIEw) findVIEwByID(R.ID.tv1); mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); if (mainWifi.isWifIEnabled() == false) { // If wifi Disabled then enable it Toast.makeText(getApplicationContext(), "wifi is Disabled..making it enabled", Toast.LENGTH_LONG).show(); mainWifi.setWifIEnabled(true); } receiverWifi = new WifiReceiver(); registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESulTS_AVAILABLE_ACTION)); mainWifi.startScan(); mainText.setText("Starting Scan..."); } public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, 0, 0, "Refresh"); return super.onCreateOptionsMenu(menu); } public boolean onMenuItemSelected(int featureID, MenuItem item) { mainWifi.startScan(); mainText.setText("Starting Scan"); return super.onMenuItemSelected(featureID, item); } protected voID onPause() { unregisterReceiver(receiverWifi); super.onPause(); } protected voID onResume() { registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESulTS_AVAILABLE_ACTION)); super.onResume(); } // broadcast receiver class called its receive method // when number of wifi connections changed class WifiReceiver extends broadcastReceiver { // This method call when number of wifi connections changed public voID onReceive(Context c, Intent intent) { sb = new StringBuilder(); wifiList = mainWifi.getScanResults(); sb.append("\n Number Of Wifi connections :"+wifiList.size()+"\n\n"); for(int i = 0; i < wifiList.size(); i++){ sb.append(new Integer(i+1).toString() + ". "); sb.append((wifiList.get(i)).toString()); sb.append("\n\n"); } mainText.setText(sb); } }}解决方法:
您需要创建一个broadcastReceiver来监听Wifi扫描结果:
private final broadcastReceiver mWifiScanReceiver = new broadcastReceiver() { @OverrIDe public voID onReceive(Context c, Intent intent) { if (intent.getAction().equals(WifiManager.SCAN_RESulTS_AVAILABLE_ACTION)) { List<ScanResult> mScanResults = mWifiManager.getScanResults(); // add your logic here } }}在onCreate()中,您将分配mWifiManager并启动扫描:
mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);registerReceiver(mWifiScanReceiver, new IntentFilter(WifiManager.SCAN_RESulTS_AVAILABLE_ACTION));mWifiManager.startScan();只有拥有适当的权限,getScanResults()才会返回数据.为此,请将以下两行之一添加到AndroIDManifest.xml:
<uses-permission androID:name="androID.permission.ACCESS_FINE_LOCATION" /><uses-permission androID:name="androID.permission.ACCESS_COARSE_LOCATION" />另请注意,在API 23中,必须在运行时请求权限. (对于实验室环境,您还可以在“设置”中手动授予权限,而不需要编码,但不建议用于最终用户应用程序.)
请注意,每次有新的扫描结果可用时,处理扫描结果的代码都会运行,从而更新结果.
总结以上是内存溢出为你收集整理的如何获得可用的wifi网络并将其显示在android中的列表中全部内容,希望文章能够帮你解决如何获得可用的wifi网络并将其显示在android中的列表中所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)