Android устанавливает рингтон программно, не меняя ID - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть один вопрос.Я нашел в стеке переполнение один из способов установить песню в качестве мелодии звонка .Оно работает.Но этот способ меняет идентификатор песни.Это необходимо?Я забочусь о том, чтобы не менять его.Вот код:

private void setSongAsRingtone(Song song){
    File ringtoneFile = new File(song.getPath());
    String filePathToDelete = MediaStore.MediaColumns.DATA + "=\"" + ringtoneFile.getAbsolutePath() + "\"";
    ContentValues content = getContentValuesOfTheSong(song, ringtoneFile);
    Uri uri = MediaStore.Audio.Media.getContentUriForPath(ringtoneFile.getAbsolutePath());

    getActivity().getContentResolver().delete(uri, filePathToDelete, null);
    setNewRingtone(uri, content);
}

private ContentValues getContentValuesOfTheSong(Song song, File ringtoneFile){
    ContentValues content = new ContentValues();
    content.put(MediaStore.MediaColumns.DATA,ringtoneFile.getAbsolutePath());
    content.put(MediaStore.MediaColumns.TITLE, song.getTitle());
    content.put(MediaStore.MediaColumns.SIZE, 215454);
    content.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
    content.put(MediaStore.Audio.Media.ARTIST, song.getArtist());
    content.put(MediaStore.Audio.Media.DURATION, song.getDuration());
    content.put(MediaStore.Audio.Media.IS_RINGTONE, true);
    content.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
    content.put(MediaStore.Audio.Media.IS_ALARM, true);
    content.put(MediaStore.Audio.Media.IS_MUSIC, true);
    return content;
}

private void setNewRingtone(Uri uri, ContentValues content){
    Uri newUri = getActivity().getContentResolver().insert(uri, content);
    RingtoneManager.setActualDefaultRingtoneUri(getActivity(),
            RingtoneManager.TYPE_RINGTONE, newUri);
}

Что вы думаете?Можно ли его не удалять?

Хорошего дня!Заранее спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...