package Ġcom . kel in . apk Updater . util Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . net . Connectivity Manager Ċ import Ġandroid . net . Network Info Ċ import Ġandroid . os . Build Ċ import Ġandroidx . core . net . Connectivity Manager Compat Ċ Ċ /** Ċ Ġ* Ġæı ı è¿° Ġ ç½ĳç»ľ çĬ¶æĢģ çĽ¸åħ³ çļĦ å·¥åħ· ç±» ãĢĤ Ċ Ġ* ĠåĪĽå»º äºº Ġk elin Ċ Ġ* ĠåĪĽå»º æĹ¶éĹ´ Ġ 2 0 1 7 / 7 / 1 2 Ġ Ġä¸Ĭ åįĪ 1 1 : 0 3 Ċ Ġ* Ġ çīĪæľ¬ Ġv Ġ 1 . 0 . 0 Ċ Ġ*/ Ċ class ĠNet Work State Util Ġprivate Ġconstructor () Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç½ĳç»ľ æĶ¹åıĺ å¹¿ æĴŃ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġclass ĠConnect ivity Change Receiver Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġis Register Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext , Ġintent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnetwork Info Ġ= Ġintent . extras . get Parcelable < Network Info >( Connectivity Manager . EXTRA _ NETWORK _ INFO ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ( network Info ?. type Ġ?: Ġreturn ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Connectivity Manager . CONNECT IVITY _ ACTION Ġ== Ġintent . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( network Info . isConnected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== ĠConnect ivity Manager . TYPE _ WIFI Ġ&& Ġ! s Is Wifi Connected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Is Wifi Connected Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Connected ( Connectivity Manager . TYPE _ WIFI ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type Ġ== ĠConnect ivity Manager . TYPE _ MOB ILE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Is Wifi Connected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Connected ( Connectivity Manager . TYPE _ MOB ILE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Is Wifi Connected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! isConnected ( context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Disconnected ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġå½ĵ éĵ¾æİ¥ æĸŃ å¼Ģ çļĦæĹ¶åĢĻ æī§è¡Į ãĢĤ å¦Ĥæŀľ è¯¥ æĸ¹æ³ķ è¢« æī§è¡Į å°± è¯´æĺİ å½ĵåīį å·²ç»ı æ²¡æľī ä»»ä½ķ åı¯ä»¥ä½¿çĶ¨ ç½ĳç»ľ äºĨ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtype Ġè¡¨ç¤º å½ĵåīį æĸŃ å¼Ģ éĵ¾æİ¥ çļĦ ç±»åŀĭ ï¼Į æĺ¯ WiFi è¿ĺæĺ¯ æµģ éĩı ãĢĤ å¦Ĥæŀľ ä¸º Ġ[ Connectivity Manager . TYPE _ WIFI ] Ġ åĪĻ è¯´æĺİ å½ĵåīį æĸŃ å¼Ģ éĵ¾æİ¥ ĊĠĠĠĠĠĠĠĠ Ġ* ĠçļĦ æĺ¯ WiFi ï¼Į å¦Ĥæŀľ ä¸º Ġ[ Connectivity Manager . TYPE _ MOB ILE ] Ġ åĪĻ è¯´æĺİ å½ĵåīį æĸŃ å¼Ģ éĵ¾æİ¥ çļĦæĺ¯ æµģ éĩı ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprotected Ġabstract Ġfun Ġon Disconnected ( type : ĠInt ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġå½ĵ éĵ¾æİ¥ æĪĲåĬŁ åĲİ æī§è¡Į ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtype Ġè¡¨ç¤º å½ĵåīį éĵ¾æİ¥ çļĦ ç±»åŀĭ ï¼Į æĺ¯ WiFi è¿ĺæĺ¯ æµģ éĩı ãĢĤ å¦Ĥæŀľ ä¸º Ġ[ Connectivity Manager . TYPE _ WIFI ] Ġ åĪĻ è¯´æĺİ å½ĵåīį éĵ¾æİ¥ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ æĪĲåĬŁ çļĦæĺ¯ WiFi ï¼Į å¦Ĥæŀľ ä¸º Ġ[ Connectivity Manager . TYPE _ MOB ILE ] Ġ åĪĻ è¯´æĺİ å½ĵåīį éĵ¾æİ¥ æĪĲåĬŁ çļĦæĺ¯ æµģ éĩı ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprotected Ġabstract Ġfun Ġon Connected ( type : ĠInt ) ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠFILTER Ġ= ĠIntent Filter ( Connectivity Manager . CONNECT IVITY _ ACTION ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġs Is Wifi Connected Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġæ£Ģ æŁ¥ å½ĵåīį WIFI æĺ¯åĲ¦ è¿ŀæİ¥ ï¼Į ä¸¤ å±Ĥ æĦı æĢĿ âĢĶâĢĶ æĺ¯åĲ¦ è¿ŀæİ¥ ï¼Į è¿ŀæİ¥ æĺ¯ ä¸įæĺ¯ WIFI ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcontext Ġä¸Ĭ ä¸ĭ æĸĩ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġè¡¨ç¤º å½ĵåīį ç½ĳç»ľ å¤Ħ äºİ è¿ŀæİ¥ çĬ¶æĢģ ï¼Į ä¸Ķ æĺ¯ WIFI ï¼Į åĲ¦åĪĻ è¿ĶåĽŀ false ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Missing Permission ") ĊĠĠĠĠĠĠĠ Ġfun Ġis Wifi Connected ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= Ġget Connectivity Manager ( context ). active Network Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinfo Ġ!= Ġnull Ġ&& Ġinfo . isConnected Ġ&& ĠConnect ivity Manager . TYPE _ WIFI Ġ== Ġinfo . type ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġæ£Ģ æŁ¥ å½ĵåīį G PR S æĺ¯åĲ¦ è¿ŀæİ¥ ï¼Į ä¸¤ å±Ĥ æĦı æĢĿ âĢĶâĢĶ æĺ¯åĲ¦ è¿ŀæİ¥ ï¼Į è¿ŀæİ¥ æĺ¯ ä¸įæĺ¯ G PR S ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcontext Ġä¸Ĭ ä¸ĭ æĸĩ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġè¡¨ç¤º å½ĵåīį ç½ĳç»ľ å¤Ħ äºİ è¿ŀæİ¥ çĬ¶æĢģ ï¼Į ä¸Ķ æĺ¯ G PR S ï¼Į åĲ¦åĪĻ è¿ĶåĽŀ false ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Missing Permission ") ĊĠĠĠĠĠĠĠ Ġfun Ġis G prs Connected ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= Ġget Connectivity Manager ( context ). active Network Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinfo Ġ!= Ġnull Ġ&& Ġinfo . isConnected Ġ&& ĠConnect ivity Manager . TYPE _ MOB ILE Ġ== Ġinfo . type ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġæ£Ģ æŁ¥ å½ĵåīį æĺ¯åĲ¦ è¿ŀæİ¥ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcontext Ġä¸Ĭ ä¸ĭ æĸĩ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġè¡¨ç¤º å½ĵåīį ç½ĳç»ľ å¤Ħ äºİ è¿ŀæİ¥ çĬ¶æĢģ ï¼Į åĲ¦åĪĻ è¿ĶåĽŀ false ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Missing Permission ") ĊĠĠĠĠĠĠĠ Ġfun Ġis Connected ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= Ġget Connectivity Manager ( context ). active Network Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinfo Ġ!= Ġnull Ġ&& Ġinfo . isConnected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġå¯¹ å¤§ æķ°æį® ä¼łè¾ĵ æĹ¶ ï¼Į éľĢè¦ģ è°ĥçĶ¨ è¯¥ æĸ¹æ³ķ åģļ åĩº åĪ¤æĸŃ ï¼Į å¦Ĥæŀľ æµģ éĩı æķ ı æĦŁ ï¼Į åºĶè¯¥ æıĲç¤º çĶ¨æĪ· ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcontext Ġä¸Ĭ ä¸ĭ æĸĩ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġtrue è¡¨ç¤º æµģ éĩı æķ ı æĦŁ ï¼Į false è¡¨ç¤º ä¸į æķ ı æĦŁ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠisActive Network Meter ed ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠConnect ivity Manager Compat . isActive Network Meter ed ( get Connectivity Manager ( context )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ ç§»åĬ¨ æµģ éĩı å¼Ģ åħ³ æĺ¯åĲ¦ è¢« æīĵå¼Ģ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcontext Ġä¸Ĭ ä¸ĭ æĸĩ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġè¿ĶåĽŀ true è¡¨ç¤º æµģ éĩı æĺ¯ å¼ĢåĲ¯ çļĦ ï¼Į false è¡¨ç¤º æĺ¯ åħ³éĹŃ çļĦ ãĢĤ æ³¨æĦı å¼ĢåĲ¯ å¹¶ ä¸į ä»£è¡¨ å½ĵåīį çļĦ ç½ĳç»ľ è¿ŀæİ¥ å°±æĺ¯ ç§»åĬ¨ æµģ éĩı ï¼Į åıªæĺ¯ åįķ åįķ å¼ĢåĲ¯ äºĨ å¼Ģ åħ³ èĢĮ å·² ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Dis cour aged Private Api ") ĊĠĠĠĠĠĠĠ Ġfun Ġis Mobile Enabled ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġget Mobile Data Enabled Method Ġ= ĠConnect ivity Manager :: class . java . getDeclared Method (" get Mobile Data Enabled ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Mobile Data Enabled Method . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġget Mobile Data Enabled Method . invoke ( get Connectivity Manager ( context )) Ġas ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åıį å°Ħ å¤±è´¥ ï¼Į é»ĺè®¤ å¼ĢåĲ¯ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Connectivity Manager ( context : ĠContext ): ĠConnect ivity Manager Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getSystem Service ( Connectivity Manager :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getSystem Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ æ³¨åĨĮ ç½ĳç»ľ æĶ¹åıĺ å¹¿ æĴŃ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcontext Ġ Ġä¸Ĭ ä¸ĭ æĸĩ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġreceiver Ġ[ Connectivity Change Receiver ] Ġ å¹¿ æĴŃ å¯¹è±¡ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġregister Receiver ( context : ĠContext , Ġreceiver : ĠConnect ivity Change Receiver ): ĠIntent ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver . is Register Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcontext . register Receiver ( receiver , ĠConnect ivity Change Receiver . FILTER ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ åıį æ³¨åĨĮ ç½ĳç»ľ æĶ¹åıĺ å¹¿ æĴŃ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcontext Ġ Ġä¸Ĭ ä¸ĭ æĸĩ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġreceiver Ġ å·²ç»ı è¢« æ³¨åĨĮ è¿ĩ çļĦ Ġ[ Connectivity Change Receiver ] Ġ å¹¿ æĴŃ å¯¹è±¡ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġunregister Receiver ( context : ĠContext , Ġreceiver : ĠConnect ivity Change Receiver ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . unregister Receiver ( receiver ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver . is Register Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠInstanti ation Error (" Utility Ġclass Ġdon 't Ġneed Ġto Ġinstantiate ï¼ģ ") ĊĠĠĠ Ġ} Ċ }