问题
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.
回答1:
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);
回答2:
Here is the solution.
Inside onActivityResult
:
Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
Ringtone r=RingtoneManager.getRingtone(this, uri);
String ringToneName=r.getTitle(this);
Toast.makeText(getApplicationContext(), "Ringtone Name : "+ringToneName,Toast.LENGTH_SHORT).show();
But it will show exception
in emulator because there is no ringtone in emulator so execute this in mobile
回答3:
Try with:
Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI);
回答4:
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();
回答5:
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);
}
回答6:
try this:
uri default_ringtone_uri = Settings.System.DeFAULT_RINGTONE_URI
Ringtone ringtone = RingtoneManager.getRingtone(context, uri).play();
来源:https://stackoverflow.com/questions/22503189/how-to-get-current-ringtone-in-android