我正在努力让微调器显示可用的 wifi SSID 列表。我使用以下内容将 SSID 存储到广播接收器的 onReceive 中的字符串数组中。
List<ScanResult> wifiScanList = mainWifiObj.getScanResults();
wifis = new String[wifiScanList.size()];
for (int i = 0; i < wifiScanList.size(); i++) {
wifis[i] = ((wifiScanList.get(i).SSID));
}
然后我如何将 wifis 数组显示到我的微调器?我的 xml 中有微调器对象,在我的 onCreate 中有
sp = (Spinner) findViewById(R.id.spinner);
在我的广播接收器中,我尝试这样做......
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
wifis, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
但是由于我的数组不是资源,所以它不起作用。我一直在寻找其他方法来做到这一点,但我遇到的只是如何从 xml 文件访问字符串。
所以我的问题是,我如何使用我现有的代码然后用我的 wifi 选择列表填充微调器。感谢您的任何帮助。
编辑:完整代码现在可以运行了:
public class MainActivity extends Activity {
WifiManager mainWifiObj;
WifiScanReceiver wifiReciever;
ListView list;
Spinner sp;
String wifis[];
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sp = (Spinner) findViewById(R.id.spinner);
mainWifiObj = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifiReciever = new WifiScanReceiver();
mainWifiObj.startScan();
}
protected void onPause() {
unregisterReceiver(wifiReciever);
super.onPause();
}
protected void onResume() {
registerReceiver(wifiReciever, new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
super.onResume();
}
class WifiScanReceiver extends BroadcastReceiver {
@SuppressLint("UseValueOf")
public void onReceive(Context c, Intent intent) {
List<ScanResult> wifiScanList = mainWifiObj.getScanResults();
wifis = new String[wifiScanList.size()];
for (int i = 0; i < wifiScanList.size(); i++) {
wifis[i] = ((wifiScanList.get(i).SSID));
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item, wifis);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp.setAdapter(adapter);
}
}
}
最佳答案
尝试以下操作:
List<ScanResult> wifiScanList = mainWifiObj.getScanResults();
wifis = new ArrayList<String>();
for (int i = 0; i < wifiScanList.size(); i++) {
wifis.add(((wifiScanList.get(i).SSID)));
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, wifis);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
关于android - 使用可用的 wifi 地址填充微调器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24315356/