代码出自 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 provider
cursor = 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);