Ei kuvausta

AutoHeightWebViewManager.java 2.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package com.iou90.autoheightwebview;
  2. import android.webkit.WebView;
  3. import com.facebook.react.bridge.ReadableArray;
  4. import com.facebook.react.uimanager.annotations.ReactProp;
  5. import com.facebook.react.uimanager.ThemedReactContext;
  6. import com.facebook.react.views.webview.ReactWebViewManager;
  7. import java.util.Map;
  8. import javax.annotation.Nullable;
  9. public class AutoHeightWebViewManager extends ReactWebViewManager {
  10. private static final String REACT_CLASS = "RCTAutoHeightWebView";
  11. public static final int COMMAND_SEND_TO_WEBVIEW = 101;
  12. @Override
  13. public String getName() {
  14. return REACT_CLASS;
  15. }
  16. @Override
  17. public
  18. @Nullable
  19. Map<String, Integer> getCommandsMap() {
  20. Map<String, Integer> commandsMap = super.getCommandsMap();
  21. commandsMap.put("sendToWebView", COMMAND_SEND_TO_WEBVIEW);
  22. return commandsMap;
  23. }
  24. @Override
  25. protected WebView createViewInstance(ThemedReactContext reactContext) {
  26. WebView webview = super.createViewInstance(reactContext);
  27. webview.setVerticalScrollBarEnabled(false);
  28. webview.setHorizontalScrollBarEnabled(false);
  29. webview.addJavascriptInterface(new JavascriptBridge(webview), "AutoHeightWebView");
  30. return webview;
  31. }
  32. @Override
  33. public void receiveCommand(WebView webView, int commandId, @Nullable ReadableArray args) {
  34. super.receiveCommand(webView, commandId, args);
  35. switch (commandId) {
  36. case COMMAND_SEND_TO_WEBVIEW:
  37. sendToWebView(webView, args.getString(0));
  38. break;
  39. default:
  40. break;
  41. }
  42. }
  43. private void sendToWebView(WebView webView, String message) {
  44. String script = "AutoHeightWebView.onMessage('" + message + "');";
  45. if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
  46. webView.evaluateJavascript(script, null);
  47. } else {
  48. webView.loadUrl("javascript:" + script);
  49. }
  50. }
  51. }