Android扫描wifi二维码自动连接wifi 您所在的位置:网站首页 微信扫描wifi密码怎么看不到 Android扫描wifi二维码自动连接wifi

Android扫描wifi二维码自动连接wifi

2024-03-28 09:34| 来源: 网络整理| 查看: 265

现在二维码的用处越来越多,微信扫二维码加好友,商场扫二维码关注公众号、得优惠券,就连一些小餐馆吃个饭,扫码自动跳转到线上(饿了么,百度外卖)的店铺.....而这些地方因为人多,担心用户等待时间过长就会走掉,怎么办?得有空调、wifi、西瓜,这样才能留住一部分客人,而wifi密码一般是直接问店里服务员获取,但是时间一长,人一多,店里老板和员工也烦了,干脆直接把wifi密码贴出来。但是这些都不够,我认为未来微信、QQ得加入(扩展)这个功能,扫描这个wifi二维码,询问用户是否连接上此wifi。

不说了,看源码吧,还是挺简单的。

原理是 基础的扫描二维码功能,识别二维码后,解析其内容,打开我们的wifi管理器,加入此wifi。

一般标准的wifi二维码的格式是这样的:

 WIFI:S:arg1;P:arg2;T:arg3;  其中 arg1是wifi名(也就是SSID);arg2是密码,当然也可以为空,就是没有密码;arg3是网络的加密类型,一般有3种,无密码、Wpa/wap2、Wep。

二维码扫描的部分就不说了,可以参考我前一篇的文章Android二维码识别与生成,或者嫌前一篇麻烦的,后面我会给出此Demo的源码。

当我们扫描到二维码后,会在handleDecode中去处理扫描结果,处理完毕后会通过setResult方式,将Intent和结果传回MainActivty的onActivityResult中,然后通过requestCode和resultCode去判断来自于哪个activity的Intent,接着取出值。

其解析处理结果

switch (requestCode) { case SCANNIN_GREQUEST_CODE: if(resultCode == RESULT_OK){ Bundle bundle = data.getExtras(); //显示扫描到的内容 mTextView.setText(bundle.getString("result")); //显示 //mImageView.setImageBitmap((Bitmap) data.getParcelableExtra("bitmap")); String strResult = bundle.getString("result"); if (strResult.contains("P:") && strResult.contains("T:")) {// 自动连接wifi Log.e("扫描返回的结果----->", strResult);// 还是要判断 String passwordTemp = strResult.substring(strResult .indexOf("P:")); password = passwordTemp.substring(2, passwordTemp.indexOf(";")); String netWorkTypeTemp = strResult.substring(strResult .indexOf("T:")); netWorkType = netWorkTypeTemp.substring(2, netWorkTypeTemp.indexOf(";")); String netWorkNameTemp = strResult.substring(strResult .indexOf("S:")); netWorkName = netWorkNameTemp.substring(2, netWorkNameTemp.indexOf(";")); if (!wifiAdmin.mWifiManager.isWifiEnabled()) { Toast.makeText(this, "开启wifi设置", Toast.LENGTH_LONG) .show(); wifiAdmin.openWifi(); } Dialog alertDialog = new AlertDialog.Builder(this) .setTitle("扫描到可用wifi") .setIcon(R.drawable.ic_launcher) .setMessage("wifi名:" + netWorkName) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick( DialogInterface dialog, int which) { // TODO Auto-generated method stub } }) .setPositiveButton("加入此wifi ", new DialogInterface.OnClickListener() { @Override public void onClick( DialogInterface dialog, int which) { int net_type = 0x13; if (netWorkType .compareToIgnoreCase("wpa") == 0) { net_type = WifiAdmin.TYPE_WPA;// wpa } else if (netWorkType .compareToIgnoreCase("wep") == 0) { net_type = WifiAdmin.TYPE_WEP;// wep } else { net_type = WifiAdmin.TYPE_NO_PASSWD;// 无加密 } wifiAdmin.addNetwork(netWorkName, password, net_type); Log.e("解析的数据----->", "networkname: " + netWorkName + " " + "password: " + password + " netWorkType: " + net_type); } }).create(); alertDialog.show(); } break; } }

WifiAdmin.java的代码如下

import android.content.Context; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.util.Log; import java.util.List; /** * Created by cmos. */ public class WifiAdmin { private static String TAG="WifiManger"; public static final int TYPE_NO_PASSWD = 0x11; public static final int TYPE_WEP


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有