diff --git a/app/src/main/java/fr/free/nrw/commons/Media.java b/app/src/main/java/fr/free/nrw/commons/Media.java index 26a1d038b..21e6cfe9e 100644 --- a/app/src/main/java/fr/free/nrw/commons/Media.java +++ b/app/src/main/java/fr/free/nrw/commons/Media.java @@ -120,8 +120,9 @@ public class Media implements Parcelable { return localUri; } + @Nullable public String getImageUrl() { - if (imageUrl == null) { + if (imageUrl == null && this.getFilename() != null) { imageUrl = Utils.makeThumbBaseUrl(this.getFilename()); } return imageUrl; diff --git a/app/src/main/java/fr/free/nrw/commons/Utils.java b/app/src/main/java/fr/free/nrw/commons/Utils.java index 7274c5319..989083138 100644 --- a/app/src/main/java/fr/free/nrw/commons/Utils.java +++ b/app/src/main/java/fr/free/nrw/commons/Utils.java @@ -3,6 +3,7 @@ package fr.free.nrw.commons; import android.content.Context; import android.os.Build; import android.preference.PreferenceManager; +import android.support.annotation.NonNull; import android.text.Html; import android.text.Spanned; @@ -127,7 +128,7 @@ public class Utils { return isoFormat.format(date); } - public static String makeThumbBaseUrl(String filename) { + public static String makeThumbBaseUrl(@NonNull String filename) { String name = new PageTitle(filename).getPrefixedText(); String sha = new String(Hex.encodeHex(DigestUtils.md5(name))); return String.format("%s/%s/%s/%s", BuildConfig.IMAGE_URL_BASE, sha.substring(0, 1), sha.substring(0, 2), urlEncode(name)); diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsSyncAdapter.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsSyncAdapter.java index fdcc52380..c2363ebae 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsSyncAdapter.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsSyncAdapter.java @@ -47,6 +47,9 @@ public class ContributionsSyncAdapter extends AbstractThreadedSyncAdapter { } private boolean fileExists(ContentProviderClient client, String filename) { + if (filename == null) { + return false; + } Cursor cursor = null; try { cursor = client.query(BASE_URI, diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java index 0b718df2a..3008632d9 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java @@ -141,8 +141,14 @@ public class MediaDetailPagerFragment extends Fragment implements ViewPager.OnPa private void downloadMedia(Media m) { String imageUrl = m.getImageUrl(), fileName = m.getFilename(); + + if (imageUrl == null || fileName == null) { + return; + } + // Strip 'File:' from beginning of filename, we really shouldn't store it fileName = fileName.replaceFirst("^File:", ""); + Uri imageUri = Uri.parse(imageUrl); DownloadManager.Request req = new DownloadManager.Request(imageUri);