package Ġru . max im mak ar ov . extensions Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Activity Manager Ċ import Ġandroid . app . Key guard Manager Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Connectivity Manager Ċ import Ġandroid . net . Uri Ċ import Ġandroid . net . wifi . Wifi Manager Ċ import Ġandroid . os . Build Ċ import Ġandroid . util . Display Metrics Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . annotation . Color Res Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . annotation . String Res Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . core . app . Notification Compat Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ Ċ fun ĠFragment . toast (@ String Res Ġmessage Res Id : ĠInt , Ġduration : ĠInt Ġ= ĠToast . LENGTH _ SHORT ) Ġ{ ĊĠĠĠ Ġactivity ?. toast ( message Res Id , Ġduration ) Ċ } Ċ Ċ fun ĠFragment . toast ( message : ĠString , Ġduration : ĠInt Ġ= ĠToast . LENGTH _ SHORT ) Ġ{ ĊĠĠĠ Ġactivity ?. toast ( message , Ġduration ) Ċ } ĊĊ Ċ fun ĠContext . toast (@ String Res Ġmessage Res Id : ĠInt , Ġduration : ĠInt Ġ= ĠToast . LENGTH _ SHORT ) Ġ{ ĊĠĠĠ Ġtoast ( getString ( message Res Id ), Ġduration ) Ċ } Ċ Ċ fun ĠContext . toast ( message : ĠString , Ġduration : ĠInt Ġ= ĠToast . LENGTH _ SHORT ) Ġ{ ĊĠĠĠ Ġif Ġ(( this Ġis ĠActivity Ġ&& Ġ! this . is Finish ing ) Ġ|| Ġthis Ġ! is ĠActivity ) ĠToast . makeText ( this , Ġmessage , Ġduration ). show () Ċ } Ċ Ċ fun ĠFragment . sn ackBar (@ String Res Ġmessage Res Id : ĠInt , Ġduration : ĠInt Ġ= ĠSn ackbar . LENGTH _ SHORT ) Ġ{ ĊĠĠĠ Ġactivity ?. sn ackBar ( message Res Id , Ġduration Ġ= Ġduration ) Ċ } Ċ Ċ fun ĠFragment Activity . sn ackBar (@ String Res Ġmessage Res Id : ĠInt , Ġview : ĠView Ġ= Ġwindow . decor View . root View , Ġduration : ĠInt Ġ= ĠSn ackbar . LENGTH _ SHORT ) Ġ{ ĊĠĠĠ ĠSn ackbar . make ( view , ĠgetString ( message Res Id ), Ġduration ). show () Ċ } Ċ Ċ fun ĠContext . alert ( title : ĠInt , Ġmessage : ĠInt , Ġpos Title : ĠInt , Ġpositive Action : Ġ( dialog : ĠDialog Interface ) Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneg Title : ĠInt ? Ġ= Ġnull , Ġnegative Action : Ġ(( dialog : ĠDialog Interface ) Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcancel able : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠ Ġalert ( getString ( title ), ĠgetString ( message ), ĠgetString ( pos Title ), Ġpositive Action , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġneg Title ?. let Ġ{ ĠgetString ( neg Title ) Ġ}, Ġnegative Action , Ġcancel able ) Ċ } Ċ Ċ fun ĠContext . alert ( title : ĠString , Ġmessage : ĠString , Ġpos Title : ĠString , Ġpositive Action : Ġ( dialog : ĠDialog Interface ) Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneg Title : ĠString ? Ġ= Ġnull , Ġnegative Action : Ġ(( dialog : ĠDialog Interface ) Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcancel able : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠ ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( pos Title , Ġ{ Ġdialog , Ġ_ Ġ-> Ġpositive Action ( dialog ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( message ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( neg Title Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Negative Button ( neg Title , Ġ{ Ġdialog , Ġ_ Ġ-> Ġnegative Action !! ( dialog ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Cancel able ( cancel able ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< T > ĠContext . list Dialog ( title : ĠString , Ġlist : ĠList < T >, Ġon Item Click Action : Ġ( T ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġadapter Ġ= ĠArray Adapter < T >( this , Ġandroid . R . layout . select _ dialog _ item , Ġlist ) ĊĠĠĠ ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAdapter ( adapter , Ġ{ Ġ_, Ġpos Ġ-> Ġon Item Click Action ( adapter . getItem ( pos )) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () Ċ } Ċ Ċ @ Suppress Lint (" Inf late Params ") Ċ fun ĠContext . input Dialog ( title : ĠInt , Ġhint : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpos Title : ĠInt , Ġpos Action : Ġ( dialog : ĠDialog Interface , Ġtext : ĠString ) Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneg Title : ĠInt , Ġneg Action : Ġ( dialog : ĠDialog Interface ) Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext : ĠString Ġ= Ġ"", Ġ@ Layout Res Ġedit Res Id : ĠInt ) Ġ{ ĊĊĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( this ). inflate ( edit Res Id , Ġnull , Ġfalse ) ĊĠĠĠ Ġval Ġedit Ġ= Ġview . findViewById < EditText >( R . id . text ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġset Hint ( hint ) ĊĠĠĠĠĠĠĠ Ġset Text ( text ) ĊĠĠĠĠĠĠĠ Ġset Selection ( text . length ) ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( pos Title , Ġ{ Ġdialog , Ġ_ Ġ-> Ġpos Action ( dialog , Ġedit . text . toString ()) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( neg Title , Ġ{ Ġdialog , Ġ_ Ġ-> Ġneg Action ( dialog ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cancel able ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () Ċ } Ċ Ċ fun ĠContext . notification ( notif Id : ĠInt , Ġ@ String Res Ġtitle : ĠInt , Ġ@ String Res Ġmessage : ĠInt , Ġ@ Drawable Res Ġicon : ĠInt , Ġautoc ancel : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠ Ġnotification ( notif Id , ĠgetString ( title ), ĠgetString ( message ), Ġicon , Ġautoc ancel ) Ċ } Ċ Ċ fun ĠContext . notification ( notif Id : ĠInt , Ġtitle : ĠString , Ġmessage : ĠString , Ġ@ Drawable Res Ġicon : ĠInt , Ġautoc ancel : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠ Ġval Ġnotification Ġ= ĠNotification Compat . Builder ( this , Ġ" my home ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( icon ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Title ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Text ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAuto Cancel ( autoc ancel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġval Ġnotification Manager Ġ= Ġget System Service ( Context . NOTIFICATION _ SERVICE ) Ġas ĠNotification Manager ? ĊĠĠĠ Ġnotification Manager ?. notify ( notif Id , Ġnotification ) Ċ } Ċ Ċ // fun ĠContext . px To Dp ( px : ĠFloat ) Ġ= Ġpx Ġ/ Ġthis . resources . display Metrics . density Ċ // fun ĠContext . dp To Px ( dp : ĠFloat ) Ġ= Ġdp Ġ* Ġthis . resources . display Metrics . density Ċ Ċ fun ĠContext . dp To Px ( dp : ĠInt ) Ġ= ĠMath . round ( dp Ġ* Ġ( resources . display Metrics . xd pi Ġ/ ĠDisplay Metrics . D ENS ITY _ DEFAULT )) Ċ Ċ fun ĠContext . getColor Compat (@ Color Res Ġcolor Res Id : ĠInt ) Ġ= ĠContext Compat . getColor ( this , Ġcolor Res Id ) Ċ Ċ fun ĠContext . get Drawable Compat (@ Drawable Res Ġdrawable Res Id : ĠInt ) Ġ= ĠContext Compat . get Drawable ( this , Ġdrawable Res Id ) Ċ Ċ fun ĠContext . launch Service ( cls : ĠClass <* >, Ġis Foreground : ĠBoolean Ġ= Ġtrue ): ĠIntent Ġ{ ĊĠĠĠ Ġval Ġi Ġ= ĠIntent ( this , Ġcls ) ĊĠĠĠ Ġif Ġ( is Foreground Ġ&& ĠBuild . VERSION . SDK _ INT Ġ>= Ġ 2 6 ) Ġstart Foreground Service ( i ) ĊĠĠĠ Ġelse Ġstart Service ( i ) ĊĠĠĠ Ġreturn Ġi Ċ } Ċ Ċ fun ĠContext . is Network Available (): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġcm Ġ= Ġget System Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ĊĠĠĠ Ġval Ġnetwork Ġ= Ġcm . active Network Info ĊĠĠĠ Ġreturn Ġnetwork Ġ!= Ġnull Ġ&& Ġnetwork . isConnected Ċ } Ċ Ċ fun ĠContext . is Wifi (): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġcm Ġ= Ġget System Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ĊĠĠĠ Ġval Ġnetwork Ġ= Ġcm . active Network Info ĊĠĠĠ Ġreturn Ġnetwork ?. type Ġ== ĠConnect ivity Manager . TYPE _ WIFI Ċ } Ċ Ċ fun ĠContext . getCurrent S sid (): ĠString ? Ġ{ ĊĠĠĠ Ġif Ġ( is Wifi ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwifi Manager Ġ= Ġapplication Context . getSystem Service ( Context . WIFI _ SERVICE ) Ġas ĠW ifi Manager ? ĊĠĠĠĠĠĠĠ Ġval Ġss id Ġ= Ġwifi Manager ?. connection Info ?. ssid ĊĠĠĠĠĠĠĠ Ġif Ġ( ssid ?. isNotEmpty () Ġ== Ġtrue Ġ&& Ġss id Ġ!= Ġ"< unknown Ġss id >") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġss id . trim Ġ{ Ġit Ġ== Ġ'\'' Ġ|| Ġit Ġ== Ġ'\" ' Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġnull Ċ } Ċ Ċ fun ĠContext . is App In Foreground (): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( is Screen Locked ()) Ġreturn Ġfalse ĊĊĠĠĠ Ġ// any Ġof Ġrunning Ġprocess ĊĠĠĠ Ġval Ġactivity Manager Ġ= Ġget System Service ( Context . ACTIVITY _ SERVICE ) Ġas ĠActivity Manager ? ĊĠĠĠ Ġval Ġapp Processes Ġ= Ġactivity Manager ?. running App Processes Ġ?: Ġreturn Ġfalse ĊĠĠĠ Ġreturn Ġapp Processes . any Ġ{ Ġit . import ance Ġ== ĠActivity Manager . Running App Process Info . IMPORT ANCE _ FO REG ROUND Ġ&& Ġit . process Name Ġ== ĠBuild Config . APPLICATION _ ID Ġ} Ċ } Ċ Ċ fun ĠContext . is Screen Locked (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġ( getSystem Service ( Context . KEY GU ARD _ SERVICE ) Ġas ĠKey guard Manager ?) ?. in Key guard Restricted Input Mode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġtrue Ċ } Ċ Ċ fun ĠContext . show App In Market ( packageName : ĠString ) Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( Intent . ACTION _ VIEW , ĠUri . parse (" market :// details ? id =$ packageName "))) ĊĠĠĠ Ġ} Ġcatch Ġ( e : Ġandroid . content . Activity NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( Intent . ACTION _ VIEW , ĠUri . parse (" https :// play . google . com / store / apps / details ? id =$ packageName "))) ĊĠĠĠ Ġ} Ċ }