私は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リストが表示されます。
:あなたには、いくつかのサンプルコードを見つけることができます。ここ
:メソッドとアクションとの意図のためにBroadcastReceiverどのフィルタを登録する - あなたはSTARTSCANと無線LANのスキャンを()起動する必要があり、あなたのユースケースについては –
abhishek