diff --git a/app/src/debug/java/org/schabi/newpipe/DebugApp.java b/app/src/debug/java/org/schabi/newpipe/DebugApp.java
index 4d763aeb1..6bcf71035 100644
--- a/app/src/debug/java/org/schabi/newpipe/DebugApp.java
+++ b/app/src/debug/java/org/schabi/newpipe/DebugApp.java
@@ -40,8 +40,10 @@ public class DebugApp extends App {
@Override
protected Downloader getDownloader() {
- return DownloaderImpl.init(new OkHttpClient.Builder()
+ DownloaderImpl downloader = DownloaderImpl.init(new OkHttpClient.Builder()
.addNetworkInterceptor(new StethoInterceptor()));
+ setCookiesToDownloader(downloader);
+ return downloader;
}
private void initStetho() {
diff --git a/app/src/main/java/org/schabi/newpipe/App.java b/app/src/main/java/org/schabi/newpipe/App.java
index 7e9df0bed..4d05c69cc 100644
--- a/app/src/main/java/org/schabi/newpipe/App.java
+++ b/app/src/main/java/org/schabi/newpipe/App.java
@@ -5,10 +5,12 @@ import android.app.Application;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
+import android.content.SharedPreferences;
import android.os.Build;
import android.util.Log;
import androidx.annotation.Nullable;
+import androidx.preference.PreferenceManager;
import com.nostra13.universalimageloader.cache.memory.impl.LRULimitedMemoryCache;
import com.nostra13.universalimageloader.core.ImageLoader;
@@ -125,7 +127,16 @@ public class App extends Application {
}
protected Downloader getDownloader() {
- return DownloaderImpl.init(null);
+ DownloaderImpl downloader = DownloaderImpl.init(null);
+ setCookiesToDownloader(downloader);
+ return downloader;
+ }
+
+ protected void setCookiesToDownloader(final DownloaderImpl downloader) {
+ final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(
+ getApplicationContext());
+ final String key = getApplicationContext().getString(R.string.recaptcha_cookies_key);
+ downloader.setCookies(prefs.getString(key, ""));
}
private void configureRxJavaErrorHandler() {
diff --git a/app/src/main/java/org/schabi/newpipe/ReCaptchaActivity.java b/app/src/main/java/org/schabi/newpipe/ReCaptchaActivity.java
index 9741372df..49fb6b179 100644
--- a/app/src/main/java/org/schabi/newpipe/ReCaptchaActivity.java
+++ b/app/src/main/java/org/schabi/newpipe/ReCaptchaActivity.java
@@ -1,6 +1,7 @@
package org.schabi.newpipe;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
@@ -19,6 +20,7 @@ import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.app.NavUtils;
+import androidx.preference.PreferenceManager;
import org.schabi.newpipe.util.ThemeHelper;
@@ -159,6 +161,12 @@ public class ReCaptchaActivity extends AppCompatActivity {
}
if (!foundCookies.isEmpty()) {
+ // save cookies to preferences
+ final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(
+ getApplicationContext());
+ final String key = getApplicationContext().getString(R.string.recaptcha_cookies_key);
+ prefs.edit().putString(key, foundCookies).apply();
+
// give cookies to Downloader class
DownloaderImpl.getInstance().setCookies(foundCookies);
setResult(RESULT_OK);
@@ -170,7 +178,7 @@ public class ReCaptchaActivity extends AppCompatActivity {
}
- private void handleCookiesFromUrl(final @Nullable String url) {
+ private void handleCookiesFromUrl(@Nullable final String url) {
if (MainActivity.DEBUG) {
Log.d(TAG, "handleCookiesFromUrl: url=" + (url == null ? "null" : url));
}
@@ -201,7 +209,7 @@ public class ReCaptchaActivity extends AppCompatActivity {
}
}
- private void handleCookies(final @Nullable String cookies) {
+ private void handleCookies(@Nullable final String cookies) {
if (MainActivity.DEBUG) {
Log.d(TAG, "handleCookies: cookies=" + (cookies == null ? "null" : cookies));
}
@@ -214,7 +222,7 @@ public class ReCaptchaActivity extends AppCompatActivity {
// add here methods to extract cookies for other services
}
- private void addYoutubeCookies(final @NonNull String cookies) {
+ private void addYoutubeCookies(@NonNull final String cookies) {
if (cookies.contains("s_gl=") || cookies.contains("goojf=")
|| cookies.contains("VISITOR_INFO1_LIVE=")
|| cookies.contains("GOOGLE_ABUSE_EXEMPTION=")) {
diff --git a/app/src/main/res/values/settings_keys.xml b/app/src/main/res/values/settings_keys.xml
index b5eeae6aa..ca8528fef 100644
--- a/app/src/main/res/values/settings_keys.xml
+++ b/app/src/main/res/values/settings_keys.xml
@@ -1129,4 +1129,5 @@
- @string/grid
+ recaptcha_cookies_key