2017-08-03 46 views
0

我想獲得我的應用程序中可用的所有wifi連接列表,但我沒有得到任何列表。我的無線連接正在進行,也連接到我的wifi,但我無法獲得我的應用程序中的無線連接列表。 誰能告訴我爲什麼這樣?這裏是我的代碼:如何獲取所有可用的wifi連接列表?

MainActivity.java

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 
    WifiManager wm; 
    ToggleButton tb; 
    ArrayAdapter<String> aa; 
    ListView l; 
    private static final int ENABLE_REQUEST=1; 
    private static final int DISCOVERABLE_REQUEST=2; 
    private static final int DISCOVERABLE_DURATION=120; 

    BroadcastReceiver br=new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      String action=intent.getAction(); 
      if(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.equals(action)) { 
       List<ScanResult> hotspot= wm.getScanResults(); 

       for(int i=0;i<hotspot.size();i++) { 
        aa.add(hotspot.get(i).toString()); 
       } 
      } 
     } 
    }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     tb= (ToggleButton) findViewById(R.id.toggle); 
     aa=new ArrayAdapter(this,android.R.layout.simple_list_item_1); 
     l= (ListView) findViewById(R.id.list); 
     l.setAdapter(aa); 

     wm= (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); 
     tb.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     tb= (ToggleButton) v; 

     if(wm==null) { 
      Toast.makeText(this, "This feature is not supported", Toast.LENGTH_SHORT).show(); 
      tb.setChecked(false); 
     } else { 
      if (tb.isChecked()) { 
       wm.setWifiEnabled(true); 
       discover(); 
      } else { 
       wm.setWifiEnabled(false); 
      } 
     } 
    } 

    private void discover() { 

     wm.startScan(); 
     IntentFilter filter=new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION); 
     this.registerReceiver(br,filter); 
    } 
} 

的AndroidManifest.xml:

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

回答

0

我想你可能會找這個answer在另一個計算器崗位。

的答案表明,你可以得到你在mScanResults列表,你可以應用到你的ArrayAdapter最後呼籲列表視圖setAdapter方法。

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 
    } 
} 

}

請遵循answer瞭解更多詳情。

相關問題