Android 如何仅从assets目录为我的应用程序设置播放自定义铃声?

Android 如何仅从assets目录为我的应用程序设置播放自定义铃声?,android,assets,Android,Assets,在一个应用程序中,我正在编写一个使用Ringtone类在发生某些事件时向用户发出警报的应用程序。到目前为止,一切正常,但从可能使用其他铃声,而不是我已经安装在系统中 我在assets文件夹中放置了一个名为buzzer.mp3的文件,并尝试按以下方式进行设置,但未成功: Uri ringtoneUri = Uri.parse("file:///android_asset/buzzer.mp3") Ringtone ringtone = RingtoneManager.getRing

在一个应用程序中,我正在编写一个使用
Ringtone
类在发生某些事件时向用户发出警报的应用程序。到目前为止,一切正常,但从可能使用其他铃声,而不是我已经安装在系统中

我在
assets
文件夹中放置了一个名为
buzzer.mp3
的文件,并尝试按以下方式进行设置,但未成功:

    Uri ringtoneUri = Uri.parse("file:///android_asset/buzzer.mp3")
    Ringtone ringtone = RingtoneManager.getRingtone(getApplicationContext(),
            ringtoneUri);
我使用
AssetsManager
检查文件是否存在,它是否确实找到了它,因此我无法真正了解无法设置它的原因。该操作记录以下错误:

E/﹕ Failed to open file '/android_asset/buzzer.mp3'. (No such file or directory)

谁告诉你你可以使用(”file:///android_asset/buzzer.mp3"?@pskink我做了一些研究,发现我的资源应该是
Uri
。我提供的
Uri
中存在问题,还是
RingtoneManager
无法访问资产的权限中存在问题?问题是Uri错误,您可以编写自定义内容提供程序并将其用作uri@pskink你能请提供一个我应该遵循的示例的链接?我有点困惑,因为我在几个问答中发现,例如,创建自定义ContentProvider时使用的
Uri
语法,您只需要覆盖一个方法:openAssetFile()