diff options
Diffstat (limited to 'core/src')
6 files changed, 37 insertions, 11 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/ProviderInstallerInterceptor.java b/core/src/main/java/de/danoeh/antennapod/core/service/ProviderInstallerInterceptor.java new file mode 100644 index 000000000..4fa1fc3d7 --- /dev/null +++ b/core/src/main/java/de/danoeh/antennapod/core/service/ProviderInstallerInterceptor.java @@ -0,0 +1,18 @@ +package de.danoeh.antennapod.core.service; + +import androidx.annotation.NonNull; +import okhttp3.Interceptor; +import okhttp3.Response; + +import java.io.IOException; + +public class ProviderInstallerInterceptor implements Interceptor { + public static Runnable installer = () -> { }; + + @Override + @NonNull + public Response intercept(Chain chain) throws IOException { + installer.run(); + return chain.proceed(chain.request()); + } +} diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/UserAgentInterceptor.java b/core/src/main/java/de/danoeh/antennapod/core/service/UserAgentInterceptor.java index 5fcf8317d..3676347f7 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/UserAgentInterceptor.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/UserAgentInterceptor.java @@ -7,10 +7,6 @@ import okhttp3.Response; import java.io.IOException; public class UserAgentInterceptor implements Interceptor { - - public UserAgentInterceptor() { - } - @Override public Response intercept(Chain chain) throws IOException { return chain.proceed(chain.request().newBuilder() diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java index e0c23bdac..d0484f2a2 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java @@ -32,6 +32,7 @@ import javax.net.ssl.TrustManagerFactory; import javax.net.ssl.X509TrustManager; import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.core.service.ProviderInstallerInterceptor; import de.danoeh.antennapod.core.service.UserAgentInterceptor; import de.danoeh.antennapod.core.storage.DBWriter; import okhttp3.Cache; @@ -116,6 +117,7 @@ public class AntennapodHttpClient { } return response; }); + builder.interceptors().add(new ProviderInstallerInterceptor()); builder.interceptors().add(new BasicAuthorizationInterceptor()); builder.networkInterceptors().add(new UserAgentInterceptor()); diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java index ba7019fd9..e44aa716a 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java @@ -479,12 +479,9 @@ public class DownloadService extends Service { } handler.post(() -> { downloads.add(downloader); + downloadExecutor.submit(downloader); postDownloaders(); }); - // Needs to be done after postDownloaders() because otherwise, - // it might take long before the progress bar circle starts spinning - ClientConfig.installSslProvider(this); - handler.post(() -> downloadExecutor.submit(downloader)); } handler.post(this::queryDownloads); } 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 e1dffef97..ac7f4848c 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 @@ -41,7 +41,7 @@ public final class URLChecker { String lowerCaseUrl = url.toLowerCase(); // protocol names are case insensitive if (lowerCaseUrl.startsWith("feed://")) { if (BuildConfig.DEBUG) Log.d(TAG, "Replacing feed:// with http://"); - return url.replaceFirst("feed://", "http://"); + return prepareURL(url.substring("feed://".length())); } else if (lowerCaseUrl.startsWith("pcast://")) { if (BuildConfig.DEBUG) Log.d(TAG, "Removing pcast://"); return prepareURL(url.substring("pcast://".length())); @@ -50,7 +50,7 @@ public final class URLChecker { return prepareURL(url.substring("pcast:".length())); } else if (lowerCaseUrl.startsWith("itpc")) { if (BuildConfig.DEBUG) Log.d(TAG, "Replacing itpc:// with http://"); - return url.replaceFirst("itpc://", "http://"); + return prepareURL(url.substring("itpc://".length())); } else if (lowerCaseUrl.startsWith(AP_SUBSCRIBE)) { if (BuildConfig.DEBUG) Log.d(TAG, "Removing antennapod-subscribe://"); return prepareURL(url.substring(AP_SUBSCRIBE.length())); diff --git a/core/src/play/java/de/danoeh/antennapod/core/ClientConfig.java b/core/src/play/java/de/danoeh/antennapod/core/ClientConfig.java index 60fd5f4ee..09d9f4623 100644 --- a/core/src/play/java/de/danoeh/antennapod/core/ClientConfig.java +++ b/core/src/play/java/de/danoeh/antennapod/core/ClientConfig.java @@ -1,8 +1,8 @@ package de.danoeh.antennapod.core; import android.content.Context; +import android.content.Intent; import android.util.Log; - import com.google.android.gms.common.GoogleApiAvailability; import com.google.android.gms.common.GooglePlayServicesNotAvailableException; import com.google.android.gms.common.GooglePlayServicesRepairableException; @@ -12,6 +12,7 @@ import de.danoeh.antennapod.core.preferences.PlaybackPreferences; import de.danoeh.antennapod.core.preferences.SleepTimerPreferences; import de.danoeh.antennapod.core.preferences.UsageStatistics; import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.core.service.ProviderInstallerInterceptor; import de.danoeh.antennapod.core.service.download.AntennapodHttpClient; import de.danoeh.antennapod.core.storage.PodDBAdapter; import de.danoeh.antennapod.core.util.NetworkUtils; @@ -64,6 +65,18 @@ public class ClientConfig { } else { Log.v(TAG, "Cast is disabled. All Cast-related initialization will be skipped."); } + ProviderInstaller.installIfNeededAsync(context, new ProviderInstaller.ProviderInstallListener() { + @Override + public void onProviderInstalled() { + Log.e(TAG, "onProviderInstalled"); + } + + @Override + public void onProviderInstallFailed(int i, Intent intent) { + Log.e(TAG, "onProviderInstallFailed"); + } + }); + ProviderInstallerInterceptor.installer = () -> installSslProvider(context); AntennapodHttpClient.setCacheDirectory(new File(context.getCacheDir(), "okhttp")); SleepTimerPreferences.init(context); RxJavaErrorHandlerSetup.setupRxJavaErrorHandler(); |