Я хочу установить собственную мелодию звонка из личного внутреннего хранилища приложения, т. Е.
data/data/<package>/files/audio.mp3
Я не хочу сохранять аудио во внутреннем / внешнем хранилище по соображениям безопасности . И я использую ниже код
private void set() {
String fPAth = "/data/data/" + mContext.getPackageName();
File k = new File(fPAth, fileName + ".mp3"); // path is a file to /sdcard/media/ringtone
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "99999");
values.put(MediaStore.MediaColumns.SIZE, k.length());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.Audio.Media.ARTIST, "Madonna");
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 uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath());//content://media/external/audio/media
LogMgr.i("DownloadAsyncTask-->set-->uri-->" + uri);
String filePathToDelete = MediaStore.MediaColumns.DATA + "=\"" + k.getAbsolutePath() + "\"";
LogMgr.i("DownloadAsyncTask-->set-->filePathToDelete-->" + filePathToDelete);
mContext.getContentResolver().delete(uri, filePathToDelete, null);
Uri newUri = mContext.getApplicationContext().getContentResolver().insert(uri, values);
LogMgr.i("DownloadAsyncTask-->set-->newUri-->" + newUri);
RingtoneManager.setActualDefaultRingtoneUri(
mContext,
RingtoneManager.TYPE_RINGTONE,
newUri
);
}
Приведенный выше код не вызывает каких-либо исключений. Но когда я пытаюсь воспроизвести пользовательскую мелодию звонка, которую я установил ранее с помощью приведенного выше кода, он воспроизводит мелодию по умолчанию вместо моей пользовательской мелодии звонка.
Поэтому, пожалуйста, предложите, как я могу установить собственную мелодию звонка из личного внутреннего хранилища приложения.
data / data / имя моего пакета / files / audio.mp3