Articles of wifimanager

Android获取热点提供设备的IP地址

我正在使用 public static String getLocalIPAddress(WifiManager wm){ return Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress()); } 获取执行设备的IP地址。 如果设备连接到“公共”wlan网络,并且设备连接到由其他Android设备通过热点托管的wifi网络,则工作正常。 如果设备未连接到任何wifi网络,则返回“0.0.0.0”(正确)。 但是如果设备通过提供热点来托管wifi网络,则该方法仍然返回“0.0.0.0”。 如何在“自己的wifi网络”中获取热点提供设备的真实IP地址? 感谢和问候

当已知的SSIS wifi网络进入/超出范围时,有没有办法得到通知?

我想写一个应用程序,它包括在已知的wifi网络进入或超出范围时执行操作。 例如,假设我的家庭wifi网络的SSIS是“WifiHome”,我想发出通知“你刚离开家!” 每当设备无法再检测到此特定网络时。 (或者替代地 – 当设备重新检测来自该网络的信号时,“你刚进入家中”)。 我的问题是:是否可以在不经常查询可用网络列表的情况下收听这些更改?

Android Wi-Fi Direct读取rssi信号强度

我需要测量两部Android手机之间的Wi-Fi Direct信号(RSSI信号)。 我怎么能这样做?

在Android 6.x(Marshmallow)中以编程方式设置静态IP和网关

任何人都可以告诉我如何在Android 6中以编程方式设置静态IP和网关? 我在这里和这里读过。 Settings.System不再工作了,Goolgle说在API级别17中弃用了WIFI_STATIC_IP并改为使用WifiManger 。 不幸的是我在WifiManger和WifiConfiguration课程中找不到任何相关内容。

如何在Wi-Fi Direct系列中不再提供对等设备时收到通知?

我正在开发基于使用Wifi Direct API的Android应用程序。 我在我的Activity注册了一个BroadcastReceiver ,以便收到有关以下Wifi Direct事件的通知: WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION 我相信对等列表中的任何更改(包含或排除Wifi Direct范围内的对等方)都可能触发BroadcastReceiver 。 在我的应用程序中,当find新的对等体时,其名称正确地包含在ListView ,但如果对等体离开无线范围(或者如果我关闭其Wi-Fi接口),则不调用BroadcastReceiver (更具体地说,该 WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION 事件未被触发),对等名称仍保留在ListView 。 我想知道是否有任何方式来处理这个问题,因为对等名称包含在ListView ,但从未排除。 我已经考虑重新初始化Channel和WifiP2pManager实例,但我相信这会断开所有对等体。

android wifiManager.addNetwork返回-1

我正在编写一个Android应用程序,它将连接到特定的WPA访问点,连接后,它将发出一个http调用。 它不会保存网络配置。 我已经阅读了连接到wifi网络上几乎所有关于堆栈溢出的post,但找不到对我有用的答案。 这是我用来连接的代码.. WifiConfiguration wc = new WifiConfiguration(); wc.allowedAuthAlgorithms.clear(); wc.allowedGroupCiphers.clear(); wc.allowedPairwiseCiphers.clear(); wc.allowedProtocols.clear(); wc.allowedKeyManagement.clear(); wc.SSID = “\””.concat(“”).concat(“\””); wc.preSharedKey = “\””.concat(“”).concat(“\””); wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104); wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN); // For WPA2 wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA); // For WPA wc.priority = 0; //wc.hiddenSSID = true; wc.status = WifiConfiguration.Status.ENABLED; // connect to and enable the connection WifiManager wifiManager = (WifiManager) […]

除非我的应用程序批准,否则防止Android手机连接到WiFi网络?

我想开发一个可以阻止连接到WiFi网络的应用程序,除非我批准它。 我希望能够查询接入点的MAC地址,并将其与SSID对应的已知地址列表进行比较。 该应用程序的目标是保护用户不会意外连接到恶意访问点,例如可以使用菠萝设备生成的types。 我不清楚我的研究如何实现这一目标。 诸如如何通知wifi网络状态变化等问题? 解释如何检测连接已经发生 ,但对于我的用例已经太晚了。 ConnectivityManager和WifiManager似乎都没有提供添加可能会中断正在进行的连接的侦听器的方法。 我对解决方案的一些想法: 将自己安装为代理,并决定是否允许数据通过。 但是,这似乎不是基于Do Android代理设置适用于设备上的所有应用程序的选项吗? (提示:答案是“不”)。 用我自己创建的东西替换现有的WiFi管理器。 但是,我真的很难在Android开发人员指南中find有关更换系统组件的任何信息。 因此,我不确定这在非根电话上是否可行。 将网络密码存储在我的应用程序中,并将WiFi管理器中的密码设置为无意义的值。 然后捕获一个警告连接失败的广播消息(可能类似于WifiManager.WPS_AUTH_FAILURE )并有选择地决定重新连接回该网络。 可能是一个可能的(如果丑陋的)解决方案,但是我可以在网络仍然连接时将密码设置回无意义的值,以确保我们不会安静地连接到另一个同名的SSID吗? 我不确定 。 我发现菠萝设备可能会接受任何密码,从而使这种方法无效。 find一些方法来阻止Android自动连接到已知网络(即以前使用过的网络或者密码存储的网络)。 然后我可以管理我的应用程序的所有连接/断开连接。 我无法在手机上看到如何手动执行此操作,因此我怀疑这是可行的。 任何人都可以建议一种可以在非根电话上运行的方法吗?

以编程方式获取Wi-Fi协议(802.11a / b / g / n)

通过WifiManager,我的Android应用程序可以获得有关Wi-Fi的大量细节。 但是我没有得到协议types,如a / b / g / n。 我有客户要求这样做。 有谁知道如何实现这一目标? (我没有选择使用adb)。 它将以编程方式完成。 我坚信设备和路由器在连接之前已经协商了协议。 所以信息与设备有关。 问题是,我们如何得到它?

在Android上的每个WiFi扫描之间应该使用什么间隔?

我需要定期执行Wifi扫描。 时间间隔设置为1-2秒时遇到问题。 看来我没有得到任何ScanResult 。 是否有最低限度的时间设置,以便WifiManager能够执行成功的WiFi扫描? 这是代码。 我正在使用Service进行Wifi扫描: public class WifiScanning extends Service{ private static final String TAG = "WifiScanning"; private Timer timer; public int refreshRate, numberOfWifiScan, wifiScanGranularity; WifiReceiver receiverWifi = new WifiReceiver(); WifiManager wifi; StringBuilder sb; List<ScanResult> wifiList; List<APData> apdataList; List<List<APData>>surveyData; private TimerTask updateTask = new TimerTask() { @Override public void run() { Log.i(TAG, "Timer […]

Android WifiLock WIFI_MODE_SCAN_ONLY无法正常工作

我试图阻止无线连接。 我希望我的应用程序打开wifi,但不连接到已存储在智能手机上的任何networking。 但即使在使用SCAN_ONLY模式之后,他仍然连接到已经“知道”的networking。 ….. wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); ….. wifiManager.setWifiEnabled(true); WifiLock scanOnly = wifiManager.createWifiLock(WifiManager.WIFI_MODE_SCAN_ONLY, "scanOnly"); scanOnly.acquire(); 已经绝望,我试图断开后,确保状态是WIFI_STATE_ENABLED无线。 该应用程序无法连接几秒钟,但一段时间后,它连接到同一个networking… wifiManager.setWifiEnabled(true); …. WHEN (WIFI STATE == WIFI_STATE_ENABLED) {wifiManager.disconnect(); scanOnly.acquire();} 有人能帮我吗? TKS