2017-04-27 2 views
0

Ich möchte alle Wifi scannen, wenn das WLAN eingeschaltet ist, aber es funktioniert nicht mit Android 7.0 und ich habe nur dieses Telefon für den Test (ich denke, es ist ein Android Versionsproblem).Wifi Scanner funktioniert nicht mit Android Nougat (7.0)

Wie kann ich mein Problem beheben?

Code:

import android.app.Activity; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.net.wifi.ScanResult; 
import android.net.wifi.WifiManager; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 
import android.widget.TextView; 
import android.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) 
    { } 
} 
} 

Vielen Dank.

+1

Haben Sie Berechtigungen dafür angefordert? –

+0

Mögliches Duplikat von [SCAN \ _RESULTS \ _AVAILABLE \ _ACTION gibt leere Liste in Android 6.0 zurück] (http://stackoverflow.com/questions/32151603/scan-results-available-action-return-empty-list-in-android-) 6-0) –

Antwort

0

Für Android 7 sind die Berechtigungen ACCESS_COARSE_LOCATION und ACCESS_FINE_LOCATION erforderlich, um die Wi-Fi-Scan-Ergebnisse zu erhalten. Sie müssen auch den Standort am Gerät aktivieren.

0

Zusätzlich zum aktivierten WLAN müssen auch die Standortdienste aktiviert sein, um auf die Scanergebnisse zugreifen zu können. Wenn Sie nur das WiFi aktiviert haben, erhalten Sie eine leere Scan-Ergebnisliste.

Verwandte Themen