0

Je voudrais ajouter une sonnerie personnalisée dans un rawcontact (avant de créer le contact).Insérer une sonnerie personnalisée dans un rawcontact (nouveau contact)

J'ai utilisé ce code avec succès pour ajouter une sonnerie personnalisée dans un contact (déjà créé):

String select = ContactsContract.Contacts._ID + "=?"; 
String[] args = new String[]{getAndroidId()}; 

changesToCommit.add(ContentProviderOperation.newUpdate(ContactsContract.Contacts.CONTENT_URI) 
     .withSelection(select, args) 
     .withValue(ContactsContract.Contacts.CUSTOM_RINGTONE, ringtone_uri_string) 
     .build()); 

Alors maintenant, je tente d'insérer une sonnerie personnalisée dans un rawcontact (un nouveau contact pas déjà créé). J'ai essayé avec ce code:

changesToCommit.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) 
        .withValueBackReference(ContactsContract.RawContacts._ID, 0) 
        .withValue(ContactsContract.RawContacts.CUSTOM_RINGTONE, ringtone_uri_string) 
        .build()); 

Mais cela ne fonctionne pas. Des idées ?

Répondre

0

CUSTOM_RINGTONE est un champ de table Contacts, et non RawContacts.

Vous auriez besoin de référencer un ID de contact, pas un ID de contact brut, donc je ne suis pas sûr que cela soit possible lors de l'insertion d'un nouveau contact brut.

EDIT

Vous avez raison, semble comme je l'ai raté cet autre domaine CUSTOM_RINGTONE à RawContacts. Dans ce cas, je pense que cela devrait être une partie du premier appel à ajouter le contact cru, quelque chose comme ceci:

ArrayList ops = new ArrayList<ContentProviderOperation>(); 
ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI) 
    .withValue(RawContacts.ACCOUNT_TYPE, "my_account_type") 
    .withValue(RawContacts.ACCOUNT_NAME, "my_account_name") 
    .withValue(RawContacts.CUSTOM_RINGTONE, ringtone_uri_string) 
    .build()); 
// Add multiple Data.CONTENT_URI rows here, e.g.: 
ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) 
    .withValueBackReference(Data.RAW_CONTACT_ID, 0) 
    .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE) 
    .withValue(StructuredName.DISPLAY_NAME, "Bob Dylan") 
    .build()); 
... 
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
+0

Êtes-vous sûr que 'CUSTOM_RINGTONE' n'est pas un champ de RawContacts? Dans le document, je vois 'CUSTOM_RINGTONE' dans les colonnes' Contacts' mais aussi dans les colonnes 'RawContacts': [Doc RawContacts] (https://developer.android.com/reference/android/provider/ContactsContract.RawContacts.html) – Maestro

+0

@Maestro devinez que vous avez raison, voir mon edit – marmor