2017-12-30 23 views
0

WifiManager를 사용하여 사용 가능한 Wi-Fi 네트워크 목록을 얻고 있습니다.WifiManager를 사용하여 Wi-Fi 네트워크를 가져 오지 못했습니다.

이 내 방법 :

public List<ScanResult> getWifiInRange() { 

    //scan for wifis 
    wifiMgr.startScan(); 

    // gets ~last~ list of WiFi networks accessible through the access point. 
    return (wifiScan = (List<ScanResult>) wifiMgr.getScanResults()); 
    } 

그러나이 방법은 일부 장치에있는 모든 와이파이 네트워크를 retun하지 않습니다!

예를 들어 Asus_p024에서이 방법을 사용하면 올바르게 작동하고 사용 가능한 Wi-Fi 네트워크 목록이 반환됩니다.하지만 Samsung Tab-s에서는 0 개 항목을 반환합니다!

업데이트

난 그냥이 같은 방송을 내 코드를 변경하고 구현 :

public class WifiBroadcast extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     List<ScanResult> mScanResults = wifi.getScanResults(); 

     wifiList = wifi.getScanResults(); 
     netCount = wifiList.size(); 

     Log.d("Wifi", "Total Wifi Network" + netCount); 

    } 
    } 

나는 여전히 가능한 와이파이 네트워크의 목록을 얻을 수 없습니다.

는 당신의 도움을 주셔서 감사합니다.

답변

1

SCAN_RESULTS_AVAILABLE_ACTION에 대해 BroadcastReceiver를 등록한 후 here으로 등록하십시오. WifiManager.getScanResults()에 대한 문서는 다음과 같이 말합니다.

최신 액세스 포인트 스캔 결과를 반환합니다.

그래서 우리는 최신 검사의 결과가 getScanResults()에 전화에서 사용할 수 있는지 확신이없는

1
당신이 매니페스트에 다음과 같은 권한을 포함했다

Pleae 확인 :

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

또한 API 23+의 경우 런타임에 권한을 요청해야합니다.

+0

이 두 가지 권한을 이미 추가했습니다. – Ehsan