有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Wifi扫描仪不适用于安卓 nougat(7.0)

我想在wifi开启时扫描所有wifi,但它不适用于安卓 7.0,我只有这部手机需要测试(我认为这是安卓版本的问题)

我如何解决我的问题

代码:

import 安卓.app.Activity;
import 安卓.content.BroadcastReceiver;
import 安卓.content.Context;
import 安卓.content.Intent; 
import 安卓.content.IntentFilter;
import 安卓.net.wifi.ScanResult;
import 安卓.net.wifi.WifiManager;
import 安卓.os.Bundle; 
import 安卓.view.View;
import 安卓.widget.Button;
import 安卓.widget.ListView;
import 安卓.widget.SimpleAdapter;
import 安卓.widget.TextView;
import 安卓.widget.Toast;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;



public class DetectWifi extends Activity implements View.OnClickListener
{
  WifiManager wifi;
  ListView lv;
  TextView textStatus;
  Button buttonScan;
  int size = 0;
  List<ScanResult> results;

  String ITEM_KEY = "key";
  ArrayList<HashMap<String, String>> arraylist = new   ArrayList<HashMap<String, String>>();
  SimpleAdapter adapter;

  /* Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.detectwifi_page);

    textStatus = (TextView) findViewById(R.id.textStatus);
    buttonScan = (Button) findViewById(R.id.buttonScan);
    buttonScan.setOnClickListener(this);
    lv = (ListView)findViewById(R.id.list);

    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);
    }
    this.adapter = new SimpleAdapter(DetectWifi.this, arraylist, R.layout.dialog_wifi, new String[] { ITEM_KEY }, new int[] { R.id.list_value });
    lv.setAdapter(this.adapter);

    registerReceiver(new BroadcastReceiver()
    {
        @Override
        public void onReceive(Context c, Intent intent)
        {
            results = wifi.getScanResults();
            size = results.size();
        }
    }, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
}

public void onClick(View view)
{
    arraylist.clear();
    wifi.startScan();

    Toast.makeText(this, "Scanning...." + size, Toast.LENGTH_SHORT).show();
    try
    {
        size = size - 1;
        while (size >= 0)
        {
            HashMap<String, String> item = new HashMap<String, String>();
            item.put(ITEM_KEY, results.get(size).SSID + "  " + results.get(size).capabilities);

            arraylist.add(item);
            size--;
            adapter.notifyDataSetChanged();
        }
    }
    catch (Exception e)
    { }
 }
}

非常感谢


共 (1) 个答案

  1. # 1 楼答案

    除了启用WiFi,还必须启用位置服务才能访问扫描结果。如果你只启用了WiFi,你会得到一个空的扫描结果列表