如何解决在另一个方法调用完成后,如何从一个方法返回?
我正在Flutter中构建一个android应用,我想在其中扫描WiFi网络并在扫描完成时返回扫描结果。
我在Dart代码和Java代码之间通过MethodChannel调用的当前方法如下:
public List<ScanResult> getScanWifiResult(){
if (WifiManager != null && WifiManager.getScanResults() != null && WifiManager.getScanResults().size() > 0) {
return WifiManager.getScanResults();
}
return null;
}
该方法返回List WifiManager.startScan()
完成后返回。
我见过人们使用broadcastReceiver
,但是我不知道如何才能使我的方法仅在此broadcastReceiver完成后才返回。这是我开始broadcastReceiver
设置的开始。
public List<ScanResult> getScanWifiResult(){
registerReceiver(wifiReceiver,new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
wifiManager.startScan();
//Here I need to return wifiManager.getScanResults(); once the broadcastReceiver is finished.
//return wifiManager.getScanResults();
}
broadcastReceiver wifiReceiver = new broadcastReceiver() {
@Override
public void onReceive(Context context,Intent intent) {
results = wifiManager.getScanResults();
unregisterReceiver(this);
};
}
当broadcastReceiver完成后,如何从该方法返回?
我有权使用WifiManager.getScanResults所需的权限。我可以同时运行WifiManager.getScanResults和WifiManager.startScan而没有权限问题。
更新! 我无法简单地等到wifiManager.getScanResult返回数据,因为我将保存最近执行的扫描的数据。此外,我开始的扫描可能会返回null,这也可以。我只希望结果与我开始的扫描相同。
解决方法
您可以在代码中的任何地方尝试这种方式以获取扫描结果,您必须在清单中要求gps位置权限
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
在清单中添加权限后
List<ScanResult> foundedNetwork;
foundedNetwork = wifiManager.getScanResults();
foundedNetwork.SSID;
foundedNetwork.BSSID;
foundedNetwork.level;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。