If you need a version of XAMARIN.Droid :
public override void OnActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE_ALERT_RINGTONE && data != null) { var ringtone = data.GetParcelableExtra(RingtoneManager.ExtraRingtonePickedUri); if (ringtone != null) { SetRingtonePreferenceValue(ringtone.ToString()); } else { // "Silent" was selected SetRingtonePreferenceValue(""); } } else { base.OnActivityResult(requestCode, resultCode, data); } } public override bool OnPreferenceTreeClick(Android.Support.V7.Preferences.Preference preference) { if (preference.Key == KEY_RINGTONE_PREFERENCE) { Intent intent = new Intent(RingtoneManager.ActionRingtonePicker); intent.PutExtra(RingtoneManager.ExtraRingtoneType, (int)RingtoneType.Notification); intent.PutExtra(RingtoneManager.ExtraRingtoneShowDefault, true); intent.PutExtra(RingtoneManager.ExtraRingtoneShowSilent, true); intent.PutExtra(RingtoneManager.ExtraRingtoneDefaultUri, Android.Provider.Settings.System.DefaultRingtoneUri); string existingValue = GetRingtonePreferenceValue(); if (existingValue != null) { if (existingValue.Length == 0) { // Select "Silent" intent.PutExtra(RingtoneManager.ExtraRingtoneExistingUri, (Android.Net.Uri)null); } else { intent.PutExtra(RingtoneManager.ExtraRingtoneExistingUri, Android.Net.Uri.Parse(existingValue)); } } else { // No ringtone has been selected, set to the default intent.PutExtra(RingtoneManager.ExtraRingtoneExistingUri, Android.Provider.Settings.System.DefaultRingtoneUri); } StartActivityForResult(intent, REQUEST_CODE_ALERT_RINGTONE); return true; } return base.OnPreferenceTreeClick(preference); } void SetRingtonePreferenceValue(string ringtone) { var editor = prefs.Edit(); editor.PutString(KEY_RINGTONE_PREFERENCE, ringtone); editor.Commit(); } string GetRingtonePreferenceValue() { return prefs.GetString(KEY_RINGTONE_PREFERENCE, "content://settings/system/notification_sound"); }
Yohan dahmani
source share