Establecer un archivo de sonido como tono de llamada y notificación mediante programación en Android

Tengo dos botones en mi aplicación. Uno para configurar un archivo de sonido como tono de llamada y otro como notificación. Puedo configurar el archivo de sonido como tono de llamada, pero cuando trato de configurarlo como notificación, elimina el tono de llamada que agregué anteriormente. El archivo de sonido se muestra solo como notificación. Quiero configurar un archivo de sonido como tono de llamada y notificación a través de botones separados.

Código de tono de llamada:

File k = new File(baseDir,fileName);
ContentValues values = new ContentValues();

values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "Voicetransform ");  

values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/wav");
values.put(MediaStore.MediaColumns.SIZE, k.length());
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, true);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);

Uri uri = MediaStore.Audio.Media.getContentUriForPath(k
        .getAbsolutePath());
context.getContentResolver().delete(
uri,
MediaStore.MediaColumns.DATA + "=\""
        + k.getAbsolutePath() + "\"", null);
Uri newUri = context.getContentResolver().insert(uri, values);

try {
    RingtoneManager.setActualDefaultRingtoneUri(
            context, RingtoneManager.TYPE_RINGTONE,
            newUri);
} catch (Throwable t) {

}

Código de notificación:

ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "Voicetransform1");
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/wav");
values.put(MediaStore.MediaColumns.SIZE, k.length());
values.put(MediaStore.Audio.Media.ARTIST, R.string.app_name);
values.put(MediaStore.Audio.Media.IS_RINGTONE, false);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
values.put(MediaStore.Audio.Media.IS_ALARM, true);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);

Uri uri = MediaStore.Audio.Media.getContentUriForPath(k
    .getAbsolutePath());
context.getContentResolver().delete(
    uri,
    MediaStore.MediaColumns.DATA + "=\""
        + k.getAbsolutePath() + "\"", null);
Uri newUri = context.getContentResolver().insert(uri, values);

try {
    RingtoneManager.setActualDefaultRingtoneUri(
        context, RingtoneManager.TYPE_NOTIFICATION,newUri);
} catch (Throwable t) {

}

File k = new File(baseDir,fileName);

Respuestas a la pregunta(2)

Su respuesta a la pregunta