本文主要向大家介绍Android应用开发,给定App相应SSID及密码,连接指定WIFI,希望对大家学习Android应用开发有所帮助。

1、MainActivity.java包含工具类WifiAdminpackage com.example.connectwifi;

import java.util.List;

import android.app.Activity;

import android.content.Context;

import android.net.wifi.ScanResult;

import android.net.wifi.WifiConfiguration;

import android.net.wifi.WifiInfo;

import android.net.wifi.WifiManager;

import android.net.wifi.WifiManager.WifiLock;

import android.os.Bundle;

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

WifiAdmin wa = new WifiAdmin(this);

wa.openWifi();

wa.addNetwork(wa.CreateWifiInfo("CMM-687", "11223344", 3));

}

public class WifiAdmin {

// 定义WifiManager对象

private WifiManager mWifiManager;

// 定义WifiInfo对象

private WifiInfo mWifiInfo;

// 扫描出的网络连接列表

private List mWifiList;

// 网络连接列表

private List mWifiConfiguration;

// 定义一个WifiLock

WifiLock mWifiLock;

//构造函数

public WifiAdmin(Context context) {

// 取得WifiManager对象

mWifiManager = (WifiManager) context

.getSystemService(Context.WIFI_SERVICE);

// 取得WifiInfo对象

mWifiInfo = mWifiManager.getConnectionInfo();

}

// 打开WIFI

public void openWifi() {

if (!mWifiManager.isWifiEnabled()) {

mWifiManager.setWifiEnabled(true);

}

}

// 关闭WIFI

public void closeWifi() {

if (mWifiManager.isWifiEnabled()) {

mWifiManager.setWifiEnabled(false);

}

}

// 检查当前WIFI状态

public int checkState() {

return mWifiManager.getWifiState();

}

// 锁定WifiLock

public void acquireWifiLock() {

mWifiLock.acquire();

}

// 解锁WifiLock

public void releaseWifiLock() {

// 判断时候锁定

if (mWifiLock.isHeld()) {

mWifiLock.acquire();

}

}

// 创建一个WifiLock

public void creatWifiLock() {

mWifiLock = mWifiManager.createWifiLock("Test");

}

// 得到配置好的网络

public List getConfiguration() {

return mWifiConfiguration;

}

// 指定配置好的网络进行连接

public void connectConfiguration(int index) {

// 索引大于配置好的网络索引返回

if (index > mWifiConfiguration.size()) {

return;

}

// 连接配置好的指定ID的网络

mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,

true);

}

public void startScan() {

mWifiManager.startScan();

// 得到扫描结果

mWifiList = mWifiManager.getScanResults();

// 得到配置好的网络连接

mWifiConfiguration = mWifiManager.getConfiguredNetworks();

}

// 得到网络列表

public List getWifiList() {

return mWifiList;

}

// 查看扫描结果

public StringBuilder lookUpScan() {

StringBuilder stringBuilder = new StringBuilder();

for (int i = 0; i

stringBuilder

.append("Index_" + new Integer(i + 1).toString() + ":");

// 将ScanResult信息转换成一个字符串包

// 其中把包括:BSSID、SSID、capabilities、frequency、level

stringBuilder.append((mWifiList.get(i)).toString());

stringBuilder.append("/n");

}

return stringBuilder;

}

// 得到MAC地址

public String getMacAddress() {

return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress();

}

// 得到接入点的BSSID

public String getBSSID() {

return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();

}

// 得到IP地址

public int getIPAddress() {

return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();

}

// 得到连接的ID

public int getNetworkId() {

return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();

}

// 得到WifiInfo的所有信息包

public String getWifiInfo() {

return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString();

}

// 添加一个网络并连接

public void addNetwork(WifiConfiguration wcg) {

int wcgID = mWifiManager.addNetwork(wcg);

boolean b =  mWifiManager.enableNetwork(wcgID, true);

System.out.println("a--" + wcgID);

System.out.println("b--" + b);

}

// 断开指定ID的网络

public void disconnectWifi(int netId) {

mWifiManager.disableNetwork(netId);

mWifiManager.disconnect();

}

//然后是一个实际应用方法,只验证过没有密码的情况:

public WifiConfiguration CreateWifiInfo(String SSID, String Password, int Type)

{

WifiConfiguration config = new WifiConfiguration();

config.allowedAuthAlgorithms.clear();

config.allowedGroupCiphers.clear();

config.allowedKeyManagement.clear();

config.allowedPairwiseCiphers.clear();

config.allowedProtocols.clear();

config.SSID = "\"" + SSID + "\"";

WifiConfiguration tempConfig = this.IsExsits(SSID);

if(tempConfig != null) {

mWifiManager.removeNetwork(tempConfig.networkId);

}

if(Type == 1) //没有密码的情况

{

config.wepKeys[0] = "";

config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);

config.wepTxKeyIndex = 0;

}

if(Type == 2) //WEP加密的情况

{

config.hiddenSSID = true;

config.wepKeys[0]= "\""+Password+"\"";

config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);

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

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

config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);

config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);

config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);

config.wepTxKeyIndex = 0;

}

if(Type == 3) //WPA加密的情况

{

config.preSharedKey = "\""+Password+"\"";

config.hiddenSSID = true;

config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);

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

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

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

//config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);

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

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

config.status = WifiConfiguration.Status.ENABLED;

}

return config;

}

private WifiConfiguration IsExsits(String SSID)

{

List existingConfigs = mWifiManager.getConfiguredNetworks();

for (WifiConfiguration existingConfig : existingConfigs)

{

if (existingConfig.SSID.equals("\""+SSID+"\""))

{

return existingConfig;

}

}

return null;

}

}

}

2、Manifest.xml添加对应权限

package="com.example.connectwifi"

android:versionCode="1"

android:versionName="1.0" >

android:minSdkVersion="14"

android:targetSdkVersion="14" />

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

android:name=".MainActivity"

android:label="@string/app_name" >

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发Android频道!

android官方wifidemo,Android应用开发:连接指定Wifi的Demo分享相关推荐

  1. android官方wifidemo,Android连接指定Wifi的Demo

    给定App相应SSID及密码,连接指定WIFI. 1.MainActivity.java包含工具类WifiAdmin package com.example.connectwifi; import j ...

  2. Android之通过用户名和密码连接指定wifi热点(兼容Android9.0和Android10.0和addNetwork(wifiNewConfiguration)返回-1问题)

    1 需求 通过用户名和密码连接指定wifi热点,网上的代码乱七八糟,没几个可以用,我这边整理了下,测试了华为Android9.0和小米Android9.0和10.0和OPPO Android9.0 都 ...

  3. android 获取wifi的加密类型,Android WIFI开发:获取wifi列表,连接指定wifi,获取wifi加密方式,监听wifi网络变化等...

    下面是 Android 开发中 WiFi 的常用配置,如:获取当前 WiFi ,扫描 WiFi 获取列表,连接指定 WiFi ,监听网络变化等等. 下面是效果图: GitHub 下载地址:https: ...

  4. 代码实现WIFI自动连接与连接指定WIFI源码

    最近家里老人总是问我如何连接WIFI,和他们电话讲又讲不清楚,于是我想到了写一个,打开自动连接指定WIFI的软件.练练手. 废话不多说,首先布局,简单! 两个文本框一个按钮 <?xml vers ...

  5. kotlin的wifi获取列表和连接指定wifi

    简介 本文实现3个功能: 1.获取位置权限 2.获取wifi列表 3.连接指定wifi 1.添加权限 <uses-permission android:name="android.pe ...

  6. ESP8266(基于arduino平台)每篇一个知识点—1.wifi STA模式连接指定wifi

    ESP8266(基于arduino平台)每篇一个知识点--1.wifi STA模式连接指定wifi 一.ESP8266(基于arduino平台)每篇一个知识点--1.wifi STA模式连接指定wif ...

  7. 通过netsh一键连接指定WIFI

    通过netsh的备份和添加配置文件功能实现一键连接指定wifi 1,连接wifi 首先你自己的电脑需要连接上一个wifi,比如这个wifi的名字叫abc. 通过输入密码.变更设置等,连接上wifi 2 ...

  8. win10/win11开机自动连接指定WiFi - 任务计划运行bat脚本

    效果图 主要步骤 确定wifi全称,例如abc  (下面有图示) 创建bat脚本文件,例如c:\tasks\autoWifi.bat,内容: netsh wlan disconnect netsh w ...

  9. android连接指定WIFI

    工具类: package com.wifidemo.utils; import android.annotation.SuppressLint; import android.content.Cont ...

最新文章

  1. 【错误记录】Android Studio 编译报错 ( Could not determine java version from ‘11.0.8‘. | 仅做参考 | 没有解决实际问题 )
  2. 图文详解南方CASS 7.1简体中文版
  3. WindowsPowerShell常用命令
  4. Windows下python虚拟环境pip依旧使用全局pip的解决办法
  5. 《C++ Primer第五版》第一章-------IO机制和注释缩进
  6. MySQL 计算两个时间的差值
  7. 表变量是什么_DAX学习:使用VAR定义变量
  8. 百度SEO EBCMS(易贝管理系统) v1.2.0
  9. 虚拟机安装ubuntu14.04.5系统
  10. 【语音识别】语音端点检测及Python实现
  11. 软考__运筹学__2007年11月真题
  12. SkeyePlayer rtsp、rtmp低延迟播放器源码解析之64位编译方案
  13. linux虚拟机安装教程
  14. Python调用百度API实现人脸融合
  15. AirServer无线手机投屏镜像mac电脑上面教程
  16. Sportisimo EDI项目需求及包装标准
  17. c语言将一个字符串转置,c语言实现数组的转置
  18. 无接触招聘,AI催生HCM SaaS新动向
  19. 如何手动对apk进行签名?
  20. java controller注解原理_SpringMVC运行流程与原理【Controller接口实现注解实现】

热门文章

  1. Windows内存管理(3)--检查内存可用性,结构化异常处理 和 ASSERT
  2. 基于.net载发软件的下拉框(ComBox)无法显示数据问题
  3. HTML与XHTML区别
  4. 为什么优酷站点限制不了_什么是站点可靠性工程师,为什么要考虑这个职业道路
  5. new relic_新的Relic的Centurion Docker部署工具,DIY大脑扫描仪等
  6. (3)vue.js安装
  7. (23)npm项目发布
  8. 建议 | 在中国不是程序猿,不建议你用序列化!
  9. 浏览器推送 comet
  10. es6 Class 的 name 属性