Android连接wifi,调用系统API【转】
本文转载自:http://blog.csdn.net/aaa1050070637/article/details/54136472
直接上代码,简单粗暴,一看就懂
- import android.content.Context;
- import android.net.ConnectivityManager;
- import android.net.NetworkInfo;
- import android.net.wifi.ScanResult;
- import android.net.wifi.WifiConfiguration;
- import android.net.wifi.WifiInfo;
- import android.net.wifi.WifiManager;
- import android.util.Log;
- import java.util.List;
- /**
- * create 2016.12.29
- *
- * @author jack大漠
- *
- */
- public class WifiConnect {
- private static final String SSID = "Sunlight";
- private static final String PASSWORD = "12345678";
- public static final String WIFI_IS_NOT_OPEN = "wifi is closed.";
- private static final String TAG = "vivi";
- public WifiManager mWifiManager = null;
- private Context mContext = null;
- private int mNetworkID = -1;
- public WifiConnect(Context context) {
- this.mContext = context;
- mWifiManager = (WifiManager) context
- .getSystemService(Context.WIFI_SERVICE);
- }
- /**
- * 网络是否连接
- */
- public boolean isWifiConnected() {
- if (mContext != null) {
- ConnectivityManager mConnectivityManager = (ConnectivityManager) mContext
- .getSystemService(Context.CONNECTIVITY_SERVICE);
- NetworkInfo mNetworkInfo = mConnectivityManager
- .getActiveNetworkInfo();
- if (mNetworkInfo != null
- && mNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
- return mNetworkInfo.isConnected();
- }
- }
- return false;
- }
- /**
- * Show wifi list
- */
- public String getWifiList() {
- if (WifiManager.WIFI_STATE_ENABLED != mWifiManager.getWifiState()) {
- return WIFI_IS_NOT_OPEN;
- }
- String text = "";
- List<ScanResult> results = mWifiManager.getScanResults();
- for (ScanResult result : results) {
- String SSID = result.SSID;
- if (SSID.startsWith("Sun")) {
- int db = result.level;
- text += SSID + ":" + db;
- return text;
- }
- }
- return "";
- }
- /**
- * 打开wifi开关
- */
- public void openWifi() {
- mWifiManager.setWifiEnabled(true);
- }
- public void closeWifi() {
- mWifiManager.setWifiEnabled(false);
- }
- /**
- * 是否打开开关
- */
- public boolean isWifiOpened() {
- return WifiManager.WIFI_STATE_ENABLED == mWifiManager.getWifiState();
- }
- public boolean isWifiEnable() {
- return mWifiManager.isWifiEnabled();
- }
- /**
- * 关闭开关
- */
- public void shutdownWiFi() {
- mWifiManager.setWifiEnabled(false);
- mNetworkID = -1;
- }
- /**
- * 连接指定Wifi
- */
- public boolean connectWifi(final String ssid, final String password,
- final SecurityMode mode) {
- WifiInfo info = getWifiInfo();
- Log.d(TAG, "connectWifi---->" + info.toString() + " ");
- if (isWifiConnected() && info != null
- && info.getSSID().equals("\"" + ssid + "\"")) {
- return true;
- }
- Log.d(TAG, "connectWifi---->" + isWifiConnected() + " ");
- List<WifiConfiguration> existingConfigs = mWifiManager
- .getConfiguredNetworks();
- if (existingConfigs == null) {
- return false;
- }
- for (WifiConfiguration existingConfig : existingConfigs) {
- if (existingConfig.SSID.equals("\"" + ssid + "\"")) {
- mNetworkID = existingConfig.networkId;
- break;
- }
- }
- if (mNetworkID <= -1) {
- WifiConfiguration config = new WifiConfiguration();
- config.SSID = "\"" + ssid + "\"";
- if (mode == SecurityMode.OPEN) {
- config.wepKeys[0] = "";
- config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
- config.wepTxKeyIndex = 0;
- } else if (password != null && !"".equals(password)) {
- if (mode == SecurityMode.WEP) {
- config.preSharedKey = "\"" + 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;
- } else {
- config.preSharedKey = "\"" + password + "\"";
- 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.allowedGroupCiphers
- .set(WifiConfiguration.GroupCipher.CCMP);
- config.allowedPairwiseCiphers
- .set(WifiConfiguration.PairwiseCipher.CCMP);
- config.status = WifiConfiguration.Status.ENABLED;
- }
- }
- mNetworkID = mWifiManager.addNetwork(config);
- }
- // 连接该网络
- return mWifiManager.enableNetwork(mNetworkID, true);
- }
- public WifiInfo getWifiInfo() {
- WifiInfo info = null;
- try {
- if (isWifiConnected()) {
- info = mWifiManager.getConnectionInfo();
- }
- } catch (Exception e) {
- Log.e(TAG, "getWifiInfo", e);
- }
- return info;
- }
- /**
- * 网络加密模式
- */
- public enum SecurityMode {
- OPEN, WEP, WPA2
- }
- /**
- * 初始化WiFi连接
- */
- public boolean initWifiConnect() {
- Log.d("vivi", "初始化Wifi连接---->" + " 开始连接");
- return connectWifi(SSID, PASSWORD, SecurityMode.WPA2);
- }
- }
Android连接wifi,调用系统API【转】的更多相关文章
- Android上传图片之调用系统拍照和从相冊选择图片
Android上传图片之调用系统拍照和从相冊选择图片 本篇文章已授权微信公众号 guolin_blog (郭霖)独家公布 前言: 万丈高楼平底起,万事起于微末.不知不觉距离上篇博文已近四个月,2015 ...
- Android下载图片/调用系统相机拍照、显示并保存到本地
package com.example.testhttpget; import java.io.BufferedReader; import java.io.FileNotFoundException ...
- 【Android学习】调用系统相机
Android调用系统相机分三步走: 首先是要设置调用相机的权限. 其次是给按钮加打开相机的事件. 最后是拍照后进行图片的保存. 第一步,添加权限: <!-- 调用系统相机 --> < ...
- Android 连接Wifi和创建Wifi热点 demo
android的热点功能不可见,用了反射的技术搞定之外. Eclipse设置语言为utf-8才能查看中文注释 上代码: MainActivity.java package com.widget.hot ...
- android 连接wifi案例
1.xml布局文件: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmln ...
- 【Android学习】调用系统短信、电话
今天全心投入Android学习已经有一段时间了,从起初的啥也不懂,到现在半知半解状态,随笔记录些简单且常用的系统功能代码. 调用Android系统短信,其实调用短信非常简单,一个方法就可以搞定.我们可 ...
- 调用系统api修改系统时间
一:截图 二:代码 using System; using System.Collections.Generic; using System.ComponentModel; using System. ...
- android 7.0 调用系统相机崩溃的解决方案(非谷歌官方推荐)
解决方案: 1.(推荐)7.0之后你的app就算有权限,给出一个URI之后手机也认为你没有权限. 不用修改原有代码,在Application的oncreate方法中:(或者直接放在调用相机的activ ...
- C# 调用系统API 内核 简单样例
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.R ...
随机推荐
- CodeForces 444C 节点更新求变化值的和
http://vjudge.net/problem/viewProblem.action?id=51622 题目大意: 给定一列n个数字,最初赋予值1到n 两个操作:1.将区间[l,r]内的数改为x, ...
- [NOI2003]Editor(块状链表)
传送门 看了看块状链表,就是数组和链表的合体. 看上去好高大尚,思想也很简单. 但是发现代码量也不是很小,而且代码理解起来也是费尽得很,倒不如splay用起来顺手. 在加上适用范围貌似不是特别广,所以 ...
- 怎样检查Android网络连接状态
在发送任何HTTP请求前最好检查下网络连接状态,这样可以避免异常.这个教程将会介绍怎样在你的应用中检测网络连接状态. 创建新的项目 1.在Eclipse IDE中创建一个新的项目并把填入必须的信息. ...
- 【BZOJ1834】network 网络扩容(最大流,费用流)
题意:给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费用. 求: 1. 在不扩容的情况下,1到N的最大流: 2. 将1到N的最大流增加K所需的最小扩容费用. ...
- P3371 单源最短路径【模板】 洛谷
https://www.luogu.org/problem/show?pid=3371 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入输出格式 输入格式: 第一行包含 ...
- POJ 2337 【字典序】【欧拉回路】
题意: 给你一些单词,判断这些单词能否在保证首尾单词相同的情况下连成一排. 如果有多组解,输出字典序最小的一组解. 这题... WA了两天. 错误有以下: 1.没有初始化好起始位置,默认起始位置是a了 ...
- codeforces 938F(dp+高维前缀和)
题意: 给一个长度为n的字符串,定义$k=\floor{log_2 n}$ 一共k轮操作,第i次操作要删除当前字符串恰好长度为$2^{i-1}$的子串 问最后剩余的字符串字典序最小是多少? 分析: 首 ...
- Mysql 数据库允许远程连接 服务器连接错误 Host 'XXX' is not allowed to connect to this MySQL server
如果连接数据库的时候出现这个问题 Host 'XXX' is not allowed to connect to this MySQL server 说明 Mysql数据库 不允许远程连接, 需要修改 ...
- mybatisplus代码生成器
一.随便建一个springboot工程,在pom文件中导入依赖 <!-- 模板引擎 --> <dependency> <groupId>org.apache.vel ...
- Android中传递对象的三种方法
Android知识.前端.后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过! Android中,Activity和Fragment之间传递对象,可以通过将对象序列化并存入Bundle或者I ...