권한은 다 부여하였고 관련 소스만 올렸습니다
public class MainActivity extends AppCompatActivity { WifiReceiver receiverWifi; List<ScanResult> wifiList; List<String> listOfProvider; ListAdapter adapter; ListView listViwProvider; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); IntentFilter filter = new IntentFilter(); filter.addAction("android.net.wifi.SCAN_RESULTS"); filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); registerReceiver(mReceiver, filter); handler=new Handler(); listOfProvider = new ArrayList<String>();
wifi_scan = (Button) findViewById(R.id.wifi_scan);
listViwProvider = (ListView) findViewById(R.id.list_view_wifi);
wifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
//Wifi 켜기
if(!(wifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLED || wifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLING )) {
wifiManager.setWifiEnabled(true);
}
//와이파이 스캔
wifi_scan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
scaning();
}
});
listViwProvider.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
ImportDialog action = new ImportDialog(MainActivity.this, (wifiList.get(position)).toString());
action.showDialog();
}
});
}
private void scaning() {
receiverWifi = new WifiReceiver();
registerReceiver(receiverWifi, new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
wifiManager.startScan();
}
@Override
protected void onDestroy() {
super.onDestroy();
try{
unregisterReceiver(receiverWifi);
unregisterReceiver(mReceiver);
}catch(IllegalArgumentException e){}
}
class WifiReceiver extends BroadcastReceiver {
public void onReceive(Context c, Intent intent) {
wifiList = wifiManager.getScanResults();
Collections.sort(wifiList, new Comparator<ScanResult>() {
@Override
public int compare(ScanResult lhs, ScanResult rhs) {
return (lhs.level > rhs.level ? -1
: (lhs.level == rhs.level ? 0 : 1));
}
});
listOfProvider.clear();
String providerName;
for (int i = 0; i < wifiList.size(); i++) {
providerName = (wifiList.get(i).SSID).toString()
+"\n"+(wifiList.get(i).BSSID).toString();
listOfProvider.add(providerName);
}
Log.d("갯수:", String.valueOf(wifiList.size()));
adapter = new ListAdapter(MainActivity.this, listOfProvider);
listViwProvider.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
}