Search code examples
androidphone-callringtone

Get custom ringtone incoming call of Android


I can use below code to get current ringtone of incoming call

 Uri defaultRintoneUri = RingtoneManager.getActualDefaultRingtoneUri(
            getApplicationContext(), RingtoneManager.TYPE_RINGTONE);
 defaultRingtone = RingtoneManager.getRingtone(getApplicationContext(),
            defaultRintoneUri);

But I want to get custom ringtone which is set by other application. How can I get it?


Solution

  • I found the answer. Actually, Ringtone Manager will give us default ringtone of Android device. But if ringtone was changed by other application and we want to get it. We need the permission

    READ_EXTERNAL_STORAGE
    

    Let me give us an example :

    Uri defaultRintoneUri = RingtoneManager.getActualDefaultRingtoneUri(
                getApplicationContext(), RingtoneManager.TYPE_RINGTONE);
     defaultRingtone = RingtoneManager.getRingtone(getApplicationContext(),
                defaultRintoneUri);
    

    Without READ_EXTERNAL_STORAGE permission : above code will return default ringtone of Android device

    But if other application change custom ringtone with the song like "Banana.mp3" (Minion - you known that right? lol)

    And with READ_EXTERNAL_STORAGE permission : you will receive exactly Banana song

    Without READ_EXTERNAL_STORAGE permission : default ringtone of Android device.