New contacts created using ContactsContract do not appear in Contacts app

后端 未结 4 1259
感动是毒
感动是毒 2020-12-03 09:33

I\'m using the following piece of codes to create a new contact. It follow closely the ContactManager example provided by Android. The problem is, the created contacts do n

相关标签:
4条回答
  • 2020-12-03 09:54

    The sample codes provided by Google work. Just that when it's run on the emulator, no account or group can be found to attach the created contact to. And by default, this newly created contact is not visible.

    Using the actual phone (for my case, HTC Dream), after detecting the account name and type to feed in the codes, it works. Alternatively, we can get the visible group ids available and attach the new contact to one of those groups.

    To get the available accounts:

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

    To get the list of groups:

    //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);
    

    Now, if we want to associate the new contact to a group instead of an account:

    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());
    

    Hope it helps.

    0 讨论(0)
  • 2020-12-03 09:59

    Did you try to set the visibility of your group to true?

    In Contacts Tab press the menu button, than "Display options" > your Account and than check the boxes and "Done".

    0 讨论(0)
  • 2020-12-03 10:11

    HTC Sense and MOTOBLUR can be problematic with contacts. I don't know if any of the information here (http://stackoverflow.com/questions/4431101/created-contacts-not-showing-up-on-htc-evo) is useful.

    0 讨论(0)
  • 2020-12-03 10:12

    To add an account in emulator that has no groups or accounts, just put "null" as your account or group id, replace the line of code like this

    ops.add(ContentProviderOperation
        .newInsert(ContactsContract.RawContacts.CONTENT_URI)
        .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)  
        .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
        .build());
    
    0 讨论(0)
提交回复
热议问题