代码出自 Settings\src\com\android\settings\notification\SoundSettings.java
private static CharSequence updateRingtoneName(Context context, int type) {if (context == null) {Log.e(TAG, "Unable to update ringtone name, no context provided");return null;}Uri ringtoneUri = RingtoneManager.getActualDefaultRingtoneUri(context, type);CharSequence summary = context.getString(com.android.internal.R.string.ringtone_unknown);// Is it a silent ringtone?if (ringtoneUri == null) {summary = context.getString(com.android.internal.R.string.ringtone_silent);} else {Cursor cursor = null;try {if (MediaStore.AUTHORITY.equals(ringtoneUri.getAuthority())) {// Fetch the ringtone title from the media providercursor = context.getContentResolver().query(ringtoneUri,new String[] { MediaStore.Audio.Media.TITLE }, null, null, null);} else if (ContentResolver.SCHEME_CONTENT.equals(ringtoneUri.getScheme())) {cursor = context.getContentResolver().query(ringtoneUri,new String[] { OpenableColumns.DISPLAY_NAME }, null, null, null);}if (cursor != null) {if (cursor.moveToFirst()) {summary = cursor.getString(0);}}} catch (SQLiteException sqle) {// Unknown title for the ringtone} catch (IllegalArgumentException iae) {// Some other error retrieving the column from the provider} finally {if (cursor != null) {cursor.close();}}}return summary;}
type 取值: RingtoneManager.TYPE_RINGTONE RingtoneManager.TYPE_NOTIFICATION RingtoneManager.TYPE_ALARM
调用方式:
CharSequence summary = updateRingtoneName(mContext, RingtoneManager.TYPE_RINGTONE);CharSequence summary = updateRingtoneName(mContext, RingtoneManager.TYPE_NOTIFICATION);CharSequence summary = updateRingtoneName(mContext, RingtoneManager.TYPE_ALARM);
