小编soe*_*oey的帖子

Android Wi-Fi扫描:从ScanResult过滤打印机

我正在开发一个需要扫描公共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名称,但这不会非常有效或可靠.

谢谢你的任何建议.

android network-printers wifimanager android-wifi

10
推荐指数
1
解决办法
626
查看次数

简单单元测试中的 URLUtil.isHttpsUrl() 错误返回值?(返回默认值=真)

也许这是有史以来最荒谬的问题,或者我不能再直接思考了 - 但是在使用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缓存失效。

有人可以解释发生了什么吗?难道我做错了什么? …

java android unit-testing

3
推荐指数
1
解决办法
703
查看次数