2017-01-12 18 views
0

Я хотел бы добавить пользовательский рингтон в rawcontact (до создания контакта).Вставьте пользовательский рингтон в rawcontact (новый контакт)

Я использовал этот код с Succes, чтобы добавить пользовательские мелодии в контакте (уже создан):

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

Так что теперь, я стараюсь, чтобы вставить собственный рингтон в rawcontact (новый контакт уже не создан). Я пробовал с кодом:

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

Но это не работает. Есть идеи ?

ответ

0

CUSTOM_RINGTONE является полем Contacts, а не RawContacts.

Вам нужно будет указать идентификатор контакта, а не идентификатор raw-contact-id, поэтому я не уверен, что это возможно при вставке нового исходного контакта.

EDIT

Вы правы, кажется, что я пропустил, что другие CUSTOM_RINGTONE поле в RawContacts. В этом случае, я думаю, что это должно быть частью первого звонка, чтобы добавить забортной контакт, что-то вроде этого:

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

Вы уверены, что 'CUSTOM_RINGTONE' не является полем RawContacts? В doc я вижу 'CUSTOM_RINGTONE' в столбцах« Контакты », а также в столбцах« RawContacts »: [Doc RawContacts] (https://developer.android.com/reference/android/provider/ContactsContract.RawContacts.html) – Maestro

+0

@Maestro думаю, что вы правы, см. Мое редактирование – marmor

 Смежные вопросы

  • Нет связанных вопросов^_^