How to get current ringtone in Android?

杀马特。学长 韩版系。学妹 提交于 2019-11-27 03:21:01

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!