0

我正在尝试使用以下示例:

如何对 android 进行编程以查找特定网络?

但是由于以下问题,我无法执行它:

WifiManager wifiManager = (WifiManager)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
4

1 回答 1

0

您似乎混淆了一些变量名称:

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()...的问题

编辑

Welladd()不存在WifiManageraddNetwork()确实存在,所以我想你需要那个方法而不是add()

编辑2

你不知道你在做什么,对吧?您甚至不了解类名和变量名之间的区别!

WifiManager wifiManager<- 首先是Type,也称为类。第二个是变量名。在您的for循环中,您使用类型/类而不是变量,所以只需编写wifiManager而不是WifiManager.

你应该明确地从了解编程、OOP 和 Java 的基础知识开始。说真的...在尝试编写语言之前先学习语言...

于 2013-04-03T19:26:29.313 回答