package Ġcom . l uk el or us so . presentation . task Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . content . File Provider Ċ import Ġcom . l uk el or us so . presentation . extensions . get Bitmap Ċ import Ġcom . l uk el or us so . presentation . extensions . getS ca led Ċ import Ġcom . l uk el or us so . presentation . extensions . share Image And Text Ċ import Ġjava . io . File Ċ import Ġjava . io . File OutputStream Ċ import Ġjava . io . IOException Ċ import Ġjava . util . concurrent . Executors Ċ Ċ /** Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 1 ĠL uke ĠL or us so Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense ĠVersion Ġ 2 . 0 Ċ Ġ*/ Ċ class ĠShare PNG Task ( ĊĠĠĠ Ġprivate Ġval Ġcontext : ĠContext , ĊĠĠĠ Ġprivate Ġval Ġcolor Preview : ĠView , ĊĠĠĠ Ġprivate Ġval Ġapplication Id : ĠString , ĊĠĠĠ Ġprivate Ġval Ġdim en : ĠInt , ĊĠĠĠ Ġprivate Ġval Ġdescription : ĠString , ĊĠĠĠ Ġprivate Ġval Ġpopup Label : ĠString , ĊĠĠĠ Ġprivate Ġval Ġlistener : ĠActionListener ? Ċ ) Ġ{ ĊĊĠĠĠ Ġinterface ĠActionListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Task Completed () Ġ{} ĊĠĠĠĠĠĠĠ Ġfun Ġon Task Failed () Ġ{} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCACHE _ DIR Ġ= Ġ" images " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSHARE D _ COLOR _ FILENAME Ġ= Ġ" shared _ color . png " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġexecute () Ġ{ ĊĠĠĠĠĠĠĠ ĠExec utors . new Single Thread Executor (). execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsuccess : ĠBoolean Ġ= Ġdo In Background () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠHandler ( Looper . get Main Looper ()). post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( success ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. on Task Completed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. on Task Failed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdo In Background (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcache Path Ġ= ĠFile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . external Cache Dir , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCACHE _ DIR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmkdir s Ġ= Ġcache Path . mkdir s () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsh arable Bitmap : ĠBitmap ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mkdir s Ġ|| Ġcache Path . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstream Ġ= ĠFileOutputStream ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ cache Path /${ SHARED _ COLOR _ FILENAME }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsh arable Bitmap Ġ= Ġgenerate Sh arable PNG ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstream , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Preview , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdim en ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstream . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Uri : ĠUri ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sh arable Bitmap Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSHARE D _ COLOR _ FILENAME ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Uri Ġ= ĠFile Provider . get Uri For File ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( content Uri Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . share Image And Text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Uri , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopup Label ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Sh arable PNG ( ĊĠĠĠĠĠĠĠ Ġstream : ĠFileOutputStream , ĊĠĠĠĠĠĠĠ Ġcolor Preview : ĠView , ĊĠĠĠĠĠĠĠ Ġdim en : ĠInt ĊĠĠĠ Ġ): ĠBitmap ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġbitmap Ġ= Ġcolor Preview . get Bitmap () ĊĠĠĠĠĠĠĠ Ġif Ġ( bitmap . height Ġ> Ġdim en ) Ġbitmap Ġ= Ġbitmap . getS ca led ( dim en , Ġdim en , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġis Compressed Ġ= Ġbitmap . compress ( Bitmap . Compress Format . PNG , Ġ 0 , Ġstream ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is Compressed ) Ġbitmap Ġelse Ġnull ĊĠĠĠ Ġ} Ċ Ċ } Ċ