我用java编写了 native 代码来获取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
}
)
最佳答案
我认为你需要用 Promise 来处理它。将方法签名更改为
public void getUsername(final Promise promise){
...
promise.resolve("username");
}
并在你的 JavaScript 中
...
let username = await NativeModules.GetInfo.getUsername();
关于javascript - 如何从java返回数据到javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43720116/