package Ġcom . cd hir aj 4 0 . leet d roid . utils Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Activity NotFoundException Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . util . Log Ċ import Ġcom . cd hir aj 4 0 . leet d roid . utils . Constant . Companion . TAG Ċ import Ġcom . cd hir aj 4 0 . leet d roid . utils . Date Utils . getCurrent Time Ċ import Ġcom . cd hir aj 4 0 . leet d roid . utils . extensions . show Sn ackBar Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ import Ġjava . util . zip . Zip File Ċ Ċ object ĠCommon Utils Ġ{ ĊĠĠĠ Ġval ĠNEW _ LINE _ CHAR Ġ= ĠSystem . getProperty (" line . separator ") ĊĊĠĠĠ Ġfun Ġopen Email ( context : ĠContext , Ġactivity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ MAIN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . add Category ( Intent . CATEGORY _ APP _ EMAIL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠActivity NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Sn ackBar ( activity , Ġ" There Ġis Ġno Ġemail Ġclient Ġinstalled ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġopen Ġthe Ġlink Ġin Ġbrowser ĊĠĠĠ Ġfun Ġopen Link ( context : ĠContext , Ġlink : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . startActivity ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent . ACTION _ VIEW , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUri . parse ( link ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcompose Email ( context : ĠContext , Ġrecipient : ĠString , Ġsubject : ĠString , Ġbody : ĠString ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġselector Intent Ġ= ĠIntent ( Intent . ACTION _ SEND TO ) ĊĠĠĠĠĠĠĠ Ġval Ġurl String Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" mailto :" Ġ+ ĠUri . encode ( recipient ) Ġ+ Ġ"? subject =" Ġ+ ĠUri . encode ( subject ) Ġ+ Ġ"& body =" Ġ+ ĠUri . encode ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġselector Intent . data Ġ= ĠUri . parse ( url String ) ĊĊĠĠĠĠĠĠĠ Ġval Ġemail Intent Ġ= ĠIntent ( Intent . ACTION _ SEND ) ĊĠĠĠĠĠĠĠ Ġemail Intent . putExtra ( Intent . EXTRA _ EMAIL , ĠarrayOf ( recipient )) ĊĠĠĠĠĠĠĠ Ġemail Intent . putExtra ( Intent . EXTRA _ SUBJECT , Ġsubject ) ĊĠĠĠĠĠĠĠ Ġemail Intent . putExtra ( Intent . EXTRA _ TEXT , Ġbody ) ĊĠĠĠĠĠĠĠ Ġemail Intent . selector Ġ= Ġselector Intent ĊĊĠĠĠĠĠĠĠ Ġcontext . startActivity ( Intent . create Chooser ( email Intent , Ġ" Bug ĠReport ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġall Ġthe Ġappropriate Ġversion Ġnames , Ġfor Ġthe Ġapp , Ġthe ĠAndroid Ġversion Ġand ĠAPI ĊĠĠĠĠ Ġ* ĠMan ufacturer Ġand ĠModel Ġname Ġof Ġthe Ġphone ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġstring Ġcontaining Ġall Ġthe Ġabove ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Version Names ( base Context : ĠContext ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstringBuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ ĠstringBuilder . append (" Version ĠDetails \ n ") ĊĠĠĠĠĠĠĠ Ġval Ġversion Name : ĠString Ġ= Ġget Version String ( base Context ) ĊĠĠĠĠĠĠĠ Ġval Ġmanufacturer Ġ= ĠBuild . MAN U FACT UR ER ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠBuild . MODEL ĊĠĠĠĠĠĠĠ Ġval Ġversion Ġ= ĠBuild . VERSION . SDK _ INT ĊĠĠĠĠĠĠĠ Ġval Ġversion Release Ġ= ĠBuild . VERSION . RELEASE ĊĠĠĠĠĠĠĠ ĠstringBuilder . append (" Le et Droid Ġ: Ġ") ĊĠĠĠĠĠĠĠ ĠstringBuilder . append ( version Name ) ĊĠĠĠĠĠĠĠ ĠstringBuilder . append ("\ n ĠMan ufacturer : Ġ$ manufacturer ") ĊĠĠĠĠĠĠĠ ĠstringBuilder . append ("\ n ĠModel : Ġ$ model ") ĊĠĠĠĠĠĠĠ ĠstringBuilder . append ("\ n ĠAndroid ĠAPI ĠLevel : Ġ$ version ") ĊĠĠĠĠĠĠĠ ĠstringBuilder . append ("\ n ĠVersion ĠRelease : Ġ$ version Release ") ĊĠĠĠĠĠĠĠ ĠstringBuilder . append ("\ n ") ĊĠĠĠĠĠĠĠ Ġreturn ĠstringBuilder . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġmethod Ġto Ġget Ġthe Ġcurrent Ġversion ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Version String ( context : ĠContext ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġout Ġ= ĠStringBuilder (" Version Ġ") ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . append ( getVersion String Short ( context )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠPackage Manager . Name NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG ( Common Utils :: class . java ), Ġe . message , Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġai Ġ= Ġcontext . package Manager . getApplication Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . packageName , Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġzip File Ġ= ĠZip File ( ai . source Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġzip Entry Ġ= Ġzip File . getEntry (" classes . dex ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġzip Entry . time ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . append ( SimpleDateFormat . getInstance (). format ( Date ( time ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġzip File . close () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG ( Common Utils :: class . java ), Ġe . message , Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġout . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( PackageManager . Name NotFoundException :: class ) ĊĠĠĠ Ġfun Ġget Version String Short ( context : ĠContext ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext . package Manager . get Package Info ( context . packageName , Ġ 0 ). version Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġread Ġthe ĠgetUser Statistic Ġdefined Ġedit Ġfields . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġstring Ġact ing Ġas Ġthe Ġcontents Ġof Ġthe Ġemail ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcreate Email Body ( context : ĠContext ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġbody . append (" A Ġnew ĠIssue ĠReport Ġhas Ġbeen Ġcreated :") ĊĠĠĠĠĠĠĠ Ġbody . append ( NEW _ LINE _ CHAR ) ĊĠĠĠĠĠĠĠ Ġbody . append ( NEW _ LINE _ CHAR ) ĊĠĠĠĠĠĠĠ Ġbody . append ( getVersion Names ( context )) ĊĠĠĠĠĠĠĠ Ġbody . append ( NEW _ LINE _ CHAR ) ĊĠĠĠĠĠĠĠ Ġbody . append (" Description :") ĊĠĠĠĠĠĠĠ Ġbody . append ( NEW _ LINE _ CHAR ) ĊĠĠĠĠĠĠĠ Ġbody . append ( NEW _ LINE _ CHAR ) ĊĠĠĠĠĠĠĠ Ġbody . append (" Est imated Ġsystem Ġtime Ġof Ġoccurrence : Ġ") ĊĠĠĠĠĠĠĠ Ġbody . append ( getCurrent Time ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġbody . toString () ĊĠĠĠ Ġ} Ċ }