我正试图从我的应用程序中保存到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,而不是指定路径。
如果有人能给我一点解释,或者把我联系到某个地方,那么我就能理解这一点并解决这个问题我会非常感激。
答案 0 :(得分:0)
嘿,我认为你的概率没有得到路径。所以我建议你先检查你的文件是否真的存在于此行
File ringPath = new File(path, filename);
使用代码:
boolean b=ringPath.exists();
如果它返回true,那么你可以得到uri frm it.than之后我认为我的代码中没有错误。
答案 1 :(得分:0)
进入菜单 - >设置 - >应用程序 - >开发关闭手机调试然后取消选中该框。很高兴。