java我无法在安卓中显示扫描结果
当我在根设备上运行我的应用程序时,ListView为空,我不知道为什么
import 安卓.content.IntentFilter;
import 安卓.support.v7.app.AppCompatActivity;
import 安卓.os.Bundle;
import 安卓.view.View;
import 安卓.widget.ArrayAdapter;
import 安卓.widget.Button;
import 安卓.widget.EditText;
import 安卓.widget.ListView;
import 安卓.content.Context;
import 安卓.content.BroadcastReceiver;
import 安卓.content.Intent;
import java.util.List;
import 安卓.net.wifi.ScanResult;
import 安卓.net.wifi.WifiManager;
import 安卓.widget.Toast;
这是我的主要课程:
public class Network_List extends AppCompatActivity {
WifiManager wifiM;
WifiScanReciever wifiR;
ListView networklist;
String wifis[];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_network__list);
用于搜索网络的搜索框(尚未实现,因此不必担心)
EditText searchNet = (EditText) findViewById(R.id.networkEditText);
这是显示网络信息的主列表
networklist = (ListView) findViewById(R.id.networkList);
EditText的搜索按钮(用于将来的开发)
Button networkButton = (Button) findViewById(R.id.searchButton);
scanButton是启动扫描的按钮
Button scanButton = (Button) findViewById(R.id.buttonScan);
宣布wifiM为wifi管理器并获得服务
wifiM = (WifiManager) getSystemService(Context.WIFI_SERVICE);
宣布wifiR为WifiscanReceiver
wifiR = new WifiScanReciever();
开始扫描的按钮
scanButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
wifiM.startScan();
}
});
}
protected void onPause(){
unregisterReceiver(wifiR);
super.onPause();
}
protected void onResume(){
registerReceiver(wifiR, new IntentFilter(wifiM.SCAN_RESULTS_AVAILABLE_ACTION));
super.onResume();
}
这将接收扫描结果并将其放入一个名为WIFI的数组中。onReceive捕获扫描结果并设置阵列WIFI的大小
private class WifiScanReciever extends BroadcastReceiver{
public void onReceive(Context c, Intent intent){
List<ScanResult> wifiSList = wifiM.getScanResults();
wifis = new String[wifiSList.size()];
for (int x = 0; x<wifiSList.size(); x++){
wifis[x] = ((wifiSList.get(x)).toString());
}
networklist.setAdapter(new ArrayAdapter<String>(getApplicationContext(),安卓.R.layout.simple_list_item_1,wifis));
}
}
}
共 (0) 个答案