forked from TheWidlarzGroup/react-native-video-player
-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathBridgeModule.java
More file actions
74 lines (63 loc) · 2.8 KB
/
Copy pathBridgeModule.java
File metadata and controls
74 lines (63 loc) · 2.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package com.my.package;
import android.os.Bundle;
import android.content.Context;
import android.content.Intent;
import android.app.Activity;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ActivityEventListener;
import com.facebook.react.bridge.BaseActivityEventListener;
import com.facebook.react.bridge.Promise;
public class BridgeModule extends ReactContextBaseJavaModule {
static final int VIDEO_PROGRESS_REQUEST = 13214; // The request code
private static final String E_FAILED_TO_SHOW_VIDEO = "E_FAILED_TO_SHOW_VIDEO";
private Promise mBridgePromise;
private final ActivityEventListener mActivityEventListener = new BaseActivityEventListener() {
@Override public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent intent) {
if (requestCode == VIDEO_PROGRESS_REQUEST) {
if (mBridgePromise != null) {
if (resultCode == Activity.RESULT_OK) {
int position = intent.getIntExtra("VIDEO_POSITION", -1);
Context context = getReactApplicationContext();
if (position <= 0) {
mBridgePromise.resolve(0);
} else {
mBridgePromise.resolve(position);
}
}
mBridgePromise = null;
}
}
}
};
public BridgeModule(ReactApplicationContext reactContext) {
super(reactContext);
// Add the listener for `onActivityResult`
reactContext.addActivityEventListener(mActivityEventListener);
}
@Override
public String getName() {
return "BridgeModule";
}
@ReactMethod
public void showFullscreen(String videoUri, int position, final Promise promise) {
Activity currentActivity = getCurrentActivity();
Context context = getReactApplicationContext();
// Store the promise to resolve/reject when video returns data
mBridgePromise = promise;
try {
Intent intent = new Intent(context, VideoActivity.class); // mContext got from your overriden constructor
Bundle extras = new Bundle();
extras.putString("VIDEO_URL",videoUri);
extras.putInt("VIDEO_POSITION",position);
intent.putExtras(extras);
currentActivity.startActivityForResult(intent, VIDEO_PROGRESS_REQUEST);
} catch (Exception e) {
mBridgePromise.reject(E_FAILED_TO_SHOW_VIDEO, e);
mBridgePromise = null;
}
}
}