diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsFragment.kt index f23f26dbcf..9cbfd55c56 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsFragment.kt @@ -6,6 +6,7 @@ import android.content.Intent import android.graphics.ColorFilter import android.graphics.PorterDuff import android.graphics.PorterDuffColorFilter +import android.media.Ringtone import android.media.RingtoneManager import android.net.Uri import android.provider.Settings @@ -17,6 +18,7 @@ import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import androidx.preference.PreferenceManager +import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.settings.DSLConfiguration import org.thoughtcrime.securesms.components.settings.DSLSettingsAdapter @@ -36,6 +38,7 @@ import org.thoughtcrime.securesms.util.navigation.safeNavigate private const val MESSAGE_SOUND_SELECT: Int = 1 private const val CALL_RINGTONE_SELECT: Int = 2 +private val TAG = Log.tag(NotificationsSettingsFragment::class.java) class NotificationsSettingsFragment : DSLSettingsFragment(R.string.preferences__notifications) { @@ -248,9 +251,14 @@ class NotificationsSettingsFragment : DSLSettingsFragment(R.string.preferences__ return if (TextUtils.isEmpty(uri.toString())) { getString(R.string.preferences__silent) } else { - val tone = RingtoneUtil.getRingtone(requireContext(), uri) + val tone: Ringtone? = RingtoneUtil.getRingtone(requireContext(), uri) if (tone != null) { - tone.getTitle(requireContext()) ?: getString(R.string.NotificationsSettingsFragment__unknown_ringtone) + try { + tone.getTitle(requireContext()) ?: getString(R.string.NotificationsSettingsFragment__unknown_ringtone) + } catch (e: SecurityException) { + Log.w(TAG, "Unable to get title for ringtone", e) + return getString(R.string.NotificationsSettingsFragment__unknown_ringtone) + } } else { getString(R.string.preferences__default) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsFragment.kt index 9b056c73ee..ab564c17b9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsFragment.kt @@ -20,7 +20,6 @@ import org.thoughtcrime.securesms.components.settings.configure import org.thoughtcrime.securesms.database.RecipientDatabase import org.thoughtcrime.securesms.notifications.NotificationChannels import org.thoughtcrime.securesms.util.RingtoneUtil -import java.lang.NullPointerException private val TAG = Log.tag(CustomNotificationsSettingsFragment::class.java) @@ -149,6 +148,9 @@ class CustomNotificationsSettingsFragment : DSLSettingsFragment(R.string.CustomN } catch (e: NullPointerException) { Log.w(TAG, "Could not get correct title for ringtone.", e) context.getString(R.string.CustomNotificationsDialogFragment__unknown) + } catch (e: SecurityException) { + Log.w(TAG, "Could not get correct title for ringtone.", e) + context.getString(R.string.CustomNotificationsDialogFragment__unknown) } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/RingtoneUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/RingtoneUtil.java index 0df1ad0242..f340a10625 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/RingtoneUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/RingtoneUtil.java @@ -42,7 +42,7 @@ public final class RingtoneUtil { try { return RingtoneManager.getActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE); } catch (SecurityException e) { - Log.w(TAG, "Failed to set ringtone with first fallback approach", e); + Log.w(TAG, "Failed to get ringtone with first fallback approach", e); } Log.i(TAG, "Attempting to get default ringtone directly via reflection");