2016-08-17 47 views
0

我一直试图获得ScanResult的列表,但没有成功。显示Android中的可用WIFI网络列表

以下附件是我的代码:

public class listenerActivity extends AppCompatActivity { 
    String netSsid; 
    ListView groups; 
    EditText filter; 
    WifiManager wifi; 
    String wifis[]; 
    WifiScanReceiver wifiReciever; 
    Button refreshGroups; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_listener); 
     groups = (ListView) findViewById(R.id.listView); 
     wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
     if (wifi.isWifiEnabled() == false){ 
      Toast.makeText(getApplicationContext(), "wifi is disabled. making it enabled", Toast.LENGTH_LONG).show(); 
      wifi.setWifiEnabled(true); 
     } 
     wifiReciever = new WifiScanReceiver(); 
     registerReceiver(wifiReciever, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); 
     wifi.startScan(); 
    } 

private class WifiScanReceiver extends BroadcastReceiver { 
    public void onReceive(Context c, Intent intent) { 
     List<ScanResult> wifiScanList = wifi.getScanResults(); 
     wifis = new String[wifiScanList.size()]; 

     for(int i = 0; i < wifiScanList.size(); i++) { 
       wifis[i] = wifiScanList.get(i).toString(); 
     } 
     groups.setAdapter(new ArrayAdapter<String>(getApplicationContext(), R.layout.adapte_layout, (wifiScanList.size() > 0 ? wifis : new String[]{"No net available"}))); 
    } 
} 

在这里,在我的manifest.xml(权限的一部分):

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> 

这是行不通的。

我会非常高兴你的帮助(我对我的英语感到抱歉)。 谢谢!

+0

问题是什么?它只是没有返回任何东西。请更加明确。你从什么角度验证了它应该如预期的那样工作? – JoxTraex

回答

0

起初看,我认为你没有得到任何结果。
但是你的代码很好,它会检索ScanResult。唯一的问题是你的ArrayAdapter。由于您尚未附加布局xmls,因此很难知道哪些功能无法正常工作。
反正我已经使用适配器的默认布局。这里是您需要更改的代码,以查看屏幕中的结果

groups.setAdapter(new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, (wifiScanList.size() > 0 ? wifis : new String[]{"No net available"}))); 
相关问题