mirror of
https://github.com/status-im/react-native-webview-bridge.git
synced 2026-08-31 13:21:15 +00:00
Add support for Android 1+
This commit is contained in:
+29
-22
@@ -1,16 +1,15 @@
|
||||
package com.github.alinz.reactnativewebviewbridge;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Map;
|
||||
|
||||
import android.webkit.WebView;
|
||||
|
||||
import com.facebook.react.bridge.ReactContext;
|
||||
import com.facebook.react.bridge.ReadableArray;
|
||||
import com.facebook.react.views.webview.ReactWebViewManager;
|
||||
import com.facebook.react.views.webview.WebViewConfig;
|
||||
import com.facebook.react.bridge.ReadableArray;
|
||||
import com.facebook.react.bridge.ReactContext;
|
||||
import com.facebook.react.bridge.WritableMap;
|
||||
import com.facebook.react.common.MapBuilder;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class WebViewBridgeManager extends ReactWebViewManager {
|
||||
private static final String REACT_CLASS = "RCTWebViewBridge";
|
||||
@@ -64,29 +63,37 @@ public class WebViewBridgeManager extends ReactWebViewManager {
|
||||
private void sendToBridge(WebView root, String message) {
|
||||
//root.loadUrl("javascript:(function() {\n" + script + ";\n})();");
|
||||
String script = "WebViewBridge.onMessage('" + message + "');";
|
||||
root.evaluateJavascript(script, null);
|
||||
WebViewBridgeManager.evaluateJavascript(root, script);
|
||||
}
|
||||
|
||||
private void injectBridgeScript(WebView root) {
|
||||
//this code needs to be called once per context
|
||||
if (!initializedBridge) {
|
||||
root.addJavascriptInterface(new JavascriptBridge((ReactContext)root.getContext()), "WebViewBridgeAndroid");
|
||||
root.addJavascriptInterface(new JavascriptBridge((ReactContext) root.getContext()), "WebViewBridgeAndroid");
|
||||
initializedBridge = true;
|
||||
root.reload();
|
||||
}
|
||||
|
||||
//this code needs to be executed everytime a url changes.
|
||||
root.evaluateJavascript(""
|
||||
+ "(function() {"
|
||||
+ "if (window.WebViewBridge) return;"
|
||||
+ "var customEvent = document.createEvent('Event');"
|
||||
+ "var WebViewBridge = {"
|
||||
+ "send: function(message) { WebViewBridgeAndroid.send(message); },"
|
||||
+ "onMessage: function() {}"
|
||||
+ "};"
|
||||
+ "window.WebViewBridge = WebViewBridge;"
|
||||
+ "customEvent.initEvent('WebViewBridge', true, true);"
|
||||
+ "document.dispatchEvent(customEvent);"
|
||||
+"}());", null);
|
||||
// this code needs to be executed everytime a url changes.
|
||||
WebViewBridgeManager.evaluateJavascript(root, ""
|
||||
+ "(function() {"
|
||||
+ "if (window.WebViewBridge) return;"
|
||||
+ "var customEvent = document.createEvent('Event');"
|
||||
+ "var WebViewBridge = {"
|
||||
+ "send: function(message) { WebViewBridgeAndroid.send(message); },"
|
||||
+ "onMessage: function() {}"
|
||||
+ "};"
|
||||
+ "window.WebViewBridge = WebViewBridge;"
|
||||
+ "customEvent.initEvent('WebViewBridge', true, true);"
|
||||
+ "document.dispatchEvent(customEvent);"
|
||||
+ "}());");
|
||||
}
|
||||
|
||||
static private void evaluateJavascript(WebView root, String javascript) {
|
||||
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
|
||||
root.evaluateJavascript(javascript, null);
|
||||
} else {
|
||||
root.loadUrl("javascript:" + javascript);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user