package Ġcom . tz x . watch . services . phone Call Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Remote Exception Ċ import Ġandroid . tele phony . Tele phony Manager Ċ import Ġcom . android . internal . tele phony . IT ele phony Ċ import Ġcom . tz x . watch . file k ts . Log Utils Ċ import Ġjava . lang . reflect . Method Ċ import Ġjava . util . concurrent . Executors ĊĊĊ Ċ /** Ċ Ġ* Ġauthor Ġ: ĠJ eff ĠĠ 5 8 9 9 8 5 9 8 7 6 @ qq . com Ċ Ġ* ĠC sd n Ġ: https :// blog . cs dn . net / J eff _ Y ao J ie Ċ Ġ* ĠGithub : Ġhttps :// github . com / J ay - Y ao J ie Ċ Ġ* ĠCreated Ġ: ĠĠ 2 0 1 9 - 0 4 - 0 3 . Ċ Ġ* Ġdescription Ġ ï¼ļ Ġ Ġ å°ģè£ħ æĮ Ĥ æĸŃ çĶµ è¯Ŀ æİ¥åı£ Ċ Ġ*/ Ċ object ĠH ang Up Tele phony Util Ġ{ ĊĠĠĠ Ġval Ġtag : ĠString Ġ= Ġ" Hang Up Tele phony Util " ĊĠĠĠ Ġfun Ġend Call ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcall Success Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġtele phony Service Ġ= Ġget Tele phony Service ( context ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tele phony Service Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Success Ġ= Ġtele phony Service !!. end Call () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠRemoteException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( call Success Ġ== Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe S Ġ= ĠExec utors . new Single Thread Executor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe S . execute ( Runnable Ġ{ Ġdisconnect Call () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall Success Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcall Success ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Tele phony Service ( context : ĠContext ): ĠI Tele phony ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtele phony Manager : ĠTele phony Manager Ġ= Ġcontext . getSystem Service ( Context . TELE PHONY _ SERVICE ) Ġas ĠTele phony Manager ĊĠĠĠĠĠĠĠ Ġvar Ġclazz : ĠAny ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġclazz Ġ= ĠClass . forName ( tele phony Manager . java Class . name ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod : ĠMethod Ġ= Ġclazz . java Class . getDeclared Method (" get IT ele phony ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod . setAccessible ( true ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmethod . invoke ( tele phony Manager ) Ġas ĠI Tele phony ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog Utils . d ( tag , Ġe . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ; ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdisconnect Call (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġruntime Ġ= ĠRuntime . get Runtime () ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġruntime . exec (" service Ġcall Ġphone Ġ 5 Ġ\ n ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exc : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexc . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ//// Ġä½¿çĶ¨ end Call æĮ Ĥ æĸŃ ä¸į äºĨ ï¼Į åĨį ä½¿çĶ¨ kill Call åıį å°Ħ è°ĥçĶ¨ åĨį æĮ Ĥ ä¸Ģæ¬¡ ĊĠĠĠ Ġfun Ġkill Call ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtele phony Manager : ĠTele phony Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getSystem Service ( Context . TELE PHONY _ SERVICE ) Ġas ĠTele phony Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġget IT ele phony () Ġmethod ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclass Tele phony : ĠAny Ġ= ĠClass . forName ( tele phony Manager . java Class . getName ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Get IT ele phony Ġ= Ġclass Tele phony . java Class . getDeclared Method (" get IT ele phony ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIgnore Ġthat Ġthe Ġmethod Ġis Ġsupposed Ġto Ġbe Ġprivate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Get IT ele phony . setAccessible ( true ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠInvoke Ġget IT ele phony () Ġto Ġget Ġthe ĠI Tele phony Ġinterface ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtele phony Interface Ġ= Ġmethod Get IT ele phony . invoke ( tele phony Manager ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġend Call Ġmethod Ġfrom ĠI Tele phony ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtele phony Interface Class Ġ= ĠClass . forName ( tele phony Interface . java Class . getName ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod End Call Ġ= Ġtele phony Interface Class . getDeclared Method (" end Call ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠInvoke Ġend Call () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod End Call . invoke ( tele phony Interface ); ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog Utils . d ( tag , e . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ }