大家好,我使用下面的代码设置手机的铃声,设置后经过测试,手机铃声设置成功,但是当手机重启后,手机铃声又变回了系统手机铃声,或者是其他的铃声,反正不是我之前设置的。是不是我的代码有什么问题,或者就不应该这么做?请大家帮忙看一下,谢谢!public void setMyRingtone(File f) {
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, f.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, f.getName());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
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(f.getAbsolutePath());
Uri newUri = this.getContentResolver().insert(uri, values);
if (newUri == null) {
Cursor cursor = getContentResolver().query(uri, null, MediaStore.MediaColumns.DATA + "=?", new String[] {f.getAbsolutePath()}, null);
if (cursor != null) {
cursor.moveToFirst();
int cnt = cursor.getCount();
if (cnt > 0) {
String id = cursor.getString(0);
newUri = ContentUris.withAppendedId(uri, Long.valueOf(id));
}
cursor.close();
} else {

}
}
if (newUri == null) {
newUri = uri;
}
getContentResolver().update(uri, values, MediaStore.MediaColumns.DATA + "=?", new String[] {f.getAbsolutePath()});
RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, newUri);
}
// 使用:
setMyRingtone(new File("/sdcard/test.mp3"));