From 822017c69c552b1f2fc2f5dc6abe989327404647 Mon Sep 17 00:00:00 2001 From: akwizgran <akwizgran@users.sourceforge.net> Date: Mon, 18 Sep 2017 13:36:32 +0100 Subject: [PATCH] Don't crash if the chosen ringtone can't be loaded. --- .../briar/android/settings/SettingsFragment.java | 15 +++++++++++---- briar-android/src/main/res/values/strings.xml | 1 + 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java index 98afedd525..ea213e3b83 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java @@ -15,6 +15,7 @@ import android.support.v7.preference.PreferenceFragmentCompat; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.ViewGroup; +import android.widget.Toast; import org.acra.ACRA; import org.briarproject.bramble.api.db.DbException; @@ -46,6 +47,7 @@ import static android.media.RingtoneManager.EXTRA_RINGTONE_TITLE; import static android.media.RingtoneManager.EXTRA_RINGTONE_TYPE; import static android.media.RingtoneManager.TYPE_NOTIFICATION; import static android.provider.Settings.System.DEFAULT_NOTIFICATION_URI; +import static android.widget.Toast.LENGTH_SHORT; import static java.util.logging.Level.INFO; import static java.util.logging.Level.WARNING; import static org.briarproject.bramble.api.plugin.BluetoothConstants.PREF_BT_ENABLE; @@ -400,10 +402,15 @@ public class SettingsFragment extends PreferenceFragmentCompat } else { // The user chose a ringtone other than the default Ringtone r = RingtoneManager.getRingtone(getContext(), uri); - String name = r.getTitle(getContext()); - s.putBoolean(PREF_NOTIFY_SOUND, true); - s.put(PREF_NOTIFY_RINGTONE_NAME, name); - s.put(PREF_NOTIFY_RINGTONE_URI, uri.toString()); + if (r == null) { + Toast.makeText(getContext(), R.string.cannot_load_ringtone, + LENGTH_SHORT).show(); + } else { + String name = r.getTitle(getContext()); + s.putBoolean(PREF_NOTIFY_SOUND, true); + s.put(PREF_NOTIFY_RINGTONE_NAME, name); + s.put(PREF_NOTIFY_RINGTONE_URI, uri.toString()); + } } storeSettings(s); } diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml index 3a20ab2e72..d09edd5302 100644 --- a/briar-android/src/main/res/values/strings.xml +++ b/briar-android/src/main/res/values/strings.xml @@ -357,6 +357,7 @@ <string name="notify_sound_setting_default">Default ringtone</string> <string name="notify_sound_setting_disabled">None</string> <string name="choose_ringtone_title">Choose ringtone</string> + <string name="cannot_load_ringtone">Cannot load ringtone</string> <!-- Settings Feedback --> <string name="feedback_settings_title">Feedback</string> -- GitLab