package Ġcom . coder z . creative . music Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ Ċ import Ġandroid . support . design . widget . Navigation View Ċ import Ġandroid . widget . Toast Ċ import Ġandroid . support . v 4 . app . Activity Compat Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 4 . app . FragmentManager Ċ import Ġandroid . support . v 4 . widget . Drawer Layout Ċ import Ġandroid . support . v 7 . app . ActionBar Drawer Toggle Ċ import Ġcom . coder z . creative . music . DB . Data Base Helper Ċ import Ġcom . coder z . creative . music . Fragment .* Ċ import Ġandroid . support . design . widget . Snackbar Ċ import Ġandroid . view .* ĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), Activity Compat . On Request Permissions Result Callback Ġ{ ĊĠĠĠ Ġvar Ġdrawer Ġ: ĠDraw er Layout ? Ġ= null ĊĠĠĠ Ġvar Ġnavigation View Ġ: ĠNavigation View ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġm Toggle : ĠAction Bar Drawer Toggle ? Ġ= Ġnull ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREQUEST _ PERMISSION Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDATABASE _ NAME Ġ= Ġ" co ffer . db " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDATABASE _ VERSION Ġ= 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġinflater : ĠMenu Inflater ? Ġ= Ġmenu Inflater ĊĠĠĠĠĠĠĠ Ġinflater ?. inflate ( R . menu . setting _ menu , menu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġthis . set Theme ( R . style . Grey ) ĊĊĠĠĠĠĠĠ Ġ// Ġvar Ġdb Ġ= ĠData Base Helper ( application Context , ĠDATABASE _ NAME , Ġnull , ĠDATABASE _ VERSION ) ĊĠĠĠĠĠĠĠ Ġ// db . get Readable Database (); ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . navigation _ drawer ) ĊĊĠĠĠĠĠĠĠ Ġdrawer Ġ= ĠfindViewById ( R . id . drawer _ layout ) ĊĠĠĠĠĠĠĠ Ġnavigation View Ġ= ĠfindViewById ( R . id . navigation ) ĊĊĠĠĠĠĠĠĠ Ġm Toggle Ġ= ĠAction Bar Drawer Toggle ( this , drawer , ĠR . string . open , R . string . close ) ĊĠĠĠĠĠĠĠ Ġdrawer ?. add Drawer Listener ( m Toggle !! ) ĊĠĠĠĠĠĠĠ Ġm Toggle ?. sync State () ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġ// Enable Run Time Permission () ĊĠĠĠĠĠĠĠ Ġsetup Drawer Content () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠEnable Run Time Permission (){ ĊĠĠĠĠĠĠĠ Ġif ( Activity Compat . check Self Permission ( this , Manifest . permission . READ _ CONTACT S )!= ĠPackage Manager . PERMISSION _ GRAN TED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Contacts Permissions () ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Contact Per view () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Contact Per view (){ ĊĠĠĠĠĠĠĠ Ġvar Ġfragment Manager : FragmentManager Ġ= Ġsupport FragmentManager ĊĠĠĠĠĠĠĠ Ġfragment Manager . beginTransaction (). replace ( R . id . content _ frame , ĠContact Fragment ()). commit () ĊĠĠĠĠĠĠĠ Ġnavigation View ?. setChecked Item ( R . id . nav _ home ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( m Toggle !!. on Options ItemSelected ( item )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġselect Item Drawer ( item Ġ: ĠMenuItem ) Ġ: ĠUnit Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġfragment : ĠFragment ? Ġ= null ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Ġ= ĠSummary Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ movies Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Ġ= ĠShow Expense Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ settings Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Ġ= ĠAdd Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ photos Ġ-> { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Ġ= ĠHome Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġfragment Manager : FragmentManager Ġ= Ġsupport FragmentManager ĊĠĠĠĠĠĠĠ Ġfragment Manager . beginTransaction (). replace ( R . id . content _ frame , fragment ). commit () ĊĠĠĠĠĠĠĠ ĠsetTitle ( item . title ) ĊĠĠĠĠĠĠĠ Ġitem . setChecked ( true ) ĊĠĠĠĠĠĠĠ Ġdrawer ?. close Draw ers () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup Drawer Content () Ġ: ĠUnit Ġ{ ĊĠĠĠĠĠĠĠ Ġnavigation View ?. set Navigation ItemSelected Listener ( object Ġ: ĠNavigation View . On Navigation ItemSelected Listener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Navigation ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect Item Drawer ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġ Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( drawer !!. is Drawer Open ( Gravity . START )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer ?. close Drawer ( Gravity . START ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrequest Contacts Permissions () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Activity Compat . should Show Request Permission R ationale ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ MainActivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . READ _ CONTACT S )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" CONTACT S Ġpermission Ġallows Ġus Ġto ĠAccess ĠCONT ACT S Ġapp Ġinside Ġrequest ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( findViewById ( R . id . navigation ), Ġ" Need ĠPermission Ġto Ġaccess Ġcontacts Ġ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . LENGTH _ IN DEFIN ITE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAction (" Ok ", Ġobject Ġ: ĠView . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġ Ġfun ĠonClick ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. request Permissions ( this @ MainActivity , Ġ ĠarrayOf ( Manifest . permission . READ _ CONTACT S ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠREQUEST _ PERMISSION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this @ MainActivity , ĠarrayOf ( Manifest . permission . READ _ CONTACT S ), ĠREQUEST _ PERMISSION ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( RC : ĠInt , Ġper : ĠArray < String >, ĠP Result : ĠInt Array ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( RC ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠREQUEST _ PERMISSION Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( P Result . size Ġ> Ġ 0 Ġ&& ĠP Result [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" Permission ĠGr anted , ĠNow Ġyour Ġapplication Ġcan Ġaccess ĠCONT ACT S .", ĠToast . LENGTH _ LONG ). show () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" Permission ĠC anceled , ĠNow Ġyour Ġapplication Ġcannot Ġaccess ĠCONT ACT S .", ĠToast . LENGTH _ LONG ). show () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ