Android铃声播放在4.2上崩溃

时间:2012-12-13 14:50:57

标签: android android-4.2-jelly-bean ringtone

我在运行Android 4.2的Nexus 4上播放铃声时遇到问题。

当我尝试播放RingTone时,我看到以下异常:

java.lang.NullPointerException at android.media.Ringtone.play(Ringtone.java:228)

我的代码如下:

RingtoneManager ringtoneManager = new RingtoneManager(context);
ringtoneManager.setType(AudioManager.STREAM_NOTIFICATION);
Ringtone ringtone = ringtoneManager.getRingtone(index);
Ringtone ringtone.setStreamType(AudioManager.STREAM_NOTIFICATION);

if (ringtone != null)
{
    ringtone.play();
}

索引值根据用户选择传递给我的方法(我将它们与要选择的铃声列表一起呈现)。在任何情况下,我设置它的行为始终是相同的没有区别。

在运行2.3和4.0.4的其他两个设备上运行时,此代码可以正常运行。

当我调试时,我可以看到铃声管理器返回的铃声中的uri为空(并且在我的其他设备上设置为有效值)。

我做错了什么或者这可能是4.2中的错误?

1 个答案:

答案 0 :(得分:3)

我想你需要首先检查该位置是否存在铃声。 所以试试

编辑:试试这个。

RingtoneManager ringtoneManager = new RingtoneManager(ActivityName.this);
ringtoneManager.setType(AudioManager.STREAM_NOTIFICATION);
Cursor c = ringtoneManager.getCursor();
Ringtone ringtone = ringtoneManager.getRingtone(index);
ringtone.setStreamType(AudioManager.STREAM_NOTIFICATION);
if(ringtone != null && ringtoneManager.getRingtoneUri(position) != null){    
    ringtone.play();
}
相关问题