我正在开发一个需要扫描公共Wi-Fi接入点的项目.
目前,我正在过滤ScanResult这样的:
for (ScanResult scanResult : wifiList) {
if (!(scanResult.capabilities.contains("WEP") ||
scanResult.capabilities.contains("WPA") ||
scanResult.capabilities.contains("WPA2"))) {
openWifiList.add(scanResult);
}
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我也得到附近的打印机.
扫描时,手机未连接到任何网络.
我原以为我得到的列表与Android上的Wi-Fi设置中显示的Wi-Fi连接列表完全相同.但在Wi-Fi设置中,没有显示任何打印机.
因此1)我认为打印机出现在ScanResult列表中是很奇怪的,打印机是否真的可见?
更新:并非所有的Wi-Fi打印机都可见,我得到了一些提示,看起来就像打印机一样,具有特殊功能,例如HP打印机支持 HP Wireless Direct功能(参见例如 https:/ /h30434.www3.hp.com/t5/Inkjet-Printing/Printer-SSID-appearing-on-my-wi-fi-list/td-p/1705073和 https://support.hp.com/rs-en/document/c04577030).
2)有什么方法可以检查是否ScanResult属于打印机?
到目前为止,我只能想到过滤常见的SSID名称,但这不会非常有效或可靠.
谢谢你的任何建议.
也许这是有史以来最荒谬的问题,或者我不能再直接思考了 - 但是在使用URLUtil.isHttpsUrl()from时我经历了一个非常奇怪的行为android.webkit。
我正在为我的项目编写一些单元测试,并检测到一个方法返回了一个意外的值,因为 URL 被认为是无效的。
试图缩小范围,我最终得到了一个简单的测试用例,如下所示:
@Test
public void testSimpleHttpsCheck() {
String url = "https://www.this.ishttps.com";
Assert.assertTrue(isHttpsUrl(url)); // returns true
Assert.assertTrue(URLUtil.isHttpsUrl(url)); // returns false
}
// this is a local copy of isHttpsUrl:
// it is simple copied from the original URLUtil (SDK 25)
private boolean isHttpsUrl(String url) {
return (null != url) &&
(url.length() > 7) &&
url.substring(0, 8).equalsIgnoreCase("https://");
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我只是URLUtil.isHttpsUrl()从android.webkit包中复制了。
我已经将它与compileSdkVersion 25和一起使用了compileSdkVersion 24。`URLUtil.isHttpUrl() 也会发生同样的情况
我已经尝试清理+重建项目,重新启动+使AS缓存失效。
有人可以解释发生了什么吗?难道我做错了什么? …