diff --git a/app/src/main/java/de/danoeh/antennapod/actionbutton/DownloadActionButton.java b/app/src/main/java/de/danoeh/antennapod/actionbutton/DownloadActionButton.java index 5413d6369..21e751016 100644 --- a/app/src/main/java/de/danoeh/antennapod/actionbutton/DownloadActionButton.java +++ b/app/src/main/java/de/danoeh/antennapod/actionbutton/DownloadActionButton.java @@ -79,7 +79,8 @@ public class DownloadActionButton extends ItemActionButton { }) .setNegativeButton(R.string.cancel_label, null); if (NetworkUtils.isNetworkRestricted() && NetworkUtils.isVpnOverWifi()) { - builder.setMessage(R.string.confirm_mobile_download_dialog_message_vpn); + builder.setMessage(context.getString(R.string.confirm_mobile_download_dialog_message) + + "\n\n" + context.getString(R.string.confirm_mobile_download_dialog_message_vpn)); } else { builder.setMessage(R.string.confirm_mobile_download_dialog_message); } diff --git a/app/src/main/java/de/danoeh/antennapod/ui/StreamingConfirmationDialog.java b/app/src/main/java/de/danoeh/antennapod/ui/StreamingConfirmationDialog.java index 6199aa0fd..cf27a15b3 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/StreamingConfirmationDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/StreamingConfirmationDialog.java @@ -3,6 +3,7 @@ package de.danoeh.antennapod.ui; import android.content.Context; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import de.danoeh.antennapod.R; +import de.danoeh.antennapod.net.common.NetworkUtils; import de.danoeh.antennapod.playback.service.PlaybackServiceStarter; import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.model.playback.Playable; @@ -17,16 +18,21 @@ public class StreamingConfirmationDialog { } public void show() { - new MaterialAlertDialogBuilder(context) + MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(context) .setTitle(R.string.stream_label) - .setMessage(R.string.confirm_mobile_streaming_notification_message) .setPositiveButton(R.string.confirm_mobile_streaming_button_once, (dialog, which) -> stream()) .setNegativeButton(R.string.confirm_mobile_streaming_button_always, (dialog, which) -> { UserPreferences.setAllowMobileStreaming(true); stream(); }) - .setNeutralButton(R.string.cancel_label, null) - .show(); + .setNeutralButton(R.string.cancel_label, null); + if (NetworkUtils.isNetworkRestricted() && NetworkUtils.isVpnOverWifi()) { + builder.setMessage(context.getString(R.string.confirm_mobile_streaming_notification_message) + + "\n\n" + context.getString(R.string.confirm_mobile_download_dialog_message_vpn)); + } else { + builder.setMessage(R.string.confirm_mobile_streaming_notification_message); + } + builder.show(); } private void stream() { diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/onlinefeedview/OnlineFeedViewActivity.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/onlinefeedview/OnlineFeedViewActivity.java index 72b9ba683..ad2fffcd5 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/onlinefeedview/OnlineFeedViewActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/onlinefeedview/OnlineFeedViewActivity.java @@ -295,6 +295,16 @@ public class OnlineFeedViewActivity extends AppCompatActivity { .observeOn(AndroidSchedulers.mainThread()) .subscribe(this::showFeedFragment, error -> { error.printStackTrace(); + if (error instanceof UnsupportedFeedtypeException + && "html".equalsIgnoreCase(((UnsupportedFeedtypeException) error).getRootElement())) { + if (getIntent().getBooleanExtra(ARG_WAS_MANUAL_URL, false)) { + showErrorDialog(getString(R.string.download_error_unsupported_type_html_manual), + error.getMessage()); + } else { + showErrorDialog(getString(R.string.download_error_unsupported_type_html), error.getMessage()); + } + return; + } showErrorDialog(getString(R.string.download_error_parser_exception), error.getMessage()); }); } @@ -319,9 +329,6 @@ public class OnlineFeedViewActivity extends AppCompatActivity { boolean dialogShown = showFeedDiscoveryDialog(destinationFile, selectedDownloadUrl); if (dialogShown) { return null; // We handled the problem - } else { - throw new UnsupportedFeedtypeException( - getString(R.string.download_error_unsupported_type_html) + "\n" + e.getMessage()); } } throw e; diff --git a/ui/i18n/src/main/res/values/strings.xml b/ui/i18n/src/main/res/values/strings.xml index e79d6f4fc..6c59ef1fe 100644 --- a/ui/i18n/src/main/res/values/strings.xml +++ b/ui/i18n/src/main/res/values/strings.xml @@ -301,6 +301,7 @@ The podcast host\'s server sent a broken podcast feed. We recommend checking with a podcast validator such as castfeedvalidator.com and contacting the podcast creator to let them know. Unsupported feed type The podcast host\'s server sent a website, not a podcast. + The address you entered is a website address, not a podcast RSS address. The podcast host\'s server does not know where to find the file. It may have been deleted. Connection error No network connection @@ -330,7 +331,7 @@ Authentication required Confirm mobile download Downloading over mobile data connection is disabled in the settings. AntennaPod can download the episode later automatically when Wi-Fi is available. - Your VPN app pretends to be a mobile network (metered connection). Downloading over mobile data connection is disabled in the settings. If you want this problem to be fixed, contact the creators of your VPN app. + - Using a VPN? Your VPN app pretends to be a mobile network (metered connection). If you want this problem fixed, contact the creators of your VPN app.\n- Not using a VPN? Open the Android Wi-Fi settings and change the type of your Wi-Fi to not be metered. Download later Download anyway