我无法将我的扫描结果显示在android中

时间:2016-10-26 18:07:52

标签: java android network-programming

当我在root设备上运行我的应用程序时,ListView是空白的,我不知道为什么?

import android.content.IntentFilter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

import android.content.Context;
import android.content.BroadcastReceiver;
import android.content.Intent;

import java.util.List;

import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;

import android.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声明为WifiScanReciever

    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();
}

这会收到扫描结果并将其放入一个名为wifis的数组中。 onReceive捕获扫描结果并设置数组wifis的大小。

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(),android.R.layout.simple_list_item_1,wifis));

    }

}

}

0 个答案:

没有答案