I am trying to write a plugin to get an applicator with the package name and icon in native-native. I get all the necessary data in the form of a JSONArray and the images are stored in an SD card.
I use a callback to return the result (JSON Array) back to javascript (Success or failure). I get the above error.
Please find the java code that retrieves the data as shown below.
package com.sampleapp;
import com.facebook.react.ReactPackage; import com.facebook.react.bridge.Callback; import com.facebook.react.bridge.JavaScriptModule; 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.uimanager.ViewManager; import com.facebook.react.views.drawer.ReactDrawerLayoutManager; import com.facebook.react.views.image.ReactImageManager; import com.facebook.react.views.progressbar.ReactProgressBarViewManager; import com.facebook.react.views.scroll.ReactHorizontalScrollViewManager; import com.facebook.react.views.scroll.ReactScrollViewManager; import com.facebook.react.views.switchview.ReactSwitchManager; import com.facebook.react.views.text.ReactRawTextManager; import com.facebook.react.views.text.ReactTextViewManager; import com.facebook.react.views.text.ReactVirtualTextViewManager; import com.facebook.react.views.textinput.ReactTextInputManager; import com.facebook.react.views.toolbar.ReactToolbarManager; import com.facebook.react.views.view.ReactViewManager; import com.facebook.react.views.viewpager.ReactViewPagerManager; public class ToastModule extends ReactContextBaseJavaModule { private static final String DURATION_SHORT_KEY = "SHORT"; private static final String DURATION_LONG_KEY = "LONG"; public static JSONArray applist; public ToastModule(ReactApplicationContext reactContext) { super(reactContext); } @Override public String getName() { return "ToastAnd"; } @ReactMethod public void show(Callback errorCallback, Callback successCallback) { try {
In android.index.js, I call my own method, as shown below:
'use strict'; var React = require('react-native'); var { AppRegistry, StyleSheet, Text, View, } = React; var toastMessage = require('./sampleToast'); toastMessage.show( (msg) => { console.log(msg); }, (result) => { alert(JSON.stringify(result)); } ); var SampleApp = React.createClass({ render: function() { return ( <View style={styles.container}> <Text style={styles.welcome}> Welcome to React Native! </Text> <Text style={styles.instructions}> To get started, edit index.android.js </Text> <Text style={styles.instructions}> Shake or press menu button for dev menu </Text> </View> ); } }); var styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#F5FCFF', }, welcome: { fontSize: 20, textAlign: 'center', margin: 10, }, instructions: { textAlign: 'center', color: '#333333', marginBottom: 5, }, }); AppRegistry.registerComponent('SampleApp', () => SampleApp);
But in java code when returning the applicator (successCallback.invoke (applist);) I get the above error.
Could you help me where I am doing wrong. Thanks
Detailed error:
Exception in native call from JS 11-14 09:01:24.780 20592-20624/com.sampleapp E/unknown:React: java.lang.RuntimeException: Cannot convert argument of type class org.json.JSONArray 11-14 09:01:24.780 20592-20624/com.sampleapp E/unknown:React: at com.facebook.react.bridge.Arguments.fromJavaArgs(Arguments.java:55) 11-14 09:01:24.780 20592-20624/com.sampleapp E/unknown:React: at com.facebook.react.bridge.CallbackImpl.invoke(CallbackImpl.java:27) 11-14 09:01:24.780 20592-20624/com.sampleapp E/unknown:React: at com.sampleapp.ToastModule.show(ToastModule.java:100) 11-14 09:01:24.780 20592-20624/com.sampleapp E/unknown:React: at java.lang.reflect.Method.invokeNative(Native Method) 11-14 09:01:24.780 20592-20624/com.sampleapp E/unknown:React: at java.lang.reflect.Method.invoke(Method.java:515) 11-14 09:01:24.780 20592-20624/com.sampleapp E/unknown:React: at com.facebook.react.bridge.BaseJavaModule$JavaMethod.invoke(BaseJavaModule.java:106) 11-14 09:01:24.780 20592-20624/com.sampleapp E/unknown:React: at com.facebook.react.bridge.NativeModuleRegistry$ModuleDefinition.call(NativeModuleRegistry.java:143) 11-14 09:01:24.780 20592-20624/com.sampleapp E/unknown:React: at com.facebook.react.bridge.NativeModuleRegistry.call(NativeModuleRegistry.java:64) 11-14 09:01:24.780 20592-20624/com.sampleapp E/unknown:React: at com.facebook.react.bridge.CatalystInstance$NativeModulesReactCallback.call(CatalystInstance.java:366) 11-14 09:01:24.780 20592-20624/com.sampleapp E/unknown:React: at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method) 11-14 09:01:24.780 20592-20624/com.sampleapp E/unknown:React: at android.os.Handler.handleCallback(Handler.java:733) 11-14 09:01:24.780 20592-20624/com.sampleapp E/unknown:React: at android.os.Handler.dispatchMessage(Handler.java:95) 11-14 09:01:24.780 20592-20624/com.sampleapp E/unknown:React: at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31) 11-14 09:01:24.780 20592-20624/com.sampleapp E/unknown:React: at android.os.Looper.loop(Looper.java:136) 11-14 09:01:24.780 20592-20624/com.sampleapp E/unknown:React: at com.facebook.react.bridge.queue.MessageQueueThread$1.run(MessageQueueThread.java:137) 11-14 09:01:24.780 20592-20624/com.sampleapp E/unknown:React: at java.lang.Thread.run(Thread.java:841)