如何获得可用的WiFi网络,并在Android的一个列表中显示出来 [英] how to get available wifi networks and display them in a list in android
问题描述
friends.I要找到所有可用的WiFi网络,并在我试图为below..But它不是working.i已经编辑我的code一个列表中显示出来,现在我得到的结果,但所有的结果我不needed.I只需要在我的名单上wifi网络的名称。
包com.example.wifilistdemo;
进口的java.util.List;
进口android.app.Activity;
进口android.content.BroadcastReceiver;
进口android.content.Context;
进口android.content.Intent;
进口android.content.IntentFilter;
进口android.net.wifi.ScanResult;
进口android.net.wifi.WifiManager;
进口android.os.Bundle;
进口android.view.Menu;
进口android.view.MenuItem;
进口android.widget.TextView;
进口android.widget.Toast;
公共类MainActivity延伸活动{
TextView中的mainText;
WifiManager mainWifi;
WifiReceiver receiverWifi;
名单< ScanResult> wifiList;
StringBuilder的SB =新的StringBuilder();
@覆盖
保护无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main);
的mainText =(TextView中)findViewById(R.id.tv1);
mainWifi =(WifiManager)getSystemService(Context.WIFI_SERVICE);
如果(mainWifi.isWifiEnabled()==假)
{
//如果禁用无线网络,然后启用它
Toast.makeText(getApplicationContext(),WiFi是disabled..making它启用,
Toast.LENGTH_LONG).show();
mainWifi.setWifiEnabled(真正的);
}
receiverWifi =新WifiReceiver();
registerReceiver(receiverWifi,新的IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
mainWifi.startScan();
mainText.setText(开始扫描...);
}
公共布尔onCreateOptionsMenu(功能菜单){
menu.add(0,0,0,刷新);
返回super.onCreateOptionsMenu(菜单);
}
公共布尔onMenuItemSelected(INT FEATUREID,菜单项项){
mainWifi.startScan();
mainText.setText(开始扫描);
返回super.onMenuItemSelected(FEATUREID,项目);
}
保护无效的onPause(){
unregisterReceiver(receiverWifi);
super.onPause();
}
保护无效onResume(){
registerReceiver(receiverWifi,新的IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
super.onResume();
}
//广播接收器类叫做它的接收方法
//当改变无线连接数
类WifiReceiver扩展的BroadcastReceiver {
//改变时,这种方法调用的wifi连接数
公共无效的onReceive(上下文C,意图意图){
SB =新的StringBuilder();
wifiList = mainWifi.getScanResults();
sb.append(\ n个无线连接:+ wifiList.size()+\ñ\ N);
的for(int i = 0; I< wifiList.size();我++){
sb.append(新整数第(i + 1)的ToString()+。);
sb.append((wifiList.get(I))的toString());
sb.append(\ñ\ N);
}
mainText.setText(某人);
}
}
}
您需要创建一个的BroadcastReceiver
来监听无线扫描结果:
私人最终的BroadcastReceiver mWifiScanReceiver =新的BroadcastReceiver(){
@覆盖
公共无效的onReceive(上下文C,意图意图){
如果(intent.getAction()。等于(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)){
名单< ScanResult> mScanResults = mWifiManager.getScanResults();
//在此处添加你的逻辑
}
}
}
在的onCreate()
那么您可以指定 mWifiManager
键,启动扫描:
mWifiManager =(WifiManager)getSystemService(Context.WIFI_SERVICE);
registerReceiver(mWifiScanReceiver,
新的IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
mWifiManager.startScan();
请注意,code的处理您的扫描结果将每次运行一个新的扫描结果可用,更新的结果。
friends.I want to find all available WiFi networks and display them in a list i have tried as below..But its not working.i have edited my code and now i got the result but with all the result that i dont needed.I only need name of wifi network in my list.
package com.example.wifilistdemo;
import java.util.List;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import android.widget.Toast;
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);
}
}
}
You need to create a BroadcastReceiver
to listen for Wifi scan results:
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
}
}
}
In onCreate()
you would assign mWifiManager
and initiate a scan:
mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
registerReceiver(mWifiScanReceiver,
new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
mWifiManager.startScan();
Note that the code which handles your scan results would run every time a new scan result is available, updating the result.
这篇关于如何获得可用的WiFi网络,并在Android的一个列表中显示出来的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!