From 7f100b3fa60d30fc1cc7efe3a56956b468bda31c Mon Sep 17 00:00:00 2001 From: Burt Wiley Snyder Date: Fri, 1 Feb 2019 09:57:19 -0500 Subject: [PATCH] Null handling in OnlineFeedViewActivity (#3004) --- .../activity/OnlineFeedViewActivity.java | 24 ++++++++++++------- .../antennapod/core/util/URLChecker.java | 3 ++- core/src/main/res/values/strings.xml | 1 + 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java index 73da9a834..4b9415084 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java @@ -29,6 +29,7 @@ import android.widget.TextView; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; + import org.apache.commons.lang3.StringUtils; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; @@ -140,7 +141,7 @@ public class OnlineFeedViewActivity extends AppCompatActivity { StorageUtils.checkStorageAvailability(this); - final String feedUrl; + String feedUrl = null; if (getIntent().hasExtra(ARG_FEEDURL)) { feedUrl = getIntent().getStringExtra(ARG_FEEDURL); } else if (TextUtils.equals(getIntent().getAction(), Intent.ACTION_SEND) @@ -150,16 +151,23 @@ public class OnlineFeedViewActivity extends AppCompatActivity { if (actionBar != null) { actionBar.setTitle(R.string.add_feed_label); } - } else { - throw new IllegalArgumentException("Activity must be started with feedurl argument!"); } - Log.d(TAG, "Activity was started with url " + feedUrl); - setLoadingLayout(); - if (savedInstanceState == null) { - startFeedDownload(feedUrl, null, null); + if (feedUrl == null) { + Log.e(TAG, "feedUrl is null."); + new AlertDialog.Builder(OnlineFeedViewActivity.this). + setNeutralButton(android.R.string.ok, + (dialog, which) -> dialog.dismiss()). + setTitle(R.string.error_label). + setMessage(R.string.null_value_podcast_error).create().show(); } else { - startFeedDownload(feedUrl, savedInstanceState.getString("username"), savedInstanceState.getString("password")); + Log.d(TAG, "Activity was started with url " + feedUrl); + setLoadingLayout(); + if (savedInstanceState == null) { + startFeedDownload(feedUrl, null, null); + } else { + startFeedDownload(feedUrl, savedInstanceState.getString("username"), savedInstanceState.getString("password")); + } } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/URLChecker.java b/core/src/main/java/de/danoeh/antennapod/core/util/URLChecker.java index 40faa1dd2..ffc6a6e28 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/URLChecker.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/URLChecker.java @@ -1,6 +1,7 @@ package de.danoeh.antennapod.core.util; import android.net.Uri; +import android.support.annotation.NonNull; import android.util.Log; import de.danoeh.antennapod.core.BuildConfig; @@ -29,7 +30,7 @@ public final class URLChecker { * @param url The url which is going to be prepared * @return The prepared url */ - public static String prepareURL(String url) { + public static String prepareURL(@NonNull String url) { url = url.trim(); if (url.startsWith("feed://")) { if (BuildConfig.DEBUG) Log.d(TAG, "Replacing feed:// with http://"); diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index 21314c80c..e4cd4789e 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -229,6 +229,7 @@ Media file Image An error occurred when trying to download the file:\u0020 + No podcast was provided that could be shown. Authentication required The resource you requested requires a username and a password Confirm Mobile Download