Fix crash in notification settings.

fork-5.53.8
Cody Henthorne 2022-01-18 12:11:17 -05:00 zatwierdzone przez Greyson Parrelli
rodzic c48ea68e7e
commit b2038e4ca0
3 zmienionych plików z 14 dodań i 4 usunięć

Wyświetl plik

@ -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)
}

Wyświetl plik

@ -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)
}
}
}

Wyświetl plik

@ -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");