我试图通过按按钮设置自定义铃声,但从ContentResolver的插入方法中获取空值。下面是设置铃声的代码。我检查了stackoverflow本身,一些用户说它可以为他们工作,但是在我的例子中,变量“newuri”是空的
声音文件在所需的位置创建,因此我知道“newsoundfile”是可以的。
当在日志中打印“values”变量时,会给出以下信息。
值为title=My ringtone is_notification=true mime_type=Audio/MP3 is_alarm=true is_ringtone=true _size=8733 is_music=false artist=none _data=/mnt/sdcard/media/ringtone/myringtone.mp3
try
{
uri = MediaStore.Audio.Media.getContentUriForPath(newSoundFile.getAbsolutePath());
Log.d("Test", uri.toString());
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, newSoundFile.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "my ringtone");
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.MediaColumns.SIZE, newSoundFile.length());
values.put(MediaStore.Audio.Media.ARTIST, "None");
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
values.put(MediaStore.Audio.Media.IS_ALARM, true);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);
Log.d("Test","Values are "+values.toString());
newUri = mCr.insert(uri, values);
}
catch (Exception ee)
{
Log.d("Test", "Exception is " + ee);
}
if(newUri == null)
Log.d("Test", "newUri is Null");
else
Log.d("Test", "newUri is "+newUri.toString());
最佳答案
使用此代码。
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, newSoundFile.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "my ringtone");
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.Audio.Media.ARTIST, "None");
values.put(MediaStore.MediaColumns.SIZE, 215454);
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(newSoundFile
.getAbsolutePath());
getContentResolver().delete(
uri,
MediaStore.MediaColumns.DATA + "=\""
+ newSoundFile.getAbsolutePath() + "\"", null);
Uri newUri = getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(
RingtonesPlaying.this, RingtoneManager.TYPE_RINGTONE,
newUri);