package Ġcom . y up fe g . base . tools . badge Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . annotation . Target Api Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . Resolve Info Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġcom . y up fe g . logger . ext . log w ĊĊ Ċ /** Ċ Ġ* Ġopp o æīĭæľº çļĦ æ¡ Į éĿ¢ çº¢ çĤ¹ å¤ĦçĲĨ ç±» Ċ Ġ* Ġ* Ġ äºĳ çľŁ æľº æµĭè¯ķ æĹł æķĪ ï¼Į æļĤ æĹł å®ĺæĸ¹ æĸ¹æ¡Ī ï¼Į éľĢè¦ģ åĲĳ å®ĺæĸ¹ çĶ³è¯· Ċ Ġ* Ġ@ author Ġy u P Fe G Ċ Ġ* Ġ@ date Ġ 2 0 2 1 / 0 8 / 1 7 Ċ Ġ*/ Ċ class ĠO pp o Badge Number Handler Ġ: ĠBadge Num Platform Handler Ġ{ ĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPRO VIDER _ CONTENT _ URI Ġ= Ġ" content :// com . android . badge / badge " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINTENT _ ACTION Ġ= Ġ" com . op po . unset tle de vent " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINTENT _ EXTRA _ PACKAGE _ NAME Ġ= Ġ" p ake age Name " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINTENT _ EXTRA _ BAD GE _ COUNT Ġ= Ġ" number " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINTENT _ EXTRA _ BAD GE _ UP GR ADE _ NUMBER Ġ= Ġ" upgrade Number " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINTENT _ EXTRA _ BAD GE _ UP GR ADE _ COUNT Ġ= Ġ" app _ badge _ count " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Obsolete Sdk Int ") ĊĠĠĠ Ġoverride Ġfun Ġset Launch Badge Number ( context : ĠContext , Ġnum : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġnumber Ġ= Ġnum ĊĠĠĠĠĠĠĠ Ġif Ġ( number Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumber Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . H ONE Y COMB ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Badge By Content Provider ( context , badge Count Ġ= Ġnumber ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Badge Count Update Broadcast ( context , badge Count Ġ= Ġnumber ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} catch Ġ( e Ġ: ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog w ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åıĳéĢģ æ¡ Į éĿ¢ çº¢ çĤ¹ æĽ´æĸ° çļĦ ç³»ç»Ł å¹¿ æĴŃ ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĊĠĠĠĠ Ġ* Ġ@ param Ġbadge Count Ġ çº¢ çĤ¹ æķ°éĩı ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsend Badge Count Update Broadcast ( context : ĠContext , badge Count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( INT ENT _ ACTION ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( INT ENT _ EXTRA _ PACKAGE _ NAME , Ġcontext . packageName ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( INT ENT _ EXTRA _ BAD GE _ COUNT , Ġbadge Count ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( INT ENT _ EXTRA _ BAD GE _ UP GR ADE _ NUMBER , Ġbadge Count ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresolve Infos Ġ= Ġquery Broadcast Re ceiv ers ( context , Ġintent ) ĊĠĠĠĠĠĠĠ Ġif Ġ( resolve Infos . isNull OrEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" unable Ġto Ġsend Ġopp o Ġbroadcast Ġresolve Ġintent Ġ$ intent ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( info Ġin Ġresolve Infos ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Intent Ġ= ĠIntent ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Intent . set Package ( info . resolve PackageName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . send Broadcast ( actual Intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġquery Broadcast Re ceiv ers ( context : ĠContext , Ġintent : ĠIntent ?): ĠList < Resolve Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpackage Manager Ġ= Ġcontext . package Manager ĊĠĠĠĠĠĠĠ Ġreturn Ġpackage Manager . query Broadcast Re ceiv ers ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent !! , Ġ 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSend Ġrequest Ġto ĠOP PO Ġbadge Ġcontent Ġprovider Ġto Ġset Ġbadge Ġin ĠOP PO Ġhome Ġlauncher . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠĠĠĠĠĠ Ġthe Ġcontext Ġto Ġuse ĊĠĠĠĠ Ġ* Ġ@ param Ġbadge Count ĠĠĠ Ġthe Ġbadge Ġcount ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Target Api ( Build . VERSION _ CODES . H ONE Y COMB ) ĊĠĠĠ Ġprivate Ġfun Ġset Badge By Content Provider ( context : ĠContext , Ġbadge Count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġextras Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextras . put Int ( INT ENT _ EXTRA _ BAD GE _ UP GR ADE _ COUNT , Ġbadge Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . content Resolver . call ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUri . parse ( PROVIDER _ CONTENT _ URI ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" set App Badge Count ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextras ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (" Unable Ġto Ġexecute ĠBadge ĠBy ĠContent ĠProvider ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }