package Ġcom . ub erge ek 4 2 . W ee chat Android . notifications Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Type face Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroidx . core . content . File Provider Ċ import Ġandroidx . core . graphics . drawable . Icon Compat Ċ import Ġcom . ub erge ek 4 2 . W ee chat Android . media . Content Uri Fetcher Ċ import Ġcom . ub erge ek 4 2 . W ee chat Android . upload . application Context Ċ import Ġcom . ub erge ek 4 2 . W ee chat Android . upload . dp _ to _ px Ċ import Ġcom . ub erge ek 4 2 . W ee chat Android . upload . suppress Ċ import Ġcom . ub erge ek 4 2 . W ee chat Android . utils . To aster Ċ import Ġcom . ub erge ek 4 2 . W ee chat Android . views . solid Color Ċ import Ġorg . apache . commons . codec . Decoder Exception Ċ import Ġorg . apache . commons . codec . binary . Hex Ċ import Ġjava . io . File Ċ import Ġjava . lang . IllegalArgumentException Ċ import Ġjava . util . concurrent . Concurrent HashMap ĊĊ Ċ // ĠIcon . create With Adaptive Bitmap Content Uri () Ġis Ġan ĠAPI Ġlevel Ġ 3 0 Ġmethod ; Ċ // Ġon Ġearlier ĠAPI , Ġthe Ġcompat Ġlibrary Ġwill Ġsimply Ġread Ġthe Ġicon Ġfrom ĠUri Ċ // Ġand Ġreconstruct Ġby Ġcalling ĠIcon . create With Adaptive Bitmap ( Bitmap Factory . decode Stream (... )). Ċ // Ċ // Ġreading Ġthis ĠUri Ġrequires Ġcontext Ġwhich Ġcompat Ġlibrary Ġdoesn 't Ġprovide ; Ċ // Ġthus Ġusing ĠUri ĠIcons Ġleads Ġto Ġa Ġcrash Ġon Ġapi Ġ 2 9 - : Ċ // ĠĠĠĠ Ġjava . lang . IllegalArgumentException : ĠContext Ġis Ġrequired Ġto Ġresolve Ġthe Ġfile Ġuri Ġof Ġthe Ġicon : Ġcontent :// ... Ċ // ĠĠĠĠĠĠĠ Ġat Ġandroidx . core . graphics . drawable . Icon Compat . to Icon ( Icon Compat . java : 5 7 2 ) Ċ // ĠĠĠĠĠĠĠ Ġat Ġandroidx . core . graphics . drawable . Icon Compat . to Icon ( Icon Compat . java : 5 2 9 ) Ċ // ĠĠĠĠĠĠĠ Ġat Ġandroidx . core . app . Person . to Android Person ( Person . java : 1 7 7 ) Ċ // ĠĠĠĠĠĠĠ Ġat Ġandroidx . core . app . Notification Compat $ Messaging Style $ Message . to Android Message ( Notification Compat . java : 4 0 0 2 ) Ċ private Ġval ĠURI _ NOTIFICATION S _ HAVE _ BEN EF IT Ġ= ĠBuild . VERSION . SDK _ INT Ġ>= Ġ 3 0 ĊĊ Ċ private Ġinterface ĠIcon Ġ{ ĊĠĠĠ Ġenum Ġclass ĠShape Ġ{ ĊĠĠĠĠĠĠĠ ĠSquare , ĊĠĠĠĠĠĠĠ ĠRound , ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠKey ( ĊĠĠĠĠĠĠĠ Ġval Ġshape : ĠShape , ĊĠĠĠĠĠĠĠ Ġval Ġcolors : ĠColors , ĊĠĠĠĠĠĠĠ Ġval Ġside Length : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġtext Size : ĠFloat , ĊĠĠĠĠĠĠĠ Ġval Ġtext : ĠString , ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠColors ( val Ġbackground : ĠInt , Ġval Ġforeground : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġcolor Pairs : ĠList < Colors > Ġ= Ġsequence Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuspend Ġfun ĠSequence Scope < Colors >. one ( a : ĠInt , Ġb : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyield ( Colors ( a . solid Color , Ġb . solid Color )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuspend Ġfun ĠSequence Scope < Colors >. two ( a : ĠInt , Ġb : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġone ( a , Ġb ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġone ( b , Ġa ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtwo ( 0 xa 0 7 8 5 5 , Ġ 0 xd 4 b 9 9 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtwo ( 0 x 3 d 3 9 3 6 , Ġ 0 xe 9 4 b 3 c ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtwo ( 0 x 3 8 5 9 2 a , Ġ 0 xa 4 ba 6 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtwo ( 0 xda a 0 3 d , Ġ 0 x 6 1 6 2 4 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtwo ( 0 xdf 6 5 8 9 , Ġ 0 x 3 c 1 0 5 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtwo ( 0 x 0 0 6 3 b 2 , Ġ 0 x 9 cc 3 d 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtwo ( 0 x 8 0 8 0 8 0 , Ġ 0 xd 6 ed 1 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtwo ( 0 x 1 0 1 8 2 0 , Ġ 0 xfe e 7 1 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtwo ( 0 x 0 0 4 0 5 f , Ġ 0 xa 0 db bf ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġone ( 0 x 5 b 8 4 9 1 , Ġ 0 xf cfc 8 a ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġone ( 0 x 9 e 1 0 3 0 , Ġ 0 xdd 4 1 3 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġone ( 0 xff de 7 c , Ġ 0 x 8 e 7 a 4 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġone ( 0 x 5 f 5 b 8 b , Ġ 0 xe 6 9 cfc ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtwo ( 0 xa 9 5 5 5 9 , Ġ 0 xff c 2 8 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtwo ( 0 x 7 0 3 a 6 7 , Ġ 0 x 9 9 8 fb 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtwo ( 0 x 0 0 5 1 4 2 , Ġ 0 x 2 0 ad 8 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. toList () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Opt In ( Experimental Unsigned Types :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġfun ĠString . d jb 2 Remain der ( div isor : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġhash Ġ= Ġ 0 U ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠforEach Ġ{ Ġchar Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash Ġ= Ġchar . code . to UInt () Ġ+ Ġ(( hash Ġshl Ġ 5 ) Ġ- Ġhash ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( hash Ġ% Ġdivisor . to UInt ()). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġfor Key ( key : ĠString ): ĠColors Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Index Ġ= Ġkey . d jb 2 Remain der ( color Pairs . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcolor Pairs [ color Index ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ private Ġfun Ġmake Bitmap ( key : ĠIcon . Key ): ĠBitmap Ġ{ ĊĠĠĠ Ġval Ġ( shape , Ġcolors , Ġside Length , Ġtext Size , Ġtext ) Ġ= Ġkey ĊĊĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap . create Bitmap ( side Length , Ġside Length , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( bitmap ) ĊĠĠĠ Ġval Ġpaint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĊĠĠĠ Ġpaint . color Ġ= Ġcolors . background ĊĊĠĠĠ Ġwhen Ġ( shape ) Ġ{ ĊĠĠĠĠĠĠĠ ĠIcon . Shape . Square Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint . style Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Paint ( paint ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠIcon . Shape . Round Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġradius Ġ= Ġside Length Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Circle ( radius , Ġradius , Ġradius , Ġpaint ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpaint . text Size Ġ= Ġtext Size ĊĠĠĠ Ġpaint . color Ġ= Ġcolors . foreground ĊĠĠĠ Ġpaint . type face Ġ= Ġdefault Bold Type face ĊĊĠĠĠ Ġval Ġfont Metrics Ġ= Ġpaint . font Metrics ĊĠĠĠ Ġval Ġas cent Ġ= Ġfont Metrics . as cent ĊĠĠĠ Ġval Ġdesc ent Ġ= Ġfont Metrics . desc ent ĊĊĠĠĠ Ġval Ġtext Width Ġ= Ġpaint . measure Text ( key . text ) ĊĠĠĠ Ġval Ġx Ġ= Ġ( side Length Ġ- Ġtext Width ) Ġ/ Ġ 2 f ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġleft Ġx Ġcoordinate ĊĠĠĠ Ġval Ġy Ġ= Ġ( side Length Ġ+ Ġ( desc ent Ġ- Ġas cent )) Ġ/ Ġ 2 f Ġ- Ġdesc ent ĠĠĠ Ġ// Ġbaseline Ġy Ġcoordinate ĊĊĠĠĠ Ġcanvas . draw Text ( text , Ġx , Ġy , Ġpaint ) ĊĊĠĠĠ Ġreturn Ġbitmap Ċ } Ċ Ċ //////////////////////////////////////////////////////////////// //////////////////////////////// //// Ċ //////////////////////////////////////////////////////////////// //////////////////////////////// //// Ċ //////////////////////////////////////////////////////////////// //////////////////////////////// //// ĊĊ Ċ private Ġfun ĠCharSequence . get Icon Characters (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġis Blank () Ġ-> Ġ" ?" ĊĠĠĠĠĠĠĠ Ġstart sWith (" ## ") Ġ-> Ġsub Sequence ( 1 , Ġif Ġ( length Ġ>= Ġ 3 ) Ġ 3 Ġelse Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġlength Ġ>= Ġ 2 Ġ-> Ġsub Sequence ( 0 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsub Sequence ( 0 , Ġ 1 ) ĊĠĠĠ Ġ}. toString () Ċ } ĊĊ Ċ fun Ġobtain Legacy Round Icon Bitmap ( text : ĠString , Ġcolor Key : ĠString ): ĠBitmap Ġ{ ĊĠĠĠ Ġval Ġkey Ġ= ĠIcon . Key ( ĊĠĠĠĠĠĠĠ Ġshape Ġ= ĠIcon . Shape . Round , ĊĠĠĠĠĠĠĠ Ġcolors Ġ= ĠIcon . Colors . for Key ( color Key ), ĊĠĠĠĠĠĠĠ Ġside Length Ġ= ĠLE G ACY _ ICON _ SIDE _ LENGTH , ĊĠĠĠĠĠĠĠ Ġtext Size Ġ= ĠLE G ACY _ ICON _ TEXT _ SIZE , ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġtext . get Icon Characters () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġreturn Ġmemory Icon Bitmap Cache . get Or Put ( key ) Ġ{ Ġmake Bitmap ( key ) Ġ} Ċ } ĊĊ Ċ fun Ġobtain Adaptive Icon ( text : ĠString , Ġcolor Key : ĠString , Ġallow Uri Icons : ĠBoolean ): ĠIcon Compat Ġ{ ĊĠĠĠ Ġval Ġkey Ġ= ĠIcon . Key ( ĊĠĠĠĠĠĠĠ Ġshape Ġ= ĠIcon . Shape . Square , ĊĠĠĠĠĠĠĠ Ġcolors Ġ= ĠIcon . Colors . for Key ( color Key ), ĊĠĠĠĠĠĠĠ Ġside Length Ġ= ĠAD AP TI VE _ ICON _ SIDE _ LENGTH , ĊĠĠĠĠĠĠĠ Ġtext Size Ġ= ĠAD AP TI VE _ ICON _ TEXT _ SIZE , ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġtext . get Icon Characters () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġreturn Ġif Ġ( URI _ NOTIFICATION S _ HAVE _ BEN EF IT Ġ&& Ġallow Uri Icons ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDisk Icon Cache . retrieve ( key )?. let Ġ{ Ġreturn Ġit Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= Ġmake Bitmap ( key ) ĊĠĠĠĠĠĠĠ Ġval Ġicon Ġ= ĠIcon Compat . create With Adaptive Bitmap ( bitmap ) ĊĠĠĠĠĠĠĠ ĠDisk Icon Cache . store ( key , Ġbitmap , Ġicon ) ĊĠĠĠĠĠĠĠ Ġicon ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory Icon Cache . get Or Put ( key ) Ġ{ ĠIcon Compat . create With Adaptive Bitmap ( make Bitmap ( key )) Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ //////////////////////////////////////////////////////////////// //////////////////////////////// //// Ċ //////////////////////////////////////////////////////////////// //////////////////////// ////// Ġcache Ċ //////////////////////////////////////////////////////////////// //////////////////////////////// //// ĊĊ Ċ private Ġval Ġmemory Icon Bitmap Cache Ġ= ĠConcurrent HashMap < Icon . Key , ĠBitmap >() Ċ private Ġval Ġmemory Icon Cache Ġ= ĠConcurrent HashMap < Icon . Key , ĠIcon Compat >() ĊĊ Ċ fun Ġclear Memory Icon Cache () Ġ{ ĊĠĠĠ Ġmemory Icon Bitmap Cache . clear () ĊĠĠĠ Ġmemory Icon Cache . clear () Ċ } ĊĊ Ċ //////////////////////////////////////////////////////////////// //////////////////////////////// //// ĊĊ Ċ private Ġfun ĠIcon . Key . to FileName (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġ"${ shape . name }:${ colors . background }:${ colors . foreground }: $ side Length :$ text Size :$ text " ĊĠĠĠĠĠĠĠ Ġ. encode To Safe String () Ċ } ĊĊ Ċ @ Throws ( IllegalArgumentException :: class , ĠNumber FormatException :: class , ĊĠĠĠĠĠĠĠ ĠDecoder Exception :: class , ĠIndex OutOfBoundsException :: class ) Ċ private Ġfun ĠString . to Icon Key (): ĠIcon . Key Ġ{ ĊĠĠĠ Ġval Ġ( shape , Ġbackground , Ġforeground , Ġside Length , Ġtext Size , Ġtext ) Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ. decode From Safe String () ĊĠĠĠĠĠĠĠ Ġ. split (" :", Ġlimit Ġ= Ġ 6 ) ĊĠĠĠ Ġreturn ĠIcon . Key ( ĊĠĠĠĠĠĠĠ Ġshape Ġ= ĠIcon . Shape . valueOf ( shape ), ĊĠĠĠĠĠĠĠ Ġside Length Ġ= Ġside Length . toInt (), ĊĠĠĠĠĠĠĠ Ġtext Size Ġ= Ġtext Size . toFloat (), ĊĠĠĠĠĠĠĠ Ġcolors Ġ= ĠIcon . Colors ( background . toInt (), Ġforeground . toInt ()), ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġtext ĊĠĠĠ Ġ) Ċ } ĊĊ Ċ private Ġobject ĠDisk Icon Cache Ġ{ ĊĠĠĠ Ġconst Ġval ĠDIRECTORY _ NAME Ġ= Ġ" icons " ĊĊĠĠĠ Ġval Ġdirectory Ġ= ĠFile ( application Context . cacheDir , ĠDIRECTORY _ NAME ). apply Ġ{ Ġmkdir s () Ġ} ĊĊĠĠĠ Ġ// Ġdon 't Ġuse Ġdisk Ġcache Ġunless Ġat Ġleast Ġ 1 0 0 ĠMB Ġis Ġfree ; ĊĠĠĠ Ġ// Ġthe Ġapp Ġwill Ġsurv ive Ġit , Ġbut Ġif Ġsome Ġicons Ġget Ġremoved Ġwhile Ġwe Ġare Ġrunning ĊĠĠĠ Ġ// Ġthe Ġsystem Ġwill Ġbe Ġdisplaying Ġblack Ġspace Ġinstead Ġof Ġicon ĊĠĠĠ Ġ@ Suppress Lint (" Us able Space ") ĊĠĠĠ Ġval Ġenabled Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdirectory . usable Space Ġ> Ġ 1 0 0 Ġ* Ġ 1 0 0 0 Ġ* Ġ 1 0 0 0 ĠĠ Ġ// Ġ 1 0 0 ĠMB ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTo aster . Error Toast . show ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġkey To Icon Ġ= ĠConcurrent HashMap < Icon . Key , ĠIcon Compat >() ĊĊĠĠĠ Ġfun Ġinitialize () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! enabled ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġnotification Handler . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirectory . list Files ()?. forEach Ġ{ Ġfile Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuppress < Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġfile . name . to Icon Key () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey To Icon [ key ] Ġ= ĠIcon Compat . create With Adaptive Bitmap Content Uri ( file . to Content Uri ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġstore Ġcurrently Ġgenerated Ġmemory - heavy Ġicon Ġin Ġcache , ĊĠĠĠ Ġ// Ġbut Ġschedule Ġreplacing Ġit Ġwith Ġa Ġmuch Ġlight er Ġversion Ġof Ġitself ĊĠĠĠ Ġfun Ġstore ( key : ĠIcon . Key , Ġbitmap : ĠBitmap , Ġprovision al Icon : ĠIcon Compat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! enabled ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġkey To Icon [ key ] Ġ= Ġprovision al Icon ĊĊĠĠĠĠĠĠĠ Ġnotification Handler . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuppress < Exception >( show Toast Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( directory , Ġkey . to FileName ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . output Stream (). use Ġ{ ĠoutputStream Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap . compress ( Bitmap . Compress Format . PNG , Ġ 1 0 0 , ĠoutputStream ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey To Icon [ key ] Ġ= ĠIcon Compat . create With Adaptive Bitmap Content Uri ( file . to Content Uri ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġretrieve ( key : ĠIcon . Key ) Ġ= Ġkey To Icon [ key ] ĊĊĠĠĠ Ġfun ĠFile . to Content Uri (): ĠUri Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFile Provider . get Uri For File ( application Context , ĠAUTH ORITY , Ġthis ) ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun Ġinitialize Icon Cache () Ġ{ ĊĠĠĠ ĠDisk Icon Cache . initialize () Ċ } ĊĊ Ċ //////////////////////////////////////////////////////////////// //////////////////////////////// //// Ċ //////////////////////////////////////////////////////////////// //////////////////////////////// //// Ċ //////////////////////////////////////////////////////////////// //////////////////////////////// //// ĊĊ Ċ // Ġsee ĠIcon Compat Ġcreate With Adaptive Bitmap Ġ& ĠAdapt ive Icon Drawable Ċ private Ġval ĠAD AP TI VE _ ICON _ SIDE _ LENGTH Ġ= Ġ 1 0 8 . dp _ to _ px Ċ private Ġval ĠICON _ VIEW PORT _ SIDE _ LENGTH Ġ= Ġ 7 2 . dp _ to _ px Ċ private Ġval ĠAD AP TI VE _ ICON _ TEXT _ SIZE Ġ= ĠICON _ VIEW PORT _ SIDE _ LENGTH Ġ/ Ġ 2 f Ċ Ċ private Ġval ĠLE G ACY _ ICON _ SIDE _ LENGTH Ġ= Ġ 4 8 . dp _ to _ px Ċ private Ġval ĠLE G ACY _ ICON _ TEXT _ SIZE Ġ= ĠLE G ACY _ ICON _ SIDE _ LENGTH Ġ/ Ġ 2 f ĊĊ Ċ private Ġval Ġdefault Bold Type face Ġ= ĠType face . create ( Type face . DEFAULT , ĠType face . BOLD ) ĊĊ Ċ private Ġval ĠAUTH ORITY Ġ= Ġapplication Context . packageName Ġ+ ĠContent Uri Fetcher . FILE _ PROVIDER _ SUFFIX ĊĊ Ċ private Ġfun ĠString . encode To Safe String (): ĠString Ġ= ĠString ( Hex . encode Hex ( this . toByteArray ())) Ċ private Ġfun ĠString . decode From Safe String (): ĠString Ġ= ĠString ( Hex . decode Hex ( this . toCharArray ())) ĊĊ Ċ private Ġoperator Ġfun Ġ< E > ĠList < E >. component 6 () Ġ= Ġthis [ 5 ] Ċ