1. 程式人生 > >Android 連線指定的wifi

Android 連線指定的wifi

今天來點乾貨,講講如何通過程式碼連線上指定的wifi。相當於使用程式碼完成使用者在手機WLAN中選擇wifi,並且輸入密碼,然後點選確定的過程。

既然要操縱wifi,就需要使用到wifiManager,我們連線過的wifi的名稱和密碼都可以通過WifiManger來拿到,每個資訊都是封裝到一個ScanResult的類中,然後放到列表中的。

     WifiManager mWifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
1 如何獲取已經連線過的wifi資訊
    mWifiManager.startScan();
    mWifiList = mWifiManager.getScanResults();
    mWificonfiguration = mWifiManager.getConfiguredNetworks();
2 去連線以前連線過的wifi
    mWifiManager.enableNetwork(index, true);
    其中的index是netWorkId,就是存在上面的list(mWificonfiguration)中的,目前獲取networkId只能去列表中獲取。
3獲取networkId
    int networkId = mWificonfiguration.get(index).networkId;
    其中的index,需要自己確定
4上面都是講的連線以前連過的,現在說如何連線從來沒有連線過的wifi.上面都是從列表資訊中拿到了networkId,現在從來沒有連線過的wifi怎麼獲取networId呢?我們可以建立一個wifi的資訊,然後新增到wifiManager中去,然後再獲取networkId,就ok了。
    public WifiConfiguration createWifiInfo(String SSID, String Password, int Type) {
    WifiConfiguration configuration = new WifiConfiguration();
    configuration.allowedAuthAlgorithms.clear();
    configuration.allowedGroupCiphers.clear();
    configuration.allowedKeyManagement.clear();
    configuration.allowedPairwiseCiphers.clear();
    configuration.allowedProtocols.clear();
    configuration.SSID = "\"" + SSID + "\"";

    WifiConfiguration tempConfig = this.isExsits(SSID);
    if(tempConfig != null) {
        mWifiManager.removeNetwork(tempConfig.networkId);
    }

    switch (Type) {
        case 1://不加密
            configuration.wepKeys[0] = "";
            configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
            configuration.wepTxKeyIndex = 0;
            configuration.priority= 20000;
            break;
        case 2://wep加密
            configuration.hiddenSSID = true;
            configuration.wepKeys[0] = "\"" + Password +"\"";
            configuration.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
            configuration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
            configuration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
            configuration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
            configuration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
            configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);

            break;
        case 3: //wpa加密

            configuration.preSharedKey = "\"" + Password + "\"";
            configuration.hiddenSSID = true;
            configuration.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
            configuration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
            configuration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
            configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
            configuration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
            configuration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
            configuration.status = WifiConfiguration.Status.ENABLED;
            break;
    }
    return  configuration;
}

    上面是建立wifi配置資訊,下面是新增


    int networkId = mWifiManager.addNetwork(wifiConfiguration);

你的支援,是我堅持的動力,如果覺得有用,請點個贊。謝謝!

相關推薦

Android連線指定Wifi的方法

本篇部落格主要記錄一下Android中開啟Wifi、獲取Wifi接入點資訊及連線指接入點的方法。 自己寫的demo主要用於測試介面的基本功能,因此介面及底層邏輯比較粗糙。 demo的整體介面如下所示: 上圖中的OPEN按鍵負責開啟Wifi; GET按

Android WIFI開發,包含開啟WIFI,掃描列表。 自動連線指定WIFI

本文章是在原文基礎上進行開發,,修改的 ,原文地址如下: https://www.cnblogs.com/pied/p/3767336.html 開發中專案如下: package stu.edu.cn.myapplication; import android.content.Conte

Android 連線指定wifi

今天來點乾貨,講講如何通過程式碼連線上指定的wifi。相當於使用程式碼完成使用者在手機WLAN中選擇wifi,並且輸入密碼,然後點選確定的過程。 既然要操縱wifi,就需要使用到wifiManager,我們連線過的wifi的名稱和密碼都可以通過WifiMang

通過netsh一鍵連線指定WIFI

通過netsh的備份和新增配置檔案功能實現一鍵連線指定wifi 1,連線wifi 首先你自己的電腦需要連線上一個wifi,比如這個wifi的名字叫abc。 通過輸入密碼、變更設定等,連線上wifi 2,檢視wifi 進入命令列模式,輸入 netsh wlan show

android程式碼連線指定wifi,適合5.0,6.0,7.0系統

public static WifiConfiguration configWifiInfo(Context context, String SSID, String password, int type) { WifiConfiguration config =

Android Wifi --自動連線指定SSID(各種加密方式均可)

Android Wifi API參考網站這裡寫連結內容 1.開始先加入wifi許可權 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >

Android開發——自動連線指定SSID的wifi熱點(不加密/加密)

最近在做一個專案,其中涉及到一塊“自動連線已存在的wifi熱點”的功能,在網上查閱了大量資料,五花八門,但其中一些說的很簡單,即不能實現傻瓜式的拿來就用,有些說的很詳細,但其中不乏些許錯誤造成功能無法實現,經過浣熊多方努力,終於成功將功能實現,遂將一點點小成就拿出來與大家分

Android開發】wifi開關與wifi連線(密碼連線

過放蕩不羈的生活,容易得像順水推舟,但是要結識良朋益友,卻難如登天。—— 巴爾扎克 本文demo來自網路,找了好久找到的,後面自己做了些許修改,這裡對原始碼解析,愧於忘記哪裡出來了,感謝作者! 接下來就記錄一下wifi開發的一些學習心得,這邊先看幾張效果圖吧!     

android 網路連線wifi,但是並沒有網路;或者手機聯網了 ,APP檢測顯示未聯網

/** * 用Ping的方法檢測網路可行性 * @return */ public static final boolean pingIsInternetConnect() { String resu

android執行緒實現:實時顯示所連線wifi訊號強度(程式碼帶註釋)

首先:AndroidManifest.xml檔案中加一行:獲取許可權 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> layout.xml檔案中的程式碼: <Li

Android連線WIFI

效果圖 開啟WIFI並獲取WIFI列表 連線到指定WIFI 直接連線配置過的WIFI 密碼錯誤 原始碼 WIFI的獲取、連線狀態等等的資訊,都是通過廣播回撥的. 註冊廣播接收者 <!-- 監聽網路狀態的廣

Android6.0 連線指定wifi

android6.0之後 wifi機制有了變化,如果連線的wifi沒有網路,那麼系統會自動切換Wi-Fi。這個可能對我們wifi方面的開發有影響,比如,我們要求連線wifi的本身就是不能訪問外網的,僅僅是為了兩個裝置之間的通訊,這個時候,我們就需要一點小處理。

Android 連線Wifi和建立Wifi熱點 demo

android的熱點功能不可見,用了反射的技術搞定之外。 Eclipse設定語言為utf-8才能檢視中文註釋 上程式碼: MainActivity.java package com.widget.hotspot; import android.os.Bundle; im

Android手機用wifi連線adb除錯的方法

ic_adb_green_black_48dp.png 0x0 前言 Android開發肯定要連線pc的adb進行除錯,傳統的方法是用usb與pc進行連線,操作簡單即插即用,缺點是pc上必須得有對應手機的usb驅動程式,對於谷歌親兒子系列和三星摩托等外國品牌而言這不是什麼

Android連線WiFi再探索

應用場景 在安卓app上,使用者輸入WiFi名稱(SSID)和密碼,試圖連線這個WiFi。那麼使用者輸入的WiFi就有各種情況了,這個WiFi可以沒有密碼,也可以通過不同的加密方式加密。而不同的加密方式,需要寫不同的程式碼才能使WiFi連線成功。無論百度還是谷

Android開發之WIFI與網路連線處理

網路連線處理 在說WiFi之前,先來說說網路連線處理。 在Android開發過程中,對於一個需要連線網路的Android裝置,對裝置的網路狀態檢測是很有必要的!有很多的App都需要連線網路。判斷裝置是否已經連線網路,並且在連線網路的狀態下判斷是wifi無線連線還是GPRS手機網路連線,這

Android中實現Wifi列表的更新即wifi連線與使用

1.Manifest.xm配置WiFi許可權 <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /><uses-permission android:name="android.permissio

Android-刪除指定包名的App

uninstall bsp 指定 刪除 check delet contex this ext /** * check and delete the old package app if it exists. */ private void c

Android Studio指定引用jnilibs 特定CPU架構的so庫文件

文件 jni adl 性能 沒有 1.2 x86_64 apk andro 稍微大一些的項目都會用到第三方庫,所以不可避免的會有針對不同手機cpu架構的.so庫文件 ‘x86‘, ‘x86_64‘, ‘mips‘, ‘mips64‘ ‘armeabi‘ ,‘armeab

如何直接打開android系統的wifi設置頁面,防止intent劫持

art intent pre fonts mark bsp androi 希望 andro 在android的app開發中,經常會遇到需要跳轉至系統設置頁面的需求。但是當你使用以下代碼時: 如 Intent intent = new Intent(Settings.ACT