【发布时间】:2011-03-23 22:54:52
【问题描述】:
我正在使用 RingtoneManager,显然在某些手机上它总是返回 null。我知道如果声音无声或找不到音调,它会返回 null。如果声音打开并且有音调,为什么会返回null?该代码适用于我的 nexus s....
这是我正在使用的:
Ringtone ringtone;
ringtone = RingtoneManager.getRingtone(context, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
if(ringtone == null)
{
Log.d("Debug", "ringtone is null");
}
else
{
ringtone.play();
}
我已启用播放铃声的所有权限(它适用于我的手机),甚至启用了 SD 卡权限,以防铃声在 SD 卡上。有什么想法吗?
【问题讨论】:
-
根据 RingtoneManager 的源代码,getRingtone 返回 null 的唯一情况是给定 URI 处的铃声无法打开时。它还应该在 logcat 中添加一行
"Failed to open ringtone " + ringtoneUri。您是否在 logcat 输出中看到这样的行? -
不是我的,但有些用户抱怨铃声不响。在我进行 NULL 检查之前,它因为取消引用的指针而崩溃。我可以假设的唯一想法是它无法获取 URI ......但我不知道为什么当他们有一个有效的铃声时它不能做到这一点。也许是资源锁?