New contacts created using ContactsContract are not displayed in the Contacts application

I use the following code to create a new contact. He closely follows the ContactManager example provided by Android. The problem is that the created contacts do not appear in the Contacts application that comes with Android. However, when I download all the contacts from the phone book, I see the newly created contacts.

private void insertPBEntry () throws RemoteException, OperationApplicationException {

     ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();

     ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
             .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, "Account type")
             .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, "Account name")
             .build());

     ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
             .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
             .withValue(ContactsContract.Data.MIMETYPE,
                     ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
             .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, "TOTAL_NEW")
             .build());
     ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
             .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
             .withValue(ContactsContract.Data.MIMETYPE,
                     ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
             .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, "9090")
             .withValue(ContactsContract.CommonDataKinds.Phone.TYPE,Phone.TYPE_MOBILE)
             .build());     
     getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

}

, . , , (sth) " " " ". - . , , , , .

, !

+2
4

, Google, . , , . .

( , HTC Dream), , . , .

:

//accounts
    Account[] accounts = AccountManager.get(act).getAccounts(); 
    for (Account acc : accounts){
        Log.d(TAG, "account name = " + acc.name + ", type = " + acc.type);
    }

:

//group membership info
    String[] tempFields = new String[] {
            GroupMembership.GROUP_ROW_ID, GroupMembership.GROUP_SOURCE_ID};
    Cursor tempCur = act.managedQuery(Data.CONTENT_URI, tempFields,
             Data.MIMETYPE + "='" + GroupMembership.CONTENT_ITEM_TYPE + "'",
             null, null);

, , :

ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
            .withValueBackReference(Data.RAW_CONTACT_ID, 0)
            .withValue(ContactsContract.Data.MIMETYPE, GroupMembership.CONTENT_ITEM_TYPE)
            .withValue(GroupMembership.GROUP_SOURCE_ID, *<THE_IDENTIFIED_GROUP_ID>*)
            .build());

, .

+7

, , "null" ,

ops.add(ContentProviderOperation
    .newInsert(ContactsContract.RawContacts.CONTENT_URI)
    .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)  
    .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
    .build());
+5

true?

"" , " " > , "".

0

HTC Sense MOTOBLUR . , - (http://stackoverflow.com/questions/4431101/created-contacts-not-showing-up-on-htc-evo).

0

Source: https://habr.com/ru/post/1774811/


All Articles