android 怎样设置铃声

做了一个音乐播放器,要求有设置铃声的功能,在网上找了很多代码都没有效果,于是自己研究了一下。

 public void setMyRingtone(String path){
       //如果没有权限,必须先给权限。
        if (!Settings.System.canWrite(mContext)){
            //ToastUtil.longTips("请在该设置页面勾选,才可以使用路况提醒功能");
            Uri selfPackageUri = Uri.parse("package:"
                    + mContext.getPackageName());
            Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS,
                    selfPackageUri);
            mContext.startActivity(intent);
        }else {
            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());
            Uri newUri=null;
            Cursor cursor = mContext.getContentResolver().query(uri, null, MediaStore.MediaColumns.DATA + "=?", new String[] { path },null);
            if (cursor.moveToFirst() && cursor.getCount() > 0){
                String _id=cursor.getString(0);
                Log.d(TAG," cursor.getCount ");
                mContext.getContentResolver().update(uri, values, MediaStore.MediaColumns.DATA + "=?",new String[] { path });
                newUri = ContentUris.withAppendedId(uri, Long.valueOf(_id));
            }
            //网上很多用的newUri 是直接这样获取的,打印出来是空的,这就是失败的原因。要通过在数据库中查找才能成功
           //Uri newUri = context.getContentResolver().insert(uri,values);
            if (newUri!=null){
                RingtoneManager.setActualDefaultRingtoneUri(mContext,RingtoneManager.TYPE_RINGTONE,newUri);
            }
            Toast.makeText(mContext.getApplicationContext(),"设置来电铃声成功!",Toast.LENGTH_SHORT).show();
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_32072451/article/details/80018534