我正在尝试将React Native与Android桥接以调用SDK。
我有一种适合自己目的的方法:
@ReactMethod
private void renderProfileSharingUI(ReadableArray args) throws JSONException {
if (args.length() != 1) {
this.errorCallback.invoke("renderProfileSharingUI scopes must be provided");
return;
}
JSONArray jsonArgs = convertArrayToJson(args);
Intent intent = new Intent(this.activity, PayPalProfileSharingActivity.class);
// add codes
intent.putExtra(PayPalProfileSharingActivity.EXTRA_REQUESTED_SCOPES, getOauthScopes(jsonArgs.getJSONArray(0)));
startActivityForResult(this, intent, REQUEST_CODE_PROFILE_SHARING);
}
private static JSONArray convertArrayToJson(ReadableArray readableArray) throws JSONException {
JSONArray array = new JSONArray();
for (int i = 0; i < readableArray.size(); i++) {
switch (readableArray.getType(i)) {
case Null:
break;
case Boolean:
array.put(readableArray.getBoolean(i));
break;
case Number:
array.put(readableArray.getDouble(i));
break;
case String:
array.put(readableArray.getString(i));
break;
case Map:
array.put(convertMapToJson(readableArray.getMap(i)));
break;
case Array:
array.put(convertArrayToJson(readableArray.getArray(i)));
break;
}
}
return array;
}
最初,该方法需要JSONArray。 React Native传递了一个ReadableArray,然后我使用该函数将其转换为JSONArray。
但是,尽管如此,我还是得到了错误:
现在,当然,我绝对要在上面导入此内容:
import org.json.JSONArray;
这是我的React Native方面:
NativeModules.PayPalMobileRN.renderProfileSharingUI(["openid", "email", "address"]).then(
result => console.log(result)
)
没什么疯狂的,只是传递了一个范围值数组。
此打on到底是什么?