package Ġio . github . k ac zm are k . local crash detector . ui . cr ashes _ list Ċ Ċ import Ġandroid . content . pm . Application Info Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . lifecycle . Lifecycle Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . lifecycle . repeat On Lifecycle Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Behavior Ċ import Ġio . github . k ac zm are k . local crash detector . R Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . launch Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . core . content . File Provider Ċ import Ġjava . io . File Ċ Ċ class ĠC ras hes List Activity Ġ: ĠAppCompatActivity (), ĠOnClick Crash Item Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġvm : ĠC ras hes List ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtv Full Crash Reason : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtv Device Details : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbtn Share File : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbottom Sheet Behavior : ĠBottom Sheet Behavior < Frame Layout > ĊĠĠĠ Ġprivate Ġval Ġbottom Sheet Callback Ġ= Ġobject Ġ: ĠBottom Sheet Behavior . Bottom Sheet Callback () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon StateChanged ( bottom Sheet : ĠView , ĠnewState : ĠInt ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Slide ( bottom Sheet : ĠView , Ġslide Offset : ĠFloat ) Ġ{} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ cr ashes _ list ) ĊĠĠĠĠĠĠĠ Ġvm Ġ= ĠViewModel Provider ( this )[ Cr ashes List ViewModel :: class . java ] ĊĊĠĠĠĠĠĠĠ Ġval Ġtoolbar Ġ= ĠfindViewById < Toolbar >( R . id . toolbar ) ĊĠĠĠĠĠĠĠ Ġval Ġrv Cr ashes List Ġ= ĠfindViewById < RecyclerView >( R . id . rv _ cr ashes _ list ) ĊĠĠĠĠĠĠĠ Ġval Ġfl Crash Details Bottom Sheet Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < Frame Layout >( R . id . fl _ crash _ details _ bottom _ sheet ) ĊĠĠĠĠĠĠĠ Ġtv Full Crash Reason Ġ= ĠfindViewById ( R . id . tv _ details _ full _ info ) ĊĠĠĠĠĠĠĠ Ġtv Device Details Ġ= ĠfindViewById ( R . id . tv _ details _ device _ info ) ĊĠĠĠĠĠĠĠ Ġbtn Share File Ġ= ĠfindViewById ( R . id . btn _ share _ file ) ĊĠĠĠĠĠĠĠ Ġbottom Sheet Behavior Ġ= ĠBottom Sheet Behavior . from ( fl Crash Details Bottom Sheet ) ĊĊĠĠĠĠĠĠĠ Ġtoolbar . subtitle Ġ= ĠgetString ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . activity _ crash _ list _ description , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Application Name () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġrv Adapter Ġ= ĠCrash List Rv Adapter (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener Ġ= Ġthis @ Cr ashes List Activity ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrv Cr ashes List . adapter Ġ= Ġrv Adapter ĊĊĠĠĠĠĠĠĠ Ġbottom Sheet Behavior . add Bottom Sheet Callback ( bottom Sheet Callback ) ĊĠĠĠĠĠĠĠ Ġbottom Sheet Behavior . state Ġ= ĠBottom Sheet Behavior . STATE _ HIDDEN ĊĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat On Lifecycle ( Lifecycle . State . STARTED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvm . ui State . collect Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Loading Ġ-> ĠLog . i ( TAG , Ġ" Loading ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Success Ġ-> Ġrv Adapter . update ( result . data ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠError Ġ-> ĠLog . i ( TAG , Ġ" Error Ġ= Ġ${ result . message }") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Empty Ġ-> ĠLog . i ( TAG , Ġ" Empty ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġbottom Sheet Behavior . remove Bottom Sheet Callback ( bottom Sheet Callback ) ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( item : ĠCrash Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Details ( item . full Info , Ġitem . device , Ġitem . path ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Details ( crash Reason : ĠString , Ġdevice : ĠDevice Details , Ġpath : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtv Full Crash Reason . text Ġ= Ġcrash Reason ĊĠĠĠĠĠĠĠ Ġval Ġdevice Details Ġ= ĠgetString ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . activity _ crash _ device _ details , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdevice . manufacturer , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdevice . model , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdevice . android , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdevice . api Level , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdevice . board ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtv Device Details . text Ġ= Ġdevice Details ĊĠĠĠĠĠĠĠ Ġbtn Share File . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsharing Intent Ġ= ĠIntent ( Intent . ACTION _ SEND ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" text / plain " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Flags ( Intent . FLAG _ GRANT _ READ _ URI _ PERMISSION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent . EXTRA _ STREAM , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Provider . get Uri For File ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Cr ashes List Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAUTHOR ITIES , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Intent . EXTRA _ TEXT , Ġdevice Details ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent . create Chooser ( sharing Intent , Ġnull )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbottom Sheet Behavior . state Ġ= ĠBottom Sheet Behavior . STATE _ EXP AN DED ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Application Name (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapplication Info : ĠApplication Info Ġ= Ġapplication Info ĊĠĠĠĠĠĠĠ Ġval Ġstring Id Ġ= Ġapplication Info . label Res ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( string Id Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Info . non Localized Label . toString () ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( string Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Cr ashes List Activity " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠAUTHOR ITIES Ġ= Ġ" io . github . k ac zm are k . local crash detector . provider " ĊĠĠĠ Ġ} Ċ }