在android nougat中扫描WiFi列表返回0
我正在为Android牛轧糖构建代码 我已在清单文件中授予位置和WiFi权限,但我从wlan_Manager.getScanResults获得0 我的代码片段是在android nougat中扫描WiFi列表返回0,android,android-wifi,android-7.0-nougat,Android,Android Wifi,Android 7.0 Nougat,我正在为Android牛轧糖构建代码 我已在清单文件中授予位置和WiFi权限,但我从wlan_Manager.getScanResults获得0 我的代码片段是 wlan_Manager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); wlan_switch = (Switch)findViewById(R.id.switch1); list = (ListView)f
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));
但是,当我为较低版本的android构建代码时,它会显示WiFi列表。在开始任何扫描之前,您正在调用getScanResults。 对于您的用例,您需要使用startScan方法启动wifi扫描,并注册一个BroadcastReceiver,该接收器通过以下操作过滤意图:
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION
在这里,您可以找到一些示例代码:
这是安卓7.x版本中的一个问题。存在两种解决方案: 将设备的版本更新为8。 编辑targetSdkVersion 22的build.gradle
我使用了相同的。@重写ReceiveContext上下文上的public void,Intent{int size=0;wlan\u Manager=WifiManagercontext.getApplicationContext.getSystemServicecontext.WIFI\u服务;scan\u Result=wlan\u Manager.getScanResults;size=scan\u Result.size;Log.dTAG,onReceive:+size;而size>0{size-;wifi_list.addscan_Result.getsize.SSID;adapter.notifyDataSetChanged;}}我拥有所有的权限,但对我来说wifiManager.startScan没有做任何事情,getScanResults返回0,直到我将Android Pie9的targetSdkVersion更改为22
@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();
}
}
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION