如何获得可用的wifi网络并将其显示在android中的列表中

如何获得可用的wifi网络并将其显示在android中的列表中,第1张

概述朋友们,我想找到所有可用的WiFi网络并将其显示在我尝试过的列表中,如下所示.但它不起作用.我已经编辑了我的代码,现在我得到了结果但是得到了我不需要的所有结果.我只需要列表中的wifi网络名称.publicclassMainActivityextendsActivity{TextViewmainText;WifiMa

朋友们,我想找到所有可用的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中的列表中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1103681.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存