浏览代码

Add ActionView callback #165

Ben Hsieh 8 年前
父节点
当前提交
c6119a63c3
共有 1 个文件被更改,包括 28 次插入3 次删除
  1. 28
    3
      src/android/src/main/java/com/RNFetchBlob/RNFetchBlob.java

+ 28
- 3
src/android/src/main/java/com/RNFetchBlob/RNFetchBlob.java 查看文件

2
 
2
 
3
 import android.content.Intent;
3
 import android.content.Intent;
4
 import android.net.Uri;
4
 import android.net.Uri;
5
+import android.os.Bundle;
6
+import android.widget.SearchView;
5
 
7
 
6
 import com.RNFetchBlob.Utils.RNFBCookieJar;
8
 import com.RNFetchBlob.Utils.RNFBCookieJar;
9
+import com.facebook.react.LifecycleState;
7
 import com.facebook.react.bridge.Callback;
10
 import com.facebook.react.bridge.Callback;
11
+import com.facebook.react.bridge.LifecycleEventListener;
8
 import com.facebook.react.bridge.Promise;
12
 import com.facebook.react.bridge.Promise;
9
 import com.facebook.react.bridge.ReactApplicationContext;
13
 import com.facebook.react.bridge.ReactApplicationContext;
10
 import com.facebook.react.bridge.ReactContextBaseJavaModule;
14
 import com.facebook.react.bridge.ReactContextBaseJavaModule;
25
     static ThreadPoolExecutor threadPool = new ThreadPoolExecutor(5, 10, 5000, TimeUnit.MILLISECONDS, taskQueue);
29
     static ThreadPoolExecutor threadPool = new ThreadPoolExecutor(5, 10, 5000, TimeUnit.MILLISECONDS, taskQueue);
26
     static LinkedBlockingQueue<Runnable> fsTaskQueue = new LinkedBlockingQueue<>();
30
     static LinkedBlockingQueue<Runnable> fsTaskQueue = new LinkedBlockingQueue<>();
27
     static ThreadPoolExecutor fsThreadPool = new ThreadPoolExecutor(2, 10, 5000, TimeUnit.MILLISECONDS, taskQueue);
31
     static ThreadPoolExecutor fsThreadPool = new ThreadPoolExecutor(2, 10, 5000, TimeUnit.MILLISECONDS, taskQueue);
32
+    static public boolean ActionViewVisible = false;
28
 
33
 
29
     public RNFetchBlob(ReactApplicationContext reactContext) {
34
     public RNFetchBlob(ReactApplicationContext reactContext) {
30
 
35
 
31
         super(reactContext);
36
         super(reactContext);
37
+
32
         RCTContext = reactContext;
38
         RCTContext = reactContext;
33
     }
39
     }
34
 
40
 
54
     }
60
     }
55
 
61
 
56
     @ReactMethod
62
     @ReactMethod
57
-    public void actionViewIntent(String path, String mime, Promise promise) {
63
+    public void actionViewIntent(String path, String mime, final Promise promise) {
58
         try {
64
         try {
59
             Intent intent= new Intent(Intent.ACTION_VIEW)
65
             Intent intent= new Intent(Intent.ACTION_VIEW)
60
                     .setDataAndType(Uri.parse("file://" + path), mime);
66
                     .setDataAndType(Uri.parse("file://" + path), mime);
61
             intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
67
             intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
62
-
63
             this.getReactApplicationContext().startActivity(intent);
68
             this.getReactApplicationContext().startActivity(intent);
64
-            promise.resolve(null);
69
+            ActionViewVisible = true;
70
+            final boolean triggered = false;
71
+            final LifecycleEventListener listener = new LifecycleEventListener() {
72
+                @Override
73
+                public void onHostResume() {
74
+                    if(triggered)
75
+                        promise.resolve(null);
76
+                    RCTContext.removeLifecycleEventListener(this);
77
+                }
78
+
79
+                @Override
80
+                public void onHostPause() {
81
+
82
+                }
83
+
84
+                @Override
85
+                public void onHostDestroy() {
86
+
87
+                }
88
+            };
89
+            RCTContext.addLifecycleEventListener(listener);
65
         } catch(Exception ex) {
90
         } catch(Exception ex) {
66
             promise.reject(ex.getLocalizedMessage());
91
             promise.reject(ex.getLocalizedMessage());
67
         }
92
         }