public void setMyRingtone()        
        {        
     File k = new File("/sdcard/Shall We Talk.mp3"); // 设置歌曲路径        
        ContentValues values = new ContentValues();        
        values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());        
        values.put(MediaStore.MediaColumns.TITLE, "Shall We Talk");        
        values.put(MediaStore.MediaColumns.SIZE, 8474325);        
        values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");        
        values.put(MediaStore.Audio.Media.ARTIST, "Madonna");        
        values.put(MediaStore.Audio.Media.DURATION, 230);        
        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);        
        // Insert it into the database        
        Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath());        
        Uri newUri = this.getContentResolver().insert(uri, values);        
        RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, newUri);        
        ;}    
public void setMyRingtone()
        {
     File k = new File("/sdcard/Shall We Talk.mp3"); // 设置歌曲路径
        ContentValues values = new ContentValues();
        values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
        values.put(MediaStore.MediaColumns.TITLE, "Shall We Talk");
        values.put(MediaStore.MediaColumns.SIZE, 8474325);
        values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
        values.put(MediaStore.Audio.Media.ARTIST, "Madonna");
        values.put(MediaStore.Audio.Media.DURATION, 230);
        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);
        // Insert it into the database
        Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath());
        Uri newUri = this.getContentResolver().insert(uri, values);
        RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, newUri);
        ;}    

需要的权限

<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>