package Ġorg . open m rs . mobile . utilities Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Process Ċ import Ġcom . open m rs . android _ sdk . library . Open MR S Logger Ċ import Ġcom . open m rs . android _ sdk . library . Open m rs Android Ċ import Ġjava . io .* Ċ import Ġkotlin . system . exit Process Ċ Ċ class ĠForce Close ( private Ġval Ġmy Context : ĠActivity ) Ġ: ĠThread . Un caught ExceptionHandler Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLINE _ SEPARATOR Ġ= Ġ"\ n " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġun caught Exception ( thread : ĠThread , Ġexception : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstack Trace Ġ= ĠString Writer () ĊĠĠĠĠĠĠĠ Ġexception . printStackTrace ( PrintWriter ( stack Trace )) ĊĠĠĠĠĠĠĠ Ġval Ġerror Report Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġerror Report . append (" ******** **** ĠCA USE ĠOF ĠERROR Ġ********* *** \ n \ n ") ĊĠĠĠĠĠĠĠ Ġerror Report . append ( stack Trace . toString ()) ĊĠĠĠĠĠĠĠ Ġerror Report . append ("\ n ******** **** ĠDEVICE ĠINFORMATION Ġ********* ** \ n ") ĊĠĠĠĠĠĠĠ Ġerror Report . append (" Brand : Ġ") ĊĠĠĠĠĠĠĠ Ġerror Report . append ( Build . B RAND ) ĊĠĠĠĠĠĠĠ Ġerror Report . append ( LINE _ SEPARATOR ) ĊĠĠĠĠĠĠĠ Ġerror Report . append (" Device : Ġ") ĊĠĠĠĠĠĠĠ Ġerror Report . append ( Build . DEVICE ) ĊĠĠĠĠĠĠĠ Ġerror Report . append ( LINE _ SEPARATOR ) ĊĠĠĠĠĠĠĠ Ġerror Report . append (" Model : Ġ") ĊĠĠĠĠĠĠĠ Ġerror Report . append ( Build . MODEL ) ĊĠĠĠĠĠĠĠ Ġerror Report . append ( LINE _ SEPARATOR ) ĊĠĠĠĠĠĠĠ Ġerror Report . append (" Id : Ġ") ĊĠĠĠĠĠĠĠ Ġerror Report . append ( Build . ID ) ĊĠĠĠĠĠĠĠ Ġerror Report . append ( LINE _ SEPARATOR ) ĊĠĠĠĠĠĠĠ Ġerror Report . append (" Product : Ġ") ĊĠĠĠĠĠĠĠ Ġerror Report . append ( Build . PRODUCT ) ĊĠĠĠĠĠĠĠ Ġerror Report . append ( LINE _ SEPARATOR ) ĊĠĠĠĠĠĠĠ Ġerror Report . append ("\ n ******** **** ĠFIR MW ARE Ġ********* *** \ n ") ĊĠĠĠĠĠĠĠ Ġerror Report . append (" SDK : Ġ") ĊĠĠĠĠĠĠĠ Ġerror Report . append ( Build . VERSION . SDK _ INT ) ĊĠĠĠĠĠĠĠ Ġerror Report . append ( LINE _ SEPARATOR ) ĊĠĠĠĠĠĠĠ Ġerror Report . append (" Release : Ġ") ĊĠĠĠĠĠĠĠ Ġerror Report . append ( Build . VERSION . RELEASE ) ĊĠĠĠĠĠĠĠ Ġerror Report . append ( LINE _ SEPARATOR ) ĊĠĠĠĠĠĠĠ Ġerror Report . append (" Incremental : Ġ") ĊĠĠĠĠĠĠĠ Ġerror Report . append ( Build . VERSION . INCREMENT AL ) ĊĠĠĠĠĠĠĠ Ġerror Report . append ( LINE _ SEPARATOR ) ĊĠĠĠĠĠĠĠ Ġerror Report . append ("\ n ******** **** ĠAPP ĠLOG S Ġ********* *** \ n ") ĊĠĠĠĠĠĠĠ Ġerror Report . append ( get Logs ()) ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġmy Context . package Manager . get Launch Intent For Package (" org . open m rs . mobile ") ĊĠĠĠĠĠĠĠ Ġi ?. putExtra (" flag ", Ġtrue ) ĊĠĠĠĠĠĠĠ Ġi ?. putExtra (" error ", Ġerror Report . toString ()) ĊĠĠĠĠĠĠĠ Ġmy Context . startActivity ( i ) ĊĠĠĠĠĠĠĠ ĠProcess . kill Process ( Process . my Pid ()) ĊĠĠĠĠĠĠĠ Ġexit Process ( 1 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Logs (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm Open MR S Logger Ġ= ĠOpen MR S Logger () ĊĠĠĠĠĠĠĠ Ġvar Ġtext Logs : ĠString ? Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġfilename Ġ= Ġ"${ Open m rs Android . get Open MR S Dir ()} ${ File . separator }${ m Open MR S Logger . log Filename }" ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmy File Ġ= ĠFile ( filename ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf In Ġ= ĠFileInputStream ( my File ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmy Reader Ġ= ĠBufferedReader ( InputStream Reader ( f In )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġa DataRow : ĠString ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( my Reader . readLine (). also Ġ{ Ġa DataRow Ġ= Ġit Ġ} Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Logs Ġ+= Ġa DataRow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Reader . close () ĊĠĠĠĠĠĠĠ Ġ} Ġ Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( e ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFileNotFoundException , Ġis ĠIOException Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtext Logs ĊĠĠĠ Ġ} Ċ }