我想用下面的例子:
我如何编程android寻找一个特定的网络?
但是我无法执行它,因为下面的问题:
wiimanager wiimanager = (wiimanager)context.getSystemService(Context.WIFI_SERVICE);
之后,我得到了其他几个错误-但[我认为]我已经按照教程/示例精确。
import java.util.List;
import android.app.Activity;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.util.Log;
import android.content.Context;
public class Connect extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.connect);
String networkSSID = "ANDRE-PC_NETWORK";
String networkPass = "superman";
WifiConfiguration conf = new WifiConfiguration();
conf.SSID = """ + networkSSID + """; //ssid must be in quotes
conf.wepKeys[0] = """ + networkPass + """;
conf.wepTxKeyIndex = 0;
conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
conf.preSharedKey = """+ networkPass +""";
conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
WifiManager wifiManager = (WifiManager)getSystemService(WIFI_SERVICE);
wifiManager.addNetwork(conf);
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for( WifiConfiguration i : list ) {
if(i.SSID != null && i.SSID.equals(""" + networkSSID + """)) {
WifiManager.disconnect();
WifiManager.enableNetwork(i.networkId, true);
WifiManager.reconnect();
break;
}
}
}}
ECLIPSE问题日志中的问题:
Description Resource Path Location Type
Cannot make a static reference to the non-static method reconnect() from the type WifiManager Connect.java line 41 Java Problem
Cannot make a static reference to the non-static method disconnect() from the type WifiManager Connect.java line 39 Java Problem
Cannot make a static reference to the non-static method enableNetwork(int, boolean) from the type WifiManager Connect.java line 40 Java Problem
你似乎混淆了一些变量名:
WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
wifiManager.add(conf);
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for( WifiConfiguration i : list ) {
if(i.SSID != null && i.SSID.equals(""" + networkSSID + """)) {
wm.disconnect();
wm.enableNetwork(i.networkId, true);
wm.reconnect();
break;
}
}
wifiManager
应该是wm
,反之亦然。另外,context
应该是this
,或者只是省略getSystemService()
是你的类的方法。
我不确定add()
的问题…
编辑:
对于WifiManager
, add()
不存在,但addNetwork()
存在,所以我猜你需要这个方法而不是add()
Edit2 :
你不知道你在做什么,对吗?您甚至不理解类名和变量名之间的区别!
WifiManager wifiManager
<-第一个是Type,也称为class。第二个是变量名。在你的for
循环中,你使用类型/类而不是变量,所以只写wifiManager
而不是WifiManager
。
你应该明确地从理解编程、OOP和Java的基本知识开始。认真……先学再写