关于java:React-Native封装tencentx5-Sdk的Webview

参考资料:
react-native-webview-tencentx5
手把手教你一步步集成腾讯 X5 内核(Tencent TBS X5)

之前基于react-native-webview封装的Canvas在比拟老的android手机上没法导出图片canvas.toDataURL生效了,就想用react-native-webview-tencentx5去代替react-native-webview,然而react-native-webview-tencentx5不兼容react-native@0.70.所以只能借鉴react-native-webview-tencentx5从新去封装一个webview

  1. 去TBS官网下载sdk
    腾讯浏览服务 – SDK 下载
  1. 在android/app下创立libs而后把下载的sdk包放到文件夹里(把很长名字减短)
  1. 用android studio关上,右键点击sdk包,Add As Library
  1. 下载react-native-webview-tencentx5的代码,把android/src/main/java/indi/fan/webviewx5文件夹整个拷贝到本人写安卓原生组建的文件夹下(我的文件夹名字是webviewx)
  2. 批改java文件引入的门路改成本人文件所在的门路
  1. 将RNX5WebViewPackage.kt文件改成RNX5WebViewPackage.java
package com.xxxx.webviewx;

import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.JavaScriptModule;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.ViewManager;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class RNX5WebViewPackage implements ReactPackage {

    @Override
    public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
        return Arrays.<NativeModule>asList(
                new RNX5WebViewModule(reactContext)
        );
    }

    public List<Class<? extends JavaScriptModule>> createJSModules() {
        return Collections.emptyList();
    }

    @Override
    public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
        return Arrays.asList(
                new RNX5WebViewManager()
        );
    }
}
  1. 批改events文件里的kt文件为java(以TopHttpErrorEvent为例)
package com.xxxx.webviewx.events;

import com.facebook.react.bridge.WritableMap;
import com.facebook.react.uimanager.events.Event;
import com.facebook.react.uimanager.events.RCTEventEmitter;

public class TopHttpErrorEvent extends Event<TopHttpErrorEvent> {
    public static final String EVENT_NAME = "topHttpError";
    public int viewId;
    public WritableMap mEventData;

    public TopHttpErrorEvent(int viewId, WritableMap mEventData) {
        super(viewId);
        this.viewId = viewId;
        this.mEventData = mEventData;
    }

    public String getEventName() {
        return EVENT_NAME;
    }

    public boolean canCoalesce() {
        return false;
    }

    public short getCoalescingKey() {
        return 0;
    }

    public void dispatch(RCTEventEmitter rctEventEmitter) {
        rctEventEmitter.receiveEvent(this.viewId, this.EVENT_NAME, mEventData);
    }
}
  1. 引入到MainApplication.java里

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理