将React Native应用程序集成到现有的Android应用程序中并获取结果

7

我发现有很多文章讲述如何将React Native集成到现有的Android应用程序中,但是它们都没有解释如何从React Native代码中获取结果,以便直接在Java Android源代码中使用它。

说明:我有一个React Native应用程序,它正在执行特定的工作,并在弹出窗口中显示结果。我想将这个应用程序(做出必要的修改)集成到我的Android Java源代码中,以便能够获得这个特定的结果,而不是在React Native弹出窗口中显示它。

我在整个互联网上搜索,但没有找到任何相关内容。


1
{btsdaf} - bennygenel
{btsdaf} - Josh Lin
1个回答

2
也许我没有理解你想做什么...但是你可以构建一个本地模块,当React Native应用程序完成时调用该函数将数据传递给本地代码,这样行不行呢?
比如说,你的应用程序有一个React Native部分,它需要用户输入名字和姓氏,然后点击提交。
你可以像平常一样编写RN javascript代码:有两个TextInput字段,它们的值映射到你的状态,并且有一个Button和一个onPress处理程序。在onPress处理程序中,你将调用你的本地模块并传递参数。
import { 
    NativeModules
} from 'react-native';

const NativeNameSubmission = NativeModules.NameSubmission;

...

    <Button
        onPress={() => NativeNameSubmission.submitName(this.state.firstName, this.state.lastName)}
        title="Submit"/>

您的本地模块应该长这样:

public class RCTNameSubmission extends ReactContextBaseJavaModule {

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

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

    @ReactMethod
    public void submitName(String firstName, String lastName) {
        // save the name data for later use
        ...
        // Exit React App
        getCurrentActivity().finish();
    }
}

我认为这是一个不错的部分,但是当您调用NativeNameSubmission.submitName()并直接在负责实例化React Native应用程序活动的活动中使用结果(在您的情况下为firstNamelastName)时,我想关闭React Native应用程序。 - Marc
使用意图启动RN Activity,并让启动它的Activity监听onActivityResult。我在模块中添加了关闭RN应用程序的代码(getCurrentActivity().finish();)。在模块中,您可以保存数据以供原始活动稍后使用,或者您可以在onActivityResult中将其传回。 - Jeremy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接