/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠGoogle ĠLLC Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . vm ad al in . eas yper missions . dialogs Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . provider . Settings Ċ import Ġandroidx . annotation . String Res Ċ import Ġandroidx . annotation . Style Res Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . vm ad al in . eas yper missions . R Ċ Ċ const Ġval ĠDEFAULT _ SETTINGS _ REQ _ CODE Ġ= Ġ 1 6 0 6 1 Ċ Ċ /** Ċ Ġ* ĠDialog Ġto Ġprompt Ġthe Ġuser Ġto Ġgo Ġto Ġthe Ġapp 's Ġsettings Ġscreen Ġand Ġenable Ġpermissions . ĠIf Ġthe Ġuser Ċ Ġ* Ġclicks Ġ' OK ' Ġon Ġthe Ġdialog , Ġthey Ġare Ġsent Ġto Ġthe Ġsettings Ġscreen . ĠThe Ġresult Ġis Ġreturned Ġto Ġthe Ċ Ġ* ĠActivity Ġvia Ġ[ Activity . on Activity Result ]. Ċ Ġ*/ Ċ class ĠSettings Dialog ( ĊĠĠĠ Ġprivate Ġval Ġcontext : ĠContext , ĊĠĠĠ Ġ@ Style Res ĊĠĠĠ Ġprivate Ġvar Ġtheme : ĠInt , ĊĠĠĠ Ġprivate Ġvar Ġrequest Code : ĠInt , ĊĠĠĠ Ġprivate Ġvar Ġopen On New Task : ĠBoolean , ĊĠĠĠ Ġprivate Ġvar Ġtitle : ĠString ?, ĊĠĠĠ Ġprivate Ġvar Ġr ationale : ĠString ?, ĊĠĠĠ Ġprivate Ġvar Ġpositive ButtonText : ĠString ?, ĊĠĠĠ Ġprivate Ġvar Ġnegative ButtonText : ĠString ? Ċ ) Ġ: ĠDialog Interface . OnClickListener Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġdialog : ĠAlertDialog ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDisplay Ġthe Ġdialog . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġshow () Ġ{ ĊĠĠĠĠĠĠĠ Ġdialog Ġ= ĠAlertDialog . Builder ( context , Ġtheme ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cancel able ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( ration ale ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( positive ButtonText , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( negative ButtonText , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( dialog Interface : ĠDialog Interface ?, Ġbutton Type : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( button Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDialog . BUTTON _ POSITIVE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Settings . ACTION _ APPLICATION _ DETAILS _ SETTINGS ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠUri . from Parts (" package ", Ġcontext . packageName , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġ= Ġif Ġ( open On New Task ) ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠActivity Ġ-> Ġcontext . startActivity For Result ( intent , Ġrequest Code ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFragment Ġ-> Ġcontext . startActivity For Result ( intent , Ġrequest Code ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDialog . BUTTON _ NEGATIVE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠActivity Ġ-> Ġcontext . set Result ( Activity . RESULT _ C ANCE LED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFragment Ġ-> Ġcontext . activity ?. set Result ( Activity . RESULT _ C ANCE LED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog ?. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuilder Ġfor Ġan Ġ[ Settings Dialog ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" UNUSED ") ĊĠĠĠ Ġclass ĠBuilder ( private Ġvar Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Style Res ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġtheme Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġrequest Code Ġ= ĠDEFAULT _ SETTINGS _ REQ _ CODE ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġopen On New Task Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġtitle Ġ= Ġcontext . getString ( R . string . title _ settings _ dialog ) ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġr ationale Ġ= Ġcontext . getString ( R . string . ration ale _ ask _ again ) ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġpositive ButtonText Ġ= Ġcontext . getString ( android . R . string . ok ) ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġnegative ButtonText Ġ= Ġcontext . getString ( android . R . string . cancel ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġtheme (@ Style Res Ġtheme : ĠInt ) Ġ= Ġapply Ġ{ Ġthis . theme Ġ= Ġtheme Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġrequest Code ( request Code : ĠInt ) Ġ= Ġapply Ġ{ Ġthis . request Code Ġ= Ġrequest Code Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġopen On New Task ( open On New Task : ĠBoolean ) Ġ= Ġapply Ġ{ Ġthis . open On New Task Ġ= Ġopen On New Task Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġtitle ( title : ĠString ) Ġ= Ġapply Ġ{ Ġthis . title Ġ= Ġtitle Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġtitle (@ String Res Ġres Id : ĠInt ) Ġ= Ġapply Ġ{ Ġthis . title Ġ= Ġcontext . getString ( res Id ) Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġr ationale ( ration ale : ĠString ) Ġ= Ġapply Ġ{ Ġthis . ration ale Ġ= Ġr ationale Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġr ationale (@ String Res Ġres Id : ĠInt ) Ġ= Ġapply Ġ{ Ġthis . ration ale Ġ= Ġcontext . getString ( res Id ) Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġpositive ButtonText ( positive ButtonText : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ġ{ Ġthis . positive ButtonText Ġ= Ġpositive ButtonText Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġpositive ButtonText (@ String Res Ġres Id : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ġ{ Ġthis . positive ButtonText Ġ= Ġcontext . getString ( res Id ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġnegative ButtonText ( negative ButtonText : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ġ{ Ġthis . negative ButtonText Ġ= Ġnegative ButtonText Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġnegative ButtonText (@ String Res Ġres Id : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ġ{ Ġthis . negative ButtonText Ġ= Ġcontext . getString ( res Id ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbuild (): ĠSettings Dialog Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSettings Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Code Ġ= Ġrequest Code , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen On New Task Ġ= Ġopen On New Task , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtheme Ġ= Ġtheme , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġtitle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr ationale Ġ= Ġr ationale , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive ButtonText Ġ= Ġpositive ButtonText , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnegative ButtonText Ġ= Ġnegative ButtonText ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ