Android 铃声播放在 4.2 上崩溃

标签 android android-4.2-jelly-bean ringtone

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

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

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 中的错误?

最佳答案

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

编辑:试试这个。

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();
}

关于Android 铃声播放在 4.2 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13862353/

相关文章:

android - 如何设置我的 ACTION BAR 支持从右到左

java - Android 4.1 ImageButton 上的 Jellybean 可绘制部分未显示

android - Buildozer 构建 Android Kivy 应用程序返回命令失败

android - 检索项目 : No resource found that matches the given name 的父项时出错

android - 动态更新 ViewPager?

android - 如何将铃声存储为字符串?

android - 如何在android中设置自定义闹钟音

android - React Native 中如何聚焦下一个字段输入?

android - android 4.1 中的乌尔都语字体渲染问题

android - 如何使用 RingtoneManager.ACTION_RINGTONE_PICKER 设置铃声?