package Ġcom . react . tel ink . ble Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Environment Ċ import Ġcom . react . tel ink . ble . Tel ink B le Application . Companion . getInstance Ċ import Ġjava . io . File Ċ import Ġjava . io . File OutputStream Ċ import Ġjava . io . PrintWriter Ċ import Ġjava . io . String Writer Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ class ĠApp Crash Handler Ġprivate Ġconstructor ( private Ġval Ġcontext : ĠContext ) Ġ: ĊĠ ĠThread . Un caught ExceptionHandler Ġ{ ĊĊĠ Ġprivate Ġval Ġhandler : ĠThread . Un caught ExceptionHandler ? Ġ= ĊĠĠĠ ĠThread . getDefault Un caught ExceptionHandler () ĊĊĠ Ġ@ Suppress Lint (" SimpleDateFormat ") ĊĠ Ġoverride Ġfun Ġun caught Exception ( thread : ĠThread , Ġthrowable : ĠThrowable ) Ġ{ ĊĠĠĠ Ġval Ġsimple DateFormat Ġ= ĠSimpleDateFormat ( ĊĠĠĠĠĠ Ġ" dd - MM - yyyy Ġhh : mm : ss " ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġbuff Ġ= ĠStringBuilder () ĊĠĠĠ Ġbuff ĊĠĠĠĠĠ Ġ. append (" Date : Ġ") ĊĠĠĠĠĠ Ġ. append ( simple DateFormat . format ( Date ())) ĊĠĠĠĠĠ Ġ. append ("\ n ") ĊĠĠĠĠĠ Ġ. append (" ======== MODEL : "). append ( Build . MODEL ). append (" Ġ\ n ") ĊĊĠĠĠ Ġ// Ġstack Ġinfo ĊĠĠĠ Ġbuff . append (" Stack trace :\ n \ n ") ĊĠĠĠ Ġval Ġstring Writer Ġ= ĠString Writer () ĊĠĠĠ Ġval Ġprint Writer Ġ= ĠPrintWriter ( string Writer ) ĊĠĠĠ Ġthrowable . printStackTrace ( print Writer ) ĊĠĠĠ Ġbuff ĊĠĠĠĠĠ Ġ. append ( string Writer . toString ()) ĊĠĠĠĠĠ Ġ. append (" =========== \ n ") ĊĠĠĠ Ġprint Writer . close () ĊĠĠĠ Ġwrite 2 Error Log ( buff . toString ()) ĊĠĠĠ Ġhandler ?. unc a ught Exception ( thread , Ġthrowable ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠåĪĽå»º æĢ» æĸĩä»¶å¤¹ ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġval ĠfilePath : ĠString ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠ Ġval Ġcache Path : ĠString Ġ= Ġif Ġ( Environment . get External Storage State () Ġ== ĊĠĠĠĠĠĠĠ ĠEnvironment . MEDIA _ MOUNT ED ĊĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . get External Files Dir (" TE LINK _ CACHE "). toString () Ġ+ ĠDIS K _ CACHE _ PATH ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠgetInstance (). cacheDir . toString () Ġ+ ĠDIS K _ CACHE _ PATH ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( cache Path ) ĊĠĠĠĠĠ Ġif Ġ(! file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġfile . mkdir s () ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġreturn Ġcache Path ĊĠĠĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġwrite 2 Error Log ( content : ĠString ) Ġ{ ĊĠĠĠ Ġval Ġsimple DateFormat Ġ= ĠSimpleDateFormat (" yyyy - MM - dd - hh mm ss ", ĠLocale . EN GL ISH ) ĊĠĠĠ Ġval ĠfileName Ġ= Ġ"/ Crash _" Ġ+ Ġsimple DateFormat . format ( Date ()) Ġ+ Ġ". txt " ĊĠĠĠ Ġval Ġfile Ġ= ĠFile ( filePath Ġ+ ĠfileName ) ĊĠĠĠ Ġvar Ġf os : ĠFileOutputStream ? Ġ= Ġnull ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġif Ġ( file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġfile . delete () Ġ// ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġfile . parent File !!. mkdir s () ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( file . createNew File ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġf os Ġ= ĠFileOutputStream ( file ) ĊĠĠĠĠĠĠĠ Ġf os . write ( content . toByteArray ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġf os ?. close () ĊĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠDIS K _ CACHE _ PATH Ġ= Ġ"/ Tel ink B le Mesh Crash /" ĊĊĠĠĠ Ġ@ Suppress Lint (" Static Field Leak ") ĊĠĠĠ Ġprivate Ġvar Ġcrash Handler : ĠApp Crash Handler ? Ġ= Ġnull ĊĠĠĠ Ġfun Ġinit ( context : ĠContext ): ĠApp Crash Handler ? Ġ{ ĊĠĠĠĠĠ Ġif Ġ( crash Handler Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcrash Handler Ġ= ĠApp Crash Handler ( context ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġreturn Ġcrash Handler ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġinit Ġ{ ĊĠĠĠ ĠThread . setDefault Un caught ExceptionHandler ( this ) ĊĠ Ġ} Ċ } Ċ