如何将数据从java返回到javascript?

时间:2017-05-01 13:43:32

标签: javascript java android react-native react-native-android

我在java中编写了本机代码来获取gmail帐户的帐户信息。

虽然只是从第一种方法返回,但我在javascript中得到了未定义。在第二种方法中,我通过回调js返回电子邮件地址,效果很好。

第一种方法: -

java代码: -

@ReactMethod
    public String getUsername() {
        AccountManager accountManager = AccountManager.get(myContext);
        Account account = getAccount(accountManager);
        if (account == null) {
           return null;
        } else {
            return account.name;
        }
    }

RN方面: -

let email  = NativeModules.GetInfo.getUsername();
alert(email) //undefined

第二种方法:

java代码: -

@ReactMethod
    public void getUsername(Callback errorCallback, Callback successCallback) {
        AccountManager accountManager = AccountManager.get(myContext);
        Account account = getAccount(accountManager);
        if (account == null) {
            errorCallback.invoke("not found");
        } else {
            successCallback.invoke(account.name);
        }
    }

RN方面: -

NativeModules.GetInfo.getUsername((error)=> {
                alert(error)
            },
            (email)=> {
                alert(email) //works perfect
            }
        )

1 个答案:

答案 0 :(得分:1)

我认为你需要用Promise处理它。将方法签名更改为

public void getUsername(final Promise promise){
    ...
    promise.resolve("username");
}

并在您的javascript中

...
let username = await NativeModules.GetInfo.getUsername();