package Ġcom . t resp ies . mus ical umb rella Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Build Ċ Ċ public Ġobject ĠApp Installer Validator Ġ{ ĊĊĠĠĠ Ġenum Ġclass ĠInstall er ( val Ġid : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠGOOGLE _ PLAY _ STORE ( id Ġ= Ġ" com . android . v ending "), ĊĠĠĠĠĠĠĠ ĠA MA Z ON _ APP _ STORE ( id Ġ= Ġ" com . amazon . v ene z ia ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġvalidate ( context : ĠContext ): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( context . verify Installer ( Installer . GOOGLE _ PLAY _ STORE ) Ġ|| Ġcontext . verify Installer ( Installer . AMA Z ON _ APP _ STORE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . VALID ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . INVALID ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠContext . verify Installer ( installer : ĠInstall er ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . R ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Manager . get Install Source Info ( packageName ). origin ating PackageName ?. startsWith ( installer . id ) Ġ== Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Manager . get Installer PackageName ( packageName )?. startsWith ( installer . id ) Ġ== Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġget Installer ( context : ĠContext ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . R ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . package Manager . get Install Source Info ( context . packageName ). origin ating PackageName ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . package Manager . get Installer PackageName ( context . packageName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }