问题
I'm attempting to use the following example:
How do I program android to look for a particular network?
But I'm unable to execute it due to issues stemming from the line:
WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
After that I'm getting several other errors - but [I think] I've followed the tutorial/example precisely.
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;
}
}
}}
ISSUES IN ECLIPSE PROBLEM LOG:
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
回答1:
You seem to confuse some variable names:
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
should be wm
or vice versa. Also context
should be this
or just left out as getSystemService()
is a method of your class.
I am not sure about the issue with add()
...
Edit:
Well add()
does not exist for WifiManager
but addNetwork()
does, so I guess you need that method instead of add()
Edit2:
You have no idea what you are doing, right? You don't even understand the difference between a class name and a variable name!
WifiManager wifiManager
<- First is the Type, also known as class. The second one is the variable name. In your for
loop you use the type/class instead of the variable, so just write wifiManager
instead of WifiManager
.
And you should definitively start by understanding the very basics of programming, OOP and Java. Seriously... Learn the language before you try to write it...
来源:https://stackoverflow.com/questions/15782953/how-do-i-program-android-to-look-for-a-particular-network-issues-following-sim