@ file : Suppress (" unused ") Ċ Ċ package Ġcom . classic . assistant . car . extension Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . Clip Data Ċ import Ġandroid . content . Clipboard Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . Package Info Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . net . Connectivity Manager Ċ import Ġandroid . net . Network Info Ċ import Ġandroid . os . Build Ċ import Ġandroid . util . Display Metrics Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġjava . lang . reflect . Field Ċ Ċ /** Ċ Ġ* ĠContext Ġextensions Ċ Ġ* Ċ Ġ* Ġ@ author ĠClass ic Ċ Ġ* Ġ@ version Ġv 1 . 0 , Ġ 2 0 1 9 - 0 5 - 2 0 Ġ 1 5 : 4 8 Ċ Ġ*/ Ċ val ĠNumber . dp : ĠInt ĊĠĠĠ Ġget () Ġ= Ġ( toInt () Ġ* ĠResources . getSystem (). display Metrics . density ). toInt () Ċ Ċ val ĠNumber . sp : ĠFloat ĊĠĠĠ Ġget () Ġ= Ġto Float () Ġ* ĠResources . getSystem (). display Metrics . scaled Density Ġ+ Ġ 0 . 5 f Ċ Ċ fun ĠContext . px ( dim en Res Id : ĠInt ): ĠInt Ġ= Ġresources . get Dimension Pixel Size ( dim en Res Id ) Ċ Ċ fun ĠContext . dp 2 px ( dp Value : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠ Ġval Ġscale Ġ= Ġresources . display Metrics . density ĊĠĠĠ Ġreturn Ġdp Value Ġ* Ġscale Ġ+ Ġ 0 . 5 f Ċ } Ċ Ċ fun ĠContext . screen Size (): ĠDisplay Metrics Ġ{ ĊĠĠĠ Ġval Ġwindow Manager Ġ= Ġget System Service ( Context . WINDOW _ SERVICE ) Ġas ĠWindow Manager ĊĠĠĠ Ġval Ġout Metrics Ġ= ĠDisplay Metrics () ĊĠĠĠ Ġwindow Manager . default Display . get Metrics ( out Metrics ) ĊĠĠĠ Ġreturn Ġout Metrics Ċ } Ċ Ċ fun ĠContext . package Info (): ĠPackage Info Ġ= Ġpackage Manager . get Package Info ( packageName , Ġ 0 ) Ċ fun ĠContext . version Name (): ĠString Ġ= Ġpackage Info (). version Name Ċ fun ĠContext . version Code (): ĠLong Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . P ) Ġ{ ĊĠĠĠ Ġpackage Info (). long Version Code Ċ } Ġelse Ġ{ ĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġpackage Info (). version Code . to Long () Ċ } Ċ Ċ fun ĠContext . inflate ( layout Res Id : ĠInt , Ġparent : ĠViewGroup ? Ġ= Ġnull , Ġattach To Root : ĠBoolean Ġ= Ġfalse ): ĠView Ġ= ĊĠĠĠ ĠLayoutInflater . from ( this ). inflate ( layout Res Id , Ġparent , Ġattach To Root ) Ċ Ċ fun Ġshow Toast ( context : ĠContext , Ġres Id : ĠInt ) Ġ{ ĊĠĠĠ ĠToast . makeText ( context . application Context , Ġres Id , ĠToast . LENGTH _ SHORT ). show () Ċ } Ċ Ċ fun Ġshow Toast ( context : ĠContext , Ġcontent : ĠString ) Ġ{ ĊĠĠĠ ĠToast . makeText ( context . application Context , Ġcontent , ĠToast . LENGTH _ SHORT ). show () Ċ } Ċ Ċ fun Ġshow Long Toast ( context : ĠContext , Ġres Id : ĠInt ) Ġ{ ĊĠĠĠ ĠToast . makeText ( context . application Context , Ġres Id , ĠToast . LENGTH _ LONG ). show () Ċ } Ċ Ċ fun Ġshow Long Toast ( context : ĠContext , Ġcontent : ĠString ) Ġ{ ĊĠĠĠ ĠToast . makeText ( context . application Context , Ġcontent , ĠToast . LENGTH _ LONG ). show () Ċ } Ċ Ċ fun ĠContext . toast ( res Id : ĠInt ) Ġ{ ĊĠĠĠ Ġshow Toast ( application Context , Ġres Id ) Ċ } Ċ Ċ fun ĠContext . toast ( content : ĠString ) Ġ{ ĊĠĠĠ Ġshow Toast ( application Context , Ġcontent ) Ċ } ĊĊ Ċ fun ĠContext . long Toast ( res Id : ĠInt ) Ġ{ ĊĠĠĠ Ġshow Long Toast ( application Context , Ġres Id ) Ċ } Ċ Ċ fun ĠContext . long Toast ( content : ĠString ) Ġ{ ĊĠĠĠ Ġshow Long Toast ( application Context , Ġcontent ) Ċ } Ċ Ċ fun ĠContext . custom Toast ( content : ĠString , Ġtime : ĠLong Ġ= Ġ 5 0 0 0 ) Ġ{ ĊĠĠĠ Ġval Ġtoast Ġ= ĠToast . makeText ( application Context , Ġcontent , ĠToast . LENGTH _ LONG ) ĊĠĠĠ Ġtoast . show () ĊĠĠĠ Ġglobal UIT ask ( time ) Ġ{ Ġtoast . cancel () Ġ} Ċ } Ċ Ċ fun ĠContext . color ( res Id : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn ĠContext Compat . getColor ( this , Ġres Id ) Ċ } Ċ Ċ fun ĠContext . drawable ( res Id : ĠInt ): ĠDrawable ? Ġ{ ĊĠĠĠ Ġreturn ĠContext Compat . get Drawable ( this , Ġres Id ) Ċ } Ċ Ċ fun ĠContext . string ( res Id : ĠInt ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġresources . getString ( res Id ) Ċ } Ċ Ċ fun ĠContext . string ( res Id : ĠInt , Ġvar arg Ġparams : ĠAny ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġresources . getString ( res Id , Ġ* params ) Ċ } Ċ Ċ // Ġèİ·åıĸ åī ª åĪĩ æĿ¿ æĸĩæľ¬ Ċ fun ĠContext . get Clip Text (): ĠString Ġ{ ĊĠĠĠ Ġval Ġclipboard Manager Ġ= Ġget System Service ( Context . CLIP BOARD _ SERVICE ) Ġas ĠClip board Manager ? ĊĠĠĠ Ġif Ġ( null Ġ== Ġclipboard Manager Ġ|| Ġ! clipboard Manager . has Primary Clip ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġclip Data Ġ= Ġclipboard Manager . primary Clip ĊĠĠĠ Ġif Ġ( null Ġ== Ġclip Data Ġ|| Ġclip Data . item Count Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġclip Text Ġ= Ġclip Data . getItem At ( 0 )?. text Ġ?: Ġ"" ĊĠĠĠ Ġreturn Ġclip Text . toString () Ċ } Ċ Ċ // Ġæ¸ ħ ç©º åī ª åĪĩ æĿ¿ æĸĩæľ¬ Ċ fun ĠContext . clear Clip Text () Ġ{ ĊĠĠĠ Ġval Ġclipboard Manager Ġ= Ġget System Service ( Context . CLIP BOARD _ SERVICE ) Ġas ĠClip board Manager ? ĊĠĠĠ Ġclipboard Manager ?. set Primary Clip ( Clip Data . new Plain Text ( null , Ġ"")) Ċ } Ċ Ċ fun ĠContext . is Network Connected (): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġmanager Ġ= Ġget System Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ĊĠĠĠ Ġval Ġnetwork Info : ĠNetwork Info ? Ġ= Ġmanager . active Network Info ĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġreturn Ġnetwork Info Ġ!= Ġnull Ġ&& Ġnetwork Info . is Available Ċ } Ċ Ċ fun ĠContext . is Permission Granted ( permission : ĠString ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn ĠContext Compat . check Self Permission ( this , Ġpermission ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED Ċ } Ċ fun ĠContext . has External Permission (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġis Permission Granted ( Manifest . permission . READ _ EXTERNAL _ STORAGE ) Ġ&& ĊĠĠĠĠĠĠĠ Ġis Permission Granted ( Manifest . permission . WRITE _ EXTERNAL _ STORAGE ) Ċ } Ċ fun ĠContext . has Location Permission (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġis Permission Granted ( Manifest . permission . ACCESS _ CO AR SE _ LOCATION ) Ċ } ĊĊĊ Ċ /** Ċ Ġ* Ġ ä¿® å¤į è¾ĵåħ¥ æ³ķ åĨħåŃĺ æ³ Ħ æ¼ı éĹ®é¢ĺ Ċ Ġ*/ Ċ fun ĠContext . fix Input Method Memory Leak () Ġ{ ĊĠĠĠ Ġval Ġinput Method Manager : ĠInput Method Manager Ġ= ĊĠĠĠĠĠĠĠ Ġget System Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠ Ġval Ġview Arr Ġ= ĠarrayOf (" m Cur Root View ", Ġ" m Ser ved View ", Ġ" m Next Ser ved View ") ĊĠĠĠ Ġvar Ġfield : ĠField ? ĊĠĠĠ Ġvar Ġfield Obj : ĠAny ? ĊĠĠĠ Ġfor Ġ( view Ġin Ġview Arr ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġinput Method Manager . java Class . getDeclared Field ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= Ġfield Ġ&& Ġ! field . is Accessible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Obj Ġ= Ġfield . get ( input Method Manager ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Obj Ġ!= Ġnull Ġ&& Ġfield Obj Ġis ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Obj . context Ġ=== Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æ³¨æĦı éľĢè¦ģ åĪ¤æĸŃ View åħ³èģĶ çļĦ Context æĺ¯ ä¸įæĺ¯ å½ĵåīį Activity ï¼Į åĲ¦åĪĻ æľī åı¯èĥ½ éĢł æĪĲ æŃ£å¸¸ çļĦ è¾ĵåħ¥ æ¡Ĩ è¾ĵåħ¥ å¤± æķĪ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield . set ( input Method Manager , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }