summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/values/strings.xml3
-rw-r--r--src/com/android/contacts/common/interactions/ImportExportDialogFragment.java59
2 files changed, 36 insertions, 26 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml
index de7a44d1..5400eec9 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -682,6 +682,9 @@ a ren't members of any other group. [CHAR LIMIT=25] -->
<!-- Action that shares visible contacts -->
<string name="share_visible_contacts">Share visible contacts</string>
+ <!-- A framework exception (ie, transaction too large) can be thrown while attempting to share all visible contacts. If so, show this toast. -->
+ <string name="share_visible_contacts_failure">Failed to share visible contacts.</string>
+
<!-- Dialog title when selecting the bulk operation to perform from a list. [CHAR LIMIT=36] -->
<string name="dialog_import_export">Import/export contacts</string>
diff --git a/src/com/android/contacts/common/interactions/ImportExportDialogFragment.java b/src/com/android/contacts/common/interactions/ImportExportDialogFragment.java
index e0daf037..791ad2d2 100644
--- a/src/com/android/contacts/common/interactions/ImportExportDialogFragment.java
+++ b/src/com/android/contacts/common/interactions/ImportExportDialogFragment.java
@@ -195,35 +195,42 @@ public class ImportExportDialogFragment extends DialogFragment
}
private void doShareVisibleContacts() {
- // TODO move the query into a loader and do this in a background thread
- final Cursor cursor = getActivity().getContentResolver().query(Contacts.CONTENT_URI,
- LOOKUP_PROJECTION, Contacts.IN_VISIBLE_GROUP + "!=0", null, null);
- if (cursor != null) {
- try {
- if (!cursor.moveToFirst()) {
- Toast.makeText(getActivity(), R.string.share_error, Toast.LENGTH_SHORT).show();
- return;
- }
+ try {
+ // TODO move the query into a loader and do this in a background thread
+ final Cursor cursor = getActivity().getContentResolver().query(Contacts.CONTENT_URI,
+ LOOKUP_PROJECTION, Contacts.IN_VISIBLE_GROUP + "!=0", null, null);
+ if (cursor != null) {
+ try {
+ if (!cursor.moveToFirst()) {
+ Toast.makeText(getActivity(), R.string.share_error, Toast.LENGTH_SHORT)
+ .show();
+ return;
+ }
- StringBuilder uriListBuilder = new StringBuilder();
- int index = 0;
- do {
- if (index != 0)
- uriListBuilder.append(':');
- uriListBuilder.append(cursor.getString(0));
- index++;
- } while (cursor.moveToNext());
- Uri uri = Uri.withAppendedPath(
- Contacts.CONTENT_MULTI_VCARD_URI,
- Uri.encode(uriListBuilder.toString()));
+ StringBuilder uriListBuilder = new StringBuilder();
+ int index = 0;
+ do {
+ if (index != 0)
+ uriListBuilder.append(':');
+ uriListBuilder.append(cursor.getString(0));
+ index++;
+ } while (cursor.moveToNext());
+ Uri uri = Uri.withAppendedPath(
+ Contacts.CONTENT_MULTI_VCARD_URI,
+ Uri.encode(uriListBuilder.toString()));
- final Intent intent = new Intent(Intent.ACTION_SEND);
- intent.setType(Contacts.CONTENT_VCARD_TYPE);
- intent.putExtra(Intent.EXTRA_STREAM, uri);
- ImplicitIntentsUtil.startActivityOutsideApp(getActivity(), intent);
- } finally {
- cursor.close();
+ final Intent intent = new Intent(Intent.ACTION_SEND);
+ intent.setType(Contacts.CONTENT_VCARD_TYPE);
+ intent.putExtra(Intent.EXTRA_STREAM, uri);
+ ImplicitIntentsUtil.startActivityOutsideApp(getActivity(), intent);
+ } finally {
+ cursor.close();
+ }
}
+ } catch (Exception e) {
+ Log.e(TAG, "Sharing visible contacts failed", e);
+ Toast.makeText(getContext(), R.string.share_visible_contacts_failure,
+ Toast.LENGTH_SHORT).show();
}
}