我正在编写一个Android应用程序,它将连接到特定的WPA访问点,连接后,它将发出一个http调用.它不会保存网络配置.我已经阅读了连接到wifi网络上几乎所有关于堆栈溢出的帖子,但找不到对我有用的答案.这是我用来连接的代码..
WifiConfiguration wc = new WifiConfiguration();
wc.allowedAuthAlgorithms.clear();
wc.allowedGroupCiphers.clear();
wc.allowedPairwiseCiphers.clear();
wc.allowedProtocols.clear();
wc.allowedKeyManagement.clear();
wc.SSID = "\"".concat("<ssid>").concat("\"");
wc.preSharedKey = "\"".concat("<password>").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) getSystemService(this.WIFI_SERVICE);
int netId = wifiManager.addNetwork(wc);
boolean wifiEnabled = wifiManager.enableNetwork(netId, true);
wifiManager.setWifiEnabled(true);
Log.d("opener", "addNetwork returned " + netId);
if (netId > 0) {
wifiId = netId;
}
Run Code Online (Sandbox Code Playgroud)
但是netId总是-1.我在两部不同的手机上试过它(ICS:HTC Rezound和GingerBread:摩托罗拉DroidX).两者显示完全相同的结果.我究竟做错了什么? …
任何人都可以告诉我如何在Android 6中以编程方式设置静态IP和网关?
Settings.System
不再工作了,goolgle说WIFI_STATIC_IP
在API级别17中已弃用,WifiManger
而是使用.不幸的是我无法找到关于它的任何事情WifiManger
和WifiConfiguration
类.
我需要获得所有AP的BSSID(MAC).请在下面找到代码块.
List<WifiConfiguration> test = wifiManager.getConfiguredNetworks();
for(int k=0;k<test.size();k++){
Log.d("acheck", "test BSSID = "+test.get(k).BSSID);
Log.d("acheck", "test BSSID = "+test.get(k).BSSID);
}
Run Code Online (Sandbox Code Playgroud)
但是上面的代码块正确返回SSID但BSSID为null.我想用用户定义的SSID连接到最强的接入点.是否有任何API方法可以获得具有用户定义的SSID的最佳信号强度的AP.(在我的情况下,有许多SSID具有单个SSID且具有多个AP可用.)
你们中的任何一个Android专家都知道任何开源代码来创建WifiConfiguration
一个给定的ScanResult
?这会有所帮助.事实上,我的捕获(2012年4月中旬)Android源代码的第483行(/ 624)WifiConfiguration.java
是一个注释掉的构造函数,旨在做到这一点,一个大TODO想知道它是否值得实现(见下面的引用).我的动议是的,我能听到第二个吗?
我看到的主要挑战(实际上是这个问题的主要内容)是如何解释ScanResult.configuration字符串.
[WPA2-PSK-CCMP]
,[WPS]
等等?从WifiConfiguration.java
(可能的编辑):
/**
* Construct a WifiConfiguration from a scanned network
* @param scannedAP the scan result used to construct the config entry
* TODO: figure out whether this is a useful way to construct a new entry.
*
public WifiConfiguration(ScanResult scannedAP) {
networkId = -1;
SSID = scannedAP.SSID;
BSSID = scannedAP.BSSID;
// aaaah screw it I'm tired/lazy
}
*/
Run Code Online (Sandbox Code Playgroud)
我的组织正在创建一个应用程序,它将在移动配置文件中列出某些wifi热点,这样当用户在范围内时,用户无需为这些wifi写入密码.我知道这可以使用.mobileconfig
文件来完成.但我有严重的疑虑.
以下是有关该应用的几个问题:
可以.mobileconfig
以编程方式创建文件.我找不到如何以编程方式创建这个链接的链接(不使用iPCU).
Apple会允许创建.mobileconfig
文件的应用程序并要求用户下载并安装它,以便更改wifi设置吗?
是否.mobileconfig
只允许用户通过Safari或Mail 下载此文件?有没有办法直接从应用程序打开此文件到设置屏幕?
提前致谢.:)
我正在尝试使用覆盆子pi型号b +(或任何覆盆子pi)上的RTL8188CUS芯片组启用USB wifi加密狗的监控模式.
$ lsusb
Bus 001 Device 005: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
$ sudo iwconfig wlan0 mode monitor
Error for wireless request "Set Mode" (8B06) :
SET failed on device wlan0 ; Invalid argument.
Run Code Online (Sandbox Code Playgroud)
根据github / raspberrypi / linux/issues/369,您需要启用内核分发包含但未编译的rtlwifi/rtl8192cu内核模块.这需要对一些文件进行微小修改,如下面"STEP 2"中所述.
该线程中提到的USB问题已从4.1.6+开始解决,因此rtlwifi驱动程序应该可以工作.
在新鲜的覆盆子pi(模型B +)上重新创建的步骤......
第0步:将现有模块和内核更新到最新版本
$ sudo apt-get update
$ sudo rpi-update
$ uname -a
Linux raspberrypi 4.1.7+ #815 PREEMPT Thu Sep 17 17:59:24 BST 2015 armv6l GNU/Linux
Run Code Online (Sandbox Code Playgroud)
第1步:获取raspbian内核源代码并添加缺少的依赖项
$ git clone --depth=1 …
Run Code Online (Sandbox Code Playgroud) 我使用以下代码创建Wifi-hotspot配置.我能够创建Hotspot配置并能够启用它.但我已经为WPA-PSK提供了配置,但它始终作为OPEN网络.
public boolean setHotSpot(String SSID,String passWord){
Method[] mMethods = mWifiManager.getClass().getDeclaredMethods();
for(Method mMethod: mMethods){
if(mMethod.getName().equals("setWifiApEnabled")) {
WifiConfiguration netConfig = new WifiConfiguration();
netConfig.SSID = SSID ;
netConfig.preSharedKey = passWord;
netConfig.hiddenSSID = true;
netConfig.status = WifiConfiguration.Status.ENABLED;
netConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
netConfig.allowedKeyManagement.set(4);
netConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
netConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP);
netConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
netConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
netConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
netConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
netConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
netConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
try {
mMethod.invoke(mWifiManager, netConfig,true);
mWifiManager.saveConfiguration();
return true;
} catch (Exception e) {
e.printStackTrace();
CommonUtil.log(TAG,"Exception : "+e.getLocalizedMessage());
}
}
}
return false;
Run Code Online (Sandbox Code Playgroud)
}
运行此应用程序后,Hotspot已启用.请查看下面的图片.
如何在Android应用程序中设置WPA_PSK wifi配置?
根据以下答案,我修改了下面的代码.
public boolean setHotSpot(String SSID, String passWord) {
boolean apstatus;
WifiConfiguration netConfig …
Run Code Online (Sandbox Code Playgroud) android wifimanager android-wifi personal-hotspot wificonfiguration
据我所知,到目前为止,hostapd是一个能够进行一些网络配置的二进制文件.
但是,要启用hostapd调试级别,是否需要重建二进制文件?我可以采取其他方法而不是重建一个新方法吗?
我需要从WifiConfiguration
入口获取安全类型.可能吗?
String getSecurityType(WifiConfiguration conf) {
}
Run Code Online (Sandbox Code Playgroud)
返回值 "NONE", "WEP", "WPA", "WPA2"
对于那些认为这是一个重复问题的人:我想从WiFiConfiguration
对象而不是从ScanResult
对象获取信息.这是不一样的!
我想使用iOS应用程序配置非Apple WiFi设备.连接将通过由同一设备创建的WiFi进行.
最好是使用Apple的WAC(无线附件配置)功能还是可以在没有它的情况下完成它?(那么不需要MFi许可证)
如果可以不使用WAC:哪个更省时,更昂贵,开发没有WAC的定制解决方案或获得MFi许可的过程(和成本)?
需要注意的是,虽然配置应用程序还必须通过蜂窝网络访问互联网以获取配置数据.关于此事的问题可以在这里找到:iOS应用程序在通过WiFi进行"无线附件配置"时是否可以使用蜂窝互联网连接?
你有什么想法,经验?
我正在使用ESP8266-12 wifi模块访问我的家庭wifi网络来控制灯光.为了上传新固件(OTA:Over the Air)更新,我想使用ESP8266的热点AccessPoint,因为在更改了我的wifi网络的密码后,我将无法做到这一点.这是我的Arduino代码:
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <ArduinoOTA.h>
#include <ESP8266WebServer.h>
//ssid and password of your wifi network
const char* ssid = "wifi_ssid";
const char* password = "wifi_password";
//ssid and password to connect to local hotspot of ESP8266
const char *esp_ssid = "your_desired_ssid";
const char *esp_password = "your_desired_password";
IPAddress ip(192, 168, 1, xx); // where xx is the desired IP Address
IPAddress gateway(192, 168, 1, 254); // set gateway to match your wifi network
IPAddress subnet(255, 255, 255, 0); …
Run Code Online (Sandbox Code Playgroud) 我想改变Hotspot SSID!有人可以帮忙吗?
从Android以编程方式打开/关闭WiFi HotSpot,这是我切换便携式热点的代码:
import android.content.*;import android.net.wifi.*;
import java.lang.reflect.*;
public class ApManager {
//check whether wifi hotspot on or off
public static boolean isApOn(Context context) {
WifiManager wifimanager = (WifiManager) context.getSystemService(context.WIFI_SERVICE);
try {
Method method = wifimanager.getClass().getDeclaredMethod("isWifiApEnabled");
method.setAccessible(true);
return (Boolean) method.invoke(wifimanager);
}
catch (Throwable ignored) {}
return false;
}
// toggle wifi hotspot on or off
public static boolean configApState(Context context) {
WifiManager wifimanager = (WifiManager) context.getSystemService(context.WIFI_SERVICE);
WifiConfiguration wificonfiguration = null;
try {
// if WiFi is on, …
Run Code Online (Sandbox Code Playgroud) 我想使用python更改wifi接口的IP地址。我该怎么做?您不必告诉我代码。请指出我。我去追捕 谢谢!
wifi ×8
android ×7
android-wifi ×7
wifimanager ×4
ios ×2
access-point ×1
arduino ×1
esp8266 ×1
hostapd ×1
iphone ×1
linux ×1
linux-kernel ×1
objective-c ×1
python ×1
raspbian ×1