package Ġcom . f lay one . tax cc . tax compare calculate . utils Ċ Ċ import Ġandroid . os . Environment Ċ import Ġandroid . text . TextUtils Ċ import Ġjava . io . File Ċ import Ġjava . io . FileInputStream Ċ import Ġjava . io . IOException Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġli y ay u Ġon Ġ 2 0 1 9 / 4 / 2 3 . Ċ Ġ*/ Ċ object ĠOS Util Ġ{ ĊĠĠĠ Ġ// MI UI æłĩè¯Ĩ ĊĠĠĠ Ġprivate Ġval ĠKEY _ MI UI _ VERSION _ CODE Ġ= Ġ" ro . mi ui . ui . version . code " ĊĠĠĠ Ġprivate Ġval ĠKEY _ MI UI _ VERSION _ NAME Ġ= Ġ" ro . mi ui . ui . version . name " ĊĠĠĠ Ġprivate Ġval ĠKEY _ MI UI _ INTERNAL _ STORAGE Ġ= Ġ" ro . mi ui . internal . storage " ĊĊĠĠĠ Ġ// EM UI æłĩè¯Ĩ ĊĠĠĠ Ġprivate Ġval ĠKEY _ EM UI _ VERSION _ CODE Ġ= Ġ" ro . build . version . em ui " ĊĠĠĠ Ġprivate Ġval ĠKEY _ EM UI _ API _ LEVEL Ġ= Ġ" ro . build . hw _ em ui _ api _ level " ĊĠĠĠ Ġprivate Ġval ĠKEY _ EM UI _ CONFIG _ HW _ SYS _ VERSION Ġ= Ġ" ro . conf g . hw _ system version " ĊĊĠĠĠ Ġ// Fly me æłĩè¯Ĩ ĊĠĠĠ Ġprivate Ġval ĠKEY _ FL Y ME _ ID _ F ALG _ KEY Ġ= Ġ" ro . build . display . id " ĊĠĠĠ Ġprivate Ġval ĠKEY _ FL Y ME _ ID _ F ALG _ VALUE _ KEYWORD Ġ= Ġ" Fly me " ĊĠĠĠ Ġprivate Ġval ĠKEY _ FL Y ME _ ICON _ F ALG Ġ= Ġ" persist . sys . use . fly me . icon " ĊĠĠĠ Ġprivate Ġval ĠKEY _ FL Y ME _ SETUP _ F ALG Ġ= Ġ" ro . me iz u . setup wizard . fly me " ĊĠĠĠ Ġprivate Ġval ĠKEY _ FL Y ME _ PUBL ISH _ F ALG Ġ= Ġ" ro . fly me . published " ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæĺ¯åĲ¦ æĺ¯ Fly me ç³»ç»Ł ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Fly me (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Properties Exist ( KEY _ FL Y ME _ ICON _ F ALG , ĠKEY _ FL Y ME _ SETUP _ F ALG , ĠKEY _ FL Y ME _ PUBL ISH _ F ALG )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuild Properties Ġ= ĠBuild Properties . newInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( build Properties . containsKey ( KEY _ FL Y ME _ ID _ F ALG _ KEY )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrom Name Ġ= Ġbuild Properties . getProperty ( KEY _ FL Y ME _ ID _ F ALG _ KEY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( rom Name ) Ġ&& Ġrom Name !!. contains ( KEY _ FL Y ME _ ID _ F ALG _ VALUE _ KEYWORD )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæĺ¯åĲ¦ æĺ¯ EM UI ç³»ç»Ł ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis EM UI (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġis Properties Exist ( KEY _ EM UI _ VERSION _ CODE , ĠKEY _ EM UI _ API _ LEVEL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKEY _ EM UI _ CONFIG _ HW _ SYS _ VERSION ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæĺ¯åĲ¦ æĺ¯ MI UI ç³»ç»Ł ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis MI UI (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġis Properties Exist ( KEY _ MI UI _ VERSION _ CODE , ĠKEY _ MI UI _ VERSION _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKEY _ MI UI _ INTERNAL _ STORAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Properties Exist ( var arg Ġkeys : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( keys . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproperties Ġ= ĠBuild Properties . newInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( key Ġin Ġkeys ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġproperties . getProperty ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠBuild Properties Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġprivate Ġconstructor () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġproperties : ĠProperties Ġ= ĠProperties () ĊĊĠĠĠĠĠĠĠ Ġval ĠisEmpty : ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġproperties . isEmpty ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ è¯»åıĸ ç³»ç»Ł éħįç½® ä¿¡æģ¯ build . prop ç±» ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties . load ( FileInputStream ( File ( Environment . getRoot Directory (), Ġ" build " Ġ+ Ġ". prop "))) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġcontains Key ( key : ĠAny ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġproperties . containsKey ( key ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġcontains Value ( value : ĠAny ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġproperties . contains Value ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġentry Set (): ĠMutable Set < Mutable Map . Mutable Entry < Any , ĠAny >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġproperties . entries ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetProperty ( name : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġproperties . getProperty ( name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetProperty ( name : ĠString , ĠdefaultValue : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġproperties . getProperty ( name , ĠdefaultValue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġkeys (): ĠEnumeration < Any > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġproperties . keys () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġkey Set (): ĠSet < Any > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġproperties . keys ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġsize (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġproperties . size ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġvalues (): ĠCollection < Any > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġproperties . values ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠBuild Properties Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBuild Properties () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }