package Ġcn . j ess ie . runtime . program Ċ Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . content . pm . Component Info Ċ import Ġandroid . content . pm . Package Info Ċ import Ġandroid . content . res . Asset Manager Ċ import Ġcn . j ess ie . program . Android Package Components Ċ Ċ object ĠAndroid Package Components Parser Ġ Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠACTION _ MAIN Ġ= Ġ" android . intent . action . MAIN " ĊĠĠĠ Ġprivate Ġconst Ġval ĠC ATEG ORY _ LA UNCH ER Ġ= Ġ" android . intent . category . LA UNCH ER " ĊĊĠĠĠ Ġval Ġlauncher Filter Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠIntent Filter (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Action ( ACTION _ MAIN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Category ( CATEGORY _ LA UNCH ER ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġparse ( package Info : ĠPackage Info , Ġasset Manager : ĠAsset Manager ): ĠAndroid Package Components Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Filter Map Ġ= ĠAndroid Manifest Parser . parse ( asset Manager ) ĊĠĠĠĠĠĠĠ Ġfun Ġ< T Ġ: ĠComponent Info > Ġmap ( components : ĠArray < T >, Ġkey : ĠT . () Ġ-> ĠString ) Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomponents ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġcomponent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġkey ( component ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Filters Ġ= Ġintent Filter Map [ name ] Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġto ĠAndroid Package Components . Item ( component , Ġintent Filters ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toMap () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠAndroid Package Components ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Info . application Info , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap ( package Info . activities ) Ġ{ Ġname Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap ( package Info . services ) Ġ{ Ġname Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap ( package Info . re ceiv ers ) Ġ{ Ġname Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap ( package Info . providers ) Ġ{ Ġauthority Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }