package Ġorg . k ore ader . launcher Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Clip Data Ċ import Ġandroid . content . Clipboard Manager Ċ import Ġandroid . content . Context Ċ import Ġjava . util . concurrent . Count DownLatch Ċ Ċ class ĠClip board ( activity : ĠActivity ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġclipboard : ĠClip board Manager Ġ= Ġactivity . application Context . getSystem Service ( Context . CLIP BOARD _ SERVICE ) ĊĠĠĠĠĠĠĠ Ġas ĠClip board Manager ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠBox < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġvalue : ĠT ? Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Clipboard Text ( activity : ĠActivity ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠBox < String >() ĊĠĠĠĠĠĠĠ Ġval Ġcd Ġ= ĠCount DownLatch ( 1 ) ĊĠĠĠĠĠĠĠ Ġactivity . run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġclipboard . primary Clip ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull Ġ&& Ġdata . item Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġdata . getItem At ( 0 ). coerce ToText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . application Context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . value Ġ= Ġtext . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . value Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . w ( e . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . value Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcd . count Down () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcd . await () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠInterruptedException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult . value Ġ?: Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas Clipboard Text (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclip data Ġ= Ġclipboard . primary Clip ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( clip data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnumber Ġ= Ġclip data . item Count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( number Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Clipboard Text ( activity : ĠActivity , Ġtext : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity . run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Use Property Access Syntax ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclipboard . set Primary Clip ( Clip Data . new Plain Text (" KO Reader _ clipboard ", Ġtext )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . w ( e . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ