From 9e11b162cb0a13bcea323530f14ecc628da84971 Mon Sep 17 00:00:00 2001 From: Roman Volosovskyi Date: Wed, 5 Jul 2023 13:47:49 +0200 Subject: [PATCH] _ --- .../webview/RNCWebViewManager.java | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewManager.java b/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewManager.java index ffcabf4..ad1cf07 100644 --- a/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewManager.java +++ b/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewManager.java @@ -102,6 +102,8 @@ import java.util.Locale; import java.util.Map; import java.util.concurrent.atomic.AtomicReference; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; /** * Manages instances of {@link WebView} *

@@ -283,6 +285,23 @@ public class RNCWebViewManager extends SimpleViewManager { view.setVerticalScrollBarEnabled(enabled); } + @Nullable + public static Object invokeMethodIfExists(final O o, final String methodName, Object... args) { + Method[] methods = o.getClass().getMethods(); + for (Method method : methods) { + if (method.getName().equals(methodName)) { + try { + method.invoke(o, args); + } catch (IllegalAccessException e) { + return null; + } catch (InvocationTargetException e) { + return null; + } + } + } + return null; + } + @ReactProp(name = "cacheEnabled") public void setCacheEnabled(WebView view, boolean enabled) { if (enabled) { @@ -290,13 +309,14 @@ public class RNCWebViewManager extends SimpleViewManager { if (ctx != null) { //view.getSettings().setAppCachePath(ctx.getCacheDir().getAbsolutePath()); //view.getSettings().setAppCacheEnabled(true); - Util.invokeMethodIfExists(view.getSettings(), "setAppCachePath", ctx.getCacheDir().getAbsolutePath()); + RNCWebViewManager.invokeMethodIfExists(view.getSettings(), "setAppCachePath", ctx.getCacheDir().getAbsolutePath()); view.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); - Util.invokeMethodIfExists(view.getSettings(), "setAppCacheEnabled", true); + RNCWebViewManager.invokeMethodIfExists(view.getSettings(), "setAppCacheEnabled", true); } } else { view.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); - view.getSettings().setAppCacheEnabled(false); + //view.getSettings().setAppCacheEnabled(false); + RNCWebViewManager.invokeMethodIfExists(view.getSettings(), "setAppCacheEnabled", false); } }