12

I have found lots of examples how to get default ringtone. Something like that:

Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
        Ringtone ringtone = RingtoneManager.getRingtone(getApplicationContext(),  alert);
         ringtone.setStreamType(AudioManager.STREAM_RING);
         ringtone.play();

But I want to get the actual current ringtone, that was set by the user.

Lucifer
  • 29,392
  • 25
  • 90
  • 143
chabislav
  • 939
  • 1
  • 8
  • 27

6 Answers6

19

I was struggling with this issue as well, so the solution is:

Uri defaultRingtoneUri = RingtoneManager.getActualDefaultRingtoneUri(getActivity().getApplicationContext(), RingtoneManager.TYPE_RINGTONE);
Ringtone defaultRingtone = RingtoneManager.getRingtone(getActivity(), defaultRingtoneUri);
Marcel Bro
  • 4,907
  • 4
  • 43
  • 70
dgabor
  • 206
  • 2
  • 5
1

I've also searched a lot for your problem which I also had. At last got solution from this itself.

Use below code in the button for ringtone intent.

public void pickRingtone(View view) {
        // TODO Auto-generated method.stub

        Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Ringtone");

    // for existing ringtone
        Uri urie = RingtoneManager.getActualDefaultRingtoneUri(
                getApplicationContext(), RingtoneManager.TYPE_RINGTONE);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, urie);

    startActivityForResult(intent, 5);
}
  • This still didn't answer my question. I just simply want to grab a URI for the currently selected ringtone (by a user). I don't need any Ringtone Picker or anything like that. I just need to get a uri and play it when I need it. – chabislav Apr 13 '14 at 04:42
1

This is the extension of dgabor's answer. Just add defaultRingtone.play(); to play the ringtone.

Uri defaultRintoneUri = RingtoneManager.getActualDefaultRingtoneUri(getApplicationContext(), RingtoneManager.TYPE_RINGTONE);
Ringtone defaultRingtone = RingtoneManager.getRingtone(getApplicationContext(), defaultRintoneUri);
defaultRingtone.play();
Fairy
  • 3,592
  • 2
  • 27
  • 36
Abhilash Das
  • 1,388
  • 1
  • 16
  • 22
1

Answer by Alexander The Great was correct. But, I simplified it.

Uri currentRingtonUri = RingtoneManager.getActualDefaultRingtoneUri(getApplicationContext(), RingtoneManager.TYPE_RINGTONE);
Dyno Cris
  • 1,823
  • 1
  • 11
  • 20
0

Try with:

Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI);
Pang
  • 9,564
  • 146
  • 81
  • 122
YasirSE
  • 161
  • 1
  • 10
  • This won't work, because RingtoneManager.getDefaultUri accepts only INT parameter, while RingtoneManager.EXTRA_RINGTONE_EXISTING_URI is a String. – chabislav Mar 19 '14 at 20:15
0

try this:

uri default_ringtone_uri = Settings.System.DeFAULT_RINGTONE_URI

Ringtone ringtone = RingtoneManager.getRingtone(context, uri).play();
K.Dᴀᴠɪs
  • 9,945
  • 11
  • 33
  • 43
  • 1
    While this code may answer the question, providing additional context regarding why and/or how this code answers the question improves its long-term value. – rollstuhlfahrer Mar 25 '18 at 09:30