Android:将SD卡中的声音设置为铃声

时间:2011-02-04 03:15:48

标签: android path audio uri ringtone

我正试图从我的应用程序中保存到SD卡上的声音中设置铃声。经过我能找到的每一篇文章后,我相信我很接近,而且没有定义URI的权利。

       File ringPath = new File(path, filename);

       ContentValues values = new ContentValues();
       values.put(MediaStore.MediaColumns.DATA, ringPath.getAbsolutePath());
       values.put(MediaStore.MediaColumns.TITLE, "temptitle");
       values.put(MediaStore.MediaColumns.SIZE, ringPath.length());
       values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/ogg");
       values.put(MediaStore.Audio.Media.ARTIST, "tempartist");
       values.put(MediaStore.Audio.Media.IS_RINGTONE, true);

       uri = Uri.fromFile(ringPath);
       RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, uri);

通常,URI的定义更像是:

Uri uri = MediaStore.Audio.Media.getContentUriForPath(ringPath.getAbsolutePath());
Uri newUri = main.getContentResolver().insert(uri, values);

但是我并没有完全明白这一点,它给了我相当讨厌的错误(并不是说它们可能比我现在的错误更糟)。我确信这是必要的方法,但是我的代码中的uri实际上返回了正确的路径(而另一个则没有,可能是由于我的误用而被授予),所以我不明白为什么它不会工作。虽然说实话,但我不认为必须使用URI,而不是指定路径。

如果有人能给我一点解释,或者把我联系到某个地方,那么我就能理解这一点并解决这个问题我会非常感激。

2 个答案:

答案 0 :(得分:0)

嘿,我认为你的概率没有得到路径。所以我建议你先检查你的文件是否真的存在于此行


 File ringPath = new File(path, filename);

使用代码:


boolean b=ringPath.exists();

如果它返回true,那么你可以得到uri frm it.than之后我认为我的代码中没有错误。

答案 1 :(得分:0)

进入菜单 - >设置 - >应用程序 - >开发关闭手机调试然后取消选中该框。很高兴。