After the deprecation of getContentUriForPath() and MediaStore.MediaColumns.DATA i modified the code as below :
 private boolean SetAsRingtone(File k)
    {
        ContentValues values = new ContentValues();
        values.put(MediaStore.MediaColumns.TITLE, k.getName());
        values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
        values.put(MediaStore.Audio.Media.ARTIST, R.string.app_name);
        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);
        Uri newUri=this.getContentResolver()
                .insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, values);
        RingtoneManager.setActualDefaultRingtoneUri(Emotes.this, RingtoneManager.TYPE_RINGTONE,
                newUri);
        return true;
    }
The problem is that the ringtone of the device does not change. I can see from the sound setting that it changed but when the phone rings the default music plays.
Any idea how i can fix this?