package Ġcom . example . library . utils Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Component Name Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Connectivity Manager Ċ import Ġandroid . net . Network Info Ċ import Ġandroid . net . wifi . Wifi Configuration Ċ import Ġandroid . net . wifi . Wifi Configuration . Key Mgmt Ċ import Ġandroid . net . wifi . Wifi Manager Ċ import Ġandroid . os . Build Ċ import Ġcom . hq . h library . utils . Wifi Auto Connect Manager Ċ import Ġjava . io . IOException ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby ĠHor rar nd oo Ġon Ġ 2 0 1 7 / 8 / 3 1 . Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠW ifi è¿ŀæİ¥ å·¥åħ· ç±» Ċ Ġ*/ Ċ object ĠNetwork Connection Utils Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è¿ŀæİ¥ æĮĩå®ļ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmanager ĊĠĠĠĠ Ġ* Ġ@ param Ġwifi SSID ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġconnect To Socket Wifi ( manager : ĠW ifi Manager , Ġwifi SSID : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwifi Configuration Ġ= ĠW ifi Configuration () ĊĠĠĠĠĠĠĠ Ġwifi Configuration . SSID Ġ= Ġ"\"" Ġ+ Ġwifi SSID Ġ+ Ġ"\"" ĊĠĠĠĠĠĠĠ Ġwifi Configuration . allowed Key Management . set ( Key Mgmt . NONE ) ĊĠĠĠĠĠĠĠ Ġ// å°ı ç±³ æīĭæľº MI UI 7 / åįİ ä¸º EM UI 4 . 1 ĠéľĢè¦ģ web Key ĊĠĠĠĠĠĠĠ Ġwifi Configuration . w ep Keys [ 0 ] Ġ= Ġ"\"" Ġ+ Ġ"\"" ĊĊĠĠĠĠĠĠĠ Ġvar Ġnetwork Id Ġ= Ġmanager . add Network ( wifi Configuration ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( network Id Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . enable Network ( network Id , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwifi Configuration 2 Ġ= ĠW ifi Configuration () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwifi Configuration 2 . SSID Ġ= Ġ"\"" Ġ+ Ġwifi SSID Ġ+ Ġ"\"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// wifi Configuration . w ep Keys [ 0 ] Ġ= Ġ"\"" Ġ+ Ġ"\" "; // åİ» æİī web Key Ġ Ġ// å°ı ç±³ æīĭæľº MI UI 8 ä¸įèĥ½ æľī web Key ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwifi Configuration 2 . allowed Key Management . set ( Key Mgmt . NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Id Ġ= Ġmanager . add Network ( wifi Configuration 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( network Id Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . enable Network ( network Id , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ è¦ģ è¿ŀæİ¥ çļĦ wifi èĬĤçĤ¹ åĲĦ ä¸ª éħįç½® éĢīé¡¹ çļĦ åĬłå¯Ĩ ç±»åŀĭ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġss id ĊĠĠĠĠ Ġ* Ġ@ return Ġwifi Configuration ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Wifi Configuration ( manager : ĠW ifi Manager , Ġss id : ĠString , Ġpassword : ĠString ): ĠW ifi Configuration Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwifi Configuration Ġ= ĠW ifi Configuration () ĊĠĠĠĠĠĠĠ Ġwifi Configuration . SSID Ġ= Ġ"\"" Ġ+ Ġss id Ġ+ Ġ"\"" ĊĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmanager . scan Results ĊĠĠĠĠĠĠĠ Ġfor Ġ( sc Result Ġin Ġlist ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ssid Ġ== Ġsc Result . SSID ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcapabilities Ġ= Ġsc Result . capabilities ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( capabilities . contains (" WE P ") Ġ|| Ġcapabilities . contains (" w ep ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwifi Configuration . allowed Key Management . set ( Key Mgmt . W PA _ E AP ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwifi Configuration . pre Shared Key Ġ= Ġ"\"" Ġ+ Ġpassword Ġ+ Ġ"\"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( capabilities . contains (" W PA ") Ġ|| Ġcapabilities . contains (" w pa ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwifi Configuration . allowed Key Management . set ( Key Mgmt . W PA _ PS K ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwifi Configuration . pre Shared Key Ġ= Ġ"\"" Ġ+ Ġpassword Ġ+ Ġ"\"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwifi Configuration . allowed Key Management . set ( Key Mgmt . NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġwifi Configuration ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»Ļ æ¸ © æİ§ åĻ¨ æĪĲåĬŁ åıĳéĢģ èģĶ ç½ĳ åĳ½ä»¤ åĲİ ï¼Į è¿ŀæİ¥ æ¸ © æİ§ åĻ¨ è¿ŀæİ¥ çļĦ wifi èĬĤçĤ¹ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext Ġ Ġä¸Ĭ ä¸ĭ æĸĩ å¯¹è±¡ ĊĠĠĠĠ Ġ* Ġ@ param Ġss id ĠĠĠĠ Ġss id ĊĠĠĠĠ Ġ* Ġ@ param Ġpassword Ġ å¯Ĩçłģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġconnect Wifi SSID ( context : ĠContext , Ġmanager : ĠW ifi Manager , Ġss id : ĠString , Ġpassword : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW ifi Auto Connect Manager ( manager ). connect ( ssid , Ġpassword , ĠW ifi Auto Connect Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getC ipher Type ( context , Ġss id )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnetwork Id Ġ= Ġmanager . add Network ( get Wifi Configuration ( manager , Ġss id , Ġpassword )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( network Id Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . enable Network ( network Id , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æł¼å¼ı åĮĸ Router SSID ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġstr Router SSID Ġ è¦ģ æł¼å¼ı åĮĸ çļĦ å½ĵåīį è¿ŀæİ¥ çļĦ è·¯çĶ± ssid ĊĠĠĠĠ Ġ* Ġ@ return Ġ åİ» éĻ¤ " \" åĲİçļĦ Router SSID åŃĹç¬¦ä¸² ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġformat Router SSID ( str Router SSID : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġstr Router SSID Ġ= Ġstr Router SSID ĊĠĠĠĠĠĠĠ Ġif Ġ( str Router SSID . contains ("\ "" )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Router SSID Ġ= Ġstr Router SSID . replace ("\ "" . to Regex (), Ġ"") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġstr Router SSID ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPing ĊĠĠĠĠ Ġ* Ġ çĶ¨äºİ ç¡®å®ļ æīĭæľº æĺ¯åĲ¦ å·²ç»ı è¿ŀæİ¥ ä¸Ĭ æĮĩå®ļ è®¾å¤ĩ ip åľ°åĿĢ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġping Test ( IP Or DomainName : ĠString ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġis Success Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġstatus : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġ" failed " ĊĠĠĠĠĠĠĠ Ġval Ġp : ĠProcess ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp Ġ= ĠRuntime . get Runtime (). exec (" ping Ġ- c Ġ 1 Ġ$ IP Or DomainName ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġm _ str For Net Address æĺ¯ è¾ĵåħ¥ çļĦ ç½ĳ åĿĢ æĪĸèĢħ Ip åľ°åĿĢ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġp . waitFor () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( status Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġ" success " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Success Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInterruptedException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġis Success ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪ¤æĸŃ ç½ĳç»ľ æĺ¯åĲ¦ è¿ŀæİ¥ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Connected ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcm Ġ= Ġcontext . application Context . getSystem Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ĊĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= Ġcm . active Network Info ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= Ġinfo Ġ&& Ġinfo . isConnected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( info . state Ġ== ĠNetwork Info . State . CONNECTED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪ¤æĸŃ æĺ¯åĲ¦ æľī ç½ĳç»ľ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġè¿ĶåĽŀ åĢ¼ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Network Connected ( context : ĠContext ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Connectivity Manager Ġ= Ġcontext ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getSystem Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Network Info Ġ= Ġm Connectivity Manager . active Network Info ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Network Info Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm Network Info . is Available ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪ¤æĸŃ æĺ¯åĲ¦ æĺ¯ wifi è¿ŀæİ¥ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Wifi ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcm Ġ= Ġcontext . getSystem Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= Ġcm . active Network Info ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= Ġinfo ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( info . type Ġ== ĠConnect ivity Manager . TYPE _ WIFI ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æīĵå¼Ģ ç½ĳç»ľ è®¾ç½® çķĮéĿ¢ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġopen Setting ( activity : ĠActivity , Ġrequest Code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ("/") ĊĠĠĠĠĠĠĠ Ġval Ġcm Ġ= ĠComponent Name (" com . android . settings ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . android . settings . Wire less Settings ") ĊĠĠĠĠĠĠĠ Ġintent . component Ġ= Ġcm ĊĠĠĠĠĠĠĠ Ġintent . action Ġ= ĠIntent . ACTION _ VIEW ĊĠĠĠĠĠĠĠ Ġactivity . startActivity For Result ( intent , Ġrequest Code ) ĊĠĠĠ Ġ} Ċ } Ċ