android o wifi scan,android – 如何连接到Wifi ScanResult项目

这篇博客展示了如何在Android应用中实现自定义的WiFi设置。通过监听WiFi扫描结果并显示在ListView中,用户可以点击选择一个网络进行连接。连接过程涉及设置WiFi配置、添加网络到WiFiManager并启用该网络。
摘要由CSDN通过智能技术生成

我正在尝试创建自定义WifiSettings.

我创建了一个活动:

package manual;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import android.app.Activity;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.net.wifi.ScanResult;

import android.net.wifi.WifiConfiguration;

import android.net.wifi.WifiManager;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.AdapterView;

import android.widget.Button;

import android.widget.CompoundButton;

import android.widget.CompoundButton.OnCheckedChangeListener;

import android.widget.ImageButton;

import android.widget.ListView;

import android.widget.SimpleAdapter;

import android.widget.Switch;

import android.widget.TextView;

import android.widget.Toast;

public class WiFiDemo extends Activity implements OnClickListener

{

WifiManager wifi;

ListView lv;

TextView textStatus;

Button buttonScan;

Switch enable;

int size = 0;

List results;

String ITEM_KEY = "key";

ArrayList> arraylist = new ArrayList>();

SimpleAdapter adapter;

/* Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.wifi);

buttonScan = (Button) findViewById(R.id.updateWifi);

buttonScan.setOnClickListener(this);

enable = (Switch) findViewById(R.id.switch1);

lv = (ListView)findViewById(R.id.listView1);

wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);

enable.setChecked(wifi.isWifiEnabled());

enable.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override

public void onCheckedChanged(CompoundButton compoundbutton, boolean flag) {

wifi.setWifiEnabled(flag);

if(flag){

arraylist.clear();

lv.setVisibility(View.VISIBLE);

buttonScan.setEnabled(true);

wifi.startScan();

}else{

lv.setVisibility(View.INVISIBLE);

buttonScan.setEnabled(false);

}

}

});

this.adapter = new SimpleAdapter(WiFiDemo.this, arraylist, R.layout.wifi_item, new String[] { ITEM_KEY }, new int[] { R.id.list_value });

lv.setAdapter(this.adapter);

lv.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

int a = lv.getSelectedItemPosition();

}

});

registerReceiver(new BroadcastReceiver()

{

@Override

public void onReceive(Context c, Intent intent)

{

results = wifi.getScanResults();

size = results.size();

for(int i=size-1;i>=0;i--){

HashMap item = new HashMap();

item.put(ITEM_KEY, results.get(i).SSID);

arraylist.add(item);

}

if(size>0)

adapter.notifyDataSetChanged();

}

}, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));

}

public void onClick(View view)

{

arraylist.clear();

wifi.startScan();

Toast.makeText(this, "Scanning....", Toast.LENGTH_SHORT).show();

}

}

当用户点击ListView项时,它需要连接到那个wifi

lv.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

int a = lv.getSelectedItemPosition();

ScanResult wifiChoosed = results.get(a);

//WHAT I NEED TO DO HERE?

}

});

我需要做什么ScanResult wifiChoosed = results.get(a);连接到wifi?

解决方法:

WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);

// setup a wifi configuration

WifiConfiguration wc = new WifiConfiguration();

wc.SSID = "\"YOUR_SSID\"";

wc.preSharedKey = "\"YOUR_PASSWORD\"";

wc.status = WifiConfiguration.Status.ENABLED;

wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);

wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);

wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);

wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);

wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);

wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);

// connect to and enable the connection

int netId = wifiManager.addNetwork(wc);

wifiManager.enableNetwork(netId, true);

wifiManager.setWifiEnabled(true);

标签:android,wifimanager

来源: https://codeday.me/bug/20190709/1410332.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值