自动和以编程方式连接到特定的WiFi接入点

Har*_*oun 2 android wifimanager android-wifi

我需要让我的应用程序自动连接到特定SSID的密码.我正在尝试这个,但这就是我得到的:

错误:

非静态方法addNetwork(WifiConfiguration)不能从静态上下文中引用

错误:

非静态方法enableNetwork(int,boolean)不能从静态上下文中引用

final WifiManager wifiManager = (WifiManager) MainActivity.this.getSystemService(Context.WIFI_SERVICE);
final WifiConfiguration config = new WifiConfiguration();
config.SSID = "\"xxx\"";
config.preSharedKey = "\"123\"";
if (!wifiManager.isWifiEnabled()){
    wifiManager.setWifiEnabled(true);
    int networkId = WifiManager.addNetwork(config);
    WifiManager.enableNetwork(networkId, true);
}
Run Code Online (Sandbox Code Playgroud)

Beh*_*nam 5

调用wifiManager对象enableNetwork()上的函数,而不是类.WifiManager

小心:w字母应该是小写的.

做同样的事情addNetwork().

编辑:

在您的清单中添加以下权限:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Run Code Online (Sandbox Code Playgroud)

编辑2:

对于WPA,请更新您的配置,如下所示:

config.status = WifiConfiguration.Status.ENABLED;

config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);

config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
Run Code Online (Sandbox Code Playgroud)

EDIT3:

在行下方添加以下wifiManager.setWifiEnabled(true)行:

wifiManager.startScan();
Run Code Online (Sandbox Code Playgroud)

编辑4:

如果您需要其他帮助,请阅读此问题本文.祝好运.