Reload groups and filters when provider status changes

And avoid showing "Create new..." when no group-writable accounts
are available.

Bug 29450322
Bug 28842403

Change-Id: Iac024b1a23e317930b6ac6ceaa175e50a2dd7d84
diff --git a/src/com/android/contacts/ContactsDrawerActivity.java b/src/com/android/contacts/ContactsDrawerActivity.java
index 62a9258..888db49 100644
--- a/src/com/android/contacts/ContactsDrawerActivity.java
+++ b/src/com/android/contacts/ContactsDrawerActivity.java
@@ -125,7 +125,11 @@
             menu.removeItem(R.id.nav_help);
         }
 
-        // Set up fragment manager to load groups and filters.
+        loadGroupsAndFilters();
+    }
+
+    // Set up fragment manager to load groups and filters.
+    protected void loadGroupsAndFilters() {
         final FragmentManager fragmentManager = getFragmentManager();
         final FragmentTransaction transaction = fragmentManager.beginTransaction();
         addGroupsAndFiltersFragments(transaction);
@@ -191,6 +195,11 @@
             }
         }
 
+        // Don't show "Create new..." menu if there's no group-writable accounts available.
+        if (!ContactsUtils.areGroupWritableAccountsAvailable(this)) {
+            return;
+        }
+
         // Create a menu item in the sub menu to add new groups
         final MenuItem menuItem = subMenu.add(R.id.nav_groups_items, Menu.NONE, Menu.NONE,
                 getString(R.string.menu_new_group_action_bar));