package Ġgod . b less . you . app Ċ Ċ import Ġandroid . app . Activity Manager Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . IB inder Ċ import Ġjava . lang . reflect . Method Ċ Ċ object ĠG bu Activity Manager Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġm Service Done Executing Method : ĠMethod ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Publish Service Method : ĠMethod ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclazz Ġ= ĠClass . forName (" android . app . I Activity Manager ") ĊĠĠĠĠĠĠĠ Ġm Service Done Executing Method Ġ= Ġclazz . getDeclared Method ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" service Done Executing ", ĠI Binder :: class . java , ĠInt :: class . java , ĠInt :: class . java , ĠInt :: class . java ) ĊĠĠĠĠĠĠĠ Ġm Service Done Executing Method ?. is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġm Publish Service Method Ġ= Ġclazz . getDeclared Method (" publish Service ", ĠI Binder :: class . java , ĠIntent :: class . java , ĠI Binder :: class . java ) ĊĠĠĠĠĠĠĠ Ġm Publish Service Method ?. is Accessible Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget (): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Ġ= ĠActivity Manager :: class . java . getDeclared Method (" get Services ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod . invoke ( null ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Ġ= ĠClass . forName (" android . app . Activity Manager Native "). getDeclared Method (" getDefault ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod . invoke ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpublish Service ( token : ĠI Binder , Ġintent : ĠIntent , Ġbinder : ĠI Binder ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Publish Service Method ?. invoke ( get (), Ġtoken , Ġintent , Ġbinder ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġservice Done Executing ( token : ĠI Binder , Ġtype : ĠInt , Ġstart Id : ĠInt , Ġres : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Service Done Executing Method ?. invoke ( get (), Ġtoken , Ġtype , Ġstart Id , Ġres ) ĊĠĠĠ Ġ} Ċ }