有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何连接到特定的wifi网络?

我有一个devlope项目,列出我的设备附近所有可用的wifi连接。现在,我想连接任何一个特定的网络连接。 那我该怎么办?我在listview中拥有所有网络。 如果有任何可用的示例,请发布评论链接

private void getWifiNetworksList() {
    IntentFilter filter = new IntentFilter();
    filter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
    final WifiManager wifiManager = (WifiManager) getApplicationContext()
            .getSystemService(Context.WIFI_SERVICE);
    ;
    registerReceiver(new BroadcastReceiver() {

        @SuppressLint("UseValueOf")
        @Override
        public void onReceive(Context context, Intent intent) {
            sb = new StringBuilder();
            scanList = wifiManager.getScanResults();
            sb.append("\n  Number Of Wifi connections :" + " "
                    + scanList.size() + "\n\n");
            adapter = new ArrayAdapter<String>(DraginoActivity.this,
                    安卓.R.layout.simple_list_item_1, list);
            adapter.clear();
            for (int i = 0; i < scanList.size(); i++) {

                listWifiDevice.setAdapter(adapter);

                // list.add(new Integer(i + 1).toString() + ". ");
                list.add((new Integer(i + 1).toString() + ". ")
                        + (scanList.get(i)).toString().substring(5,
                                (scanList.get(i)).toString().indexOf(",")));
                // list.add("\n\n");

                listWifiDevice.setAdapter(adapter);
                adapter.notifyDataSetChanged();
                listWifiDevice
                        .setOnItemClickListener(new OnItemClickListener() {

                            @Override
                            public void onItemClick(AdapterView<?> arg0,
                                    View arg1, int arg2, long arg3) {
                                TextView tv = (TextView) arg1;

                                // TODO Auto-generated method stub
                                Toast.makeText(DraginoActivity.this,
                                        "" + tv.getText().toString(), 1000)
                                        .show();

                            }
                        });
            }

            // listWifiDevice.setAdapter(adapter);
        }

    }, filter);
    wifiManager.startScan();

}

共 (1) 个答案

  1. # 1 楼答案

     private void setNetworksList() {
        networksList = (ListView) findViewById(R.id.networkList);
        networksList.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, final int position,
                                    long id) {
                final int chosenPosition = position;
                WiFiItem wifiItem = new WiFiItem();
                wifiItem = (WiFiItem) parent.getItemAtPosition(position);
                networkSSID = wifiItem.getSSID();
                networkPass = "";
                showPasswordDialog(ConnectActivity.this);
                setPasswordListener(new PasswordTypedListener() {
    
                    @Override
                    public void onPasswordTyped() {
                        connectHelper = new ConnectHelper();
                        if(scanResult.get(chosenPosition).capabilities.contains("WEP")) {
                            connectHelper.setupConnection(networkSSID, networkPass, "WEP");
                        }
                        //jezeli siec WPA
                        else if(scanResult.get(chosenPosition).capabilities.contains("WPA")) {
                            connectHelper.setupConnection(networkSSID, networkPass, "WPA");
                        }
    
                        //inne przypadki (open network)
                        else {
                            connectHelper.setupConnection(networkSSID, networkPass, "ELSE");
                        }
    
                        wifiManager.addNetwork(connectHelper.getConfiguration());
    
                        List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
                        for( WifiConfiguration i : list ) {
                            if(i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"")) {
                                wifiManager.disconnect();
                                wifiManager.enableNetwork(i.networkId, true);
                                if(wifiManager.reconnect()) {
                                    for(int j=0;j<listWifi.size();j++){
                                        listWifi.get(j).setConnected(false);
                                    }
                                    runnableCounter=0;
                                    handler.postDelayed(ifConnected,1000);
                                }
                                break;
                            }
                        }
                    }
    
                });
    
            }
    
        });
    }
    

    还有对话

     private void showPasswordDialog(Context context) {
        final EditText input = new EditText(context);
        input.setSingleLine();
        AlertDialog.Builder alert = new AlertDialog.Builder(context);
        alert.setTitle("PASSWORD");
        alert.setView(input);
        alert.setPositiveButton("Confirm", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                networkPass = input.getText().toString();
                if(ConnectActivity.this.passwordListener != null)
                    ConnectActivity.this.passwordListener.onPasswordTyped();
            }
        });
        alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
            }
        });
        alert.show();
    
    }
    

    在onCreate中,您可以跳过创建WifiItems,只存储SSID

        ArrayList<WiFiItem> listWifi = new ArrayList<WiFiItem>();
        wifiManager.startScan();
        scanResult = wifiManager.getScanResults();        
        for(ScanResult sc : scanResult) {
            WiFiItem wifiItem = new WiFiItem();
            wifiItem.setSSID(sc.SSID);
            wifiItem.setBSSID(sc.BSSID);           
            listWifi.add(wifiItem);
        }