代码出自 Settings\src\com\android\settings\notification\SoundSettings.java

    1. private static CharSequence updateRingtoneName(Context context, int type) {
    2. if (context == null) {
    3. Log.e(TAG, "Unable to update ringtone name, no context provided");
    4. return null;
    5. }
    6. Uri ringtoneUri = RingtoneManager.getActualDefaultRingtoneUri(context, type);
    7. CharSequence summary = context.getString(com.android.internal.R.string.ringtone_unknown);
    8. // Is it a silent ringtone?
    9. if (ringtoneUri == null) {
    10. summary = context.getString(com.android.internal.R.string.ringtone_silent);
    11. } else {
    12. Cursor cursor = null;
    13. try {
    14. if (MediaStore.AUTHORITY.equals(ringtoneUri.getAuthority())) {
    15. // Fetch the ringtone title from the media provider
    16. cursor = context.getContentResolver().query(ringtoneUri,
    17. new String[] { MediaStore.Audio.Media.TITLE }, null, null, null);
    18. } else if (ContentResolver.SCHEME_CONTENT.equals(ringtoneUri.getScheme())) {
    19. cursor = context.getContentResolver().query(ringtoneUri,
    20. new String[] { OpenableColumns.DISPLAY_NAME }, null, null, null);
    21. }
    22. if (cursor != null) {
    23. if (cursor.moveToFirst()) {
    24. summary = cursor.getString(0);
    25. }
    26. }
    27. } catch (SQLiteException sqle) {
    28. // Unknown title for the ringtone
    29. } catch (IllegalArgumentException iae) {
    30. // Some other error retrieving the column from the provider
    31. } finally {
    32. if (cursor != null) {
    33. cursor.close();
    34. }
    35. }
    36. }
    37. return summary;
    38. }

    type 取值: RingtoneManager.TYPE_RINGTONE RingtoneManager.TYPE_NOTIFICATION RingtoneManager.TYPE_ALARM

    调用方式:

    1. CharSequence summary = updateRingtoneName(mContext, RingtoneManager.TYPE_RINGTONE);
    2. CharSequence summary = updateRingtoneName(mContext, RingtoneManager.TYPE_NOTIFICATION);
    3. CharSequence summary = updateRingtoneName(mContext, RingtoneManager.TYPE_ALARM);