@@ -127,13 +127,15 @@ public void run() {
127
127
Uri uri = Uri .parse (url );
128
128
DownloadManager .Request req = new DownloadManager .Request (uri );
129
129
req .setNotificationVisibility (DownloadManager .Request .VISIBILITY_VISIBLE_NOTIFY_COMPLETED );
130
-
131
- if (options .addAndroidDownloads .hasKey ("title" )) {
130
+ if (options .addAndroidDownloads .hasKey ("title" )) {
132
131
req .setTitle (options .addAndroidDownloads .getString ("title" ));
133
132
}
134
- if (options .addAndroidDownloads .hasKey ("description" )) {
133
+ if (options .addAndroidDownloads .hasKey ("description" )) {
135
134
req .setDescription (options .addAndroidDownloads .getString ("description" ));
136
135
}
136
+ if (options .addAndroidDownloads .hasKey ("path" )) {
137
+ req .setDestinationUri (Uri .parse ("file://" + options .addAndroidDownloads .getString ("path" )));
138
+ }
137
139
// set headers
138
140
ReadableMapKeySetIterator it = headers .keySetIterator ();
139
141
while (it .hasNextKey ()) {
@@ -553,14 +555,28 @@ public void onReceive(Context context, Intent intent) {
553
555
String contentUri = c .getString (c .getColumnIndex (DownloadManager .COLUMN_LOCAL_URI ));
554
556
Uri uri = Uri .parse (contentUri );
555
557
Cursor cursor = appCtx .getContentResolver ().query (uri , new String []{android .provider .MediaStore .Images .ImageColumns .DATA }, null , null , null );
558
+ // use default destination of DownloadManager
556
559
if (cursor != null ) {
557
560
cursor .moveToFirst ();
558
561
String filePath = cursor .getString (0 );
559
562
cursor .close ();
560
- this .callback .invoke (null , null , filePath );
563
+ this .callback .invoke (null , RNFetchBlobConst .RNFB_RESPONSE_PATH , filePath );
564
+ }
565
+ // custom destination
566
+ else {
567
+ if (options .addAndroidDownloads .hasKey ("path" )) {
568
+ try {
569
+ String customDest = options .addAndroidDownloads .getString ("path" );
570
+ boolean exists = new File (customDest ).exists ();
571
+ if (!exists )
572
+ throw new Exception ("Download manager download failed, the file does not downloaded to destination." );
573
+ callback .invoke (null , RNFetchBlobConst .RNFB_RESPONSE_PATH , customDest );
574
+
575
+ } catch (Exception ex ) {
576
+ this .callback .invoke (ex .getLocalizedMessage (), null , null );
577
+ }
578
+ }
561
579
}
562
- else
563
- this .callback .invoke (null , null , null );
564
580
}
565
581
}
566
582
}
0 commit comments