package Ġcom . and ry yu . utils . utils Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . PackageManager Ċ Ċ object ĠApp Utils Ġ{ ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġget AppName ( context : ĠContext ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpackage Manager Ġ= Ġcontext . package Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpackage Info Ġ= Ġpackage Manager . get Package Info ( context . packageName , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlabel Res Ġ= Ġpackage Info . application Info . label Res ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcontext . resources . getString ( label Res ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Version Code ( mContext : ĠContext ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġversion Code : ĠString ? Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// èİ·åıĸ è½¯ä»¶ çīĪæľ¬ åı· ï¼Į å¯¹åºĶ Android Manifest . xml ä¸ĭ android : version Code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Code Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmContext . package Manager . get Package Info ( mContext . packageName , Ġ 0 ). version Name ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠPackage Manager . Name NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġversion Code ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæł¹æį® æīĭæľº çļĦ åĪĨ è¾ ¨ çİĩ ä»İ Ġdp ĠçļĦ åįķä½į Ġ è½¬ æĪĲä¸º Ġpx ( åĥı ç´ł ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdip 2 px ( context : ĠContext , Ġdp Value : ĠFloat ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscale Ġ= Ġcontext . resources . display Metrics . density ĊĠĠĠĠĠĠĠ Ġreturn Ġ( dp Value Ġ* Ġscale Ġ+ Ġ 0 . 5 f ). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ 0 ä»£è¡¨ çĽ¸ çŃī ï¼Į 1 ä»£è¡¨ version 1 å¤§äºİ version 2 ï¼Į - 1 ä»£è¡¨ version 1 å°ı äºİ version 2 ĊĠĠĠĠ Ġ* Ġ@ param Ġversion 1 ĊĠĠĠĠ Ġ* Ġ@ param Ġversion 2 ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcompare Version ( version 1 : ĠString , Ġversion 2 : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( version 1 Ġ== Ġversion 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġversion 1 Array Ġ= Ġversion 1 . split ("\\ .". to Regex ()). to Typed Array () ĊĠĠĠĠĠĠĠ Ġval Ġversion 2 Array Ġ= Ġversion 2 . split ("\\ .". to Regex ()). to Typed Array () ĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ// Ġèİ·åıĸ æľĢå°ı éķ¿åº¦ åĢ¼ ĊĠĠĠĠĠĠĠ Ġval Ġmin Len Ġ= ĠMath . min ( version 1 Array . size , Ġversion 2 Array . size ) ĊĠĠĠĠĠĠĠ Ġvar Ġdiff Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ å¾ªçİ¯ åĪ¤æĸŃ æ¯ı ä½į çļĦ å¤§å°ı ĊĠĠĠĠĠĠĠ Ġwhile Ġ( index Ġ< Ġmin Len ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġversion 1 Array [ index ]. toInt () Ġ- Ġversion 2 Array [ index ]. toInt (). also Ġ{ Ġdiff Ġ= Ġit Ġ} Ġ== Ġ 0 ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( diff Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġå¦Ĥæŀľ ä½į æķ° ä¸į ä¸Ģèĩ´ ï¼Į æ¯Ķè¾ĥ å¤ļ ä½Ļ ä½į æķ° ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġindex Ġuntil Ġversion 1 Array . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( version 1 Array [ i ]. toInt () Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġindex Ġuntil Ġversion 2 Array . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( version 2 Array [ i ]. toInt () Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( diff Ġ> Ġ 0 ) Ġ 1 Ġelse Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }