获取Android中的可用铃声列表

我已经看到了很多关于如何设置默认铃声的例子,但是我更感兴趣的是能够在手机上填充一个下拉框列表,里面填充了可用的铃声。 所以人们看到他们在Android设置中更改铃声时的列表,我希望能够列出所有这些。

我发现的最接近的东西是在这里 ,但这只是设置默认的铃声。 任何想法的人? 它可以在铃声pipe理器中进出。

Solutions Collecting From Web of "获取Android中的可用铃声列表"

铃声pipe理器是你在找什么。 您只需要使用setType来设置TYPE_RINGTONE ,然后迭代getCursor提供的Cursor。

这是一个返回一个URI数组的假设方法的工作示例,唯一的区别是它寻找的是闹钟而不是铃声:

RingtoneManager ringtoneMgr = new RingtoneManager(this); ringtoneMgr.setType(RingtoneManager.TYPE_ALARM); Cursor alarmsCursor = ringtoneMgr.getCursor(); int alarmsCount = alarmsCursor.getCount(); if (alarmsCount == 0 && !alarmsCursor.moveToFirst()) { return null; } Uri[] alarms = new Uri[alarmsCount]; while(!alarmsCursor.isAfterLast() && alarmsCursor.moveToNext()) { int currentPosition = alarmsCursor.getPosition(); alarms[currentPosition] = ringtoneMgr.getRingtoneUri(currentPosition); } alarmsCursor.close(); return alarms; 

这将返回所有可用铃声的标题和URI。 和他们一起做你想要的!

 public Map<String, String> getNotifications() { RingtoneManager manager = new RingtoneManager(this); manager.setType(RingtoneManager.TYPE_RINGTONE); Cursor cursor = manager.getCursor(); Map<String, String> list = new HashMap<>(); while (cursor.moveToNext()) { String notificationTitle = cursor.getString(RingtoneManager.TITLE_COLUMN_INDEX); String notificationUri = cursor.getString(RingtoneManager.URI_COLUMN_INDEX); list.put(notificationTitle, notificationUri); } return list; }