2017-04-27 8 views
0

wifiがオンになっているときにすべての無線LANをスキャンしたいのですが、アンドロイド7.0では動作しません。テスト用にこの電話しかありませんバージョンの問題)。Wifi Scannerはandroid nougatと動作しません(7.0)

問題を解決するにはどうすればよいですか?

コード:

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) 
    { } 
} 
} 

どうもありがとうございました。

+1

あなたはその許可をリクエストしていますか? –

+0

[SCAN \ _RESULTS \ _AVAILABLE \ _ACTIONの重複する可能性があるのは、Android 6.0の空のリストを返す](http://stackoverflow.com/questions/32151603/scan-results-available-action-return-empty-list-in-android- 6-0) –

答えて

0

Android 7の場合、アクセス許可ACCESS_COARSE_LOCATIONとACCESS_FINE_LOCATIONはWi-Fiスキャン結果を取得するために必要です。また、デバイスの場所をオンにする必要があります。

0

WiFiを有効にすることに加えて、スキャン結果にアクセスするには、ロケーションサービスも有効にする必要があります。 WiFiを有効にしている場合のみ、空のスキャン結果リストが表示されます。

関連する問題