package Ġtechnology . main thread . apps . gate keeper . data Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . Package Info Ċ import Ġandroid . content . pm . PackageManager Ċ Ċ import Ġjavax . inject . Inject Ċ Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠAndroid App Info Ġ@ Inject Ċ internal Ġconstructor ( private Ġval Ġcontext : ĠContext ) Ġ{ ĊĊĠĠĠ Ġval Ġversion Name : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġversion Name Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpackage Info Ġ= Ġpackage Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( package Info Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Name Ġ= Ġpackage Info . version Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġversion Name ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġversion Code : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġversion Code Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpackage Info Ġ= Ġpackage Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( package Info Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Code Ġ= Ġpackage Info . version Code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġversion Code ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġpackage Info : ĠPackage Info ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpackage Info : ĠPackage Info ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Info Ġ= Ġcontext . package Manager . get Package Info ( context . packageName , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠPackage Manager . Name NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . w ( e , Ġ" package Ġinfo Ġnot Ġfound ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpackage Info ĊĠĠĠĠĠĠĠ Ġ} Ċ }