Browse Source

Improve error handling settingup DevSupportHandler

Guy Carmeli 8 years ago
parent
commit
956a524972

+ 15
- 3
android/app/src/main/java/com/reactnativenavigation/core/RctManager.java View File

89
         final ReactInstanceDevCommandsHandler devInterface = (ReactInstanceDevCommandsHandler)
89
         final ReactInstanceDevCommandsHandler devInterface = (ReactInstanceDevCommandsHandler)
90
                 ReflectionUtils.getDeclaredField(reactInstanceManager, "mDevInterface");
90
                 ReflectionUtils.getDeclaredField(reactInstanceManager, "mDevInterface");
91
         if (devInterface == null) {
91
         if (devInterface == null) {
92
-            Log.e(TAG, "Could not get field: mDevInterface");
92
+            Log.e(TAG, "Could not get field mDevInterface");
93
             return;
93
             return;
94
         }
94
         }
95
 
95
 
96
         // Create customDevCommandsHandler
96
         // Create customDevCommandsHandler
97
         CustomDevCommandsHandler customDevCommandsHandler = new CustomDevCommandsHandler(devInterface);
97
         CustomDevCommandsHandler customDevCommandsHandler = new CustomDevCommandsHandler(devInterface);
98
-        ReflectionUtils.setField(reactInstanceManager, "mDevInterface", customDevCommandsHandler);
98
+        boolean success = ReflectionUtils.setField(reactInstanceManager, "mDevInterface", customDevCommandsHandler);
99
+        if (!success) {
100
+            Log.e(TAG, "Could not set field mDevInterface");
101
+            return;
102
+        }
99
 
103
 
100
         // Set customDevCommandsHandler in devSupportManager. Fun =).
104
         // Set customDevCommandsHandler in devSupportManager. Fun =).
101
         DevSupportManager devSupportManager = (DevSupportManager)
105
         DevSupportManager devSupportManager = (DevSupportManager)
102
                 ReflectionUtils.getDeclaredField(reactInstanceManager, "mDevSupportManager");
106
                 ReflectionUtils.getDeclaredField(reactInstanceManager, "mDevSupportManager");
103
-        ReflectionUtils.setField(devSupportManager, "mReactInstanceCommandsHandler", customDevCommandsHandler);
107
+        if (devSupportManager == null) {
108
+            Log.e(TAG, "Could not get field mDevSupportManager");
109
+            return;
110
+        }
111
+
112
+        success = ReflectionUtils.setField(devSupportManager, "mReactInstanceCommandsHandler", customDevCommandsHandler);
113
+        if (!success) {
114
+            Log.e(TAG, "Could not set field mReactInstanceCommandsHandler");
115
+        }
104
     }
116
     }
105
 
117
 
106
     public <T extends ReactContextBaseJavaModule> T getNativeModule(Class<T> nativeModuleClass) {
118
     public <T extends ReactContextBaseJavaModule> T getNativeModule(Class<T> nativeModuleClass) {

+ 1
- 1
android/app/src/main/java/com/reactnativenavigation/utils/ReflectionUtils.java View File

25
         try {
25
         try {
26
             Field f = obj.getClass().getDeclaredField(fieldName);
26
             Field f = obj.getClass().getDeclaredField(fieldName);
27
             f.setAccessible(true);
27
             f.setAccessible(true);
28
-            return f.get(obj); //IllegalAccessException
28
+            return f.get(obj);
29
         } catch (Exception e) {
29
         } catch (Exception e) {
30
             e.printStackTrace();
30
             e.printStackTrace();
31
         }
31
         }