Revert "Revert "Handle group insert, view, and edit intents (1/2)""
This reverts commit 6bf9394371218adfc81123c236b81cdb6b855639.
Bug 29902305
Change-Id: I0e6f23a3ac4be8d7a6785aece0cfe0db37287308
diff --git a/src/com/android/contacts/ContactsDrawerActivity.java b/src/com/android/contacts/ContactsDrawerActivity.java
index b62d5e6..a12d0e1 100644
--- a/src/com/android/contacts/ContactsDrawerActivity.java
+++ b/src/com/android/contacts/ContactsDrawerActivity.java
@@ -426,7 +426,7 @@
}
}
- private void onCreateGroupMenuItemClicked() {
+ protected void onCreateGroupMenuItemClicked() {
// Select the account to create the group
final Bundle extras = getIntent().getExtras();
final Account account = extras == null ? null :
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 8429d2a..756aeb4 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -281,12 +281,18 @@
return false;
}
- if (mRequest.getActionCode() == ContactsRequest.ACTION_VIEW_CONTACT) {
- final Intent intent = ImplicitIntentsUtil.composeQuickContactIntent(
- mRequest.getContactUri(), QuickContactActivity.MODE_FULLY_EXPANDED);
- intent.putExtra(QuickContactActivity.EXTRA_PREVIOUS_SCREEN_TYPE, ScreenType.UNKNOWN);
- ImplicitIntentsUtil.startActivityInApp(this, intent);
- return false;
+ switch (mRequest.getActionCode()) {
+ case ContactsRequest.ACTION_VIEW_CONTACT: {
+ final Intent intent = ImplicitIntentsUtil.composeQuickContactIntent(
+ mRequest.getContactUri(), QuickContactActivity.MODE_FULLY_EXPANDED);
+ intent.putExtra(QuickContactActivity.EXTRA_PREVIOUS_SCREEN_TYPE, ScreenType.UNKNOWN);
+ ImplicitIntentsUtil.startActivityInApp(this, intent);
+ return false;
+ }
+ case ContactsRequest.ACTION_INSERT_GROUP: {
+ onCreateGroupMenuItemClicked();
+ return true;
+ }
}
return true;
}
diff --git a/src/com/android/contacts/group/GroupUtil.java b/src/com/android/contacts/group/GroupUtil.java
index beba2ea..fd8c03d 100644
--- a/src/com/android/contacts/group/GroupUtil.java
+++ b/src/com/android/contacts/group/GroupUtil.java
@@ -49,9 +49,6 @@
@NeededForTesting
public final class GroupUtil {
- private static final String LEGACY_CONTACTS_AUTHORITY = "contacts";
- private static final String LEGACY_CONTACTS_URI = "content://contacts/groups";
-
// System IDs of FFC groups in Google accounts
private static final Set<String> FFC_GROUPS =
new HashSet(Arrays.asList("Friends", "Family", "Coworkers"));
@@ -134,7 +131,7 @@
public static Intent createPickMemberIntent(
GroupMetadata groupMetadata, ArrayList<String> memberContactIds) {
final Intent intent = new Intent(Intent.ACTION_PICK);
- intent.setType(Groups.CONTENT_ITEM_TYPE);
+ intent.setType(Groups.CONTENT_TYPE);
intent.putExtra(UiIntentActions.GROUP_ACCOUNT_NAME, groupMetadata.accountName);
intent.putExtra(UiIntentActions.GROUP_ACCOUNT_TYPE, groupMetadata.accountType);
intent.putExtra(UiIntentActions.GROUP_ACCOUNT_DATA_SET, groupMetadata.dataSet);
@@ -143,21 +140,6 @@
}
/**
- * Converts the given group Uri to the legacy format if the legacy authority was specified
- * in the given Uri.
- */
- // TODO(wjang):
- public static Uri maybeConvertToLegacyUri(Uri groupUri) {
- final String requestAuthority = groupUri.getAuthority();
- if (!LEGACY_CONTACTS_AUTHORITY.equals(requestAuthority)) {
- return groupUri;
- }
- final long groupId = ContentUris.parseId(groupUri);
- final Uri legacyContentUri = Uri.parse(LEGACY_CONTACTS_URI);
- return ContentUris.withAppendedId(legacyContentUri, groupId);
- }
-
- /**
* Returns true if it's an empty and read-only group of a Google account and the system ID of
* the group is one of "Friends", "Family" and "Coworkers".
*/
diff --git a/src/com/android/contacts/list/ContactsIntentResolver.java b/src/com/android/contacts/list/ContactsIntentResolver.java
index 39eaeba..800ed11 100644
--- a/src/com/android/contacts/list/ContactsIntentResolver.java
+++ b/src/com/android/contacts/list/ContactsIntentResolver.java
@@ -16,7 +16,6 @@
package com.android.contacts.list;
-import android.accounts.Account;
import android.app.Activity;
import android.app.SearchManager;
import android.content.Intent;
@@ -131,6 +130,9 @@
}
} else if (Intent.ACTION_INSERT_OR_EDIT.equals(action)) {
request.setActionCode(ContactsRequest.ACTION_INSERT_OR_EDIT_CONTACT);
+ } else if (Intent.ACTION_INSERT.equals(action) &&
+ Groups.CONTENT_TYPE.equals(intent.getType())) {
+ request.setActionCode(ContactsRequest.ACTION_INSERT_GROUP);
} else if (Intent.ACTION_SEARCH.equals(action)) {
String query = intent.getStringExtra(SearchManager.QUERY);
// If the {@link SearchManager.QUERY} is empty, then check if a phone number
diff --git a/src/com/android/contacts/list/ContactsRequest.java b/src/com/android/contacts/list/ContactsRequest.java
index 615fac6..e9b3a86 100644
--- a/src/com/android/contacts/list/ContactsRequest.java
+++ b/src/com/android/contacts/list/ContactsRequest.java
@@ -42,6 +42,9 @@
/** Show potential new members of a specific group */
public static final int ACTION_PICK_GROUP_MEMBERS = 21;
+ /** Create a new group */
+ public static final int ACTION_INSERT_GROUP = 22;
+
/** Show all starred contacts */
public static final int ACTION_STARRED = 30;