package Ġmo e . sh iz uk u . manager . home Ċ Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Activity NotFoundException Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . fragment . app . Dialog Fragment Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġmo e . sh iz uk u . manager . R Ċ import Ġmo e . sh iz uk u . manager . adb . A db M dns Ċ import Ġmo e . sh iz uk u . manager . databinding . A db Dialog Binding Ċ import Ġmo e . sh iz uk u . manager . starter . Starter Activity Ċ import Ġjava . net . Inet Address Ċ Ċ @ Requires Api ( Build . VERSION _ CODES . R ) Ċ class ĠA db Dialog Fragment Ġ: ĠDialog Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠA db Dialog Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġa db M dns : ĠA db M dns ĊĠĠĠ Ġprivate Ġval Ġport Ġ= ĠMutable LiveData < Int >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Dialog ( savedInstanceState : ĠBundle ?): ĠDialog Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġrequire Context () ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠA db Dialog Binding . inflate ( LayoutInflater . from ( context )) ĊĠĠĠĠĠĠĠ Ġa db M dns Ġ= ĠA db M dns ( context , ĠA db M dns . TLS _ CONNECT , Ġport ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle ( R . string . dialog _ adb _ discovery ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset View ( binding . root ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Negative Button ( android . R . string . cancel , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Positive Button ( R . string . development _ settings , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= Ġbuilder . create () ĊĠĠĠĠĠĠĠ Ġdialog . set Canceled On Touch Outside ( false ) ĊĠĠĠĠĠĠĠ Ġdialog . setOn Show Listener Ġ{ Ġon Dialog Show ( dialog ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġdialog ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Dismiss ( dialog : ĠDialog Interface ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Dismiss ( dialog ) ĊĠĠĠĠĠĠĠ Ġa db M dns . stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Dialog Show ( dialog : ĠAlertDialog ) Ġ{ ĊĠĠĠĠĠĠĠ Ġa db M dns . start () ĊĊĠĠĠĠĠĠĠ Ġdialog . get Button ( AlertDialog . BUTTON _ POSITIVE ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Settings . ACTION _ APPLICATION _ DE VELO P MENT _ SETTINGS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK Ġor ĠIntent . FLAG _ ACTIVITY _ CLEAR _ TASK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . context . startActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠActivity NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġport . observe ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ> Ġ 6 5 5 3 5 Ġ|| Ġit Ġ< Ġ 1 ) Ġreturn @ observe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhost Ġ= ĠInet Address . get Loop back Address (). host Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠSt arter Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Starter Activity . EXTRA _ IS _ ROOT , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Starter Activity . EXTRA _ HOST , Ġhost ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Starter Activity . EXTRA _ PORT , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (). startActivity ( intent ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Allow ing State Loss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow ( fragment Manager : ĠFragment Manager ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( fragment Manager . is State Saved ) Ġreturn ĊĠĠĠĠĠĠĠ Ġshow ( fragment Manager , Ġjava Class . simple Name ) ĊĠĠĠ Ġ} Ċ }