diff --git a/android/src/main/java/com/RNFetchBlob/RNFetchBlobFS.java b/android/src/main/java/com/RNFetchBlob/RNFetchBlobFS.java index 76eb4abe1..5574609db 100644 --- a/android/src/main/java/com/RNFetchBlob/RNFetchBlobFS.java +++ b/android/src/main/java/com/RNFetchBlob/RNFetchBlobFS.java @@ -548,6 +548,7 @@ static void cp(String path, String dest, Callback callback) { path = normalizePath(path); InputStream in = null; OutputStream out = null; + String message = ""; try { if(!isPathExists(path)) { @@ -571,7 +572,7 @@ static void cp(String path, String dest, Callback callback) { out.write(buf, 0, len); } } catch (Exception err) { - callback.invoke(err.getLocalizedMessage()); + message += err.getLocalizedMessage(); } finally { try { if (in != null) { @@ -580,11 +581,17 @@ static void cp(String path, String dest, Callback callback) { if (out != null) { out.close(); } - callback.invoke(); } catch (Exception e) { - callback.invoke(e.getLocalizedMessage()); + message += e.getLocalizedMessage(); } } + // Only call the callback once to prevent the app from crashing + // with an 'Illegal callback invocation from native module' exception. + if (message != "") { + callback.invoke(message); + } else { + callback.invoke(); + } } /**