Настройка пользовательского рингтона из личного хранилища приложения - PullRequest
0 голосов
/ 10 января 2019

Я хочу установить собственную мелодию звонка из личного внутреннего хранилища приложения, т. Е.

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

...