在网上搜了一大圈的相关材料。设置个人铃声一直设置不成功,后来找了下原因,是需要将音乐的路径设置成Uri才行,这样就设置成功了。
首先贴一下将制定的音乐设置成个人的铃声:
Uri uri = Uri.fromFile(new File(音乐路径));
ContentValues values = new ContentValues();
values.put(ContactsContract.Contacts.CUSTOM_RINGTONE, uri.toString());
MyApp.getInstance().getContentResolver().update(ContactsContract.Contacts.CONTENT_URI, values, ContactsContract.Contacts._ID + " = " + 联系人的ID, null) ;
就这样子就可以设置了。
然后我再贴一下使用手机自带的铃声设置成个人铃声的代码:
private void doPickRingtone() {
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
// Allow user to pick 'Default'
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
// Show only ringtones
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE);
// Don't show 'Silent'
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false);
Uri ringtoneUri;
if (mCustomRingtone != null) {
ringtoneUri = Uri.parse(mCustomRingtone);
} else {
// Otherwise pick default ringtone Uri so that something is selected.
ringtoneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
}
// Put checkmark next to the current ringtone for this contact
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, ringtoneUri);
// Launch!
startActivityForResult(intent, RINGTONE_PICKED);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_OK) {
return;
}
switch (requestCode) {
case RINGTONE_PICKED: {
// 选择完铃声之后获得选中铃音的URI,将其值存入数据库
Uri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
handleRingtonePicked(pickedUri);
break;
}
}
}
private void handleRingtonePicked(Uri pickedUri) {
if (pickedUri == null || RingtoneManager.isDefault(pickedUri)) {
mCustomRingtone = null;
} else {
mCustomRingtone = pickedUri.toString();
}
saveData();
}
/**
* 保存数据
*/
private void saveData() {
ContentValues values = new ContentValues();
values.put(Contacts.CUSTOM_RINGTONE, mCustomRingtone);
//这里的mContactId是当前联系人的Id
getContentResolver().update(Contacts.CONTENT_URI, values, Contacts._ID + " = " + mContactId, null) ;
}