From 533e01e881d18ae6c56368c089e513a2ab305eef Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 5 Nov 2019 12:03:00 -0300 Subject: [PATCH] [android] check if ringtone picker is available before launching Also refuse file:// Uri as they cause a FileUriExposedException as in #1485 --- .../briar/android/settings/SettingsFragment.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 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 b87e0e4cb..3516342d6 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 @@ -511,7 +511,12 @@ public class SettingsFragment extends PreferenceFragmentCompat else uri = Uri.parse(ringtoneUri); i.putExtra(EXTRA_RINGTONE_EXISTING_URI, uri); } - startActivityForResult(i, REQUEST_RINGTONE); + if (i.resolveActivity(requireActivity().getPackageManager()) != null) { + startActivityForResult(i, REQUEST_RINGTONE); + } else { + Toast.makeText(getContext(), R.string.cannot_load_ringtone, + LENGTH_SHORT).show(); + } return true; } @@ -646,7 +651,7 @@ public class SettingsFragment extends PreferenceFragmentCompat } else { // The user chose a ringtone other than the default Ringtone r = RingtoneManager.getRingtone(getContext(), uri); - if (r == null) { + if (r == null || "file".equals(uri.getScheme())) { Toast.makeText(getContext(), R.string.cannot_load_ringtone, LENGTH_SHORT).show(); } else {