Skip to content

Commit 34c076a

Browse files
authored
Merge pull request #5 from jackmu95/fix-android-download-manager-cookies
Fix android download manager cookies
2 parents efec350 + d549db1 commit 34c076a

File tree

1 file changed

+19
-8
lines changed

1 file changed

+19
-8
lines changed

android/src/main/java/com/RNFetchBlob/RNFetchBlobReq.java

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@
66
import android.content.Intent;
77
import android.content.IntentFilter;
88
import android.database.Cursor;
9-
import android.net.Uri;
10-
import android.os.Build;
11-
import androidx.annotation.NonNull;
9+
import android.net.ConnectivityManager;
1210
import android.net.Network;
13-
import android.net.NetworkInfo;
1411
import android.net.NetworkCapabilities;
15-
import android.net.ConnectivityManager;
12+
import android.net.NetworkInfo;
13+
import android.net.Uri;
14+
import android.os.Build;
1615
import android.util.Base64;
16+
import android.webkit.CookieManager;
17+
import androidx.annotation.NonNull;
1718

1819
import com.RNFetchBlob.Response.RNFetchBlobDefaultResp;
1920
import com.RNFetchBlob.Response.RNFetchBlobFileResp;
@@ -183,15 +184,25 @@ public void run() {
183184
if(options.addAndroidDownloads.hasKey("mime")) {
184185
req.setMimeType(options.addAndroidDownloads.getString("mime"));
185186
}
186-
// set headers
187-
ReadableMapKeySetIterator it = headers.keySetIterator();
188187
if(options.addAndroidDownloads.hasKey("mediaScannable") && options.addAndroidDownloads.hasKey("mediaScannable")) {
189188
req.allowScanningByMediaScanner();
190189
}
190+
// set headers
191+
ReadableMapKeySetIterator it = headers.keySetIterator();
191192
while (it.hasNextKey()) {
192193
String key = it.nextKey();
193194
req.addRequestHeader(key, headers.getString(key));
194195
}
196+
// Attempt to add cookie, if it exists
197+
URL urlObj = null;
198+
try {
199+
urlObj = new URL(url);
200+
String baseUrl = urlObj.getProtocol() + "://" + urlObj.getHost();
201+
String cookie = CookieManager.getInstance().getCookie(baseUrl);
202+
req.addRequestHeader("Cookie", cookie);
203+
} catch (MalformedURLException e) {
204+
e.printStackTrace();
205+
}
195206
Context appCtx = RNFetchBlob.RCTContext.getApplicationContext();
196207
DownloadManager dm = (DownloadManager) appCtx.getSystemService(Context.DOWNLOAD_SERVICE);
197208
downloadManagerId = dm.enqueue(req);
@@ -565,7 +576,7 @@ private void done(Response resp) {
565576
// This usually mean the data is contains invalid unicode characters but still valid data,
566577
// it's binary data, so send it as a normal string
567578
catch(CharacterCodingException ignored) {
568-
579+
569580
if(responseFormat == ResponseFormat.UTF8) {
570581
String utf8 = new String(b);
571582
callback.invoke(null, RNFetchBlobConst.RNFB_RESPONSE_UTF8, utf8);

0 commit comments

Comments
 (0)