最近公司用到了设置自定义铃声问题,然后再网上找了一大堆文章,都是复制过来复制过去,最后发现没有一个好使的
比如`//设置–铃声的具体方法
public void setMyRingtone(String path)
{
File sdfile = new File(path);
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, sdfile.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, sdfile.getName());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
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(sdfile.getAbsolutePath());
Uri newUri = this.getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, newUri);
Toast.makeText( getApplicationContext (),"设置来电铃声成功!", Toast.LENGTH_SHORT ).show();
System.out.println("setMyRingtone()-----铃声");
} `
结果debug了一下发现id获取不到,最后我是这样实现的
public static void setMyRingtone(String path, Context context){
File sdFile = new File(path);
//ComtentValues 用于存储数据的 contenvalues只能存储基本类型的数据
ContentValues values = new ContentValues();
// 文件路径
values.put(MediaStore.MediaColumns.DATA,sdFile.getAbsolutePath());
// 文件名
values.put(MediaStore.MediaColumns.TITLE,sdFile.getName());
//
values.put(MediaStore.MediaColumns.MIME_TYPE,"audio/*");
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(sdFile.getAbsolutePath());
Cursor cursor = context.getContentResolver().query(uri, null, MediaStore.MediaColumns.DATA + "=?", new String[] { path },null);
if (cursor.moveToFirst() && cursor.getCount() > 0){
String _id=cursor.getString(0);
context.getContentResolver().update(uri, values, MediaStore.MediaColumns.DATA + "=?",new String[] { path });
Uri newUri = ContentUris.withAppendedId(uri, Long.valueOf(_id));
}
//Uri newUri = context.getContentResolver().insert(uri,values);
// RingtoneManager.setActualDefaultRingtoneUri(context,RingtoneManager.TYPE_RINGTONE,newUri);
Toast.makeText(context.getApplicationContext(),"设置来电铃声成功!",Toast.LENGTH_SHORT).show();
System.out.println("setMyRingtone()-----铃声");
}
**但最后还是发现有些机型无法生效,最后发现qq音乐盒酷狗音乐也无法生效
,猜想可能是手机厂商定制rom的结果吧。。。。。。**