亲测可用(记得加权限)
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
/*
* 设置铃声
*/
public static void setMyAlarm(Context ct,String path)
{
File sdfile = new File(path);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(sdfile.getAbsolutePath());
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, sdfile.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, sdfile.getName());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
/*values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
values.put(MediaStore.Audio.Media.IS_ALARM, false);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);*/
ct.getContentResolver().delete(uri, null, null);
Uri newUri = ct.getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(ct, RingtoneManager.TYPE_RINGTONE, newUri);
}