RingtoneManager返回空铃声

ato*_*aum 7 java android ringtone

我正在使用RingtoneManager,显然在某些手机上它一直都会返回null.我知道如果声音是静音或无法找到音调,它会返回null.如果声音打开并且有音调,为什么会返回null?代码适用于我的nexus ....

这是我正在使用的:

Ringtone ringtone;
ringtone = RingtoneManager.getRingtone(context, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
if(ringtone == null)
{
    Log.d("Debug", "ringtone is null");
}
else
{
    ringtone.play();
}
Run Code Online (Sandbox Code Playgroud)

我已启用所有权限播放铃声(它可以在我的手机上工作),甚至启用了SD卡权限,以防止铃声在SD卡上.有什么想法吗?

Bra*_*bin 8

我只是陷入问题所在.如果用户有"静音"之类的通知声音功能:

RingtoneManager.getRingtone(context, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
Run Code Online (Sandbox Code Playgroud)

回报null.这解释了为什么只有一些用户才发现这个问题.


小智 8

如果您将手机铃声复制到存储在外部存储设备上的手机上,则RingtoneManager无法打开它,除非您的应用具有访问外部存储的权限.

为清单文件添加缺少的权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

花了我一些时间来弄清楚这一点,而没有得到一些用户在他们的设备上的正确铃声铃声