如何从javareturn数据到java脚本?
How to return data from java to javascript?
我在 java 中编写了本机代码来获取 gmail 帐户的帐户信息。
虽然只是从第一种方法返回,但我在 java 脚本中变得不确定。在第二种方法中,我通过回调将电子邮件地址返回给 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();
我在 java 中编写了本机代码来获取 gmail 帐户的帐户信息。
虽然只是从第一种方法返回,但我在 java 脚本中变得不确定。在第二种方法中,我通过回调将电子邮件地址返回给 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();