package Ġnet . fro em ling . bs remote Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Build Ċ import Ġandroid . util . Log Ċ import Ġandroid . util . Pair Ċ import Ġjava . io . IOException Ċ import Ġjava . io . PrintWriter Ċ import Ġjava . io . String Writer Ċ import Ġjava . io . Unsupported EncodingException Ċ import Ġjava . net . Http URLConnection Ċ import Ġjava . net . URL Ċ import Ġjava . net . URL Encoder Ċ import Ġjava . nio . charset . Charset Ċ import Ġjava . nio . charset . StandardCharsets Ċ import Ġjava . util .* Ċ Ċ class ĠLog Thread Ġprivate Ġconstructor ( c : ĠContext ?, Ġprivate Ġval Ġlog : ĠString ) Ġ: ĠThread (" Error ") Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġversion : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Throws ( Unsupported EncodingException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġget Query ( params : ĠList < Pair < String , ĠString ? >> ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġvar Ġfirst Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġfor Ġ( pair Ġin Ġparams ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( first ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . append ("& ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . append ( URL Encoder . encode ( pair . first , Ġ" UTF - 8 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . append (" =") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . append ( URL Encoder . encode ( pair . second , Ġ" UTF - 8 ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠURL (" http :// ac rob attle server . app spot " Ġ+ Ġ". com " Ġ+ Ġ"/ bs Remote Log ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconn Ġ= Ġurl . open Connection () Ġas ĠHttp URLConnection ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconn . allow User Interaction Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconn . request Method Ġ= Ġ" POST " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Agent Ġ= Ġ(" B omb S quad ĠRemote Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġversion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" Ġ( Android Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠBuild . VERSION . RELEASE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ"; Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠBuild . MAN U FACT UR ER ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠBuild . MODEL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ") ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconn . setRequest Property (" User - Agent ", Ġuser Agent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconn . setRequest Property (" charset ", Ġ" utf - 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname ValuePair s : ĠMutable List < Pair < String , ĠString ? >> Ġ= ĠArrayList ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname ValuePair s . add ( Pair (" version ", Ġversion )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname ValuePair s . add ( Pair (" log ", Ġlog )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout Ġ= Ġget Query ( name ValuePair s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpost Data Bytes Ġ= Ġout . toByteArray ( charset UTF 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġos Ġ= Ġconn . output Stream ĊĠĠĠĠĠĠĠĠĠĠĠ Ġos . write ( post Data Bytes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġos . flush () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġos . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Code Ġ= Ġconn . response Code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response Code Ġ!= Ġ 2 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v (" BS REMOTE ", Ġ" Got Ġresponse Ġcode Ġ$ response Code Ġon Ġbs Remote Log Ġrequest ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v (" BS REMOTE ", Ġ" ERR ĠON ĠLog Thread Ġpost ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġsent Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġlog ( s : ĠString , Ġe : ĠThrowable ?, Ġc : ĠContext ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġonly Ġreport Ġthe Ġfirst Ġerror .. ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġs Ġ= Ġs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! sent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( e Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsw Ġ= ĠString Writer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace ( PrintWriter ( sw )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Ġ+= Ġ"\ n " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Ġ+= Ġsw . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog Thread ( c , Ġs ). start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsent Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġreport Ġall Ġto Ġthe Ġstandard Ġlog ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" BS REMOTE ", Ġs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe ?. printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcharset UTF 8 : ĠCharset ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= ĠStandard Charsets . UTF _ 8 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= Ġif Ġ( c Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ?" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . package Manager . get Package Info ( c . packageName , Ġ 0 ). version Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠPackage Manager . Name NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }