Guest User

Untitled

a guest
Feb 15th, 2019
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.62 KB | None | 0 0
  1. /**
  2. * Account type id
  3. */
  4. public static final String ACCOUNT_TYPE = "com.test.app";
  5.  
  6. /**
  7. * Account name
  8. */
  9. public static final String ACCOUNT_NAME = "Test";
  10.  
  11. public static void addContact(Context context, User contact) {
  12. ContentResolver resolver = context.getContentResolver();
  13. resolver.delete(RawContacts.CONTENT_URI, RawContacts.ACCOUNT_TYPE
  14. + " = ?", new String[] { AccountConstants.ACCOUNT_TYPE });
  15.  
  16. ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
  17.  
  18. ops.add(ContentProviderOperation
  19. .newInsert(
  20. addCallerIsSyncAdapterParameter(
  21. RawContacts.CONTENT_URI, true))
  22. .withValue(RawContacts.ACCOUNT_NAME,
  23. AccountConstants.ACCOUNT_NAME)
  24. .withValue(RawContacts.ACCOUNT_TYPE,
  25. AccountConstants.ACCOUNT_TYPE)
  26. // .withValue(RawContacts.SOURCE_ID, 12345)
  27. // .withValue(RawContacts.AGGREGATION_MODE,
  28. // RawContacts.AGGREGATION_MODE_DISABLED)
  29. .build());
  30.  
  31. ops.add(ContentProviderOperation
  32. .newInsert(
  33. addCallerIsSyncAdapterParameter(Settings.CONTENT_URI,
  34. true))
  35. .withValue(RawContacts.ACCOUNT_NAME,
  36. AccountConstants.ACCOUNT_NAME)
  37. .withValue(RawContacts.ACCOUNT_TYPE,
  38. AccountConstants.ACCOUNT_TYPE)
  39. .withValue(Settings.UNGROUPED_VISIBLE, 1).build());
  40.  
  41. ops.add(ContentProviderOperation
  42. .newInsert(
  43. addCallerIsSyncAdapterParameter(Data.CONTENT_URI, true))
  44. .withValueBackReference(Data.RAW_CONTACT_ID, 0)
  45. .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE)
  46. .withValue(StructuredName.GIVEN_NAME, contact.getFullname())
  47. .withValue(StructuredName.FAMILY_NAME, contact.getFullname())
  48. .build());
  49.  
  50. ops.add(ContentProviderOperation
  51. .newInsert(
  52. addCallerIsSyncAdapterParameter(Data.CONTENT_URI, true))
  53. .withValueBackReference(Data.RAW_CONTACT_ID, 0)
  54. .withValue(
  55. ContactsContract.Data.MIMETYPE,
  56. ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
  57. .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER,
  58. contact.getPhoneNumber()).build());
  59.  
  60. ops.add(ContentProviderOperation
  61. .newInsert(
  62. addCallerIsSyncAdapterParameter(Data.CONTENT_URI, true))
  63. .withValueBackReference(Data.RAW_CONTACT_ID, 0)
  64. .withValue(
  65. ContactsContract.Data.MIMETYPE,
  66. ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
  67. .withValue(ContactsContract.CommonDataKinds.Email.DATA,
  68. contact.getEmail()).build());
  69.  
  70. ops.add(ContentProviderOperation
  71. .newInsert(
  72. addCallerIsSyncAdapterParameter(Data.CONTENT_URI, true))
  73. .withValueBackReference(Data.RAW_CONTACT_ID, 0)
  74. .withValue(Data.MIMETYPE, MIMETYPE)
  75. .withValue(Data.DATA1, contact.getFullname())
  76. .withValue(Data.DATA2, contact.getEmail())
  77. .withValue(Data.DATA3, contact.getHomeAddress()).build());
  78. try {
  79. ContentProviderResult[] results = resolver.applyBatch(
  80. ContactsContract.AUTHORITY, ops);
  81. if (results.length == 0)
  82. AppLog.d(TAG, "Failed to add.");
  83. } catch (Exception e) {
  84. AppLog.e(TAG, e.getMessage(), e);
  85. }
  86. }
  87.  
  88. <ContactsSource xmlns:android="http://schemas.android.com/apk/res/android" >
  89.  
  90. <ContactsDataKind
  91. android:detailColumn="data2"
  92. android:detailSocialSummary="true"
  93. android:icon="@drawable/ic_launcher"
  94. android:mimeType="vnd.android.cursor.item/com.test.app"
  95. android:summaryColumn="data3" />
  96.  
  97. </ContactsSource>
  98.  
  99. // as displayName pass the retrieved ContactsContract.Contacts.DISPLAY_NAME
  100.  
  101. @Override
  102. public void addContact(@Nonnull final String displayName, @Nonnull final String phone) {
  103.  
  104. final ContentResolver resolver = context.getContentResolver();
  105.  
  106. final ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
  107.  
  108. ops.add(ContentProviderOperation
  109. .newInsert(addCallerIsSyncAdapterParameter(ContactsContract.RawContacts.CONTENT_URI, true))
  110. .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, ACCOUNT_NAME)
  111. .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, ACCOUNT_TYPE)
  112. .withValue(ContactsContract.RawContacts.AGGREGATION_MODE,
  113. ContactsContract.RawContacts.AGGREGATION_MODE_DEFAULT)
  114. .build());
  115.  
  116. ops.add(ContentProviderOperation
  117. .newInsert(addCallerIsSyncAdapterParameter(ContactsContract.Data.CONTENT_URI, true))
  118. .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
  119. .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
  120. .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phone)
  121. .build());
  122.  
  123. ops.add(ContentProviderOperation
  124. .newInsert(addCallerIsSyncAdapterParameter(ContactsContract.Data.CONTENT_URI, true))
  125. .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
  126. .withValue(ContactsContract.Data.MIMETYPE,
  127. ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
  128. .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, displayName)
  129. .build());
  130.  
  131. ops.add(ContentProviderOperation
  132. .newInsert(addCallerIsSyncAdapterParameter(ContactsContract.Data.CONTENT_URI, true))
  133. .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
  134. .withValue(ContactsContract.Data.MIMETYPE, YOUR_MIMETYPE)
  135. .withValue(ContactsContract.Data.DATA1, 12345)
  136. .withValue(ContactsContract.Data.DATA2, "user")
  137. .withValue(ContactsContract.Data.DATA3, "action")
  138. .build());
  139.  
  140. try {
  141. resolver.applyBatch(ContactsContract.AUTHORITY, ops);
  142. } catch (Exception e) {
  143. e.printStackTrace();
  144. }
  145.  
  146. }
Add Comment
Please, Sign In to add comment