9

私はRingtoneManagerを使用していますが、明らかに一部の電話では常にnullを返します。音が無音の場合、またはトーンが見つからない場合は null を返すことを知っています。サウンドがオンで、トーンがある場合に null が返されるのはなぜですか? コードは私のネクサスで動作します....

これが私が使用しているものです:

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

私はただ問題が何であるかに陥ります。ユーザーが通知音のような「サイレント」機能を持っている場合:

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

戻りますnull。そして、それがなぜ一部のユーザーだけがこの問題を発見したのかを説明しています.

于 2013-01-13T10:31:21.230 に答える
8

外部ストレージに保存されているコスト サウンドを電話にコピーした場合、アプリが外部ストレージにアクセスする権限を持っていない限り、RingtoneManager はそれを開くことができません。

不足しているアクセス許可をマニフェスト ファイルに追加します。

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

これを理解するのに少し時間がかかりましたが、一部のユーザーがデバイスに持っていた着メロの正しいタイトルを取得できませんでした

于 2014-01-12T15:43:40.900 に答える