From 5aa44a4d74517c667d878e545792ade795f46f41 Mon Sep 17 00:00:00 2001 From: Peter Serwylo Date: Wed, 8 Mar 2017 13:04:51 +1100 Subject: [PATCH] Handle icon 404s without crashing. Resume settings without crashing on API > 17. The image loading code for the app cards was presuming that the icon returned did indeed exist. In this case, it crashed due to trying to decode a `null` image. I noticed that when returning to the settings fragment (e.g. by closing then reopening F-Droid while viewing), it will attempt to re-remove the priviledged preference. This causes a crash, so we check to see that we still have the preference before deciding to remove it. --- .../org/fdroid/fdroid/views/categories/AppCardController.java | 2 +- .../fdroid/fdroid/views/fragments/PreferencesFragment.java | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/fdroid/fdroid/views/categories/AppCardController.java b/app/src/main/java/org/fdroid/fdroid/views/categories/AppCardController.java index 343d9e5a0..ea6e8c67f 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/categories/AppCardController.java +++ b/app/src/main/java/org/fdroid/fdroid/views/categories/AppCardController.java @@ -150,7 +150,7 @@ public class AppCardController extends RecyclerView.ViewHolder implements ImageL @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { - if (featuredImage != null) { + if (featuredImage != null && loadedImage != null) { new Palette.Builder(loadedImage).generate(new Palette.PaletteAsyncListener() { @Override public void onGenerated(Palette palette) { diff --git a/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java b/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java index bd0ee94b2..c190ac645 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java +++ b/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java @@ -227,7 +227,9 @@ public class PreferencesFragment extends PreferenceFragment // way to easily install from here. if (Build.VERSION.SDK_INT > 19 && !installed) { PreferenceCategory other = (PreferenceCategory) findPreference("pref_category_other"); - other.removePreference(pref); + if (pref != null) { + other.removePreference(pref); + } } else { pref.setEnabled(installed); pref.setDefaultValue(installed);