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

问题描述 投票:3回答:2

我正在尝试从应用程序中保存到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而不是指定路径的意义。

[如果有人可以给我一些解释,或将我链接到某个地方,以便我能真正理解并解决这个问题,我将非常感激。

android path audio uri ringtone
2个回答
0
投票

通过进入菜单->设置->应用程序->开发来关闭电话调试,然后取消选中该框。好去。


0
投票

我认为您的问题没有解决。因此,我建议您从此行开始检查您的文件是否确实存在]

 File ringPath = new File(path, filename);

使用代码:

boolean b=ringPath.exists();

如果返回true,则可以从中获取uri。然后,在我认为没有错误之后,我可以在您的代码中看到。

© www.soinside.com 2019 - 2024. All rights reserved.