How do I program android to look for a particular network? (Issues Following Simple Tutorial)

纵然是瞬间 提交于 2019-12-25 06:37:58

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!