- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想让用户连接到wi-fi列表中可用的wi-fi。我想显示一个对话框警报,如果它的 protected 和其他设置与我们打开 wi-fi 并点击可用的 wi-fi 时显示的 android 手机相同,则在点击 wi-fi 时询问密码。
到目前为止,我所做的是在 ListView 中获取可用 Wi-Fi 的列表。
这是我的代码。
import java.util.List;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends Activity {
WifiManager mainWifiObj;
WifiScanReceiver wifiReciever;
ListView list;
String wifis[];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = (ListView)findViewById(R.id.listView1);
mainWifiObj = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifiReciever = new WifiScanReceiver();
mainWifiObj.startScan();
}
protected void onPause() {
unregisterReceiver(wifiReciever);
super.onPause();
}
protected void onResume() {
registerReceiver(wifiReciever, new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
super.onResume();
}
class WifiScanReceiver extends BroadcastReceiver {
@SuppressLint("UseValueOf")
public void onReceive(Context c, Intent intent) {
List<ScanResult> wifiScanList = mainWifiObj.getScanResults();
wifis = new String[wifiScanList.size()];
for(int i = 0; i < wifiScanList.size(); i++){
wifis[i] = ((wifiScanList.get(i)).toString());
}
String filtered[] = new String[wifiScanList.size()];
int counter = 0;
for (String eachWifi : wifis) {
String[] temp = eachWifi.split(",");
filtered[counter] = temp[0].substring(5).trim()+"\n" + temp[2].substring(12).trim()+"\n" +temp[3].substring(6).trim();//0->SSID, 2->Key Management 3-> Strength
counter++;
}
list.setAdapter(new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_list_item_1, filtered));
}
}
}
最佳答案
这是我的 WiFi 连接代码,请看一下,希望对您有所帮助:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.app.Activity;
import android.app.Dialog;
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.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
private WifiManager wifi;
private ListView lv;
// TextView textStatus;
private Button buttonScan;
private int size = 0;
private List<ScanResult> results;
private final Context context = this;
private EditText pass;
private String checkPassword = null;
private String ITEM_KEY = "key";
private ArrayList<HashMap<String, String>> arraylist = new ArrayList<HashMap<String, String>>();
private SimpleAdapter adapter;
/* Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// textStatus = (TextView) findViewById(R.id.textStatus);
buttonScan = (Button) findViewById(R.id.buttonScan);
buttonScan.setOnClickListener(this);
lv = (ListView) findViewById(R.id.list);
wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
connectToWifi(arg2);
}
});
lv.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
showWifiSettings(arg2);
return true;
}
});
if (wifi.isWifiEnabled() == false) {
Toast.makeText(getApplicationContext(),
"wifi is disabled..making it enabled", Toast.LENGTH_LONG)
.show();
wifi.setWifiEnabled(true);
}
adapter = new SimpleAdapter(MainActivity.this, arraylist,
R.layout.row, new String[] { ITEM_KEY },
new int[] { R.id.list_value });
lv.setAdapter(adapter);
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context c, Intent intent) {
results = wifi.getScanResults();
size = results.size();
}
}, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
}
@Override
public void onClick(View view) {
arraylist.clear();
wifi.startScan();
Toast.makeText(this, "Scanning...." + size, Toast.LENGTH_SHORT).show();
try {
size = size - 1;
while (size >= 0) {
HashMap<String, String> item = new HashMap<String, String>();
item.put(ITEM_KEY,
results.get(size).SSID.toString()
+ results.get(size).capabilities.toString());
arraylist.add(item);
size--;
adapter.notifyDataSetChanged();
}
} catch (Exception e) {
}
}
private void showWifiSettings(int arg2) {
showDialogOfOptions(arg2);
}
private void showDialogOfOptions(int arg2) {
// Create a custom Dialog
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.custom);
dialog.setTitle("Network details");
TextView textSSID = (TextView) dialog.findViewById(R.id.textSSID);
TextView textBSSID = (TextView) dialog.findViewById(R.id.textBSSID);
Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);
textSSID.setText(results.get(arg2).SSID);
textBSSID.setText(results.get(arg2).BSSID);
// if button is clicked, close the custom dialog
dialogButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
}
private void finallyConnect(String checkPassword, int position) {
String networkSSID = results.get(position).SSID;
String networkPass = checkPassword;
WifiConfiguration wifiConfig = new WifiConfiguration();
wifiConfig.SSID = String.format("\"%s\"", networkSSID);
wifiConfig.preSharedKey = String.format("\"%s\"", networkPass);
// remember id
int netId = wifi.addNetwork(wifiConfig);
wifi.disconnect();
wifi.enableNetwork(netId, true);
wifi.reconnect();
WifiConfiguration conf = new WifiConfiguration();
conf.SSID = "\"\"" + networkSSID + "\"\"";
conf.preSharedKey = "\"" + networkPass + "\"";
wifi.addNetwork(conf);
}
private void connectToWifi(final int position) {
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.connect);
dialog.setTitle("Connect to Network");
TextView textSSID = (TextView) dialog.findViewById(R.id.textSSID1);
TextView textBSSID = (TextView) dialog.findViewById(R.id.textBSSID1);
TextView capabilities = (TextView) dialog
.findViewById(R.id.textCapabilities);
Button dialogButton = (Button) dialog.findViewById(R.id.okButton);
pass = (EditText) dialog.findViewById(R.id.textPassword);
textSSID.setText(results.get(position).SSID);
textBSSID.setText(results.get(position).BSSID);
capabilities.setText(results.get(position).capabilities);
//
// if button is clicked, connect to the network;
dialogButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
checkPassword = pass.getText().toString();
finallyConnect(checkPassword, position);
dialog.dismiss();
}
});
dialog.show();
}
}
关于android - 如何连接到 ListView 中可用的 wi-fi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25930149/
除了智能手机、平板电脑和个人电脑等流行设备外,Wi-Fi 6还将嵌入其他设备中,包括无线摄像头、智能家居设备、游戏机、可穿戴设备和AR/VR耳机。 那么,Wi-Fi 6会取代5G,成为下一代无线网络
在 API 14 或更高版本 (ICS) 中,可以使用临时 Wi-Fi 网络。我目前拥有以下设备,我正在尝试弄清楚如何测试 Wi-Fi 直连功能,或者我是否需要购买另一台搭载 Android 4.0
我正在构建一个 Android 应用程序以允许在有限范围内的两个设备之间进行通信,但我找不到与 native 等效的插件 Android Wi-Fi peer-to-peer适用于 Phonegap/
我目前正在尝试通过 Wi-Fi Direct 连接两部知道彼此 MAC 地址的手机,但偶然发现了以下问题:我从 收到的 MAC 地址 WifiManager wifiMan = (WifiMa
在 iOS 设备内和支持 Wi-Fi Direct 的设备之间是否可以进行 Wi-Fi Direct 连接? 目标是在没有任何 Controller 的情况下实现 iOS 设备与另一台设备(不一定是另
我正在开发一个管理 Wi-Fi 连接的应用程序。我的场景如下:假设整栋楼都有一个名为“testing-tls”的 Wi-Fi 网络。我的应用程序应该只能连接到选定的接入点(基于 BSSID 或 MAC
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
考虑这张 map : 我需要了解Wi-Fi三角测量的基本原理。上图中描绘了该场景。为了实现Wi-Fi三角测量,我至少需要三个Wi-Fi热点及其位置。设置: 为简单起见,假设我有一个 1平方公里x 1平
(^.^)“你好再次抱歉我的英语不好如果有人喜欢纠正我的编辑我将不胜感激” 嗨,如果我可以用我的 iPhone 从 wi-fi 网络、任何源代码、Api、教程等捕获 IV,现在有没有人可以做到这一点谁
我正在考虑创建一个通过 Wi-Fi Direct 传输视频流的应用程序。我已经用谷歌搜索过(甚至在 Stackoverflow 中),但我没有找到指定支持设备的列表。 我的问题是:是否可以在 Sams
我有一个问题,我想获取我的移动 IP 是网络还是Wi-Fi 我也尝试过一些方法,但我不知道为什么我不能得到它 public class MainActivity extends Activity {
我正在开发开箱即用的体验应用程序。我必须连接 来 self 的自定义应用程序的 wi-fi,不使用设备 wifi 设置。 我已经完成了,从 wifi 管理器获取 wi-fi 网络列表。 你能指导我如何
我正在开发一个需要检查互联网连接的 Android 应用程序。当设备的 WI-FI 关闭时它工作得很好但是当我打开 Wi-Fi 但没有连接到可用网络时,它是强制关闭。可能是什么问题?请帮助 bool
我想通过 Wi-Fi Direct 在 2 台设备之间传输文件。 我想做与 WifiDirectDemo 中相同的事情,但我无法将数据从群组所有者传输到另一台设备,所以我尝试了这个:每次当其中一台设备
模拟器可以连wifi吗?由于我没有使用 eclipse 或任何 IDE...我正在尝试将独立的模拟器连接到 Wi-fi 最佳答案 目前,虽然您可以在模拟器中使用计算机的互联网连接,但用它来模拟 Wi-
我正在尝试为大学设置 Qt,但遇到了一些问题。我正在运行 Windows 8,我不确定是哪个版本的 Qt 或 QtCreator,但不是最新的 - 我们获得了版本安装程序,所以我们必须使用这个版本,尽
我有一个运行 Android 的小型电视盒设备。每当我调出 Wi-Fi 接口(interface)时,以太网接口(interface)就会断开连接。如果我随后调出以太网设备、Wi-Fi 接口(inte
我有一个几乎总是需要知道用户位置的应用程序。 当我需要访问某个位置时,我会这样做: final AlertDialog.Builder builder = new AlertDialog.Builde
我正在开发一个基于 WiFi Direct 技术(P2P)的安卓应用,所以我真的需要知道安卓 WiFi 直接性能的范围是多少米。基于 Android API 指南: you can discover
当您连接的 Wi-Fi 无法访问 Internet 时, Android Lollipop 似乎默认为移动数据。有人知道这是否在某处有正式记录吗? 我们有一个应用程序需要通过 Wi-Fi 连接到没有互
我是一名优秀的程序员,十分优秀!