2017-08-22 7 views
-1

私はAndroid Nougatのコードを作成しています。android nougatでWiFiリストを返す

私はマニフェストファイルでロケーションとWiFiのアクセス許可を与えていますが、wlan_Manager.getScanResults()から "0"を取得しています。

私のコードスニペットは、

wlan_Manager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); 
    wlan_switch = (Switch)findViewById(R.id.switch1); 
    list = (ListView)findViewById(R.id.listview); 

wlan_switch.setChecked(wlan_Manager.isWifiEnabled()); 

wifi_list = new ArrayList<>(); 

adapter = new Adapter(this,R.layout.default_listview,wifi_list); 
list.setAdapter(adapter); 
wifireceiver = new wifi_Receiver(adapter,wifi_list); 

registerReceiver(wifireceiver,new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); 

です。

public void onClick(View view) { 
    Log.d("switch", "onClick: "); 
    if (wlan_switch.isChecked() && !wlan_Manager.isWifiEnabled()) 
    { 
     Log.d(TAG, "true: "); 
     wlan_Manager.setWifiEnabled(true); 
     wifi_list.clear(); 

     wlan_Manager.startScan(); 
    } 
    else { 
     Log.d(TAG, "false "); 
     wlan_Manager.setWifiEnabled(false); 
     wifi_list.clear(); 
     adapter.clear(); 
    } 
} 

@Override 
    public void onReceive(Context context, Intent intent) 
    { 
      int size =0 ; 
      //scan_Result.clear(); 
      Log.d("WifScanner", "onReceive"); 
      wlan_Manager = (WifiManager)context.getApplicationContext().getSystemService(context.WIFI_SERVICE); 
      scan_Result = wlan_Manager.getScanResults(); 
      size = scan_Result.size(); 

      Log.d(TAG, "onReceive: " + size); 

      while (size > 0) 
      { 
       Log.d(TAG, "size : "+size); 
       size--; 
       wifi_list.add(scan_Result.get(size).SSID); 
       adapter.notifyDataSetChanged(); 
      } 
    } 

しかし、私がLower androidバージョンのコードをビルドすると、WiFiリストが表示されます。

+0

:あなたには、いくつかのサンプルコードを見つけることができます。ここ

WifiManager.SCAN_RESULTS_AVAILABLE_ACTION 

:メソッドとアクションとの意図のためにBroadcastReceiverどのフィルタを登録する - あなたはSTARTSCANと無線LANのスキャンを()起動する必要があり、あなたのユースケースについては abhishek

答えて

0

スキャンを開始する前にgetScanResults()を呼び出しています。 Android Wifi Scan - BroadcastReceiver for SCAN_RESULTS_AVAILABLE_ACTION not getting called

+0

私は同じものを使用しました。 – abhishek

+0

@Override public void onReceive(コンテキストコンテキスト、意図インテント) { int size = 0; wlan_Manager =(WifiManager)context.getApplicationContext()。getSystemService(context.WIFI_SERVICE); scan_Result = wlan_Manager.getScanResults(); size = scan_Result.size(); Log.d(TAG、 "onReceive:" + size); while(size> 0) { size-- wifi_list.add(scan_Result.get(size).SSID); adapter.notifyDataSetChanged(); } } – abhishek

関連する問題