package Ġde . r ki . cor on aw arn app . exception . reporting Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġde . r ki . cor on aw arn app . Cor ona Warn Application Ċ import Ġde . r ki . cor on aw arn app . R Ċ import Ġde . r ki . cor on aw arn app . exception . Exception Category Ċ import Ġde . r ki . cor on aw arn app . util . Dialog Helper Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠError Report Receiver ( private Ġval Ġactivity : ĠActivity ) Ġ: ĠBroadcast Receiver () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext , Ġintent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcategory Ġ= ĠException Category ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. valueOf ( intent . getString Extra ( Reporting Constants . ERROR _ REPORT _ CATEGORY _ EXTRA ) Ġ?: Ġ"") ĊĊĠĠĠĠĠĠĠ Ġval Ġprefix Ġ= Ġintent . getString Extra ( Reporting Constants . ERROR _ REPORT _ PREFIX _ EXTRA ) ĊĠĠĠĠĠĠĠ Ġval Ġsuffix Ġ= Ġintent . getString Extra ( Reporting Constants . ERROR _ REPORT _ SUFFIX _ EXTRA ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġset Ġthe Ġmessage Ġof Ġthe Ġdialog : Ġdefault Ġis Ġtechnical ĊĠĠĠĠĠĠĠ Ġvar Ġmessage Ġ= Ġintent . getString Extra ( Reporting Constants . ERROR _ REPORT _ MESSAGE _ EXTRA ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġcontext . resources . getString ( R . string . errors _ generic _ text _ unknown _ error _ cause ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġif Ġwe Ġhave Ġa Ġres Ġid Ġwe Ġset Ġthat Ġmessage ĊĠĠĠĠĠĠĠ Ġif Ġ( intent . has Extra ( Reporting Constants . ERROR _ REPORT _ RES _ ID )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġres Id Ġ= Ġintent . getInt Extra ( Reporting Constants . ERROR _ REPORT _ RES _ ID , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġcontext . resources . getString ( res Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġstack Ġ= Ġintent . getString Extra ( Reporting Constants . ERROR _ REPORT _ STACK _ EXTRA ) ĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġcontext . resources . getString ( R . string . errors _ generic _ headline ) ĊĠĠĠĠĠĠĠ Ġval Ġconfirm Ġ= Ġcontext . resources . getString ( R . string . errors _ generic _ button _ positive ) ĊĠĠĠĠĠĠĠ Ġval Ġdetails Ġ= Ġcontext . resources . getString ( R . string . errors _ generic _ button _ negative ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdetails Title Ġ= Ġcontext . resources . getString ( R . string . errors _ generic _ details _ headline ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent . has Extra ( Reporting Constants . ERROR _ REPORT _ API _ EXCEPTION _ CODE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapi StatusCode Ġ= Ġintent . getInt Extra ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReporting Constants . ERROR _ REPORT _ API _ EXCEPTION _ CODE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠError Codes . REPORT ED _ EXCEPTION _ UNKNOWN _ PRO BLE M . code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ+= Ġ"# $ api StatusCode " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdialog Title Ġ= Ġif Ġ( intent . getString Extra ( Reporting Constants . ERROR _ REPORT _ TITLE _ EXTRA ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . getString Extra ( Reporting Constants . ERROR _ REPORT _ TITLE _ EXTRA ). or Empty () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Title Ġ= Ġcontext . resources . getString ( R . string . errors _ generic _ details _ headline ). uppercase () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠerrorCode Ġ= Ġintent . getInt Extra ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReporting Constants . ERROR _ REPORT _ CODE _ EXTRA , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReporting Constants . ERROR _ REPORT _ UNKNOWN _ ERROR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ error Title : Ġ$ errorCode \ n $ title " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠTim ber . e (" [$ category ] ${ ( prefix Ġ?: Ġ"") } Ġ$ message ${ ( suffix Ġ?: Ġ"") }") ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! Cor ona Warn Application . is App In Foreground ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . v (" Not Ġdisplaying Ġerror Ġdialog , Ġnot Ġin Ġforeground .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdialog Instance Ġ= ĠDialog Helper . Dialog Instance ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġdialog Title , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġmessage , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button Ġ= Ġconfirm , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Button Ġ= Ġdetails , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel able Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button Function Ġ= Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Button Function Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstack Trace Dialog Ġ= ĠDialog Helper . Dialog Instance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ details Title :\ n $ stack ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDialog Helper . show Dialog ( stack Trace Dialog . copy ( is Text Selectable Ġ= Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠDialog Helper . show Dialog ( dialog Instance ) ĊĠĠĠ Ġ} Ċ } Ċ