package Ġcur t ains . internal Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . view . View Ċ import Ġandroid . view . Window Ċ import Ġkotlin . Lazy Thread Safety Mode . NONE Ċ Ċ /** Ċ Ġ* ĠUtilities Ġto Ġextract s Ġa Ġ[ Window ] Ġout Ġof Ġa Ġ[ View ] Ġif Ġthat Ġview Ġis Ġa Ġdecor Ġview . Ċ Ġ*/ Ċ @ Suppress Lint (" Private Api ") Ċ internal Ġobject ĠDecor View Spy Ġ{ ĊĊĠ Ġprivate Ġval Ġdecor View Class Ġby Ġlazy ( NONE ) Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ ĠClass . forName (" com . android . internal . policy . Decor View ") ĊĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠClass NotFoundException ) Ġ{ ĊĠĠĠĠĠ Ġ// ĠIn Ġsome Ġlater Ġrelease Ġof ĠAndroid Ġ 6 Ġ/ ĠAPI Ġ 2 3 ĠDecor View Ġwas Ġmoved Ġout Ġof ĠPhone Window . ĊĠĠĠĠĠ Ġ// Ġhttps :// cs . android . com / android /_ / android / platform / frameworks / base /+ ĊĠĠĠĠĠ Ġ// Ġ/ 8 8 0 4 af 2 b 6 3 b 0 5 8 4 0 3 4 f 7 ec 7 d 4 dc 7 0 1 d 0 6 e 6 a 8 7 5 4 ĊĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠClass . forName (" com . android . internal . policy . Phone Window \$ Decor View ") ĊĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠClass NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġm Window Field Ġby Ġlazy ( NONE ) Ġ{ ĊĠĠĠ Ġdecor View Class ?. let Ġ{ Ġdecor View Class Ġ-> ĊĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġdecor View Class . getDeclared Field (" m Window "). apply Ġ{ Ġis Accessible Ġ= Ġtrue Ġ} ĊĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠNoSuch Field Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIn ĠAndroid Ġ 6 Ġ/ ĠAPI Ġ 2 3 ĠPhone Window . Decor View Ġbecame Ġan Ġinner Ġstatic Ġclass . ĠBefore , Ġit Ġhad ĊĠĠĠĠĠĠĠ Ġ// Ġa Ġdirect Ġreference Ġto Ġits Ġouter ĠPhone Window Ġclass . ĊĠĠĠĠĠĠĠ Ġ// Ġhttps :// cs . android . com / android /_ / android / platform / frameworks / base /+ ĊĠĠĠĠĠĠĠ Ġ// Ġ/ 0 daf 2 1 0 2 a 2 0 d 2 2 4 e deb 4 ee 4 5 dd 4 ee 9 1 8 8 9 ef 3 e 0 c ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġdecor View Class . getDeclared Field (" this $ 0 "). apply Ġ{ Ġis Accessible Ġ= Ġtrue Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠNoSuch Field Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġpull Decor View Window ( maybe Decor View : ĠView ): ĠWindow ? Ġ{ ĊĠĠĠ Ġreturn Ġdecor View Class ?. let Ġ{ Ġdecor View Class Ġ-> ĊĠĠĠĠĠ Ġif Ġ( decor View Class . is Instance ( maybe Decor View )) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Window Field ?. let Ġ{ Ġm Window Field Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġm Window Field [ maybe Decor View ] Ġas ĠWindow ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }