根据Android官方文档,WifiManager的startScan方法在API级别P中已弃用。但是我试图在API级别26(P之前)中使用此方法但没有成功。我开发了一个应用程序,如果用户同意所需的权限,则需要扫描WiFi网络,并且此行为对于应用程序的正常运行至关重要。但是,调用startScan方法时我没有收到任何响应。¿任何人都可以帮助我解决这个问题或找到替代解决方案吗?这是文档的链接。https://developer.android.com/reference/android/net/wifi/WifiManager.html#startScan()干杯编辑:这是开始扫描过程的
执行此行后:WifiManagerman=((WifiManager)ctx.getSystemService(Context.WIFI_SERVICE));将显示一个标有“WifiManager”的线程。在WifiService.javaline203的Java源文件中:HandlerThreadwifiThread=newHandlerThread("WifiService");wifiThread.start();mWifiHandler=newWifiHandler(wifiThread.getLooper());问题是,每次我们的应用程序关闭并重新打开时,它都会创建一个新线程
我正在开发一个应用程序来检查Wifi热点。我在wifiManager.getScanResults()收到错误“java.lang.SecurityException:需要ACCESS_COARSE_LOCATION或ACCESS_FINE_LOCATION权限才能获取扫描结果”,即使我已经声明了这些权限。主要ActivitypublicclassMainActivityextendsAppCompatActivity{WifiManagerwifiManager;String[]wifis;WifiReceiverwifiReceiver;ListViewwifiListView;@
TL;DR版本我需要每秒多次扫描并获取附近接入点的BSSID/M.A.C地址和信号强度。WifiManager.startScan()扫描大约3.5秒,有点慢。(对其他人来说比6秒要好,但对我来说还是太慢了)。我正在寻找一种每200毫秒或更短时间获得结果的方法。更详细的版本。我正在尝试构建一个使用WiFi信号而不是GPS信号的位置查找应用程序。到目前为止一切顺利,除了我需要获取大量数据才能获得准确一致的结果。我需要从我能找到的每个接入点获取BSSID和信号级别,然后存储这些数据以备后用。我尝试使用WifiManager和BroadcastReceiver进行扫描并获取扫描结果。他们的问
这让我很难受,我们将不胜感激。我想使用wifi管理器连接到开放网络。我遇到的问题是代码声称连接到任何网络——甚至是不存在的网络。下面是使用网络的SSID执行和调用的完整代码。无论您将什么字符串作为网络的SSID传递给它,即使不存在任何形状或形式的此类网络,enableNetwork声明都会返回true,我相信这意味着它已连接到网络。我需要做的是确保我有连接。因此,如果我传递一个不存在的网络SSID(例如,它超出范围),API应该在尝试连接时返回失败。任何想法/提示/建议将不胜感激。publicbooleanconto(Stringnetwork){WifiConfigurationwi
我正在尝试为几个依赖WifiManager和返回的ScanResults的类实现一些单元测试。我想要做的是能够控制我收到的ScanResults,以便测试各种不同的条件。不幸的是,我很难成功模拟WifiManager(尽管我想我可以在我的MockWifiManager中传递它的构造函数空引用)。这将只是我的第一个问题,因为一旦我有一个MockWifiManager可以玩(如果它能工作!)我将必须成功创建我的测试ScanResults,它没有公共(public)构造函数(想象它是由某个地方的某个工厂创建的)。问题:如果它没有公共(public)构造函数,我什至可以扩展它吗?我是不是做错了
我在应用中使用setWifiApEnabled()来自隐藏API(通过反射访问)。在一些旧手机上它可以工作(也适用于三星GalaxyS3,一些4.4的手机,......)但我用三星GalaxyS5测试了它并且我得到了java.lang.reflect.InvocationTargetExceptionatjava.lang.reflect.Method.invoke(NativeMethod)atjava.lang.reflect.Method.invoke(Method.java:372)...我正在使用类似的代码Android2.2wifihotspotAPI或Howandwhat
我可以通过编程方式检查Android设备是否已激活网络共享吗?我刚刚看了WifiManager类。WifiInfo中的所有变量都显示相同的值,前提是设备上的WIFI已关闭。谢谢,最好的问候 最佳答案 首先,你需要获取WifiManager:Contextcontext=...finalWifiManagerwifi=(WifiManager)context.getSystemService(Context.WIFI_SERVICE);然后:publicstaticbooleanisSharingWiFi(finalWifiManag
我们一直在使用反射在我们的应用程序中启用Android中的wifi热点(就像其他人一样,看起来):WifiManagermWifiManager=(WifiManager)this.context.getSystemService(Context.WIFI_SERVICE);Methodmethod=mWifiManager.getClass().getMethod("setWifiApEnabled",WifiConfiguration.class,boolean.class);method.invoke(mWifiManager,wifiConfig,enabled);从Andro
如何使用Java(以编程方式)在AndroidWi-Fi连接上设置ProxySettings和ProxyProperties?由于ipAssignment、linkProperties、ProxySettings和ProxyProperties是Android3.1及更高版本WifiConfiguration中的隐藏字段,我需要能够枚举类并使用这些字段。按照使用下面链接的代码示例,我可以为特定Wi-Fi连接设置静态IP地址、网关和DNS,但我还需要设置Wificonfiguration.ProxySettings.STATIC和ProxyProperties参见StackOverflo