i am trying to call the native method from react-native. but it throwing error. find the details below. basically i am trying to print from react native using brother sdk. its working emulator fine but few real devices working fine. but not working in samsung a70 device. Please help me to solve this. thanks in advance
const PrintPreviewLabel = (props) => {
const saveAsImage = useCallback((viewShotRef, index) => {
captureRef(viewShotRef, {
quality: 1,
width: 350,
height: 350,
format: 'jpg',
}).then(
uri => {
const splitted = uri.split('/');
RNPrinterModule.printImageUsingWifi(
ipAddress,
splitted[splitted.length - 1],
printFrom == 'search' ? parseInt(noCopyValue[index] || 1) : printData[index]?.numberOfCopies,
(message: { error: string, success: string}) => {
setShowLoader(false);
if (message && message.error) {
setErrorModal(true);
}
},
);
},
error => {
console.log('Image saved failed', error);
},
);
}, [ipAddress, noCopyValue, printData, printFrom]);
return (<View>some rendering</View>);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
below code is native module code
@ReactMethod
void printImageUsingWifi(String ipAddress, String path, Integer copies, Callback callback) {
try {
Context context = getReactApplicationContext();
Channel channel = Channel.newWifiChannel(ipAddress);
WritableMap map = new WritableNativeMap();
PrinterDriverGenerateResult result = PrinterDriverGenerator.openChannel(channel);
if (result.getError().getCode() != OpenChannelError.ErrorCode.NoError) {
Log.e("Printer", "Error - Open Channel: " + result.getError().getCode());
map.putString("error", String.valueOf(result.getError().getCode()));
callback.invoke(map);
return;
}
File file = new File(context.getCacheDir().toString(), path);
PrinterDriver printerDriver = result.getDriver();
QLPrintSettings printSettings = new QLPrintSettings(PrinterModel.QL_820NWB);
printSettings.setLabelSize(QLPrintSettings.LabelSize.RollW62RB);
printSettings.setAutoCut(true);
printSettings.setWorkPath(context.getCacheDir().toString());
// printSettings.setHalftone(PrintImageSettings.Halftone.Threshold);
// printSettings.setHalftoneThreshold(255);
printSettings.setNumCopies(copies);
PrintError printError = printerDriver.printImage(file.toString(), printSettings);
if (printError.getCode() != PrintError.ErrorCode.NoError) {
Log.d("Printer", "Error - Print Image: " + printError.getCode());
map.putString("error", String.valueOf(printError.getCode()));
callback.invoke(map);
}
else {
Log.d("Printer", "Success - Print Image");
map.putString("success", "true");
callback.invoke(map);
}
printerDriver.closeChannel();
} catch (Exception e) {
e.printStackTrace();
}
}
And the error is
Fatal Exception: java.lang.RuntimeException
Could not invoke RNPrinterModule.printImageUsingWifi
com.facebook.react.bridge.JavaMethodWrapper.invoke (JavaMethodWrapper.java:383)
com.facebook.react.bridge.JavaModuleWrapper.invoke (JavaModuleWrapper.java:151)
com.facebook.react.bridge.queue.NativeRunnable.run (NativeRunnable.java)
android.os.Handler.handleCallback (Handler.java:938)
android.os.Handler.dispatchMessage (Handler.java:99)
com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage (MessageQueueThreadHandler.java:27)
android.os.Looper.loop (Looper.java:246)
com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run (MessageQueueThreadImpl.java:226)
java.lang.Thread.run (Thread.java:923)
Caused by java.lang.reflect.InvocationTargetException
java.lang.reflect.Method.invoke (Method.java)
com.facebook.react.bridge.JavaMethodWrapper.invoke (JavaMethodWrapper.java:372)
com.facebook.react.bridge.JavaModuleWrapper.invoke (JavaModuleWrapper.java:151)
com.facebook.react.bridge.queue.NativeRunnable.run (NativeRunnable.java)
android.os.Handler.handleCallback (Handler.java:938)
android.os.Handler.dispatchMessage (Handler.java:99)
com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage (MessageQueueThreadHandler.java:27)
android.os.Looper.loop (Looper.java:246)
com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run (MessageQueueThreadImpl.java:226)
java.lang.Thread.run (Thread.java:923)
Caused by java.lang.NoClassDefFoundError
Failed resolution of: Lkotlin/jvm/internal/Intrinsics;
com.brother.sdk.lmprinter.GeneralPrintSettings.<init> (Unknown Source:2)
com.brother.sdk.lmprinter.V3PrinterService.setPrintSettings (V3PrinterService.java:277)
com.brother.sdk.lmprinter.V3PrinterService.setPrintSettingsAndCallPrintImage (V3PrinterService.java:70)
com.brother.sdk.lmprinter.V3PrinterService.printImage (V3PrinterService.java:44)
com.brother.sdk.lmprinter.PrinterDriver.printImage (PrinterDriver.java:29)
vn.telio.ims.RNPrinterModule.printImageUsingWifi (RNPrinterModule.java:83)
java.lang.reflect.Method.invoke (Method.java)
com.facebook.react.bridge.JavaMethodWrapper.invoke (JavaMethodWrapper.java:372)
com.facebook.react.bridge.JavaModuleWrapper.invoke (JavaModuleWrapper.java:151)
com.facebook.react.bridge.queue.NativeRunnable.run (NativeRunnable.java)
android.os.Handler.handleCallback (Handler.java:938)
android.os.Handler.dispatchMessage (Handler.java:99)
com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage (MessageQueueThreadHandler.java:27)
android.os.Looper.loop (Looper.java:246)
com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run (MessageQueueThreadImpl.java:226)
java.lang.Thread.run (Thread.java:923)
Caused by java.lang.ClassNotFoundException
kotlin.jvm.internal.Intrinsics
com.brother.sdk.lmprinter.GeneralPrintSettings.<init> (Unknown Source:2)
com.brother.sdk.lmprinter.V3PrinterService.setPrintSettings (V3PrinterService.java:277)
com.brother.sdk.lmprinter.V3PrinterService.setPrintSettingsAndCallPrintImage (V3PrinterService.java:70)
com.brother.sdk.lmprinter.V3PrinterService.printImage (V3PrinterService.java:44)
com.brother.sdk.lmprinter.PrinterDriver.printImage (PrinterDriver.java:29)
vn.telio.ims.RNPrinterModule.printImageUsingWifi (RNPrinterModule.java:83)
java.lang.reflect.Method.invoke (Method.java)
com.facebook.react.bridge.JavaMethodWrapper.invoke (JavaMethodWrapper.java:372)
com.facebook.react.bridge.JavaModuleWrapper.invoke (JavaModuleWrapper.java:151)
com.facebook.react.bridge.queue.NativeRunnable.run (NativeRunnable.java)
android.os.Handler.handleCallback (Handler.java:938)
android.os.Handler.dispatchMessage (Handler.java:99)
com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage (MessageQueueThreadHandler.java:27)
android.os.Looper.loop (Looper.java:246)
com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run (MessageQueueThreadImpl.java:226)
java.lang.Thread.run (Thread.java:923)