9

我正在使用 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 卡上。有什么想法吗?

4

2 回答 2

9

I just fall into what the problem is. If the user have "Silent" like notification sound the function:

RingtoneManager.getRingtone(context, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))

returns null. And that explains why only some users find this issue.

于 2013-01-13T10:31:21.230 回答
8

如果您将一个角色声音复制到存储在外部存储上的手机上,除非您的应用程序有权访问外部存储,否则 RingtoneManager 将无法打开它。

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

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

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

于 2014-01-12T15:43:40.900 回答