From cfae361b8898803815a00a721327376ea1dfd516 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Sun, 6 Apr 2025 16:03:55 +0200 Subject: [PATCH 1/5] catch IllegalArgumentException in InstantOnboardingActivity.progressError() --- .../thoughtcrime/securesms/InstantOnboardingActivity.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java index fe575a452..bc264b516 100644 --- a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java @@ -423,7 +423,12 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements private void progressError(String data2) { if (progressDialog != null) { - progressDialog.dismiss(); + try { + progressDialog.dismiss(); + } catch (IllegalArgumentException e) { + // see https://stackoverflow.com/a/5102572/4557005 + Log.w(TAG, e); + } } WelcomeActivity.maybeShowConfigurationError(this, data2); } From 765e2b490e39105364326041a5f64fb3a25d877d Mon Sep 17 00:00:00 2001 From: adbenitez Date: Sun, 6 Apr 2025 16:12:49 +0200 Subject: [PATCH 2/5] avoid NPE in UriGlideRenderer --- .../org/thoughtcrime/securesms/scribbles/UriGlideRenderer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/thoughtcrime/securesms/scribbles/UriGlideRenderer.java b/src/main/java/org/thoughtcrime/securesms/scribbles/UriGlideRenderer.java index f7cb04ed2..3aaf91267 100644 --- a/src/main/java/org/thoughtcrime/securesms/scribbles/UriGlideRenderer.java +++ b/src/main/java/org/thoughtcrime/securesms/scribbles/UriGlideRenderer.java @@ -303,7 +303,7 @@ final class UriGlideRenderer implements Renderer { @Override public void writeToParcel(Parcel dest, int flags) { - dest.writeString(imageUri.toString()); + dest.writeString(imageUri!=null? imageUri.toString() : ""); dest.writeInt(decryptable ? 1 : 0); dest.writeInt(maxWidth); dest.writeInt(maxHeight); From 43941f9075fbbba350caec4ce3a5063b59d598cf Mon Sep 17 00:00:00 2001 From: adbenitez Date: Sun, 6 Apr 2025 18:20:51 +0200 Subject: [PATCH 3/5] avoid SecurityException in NotificationsPreferenceFragment --- .../NotificationsPreferenceFragment.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java b/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java index d0ddbe803..80c72386c 100644 --- a/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java +++ b/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java @@ -14,6 +14,7 @@ import android.os.Bundle; import android.os.PowerManager; import android.provider.Settings; import android.text.TextUtils; +import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -31,6 +32,7 @@ import org.thoughtcrime.securesms.util.Prefs; public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragment { + private static final String TAG = NotificationsPreferenceFragment.class.getSimpleName(); private static final int REQUEST_CODE_NOTIFICATION_SELECTED = 1; private CheckBoxPreference ignoreBattery; @@ -159,7 +161,17 @@ public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragme Ringtone tone = RingtoneManager.getRingtone(getActivity(), value); if (tone != null) { - preference.setSummary(tone.getTitle(getActivity())); + String summary; + try { + summary = tone.getTitle(getActivity()); + } catch (SecurityException e) { + // this could happen in some phones when user selects ringtone from + // external storage and later removes the read from external storage permission + // and later this method is called from initializeRingtoneSummary() + summary = "???"; + Log.w(TAG, e); + } + preference.setSummary(summary); } } From 2613be7216f9a3f6ac87a976007c28b009a5fe5b Mon Sep 17 00:00:00 2001 From: adbenitez Date: Sun, 6 Apr 2025 18:34:39 +0200 Subject: [PATCH 4/5] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cd1093f9e..658b9fa9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ * remove mostly non-telling transport addresses when referring to a contact; the contact's profile gives a much better overview * Disable AEAP to enable us to overhaul some things - there are big changes underway in this area, which will come in a few months +* avoid crash in Notifications preferences if ringtone title can't be read ## v1.56.1 2025-03 From f9ac0375b97efbf7a494ec16337d73ddc8824e5d Mon Sep 17 00:00:00 2001 From: adb Date: Fri, 11 Apr 2025 14:29:14 +0000 Subject: [PATCH 5/5] Update src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java Co-authored-by: bjoern --- .../securesms/preferences/NotificationsPreferenceFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java b/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java index 80c72386c..2356e89d0 100644 --- a/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java +++ b/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java @@ -168,7 +168,7 @@ public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragme // this could happen in some phones when user selects ringtone from // external storage and later removes the read from external storage permission // and later this method is called from initializeRingtoneSummary() - summary = "???"; + summary = ""; Log.w(TAG, e); } preference.setSummary(summary);