Я использую следующий код для установки мелодии звонка для отдельных контактов
String contact_number = "MOBILE_NUMBER";
Uri lookupUri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, contact_number);
// The columns used for `Contacts.getLookupUri`
String[] projection = new String[]{
ContactsContract.Contacts._ID, ContactsContract.Contacts.LOOKUP_KEY
};
// Build your Cursor
Cursor data = getContentResolver().query(lookupUri, projection, null, null, null);
if (data != null && data.moveToFirst()) {
data.moveToFirst();
try {
// Get the contact lookup Uri
long contactId = data.getLong(0);
String lookupKey = data.getString(1);
Uri contactUri = ContactsContract.Contacts.getLookupUri(contactId, lookupKey);
if (contactUri == null) {
// Invalid arguments
return;
}
String ringtoneUri = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Test";
File filePath = new File(ringtoneUri, "Bhar.MP3");
Log.e("filePath", filePath.toString());
String value = Uri.fromFile(filePath).toString();
// Apply the custom ringtone
ContentValues values = new ContentValues();
values.put(ContactsContract.Data.RAW_CONTACT_ID, contactId);
values.put(ContactsContract.Contacts.CUSTOM_RINGTONE, value);
getContentResolver().update(contactUri, values, null, null);
} finally {
// Don't forget to close your Cursor
data.close();
}
}
этот код работал на большинстве устройств, но он не работает в Samsung j5 (версия Android 6.0.1), и я также проверил в той же версии устройства (например, Moto G3), на этих устройствах он работает нормально.
Примечание.
Я дал все разрешения, связанные с Marshmallow
Когда я назначаю рингтон на мобильный телефон J5. Он назначает имя мелодии для конкретного контакта, но не воспроизводит назначенную мелодию. Для понимания проверьте прикрепленное изображение