我想从我的应用程序专用内部存储中设置自定义铃声,即
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
);
}
上面的代码没有引发任何异常。但是,当我尝试播放使用以上代码设置的自定义铃声时,它将播放默认铃声,而不是我的自定义铃声。
所以请建议我如何从应用程序专用内部存储中设置自定义铃声。
数据/数据/我的包名称/文件/audio.mp3