|
@@ -1,9 +1,12 @@
|
1
|
1
|
package com.RNFetchBlob;
|
2
|
2
|
|
|
3
|
+import android.app.Activity;
|
3
|
4
|
import android.content.Intent;
|
4
|
5
|
import android.net.Uri;
|
|
6
|
+import android.util.Log;
|
5
|
7
|
|
6
|
8
|
import com.RNFetchBlob.Utils.RNFBCookieJar;
|
|
9
|
+import com.facebook.react.bridge.ActivityEventListener;
|
7
|
10
|
import com.facebook.react.bridge.Callback;
|
8
|
11
|
import com.facebook.react.bridge.LifecycleEventListener;
|
9
|
12
|
import com.facebook.react.bridge.Promise;
|
|
@@ -15,11 +18,16 @@ import com.facebook.react.bridge.ReadableMap;
|
15
|
18
|
import com.facebook.react.bridge.WritableArray;
|
16
|
19
|
import com.facebook.react.bridge.WritableMap;
|
17
|
20
|
|
|
21
|
+import java.util.HashMap;
|
18
|
22
|
import java.util.Map;
|
|
23
|
+import java.util.UUID;
|
19
|
24
|
import java.util.concurrent.LinkedBlockingQueue;
|
20
|
25
|
import java.util.concurrent.ThreadPoolExecutor;
|
21
|
26
|
import java.util.concurrent.TimeUnit;
|
22
|
27
|
|
|
28
|
+import static android.app.Activity.RESULT_OK;
|
|
29
|
+import static com.RNFetchBlob.RNFetchBlobConst.GET_CONTENT_INTENT;
|
|
30
|
+
|
23
|
31
|
public class RNFetchBlob extends ReactContextBaseJavaModule {
|
24
|
32
|
|
25
|
33
|
static ReactApplicationContext RCTContext;
|
|
@@ -28,12 +36,28 @@ public class RNFetchBlob extends ReactContextBaseJavaModule {
|
28
|
36
|
static LinkedBlockingQueue<Runnable> fsTaskQueue = new LinkedBlockingQueue<>();
|
29
|
37
|
static ThreadPoolExecutor fsThreadPool = new ThreadPoolExecutor(2, 10, 5000, TimeUnit.MILLISECONDS, taskQueue);
|
30
|
38
|
static public boolean ActionViewVisible = false;
|
|
39
|
+ static HashMap<Integer, Promise> promiseTable = new HashMap<>();
|
31
|
40
|
|
32
|
41
|
public RNFetchBlob(ReactApplicationContext reactContext) {
|
33
|
42
|
|
34
|
43
|
super(reactContext);
|
35
|
44
|
|
36
|
45
|
RCTContext = reactContext;
|
|
46
|
+ reactContext.addActivityEventListener(new ActivityEventListener() {
|
|
47
|
+ @Override
|
|
48
|
+ public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) {
|
|
49
|
+ if(requestCode == GET_CONTENT_INTENT && resultCode == RESULT_OK) {
|
|
50
|
+ Uri d = data.getData();
|
|
51
|
+ promiseTable.get(GET_CONTENT_INTENT).resolve(d.toString());
|
|
52
|
+ promiseTable.remove(GET_CONTENT_INTENT);
|
|
53
|
+ }
|
|
54
|
+ }
|
|
55
|
+
|
|
56
|
+ @Override
|
|
57
|
+ public void onNewIntent(Intent intent) {
|
|
58
|
+
|
|
59
|
+ }
|
|
60
|
+ });
|
37
|
61
|
}
|
38
|
62
|
|
39
|
63
|
@Override
|
|
@@ -322,4 +346,16 @@ public class RNFetchBlob extends ReactContextBaseJavaModule {
|
322
|
346
|
new RNFetchBlobReq(options, taskId, method, url, headers, null, body, callback).run();
|
323
|
347
|
}
|
324
|
348
|
|
|
349
|
+ @ReactMethod
|
|
350
|
+ public void getContentIntent(String mime, Promise promise) {
|
|
351
|
+ Intent i = new Intent(Intent.ACTION_GET_CONTENT);
|
|
352
|
+ if(mime != null)
|
|
353
|
+ i.setType(mime);
|
|
354
|
+ else
|
|
355
|
+ i.setType("*/*");
|
|
356
|
+ promiseTable.put(GET_CONTENT_INTENT, promise);
|
|
357
|
+ this.getReactApplicationContext().startActivityForResult(i, GET_CONTENT_INTENT, null);
|
|
358
|
+
|
|
359
|
+ }
|
|
360
|
+
|
325
|
361
|
}
|