Daniel Zlotin преди 7 години
родител
ревизия
f8f0ad21b4

+ 3
- 0
lib/android/app/src/main/java/com/reactnativenavigation/NavigationApplication.java Целия файл

1
 package com.reactnativenavigation;
1
 package com.reactnativenavigation;
2
 
2
 
3
 import android.app.Application;
3
 import android.app.Application;
4
+import android.content.Context;
4
 
5
 
5
 import com.facebook.react.ReactApplication;
6
 import com.facebook.react.ReactApplication;
6
 import com.facebook.react.ReactNativeHost;
7
 import com.facebook.react.ReactNativeHost;
8
 
9
 
9
 public abstract class NavigationApplication extends Application implements ReactApplication {
10
 public abstract class NavigationApplication extends Application implements ReactApplication {
10
 
11
 
12
+	public static Context context;
11
 	private ReactGateway reactGateway;
13
 	private ReactGateway reactGateway;
12
 
14
 
13
 	@Override
15
 	@Override
14
 	public void onCreate() {
16
 	public void onCreate() {
15
 		super.onCreate();
17
 		super.onCreate();
18
+		context = this;
16
 		reactGateway = new ReactGateway(this, isDebug());
19
 		reactGateway = new ReactGateway(this, isDebug());
17
 	}
20
 	}
18
 
21
 

+ 25
- 0
lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationReactInitializer.java Целия файл

2
 
2
 
3
 import com.facebook.react.ReactInstanceManager;
3
 import com.facebook.react.ReactInstanceManager;
4
 import com.facebook.react.bridge.ReactContext;
4
 import com.facebook.react.bridge.ReactContext;
5
+import com.facebook.react.devsupport.interfaces.PackagerStatusCallback;
5
 import com.reactnativenavigation.NavigationActivity;
6
 import com.reactnativenavigation.NavigationActivity;
7
+import com.reactnativenavigation.utils.Toaster;
8
+import com.reactnativenavigation.utils.UiThread;
6
 
9
 
7
 public class NavigationReactInitializer implements ReactInstanceManager.ReactInstanceEventListener {
10
 public class NavigationReactInitializer implements ReactInstanceManager.ReactInstanceEventListener {
8
 
11
 
9
 	private final ReactInstanceManager reactInstanceManager;
12
 	private final ReactInstanceManager reactInstanceManager;
10
 	private final DevPermissionRequest devPermissionRequest;
13
 	private final DevPermissionRequest devPermissionRequest;
14
+	private final boolean isDebug;
11
 	private boolean waitingForAppLaunchEvent = true;
15
 	private boolean waitingForAppLaunchEvent = true;
16
+	private boolean isPackagerRunning = false;
12
 
17
 
13
 	public NavigationReactInitializer(ReactInstanceManager reactInstanceManager, boolean isDebug) {
18
 	public NavigationReactInitializer(ReactInstanceManager reactInstanceManager, boolean isDebug) {
14
 		this.reactInstanceManager = reactInstanceManager;
19
 		this.reactInstanceManager = reactInstanceManager;
15
 		this.devPermissionRequest = new DevPermissionRequest(isDebug);
20
 		this.devPermissionRequest = new DevPermissionRequest(isDebug);
21
+		this.isDebug = isDebug;
16
 	}
22
 	}
17
 
23
 
18
 	public void onActivityCreated(NavigationActivity activity) {
24
 	public void onActivityCreated(NavigationActivity activity) {
42
 	}
48
 	}
43
 
49
 
44
 	private void prepareReactApp() {
50
 	private void prepareReactApp() {
51
+		if (isDebug && !isPackagerRunning) {
52
+			reactInstanceManager.getDevSupportManager().isPackagerRunning(new PackagerStatusCallback() {
53
+				@Override
54
+				public void onPackagerStatusFetched(final boolean packagerIsRunning) {
55
+					UiThread.post(new Runnable() {
56
+						@Override
57
+						public void run() {
58
+							isPackagerRunning = packagerIsRunning;
59
+							if (!isPackagerRunning) {
60
+								Toaster.toast("Packager is not running!");
61
+							} else {
62
+								prepareReactApp();
63
+							}
64
+						}
65
+					});
66
+				}
67
+			});
68
+			return;
69
+		}
45
 		reactInstanceManager.addReactInstanceEventListener(this);
70
 		reactInstanceManager.addReactInstanceEventListener(this);
46
 		if (shouldCreateContext()) {
71
 		if (shouldCreateContext()) {
47
 			reactInstanceManager.createReactContextInBackground();
72
 			reactInstanceManager.createReactContextInBackground();

+ 11
- 0
lib/android/app/src/main/java/com/reactnativenavigation/utils/Toaster.java Целия файл

1
+package com.reactnativenavigation.utils;
2
+
3
+import android.widget.Toast;
4
+
5
+import com.reactnativenavigation.NavigationApplication;
6
+
7
+public class Toaster {
8
+	public static void toast(String text) {
9
+		Toast.makeText(NavigationApplication.context, text, Toast.LENGTH_LONG).show();
10
+	}
11
+}