Call Android Библиотека в React Native - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть следующий код в Native Android

package org.jitsi.example;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

import org.jitsi.meet.sdk.JitsiMeetView;
import org.jitsi.meet.sdk.ReactActivityLifecycleCallbacks;

// Example
//
public class MainActivity extends FragmentActivity implements JitsiMeetActivityInterface {
    private JitsiMeetView view;

    @Override
    protected void onActivityResult(
            int requestCode,
            int resultCode,
            Intent data) {
        JitsiMeetActivityDelegate.onActivityResult(
                this, requestCode, resultCode, data);
    }

    @Override
    public void onBackPressed() {
        JitsiMeetActivityDelegate.onBackPressed();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        view = new JitsiMeetView(this);
        JitsiMeetConferenceOptions options = new JitsiMeetConferenceOptions.Builder()
            .setRoom("https://meet.jit.si/test123")
            .build();
        view.join(options);

        setContentView(view);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();

        view.dispose();
        view = null;

        JitsiMeetActivityDelegate.onHostDestroy(this);
    }

    @Override
    public void onNewIntent(Intent intent) {
        JitsiMeetActivityDelegate.onNewIntent(intent);
    }

    @Override
    public void onRequestPermissionsResult(
            final int requestCode,
            final String[] permissions,
            final int[] grantResults) {
        JitsiMeetActivityDelegate.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }

    @Override
    protected void onResume() {
        super.onResume();

        JitsiMeetActivityDelegate.onHostResume(this);
    }

    @Override
    protected void onStop() {
        super.onStop();

        JitsiMeetActivityDelegate.onHostPause(this);
    }
}

Также

JitsiMeetConferenceOptions options = new JitsiMeetConferenceOptions.Builder()
    .setServerURL(new URL("https://meet.jit.si"))
    .setRoom("test123")
    .setAudioMuted(false)
    .setVideoMuted(false)
    .setAudioOnly(false)
    .setWelcomePageEnabled(false)
    .build();

React native не поддерживает эту библиотеку, поэтому я хочу вызвать эту библиотеку android внутри себя реагировать на родной. Так что я создал следующий класс

public class ToastModule extends ReactContextBaseJavaModule  {

    private static final String DURATION_SHORT_KEY = "SHORT";
    private static final String DURATION_LONG_KEY = "LONG";

    public ToastModule(ReactApplicationContext reactContext) {
        super(reactContext);
    }

    @Override
    public String getName() {
        return "CustomToastAndroid";
    }

    @Override
    public Map<String, Object> getConstants() {
        final Map<String, Object> constants = new HashMap<>();
        constants.put(DURATION_SHORT_KEY, Toast.LENGTH_SHORT);
        constants.put(DURATION_LONG_KEY, Toast.LENGTH_LONG);
        return constants;
    }
    //this @ReactMethod will be available in javascript environment
    @ReactMethod
    public JitsiMeetConferenceOptions show(String message, int duration) {
        Log.d(getName(),"toast called with "+message);
        Toast.makeText(getReactApplicationContext(), "Yes John its coming from android", duration).show();
        JitsiMeetConferenceOptions options=null;

        try {
            options = new JitsiMeetConferenceOptions.Builder()
                   .setServerURL(new URL("https://meet.jit.si"))
                   .setRoom("test123")
                   .setAudioMuted(false)
                   .setVideoMuted(false)
                   .setAudioOnly(false)
                   .setWelcomePageEnabled(false)
                   .build();
            Toast.makeText(getReactApplicationContext(), message, duration).show();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

        return options;

    }
}

Этот ниже упаковщик будет общаться, чтобы реагировать на родной

public class CustomReactPackage implements ReactPackage {



    @Override
    public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
        return Collections.emptyList();
    }

    @Override
    public List<NativeModule> createNativeModules(
            ReactApplicationContext reactContext) {

        List<NativeModule> modules = new ArrayList<>();

        modules.add(new ToastModule(reactContext));

        return modules;
    }

}

, если я позвоню CustomToastAndroid.show("Testing this package from andorid",100);, то я могу увидеть сообщение о тосте в мое приложение, но мне нужен доступ к jitsi meet functions.can даже одна помощь по интеграции этого, чтобы реагировать нативный

Ref: https://github.com/jitsi/jitsi-meet/blob/master/android/README.md#use -pre-build-sdk-artifactsbinaries

...