/* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠMichael ĠCome lla Ċ Ġ* Ċ Ġ* ĠThis Ġfile Ġis Ġpart Ġof ĠNon Contact Call Block er . Ċ Ġ* Ċ Ġ* Ġ ĠNon Contact Call Block er Ġis Ġfree Ġsoftware : Ġyou Ġcan Ġredistribute Ġit Ċ Ġ* Ġ Ġand / or Ġmodify Ġit Ġunder Ġthe Ġterms Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ċ Ġ* Ġ Ġas Ġpublished Ġby Ġthe ĠFree ĠSoftware ĠFoundation , Ġeither Ġversion Ġ 3 Ġof Ċ Ġ* Ġ Ġthe ĠLicense , Ġor Ġ( at Ġyour Ġoption ) Ġany Ġlater Ġversion . Ċ Ġ* Ċ Ġ* Ġ ĠNon Contact Call Block er Ġis Ġdistributed Ġin Ġthe Ġhope Ġthat Ġit Ġwill Ġbe Ċ Ġ* Ġ Ġuseful , Ġbut ĠWITHOUT ĠANY ĠWARRANTY ; Ġwithout Ġeven Ġthe Ġimplied Ċ Ġ* Ġ Ġwarranty Ġof ĠMERCHANTABILITY Ġor ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE . Ċ Ġ* Ġ ĠSee Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ġfor Ġmore Ġdetails . Ċ Ġ* Ċ Ġ* Ġ ĠYou Ġshould Ġhave Ġreceived Ġa Ġcopy Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ċ Ġ* Ġ Ġalong Ġwith ĠNon Contact Call Block er . Ġ ĠIf Ġnot , Ġsee Ċ Ġ* Ġ Ġ< https :// www . gnu . org / licenses />. Ġ*/ Ċ Ċ package Ġxyz . m come lla . non contact call block er Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġandroidx . fragment . app . Fragment Pager Adapter Ċ import Ġcom . google . android . material . tabs . Tab Layout Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġkotlinx . coroutines . experimental . Cancellation Exception Ċ import Ġkotlinx . coroutines . experimental . Job Ċ import Ġxyz . m come lla . non contact call block er . config . Configuration Fragment Ċ import Ġxyz . m come lla . non contact call block er . ext . service Locator Ċ import Ġxyz . m come lla . non contact call block er . rights . Software Rights Activity Ċ import Ġxyz . m come lla . non contact call block er . ui . block list . Call Block List Fragment Ċ Ċ const Ġval ĠLOG TAG Ġ= Ġ" Non Contact Call Block er " Ġ// Ġmax Ġlen Ġ 2 3 . Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġui Lifecycle Cancel Job Ġ= ĠJob () ĊĊĠĠĠ Ġprivate Ġvar Ġpermissions RequestContext : ĠPermissions . Permissions Context ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĊĠĠĠĠĠĠĠ Ġinit Tabs View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Tabs View () Ġ{ ĊĠĠĠĠĠĠĠ Ġpager Container . adapter Ġ= ĠMain Pager Adapter ( support FragmentManager ) ĊĠĠĠĠĠĠĠ Ġpager Container . add On Page ChangeListener ( Tab Layout . Tab Layout On Page ChangeListener ( tabs )) ĊĠĠĠĠĠĠĠ Ġtabs . add On Tab Selected Listener ( Tab Layout . ViewPager On Tab Selected Listener ( pager Container )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġmaybe Request Permissions () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġui Lifecycle Cancel Job . cancel ( Cancellation Exception (" Activity Ġlifecycle Ġhas Ġended ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmaybe Request Permissions () Ġ{ ĊĠĠĠĠĠĠĠ Ġpermissions RequestContext Ġ= ĠPermissions . maybe Prompt For Required ( permissions RequestContext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Ġui Lifecycle Cancel Job , Ġ:: on Permissions Granted ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Permissions Granted () Ġ{ ĊĠĠĠĠĠĠĠ Ġpermissions RequestContext Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġservice Locator . config ĊĠĠĠĠĠĠĠ Ġif Ġ(! config . is Initial Permissions Request Complete ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . is Initial Permissions Request Complete Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . is Blocking Enabled Ġ= Ġtrue Ġ// ĠWill Ġanimate Ġto Ġvisualize Ġto Ġusers Ġthat Ġblocking Ġis Ġnow Ġenabled . ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < out ĠString >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠĠĠĠĠ ĠPermissions . on Request Permissions Result ( permissions RequestContext , Ġrequest Code , Ġpermissions , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrant Results ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ ĠPermissions . on Activity Result ( permissions RequestContext , Ġrequest Code , ĠresultCode ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ main , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ rights Ġ-> ĠstartActivity ( Intent ( this , ĠSoftware Rights Activity :: class . java )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠMain Pager Adapter ( fm : ĠFragment Manager ) Ġ: ĠFragment Pager Adapter ( fm ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠgetItem ( position : ĠInt ) Ġ= Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠ 0 Ġ-> ĠConfiguration Fragment . newInstance () ĊĠĠĠĠĠĠĠĠ 1 Ġ-> ĠCall Block List Fragment . newInstance () ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Unexpected Ġindex Ġ$ position ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Count () Ġ= Ġ 2 Ċ } Ċ