package Ġcom . alter ok . policy dialog Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . alter ok . policy dialog . databinding . Fragment Policy Dialog Demo Binding Ċ import Ġcom . alter ok . policy dialog lib . Dialog Option Ċ import Ġcom . alter ok . policy dialog lib . Policy Dialog Ċ Ċ /** Ċ Ġ* ĠA Ġsimple Ġ[ Fragment ] Ġsubclass Ġas Ġthe Ġdefault Ġdestination Ġin Ġthe Ġnavigation . Ċ Ġ*/ Ċ private Ġconst Ġval ĠTAG Ġ= Ġ" Policy Dialog Demo Frag " Ċ Ċ class ĠPolicy Dialog Demo Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Policy Dialog Demo Binding ? Ġ= Ġnull ĊĊĠĠĠ Ġ// ĠThis Ġproperty Ġis Ġonly Ġvalid Ġbetween ĠonCreate View Ġand ĊĠĠĠ Ġ// Ġon Destroy View . ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpolicy Dialog Builder : ĠPolicy Dialog . Builder ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpolicy Dialog : ĠPolicy Dialog ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Policy Dialog Demo Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġpolicy Dialog Builder Ġ= ĠPolicy Dialog . Builder ( require Activity () Ġas ĠAppCompatActivity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Dialog ĠBackground ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠColor . WHITE ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Dialog ĠTitle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Title TextColor Ġ= ĠColor . BLACK ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Button ĠStyle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Outline ButtonStyle Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Cancel ĠButton ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcancel TextColor Ġ= ĠColor . DK GRAY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcancel ButtonText Ġ= ĠgetString ( android . R . string . cancel ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Accept ĠButton ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccept TextColor Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccept Button Color Ġ= ĠColor . BLACK ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Terms Ġand ĠPol ices ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpolicy Line TextColor Ġ= ĠColor . DK GRAY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġterms Sub TextColor Ġ= ĠColor . DK GRAY ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// URL Ġhighlight ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlink TextColor Ġ= ĠColor . BLUE ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// option Ġstyle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoption TextColor Ġ= ĠColor . DK GRAY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoption Check Mark Color Ġ= ĠColor . DK GRAY ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// EU ĠG DPR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow In EU Only Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Policy Line (" This Ġapplication Ġuses Ġa Ġunique Ġuser Ġidentifier Ġfor Ġadvertising Ġpurposes , Ġit Ġis Ġshared Ġwith Ġthird - party Ġcompanies .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Policy Line (" This Ġapplication Ġsends Ġerror Ġreports , Ġinstallation Ġand Ġsend Ġit Ġto Ġa Ġserver Ġof Ġthe ĠFabric . io Ġcompany Ġto Ġanalyze Ġand Ġprocess Ġit .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Policy Line (" This Ġapplication Ġrequires Ġinternet Ġaccess Ġand Ġmust Ġcollect Ġthe Ġfollowing Ġinformation : ĠInstalled Ġapplications Ġand Ġhistory Ġof Ġinstalled Ġapplications , Ġip Ġaddress , Ġunique Ġinstallation Ġid , Ġtoken Ġto Ġsend Ġnotifications , Ġversion Ġof Ġthe Ġapplication , Ġtime Ġzone Ġand Ġinformation Ġabout Ġthe Ġlanguage Ġof Ġthe Ġdevice .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Policy Line (" All Ġdetails Ġabout Ġthe Ġuse Ġof Ġdata Ġare Ġavailable Ġin Ġour ĠPrivacy ĠP olicies , Ġas Ġwell Ġas Ġall ĠTerms Ġof ĠService Ġlinks Ġbelow .") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShow Ġadditional Ġcheck able Ġoption Ġto Ġask Ġpermission ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDialog Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Allow Ġapp Ġto Ġcollect Ġanalytics Ġto Ġimprove Ġthe Ġapp . Ġ( Option Ġfor ĠEU ĠOnly )", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor EU Only Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDialog Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Allow Ġapp Ġto Ġcollect Ġanalytics Ġto Ġimprove Ġthe Ġapp .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor EU Only Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġpolicy Dialog Ġ= Ġcreate New Dialog From Builder ( policy Dialog Builder ) ĊĠĠĠĠĠĠĠ Ġpolicy Dialog . show () ĊĊĠĠĠĠĠĠĠ Ġbinding . button First . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( policy Dialog . has Accepted ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpolicy Dialog . reset () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( policy Dialog . is Destroyed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpolicy Dialog Ġ= Ġcreate New Dialog From Builder ( policy Dialog Builder ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpolicy Dialog . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Policy Status Text () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset Policy Status Text () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate New Dialog From Builder ( policy Dialog Builder : ĠPolicy Dialog . Builder ): ĠPolicy Dialog Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpolicy Dialog Builder . create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Policy Dialog Listener ( object Ġ: ĠPolicy Dialog . On Dialog Button Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Accept ( from User : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , Ġ" on Accept () Ġcalled Ġwith : Ġfrom User Ġ= Ġ$ from User " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Policy Status Text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancel () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Cancel () Ġcalled ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Policy Status Text () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Exit Ġapp Ġif Ġdecl ined Ġto Ġaccept Ġthe Ġterms Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. finish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Option Clicked ( option Index : ĠInt , Ġis Checked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" on Option Clicked : Ġoption Index =$ option Index Ġis Checked =$ isChecked ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Policy Status Text () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . text view First . text Ġ= Ġif Ġ( policy Dialog . has Accepted ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . button First . text Ġ= ĠgetString ( R . string . reset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Terms ĠAccept ed " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . button First . text Ġ= ĠgetString ( R . string . ask _ again ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Terms Ġnot Ġaccepted Ġyet ." ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġpolicy Dialog . destroy () ĊĠĠĠ Ġ} Ċ }