android - 如何从android Activity onActivityResult发送对象/字符串以做出本机反应
问题描述
在我的 react native 项目中,我已经在 android 中实现了支付原生 sdk(react native 不支持)。所以我试图用原生模块调用原生 sdk。
我可以从反应原生模块调用支付SDKUI,但是当结果的时候不能将结果发送回反应原生组件..
支付网关是 -> PAYUBIZ
有关更多详细信息,请在下面找到代码..
在支付网关结束时,我在 android native alert 中显示了支付响应。
使用的代码..
1. Created NATIVE MODULES in react native side..
import {NativeModules} from 'react-native';
module.exports = NativeModules.PayUBizAccess;
in button action following code to call native method from android
PayUBizAccess.showPayuBiz();
2. Created ReactContextBaseJavaModule based PayUBizModule
@ReactMethod
public void showPayuBiz() {
final Activity activity = getCurrentActivity();
Intent intent = new Intent(activity, PayuActivity.class);
getReactApplicationContext().startActivity(intent);
}
PayuActivity.class is the payment activity class
3. Display results after payment success or failure..
@Override
public void onActivityResult(int requestCode, int resultCode, final Intent data) {
if (requestCode == PayuConstants.PAYU_REQUEST_CODE) {
if (data != null) {
new AlertDialog.Builder(this)
.setCancelable(false)
.setMessage("Payu's Data : " + data.getStringExtra("payu_response") + "\n\n\n Merchant's Data: " + data.getStringExtra("result"))
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();
finish();
}
}).show();
} else {
Toast.makeText(this, getString(R.string.could_not_receive_data), Toast.LENGTH_LONG).show();
}
}
}
4. After alert clicking button in alert it directly moves to react native component..
所以现在我希望结果数据能够反应原生,请建议我任何解决方案
提前致谢
解决方案
您可以像这样从本机代码发送事件:
private void sendEvent(ReactContext reactContext,
String eventName,
@Nullable WritableMap params) {
reactContext
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
//supply the result in params
.emit(eventName, params);
}
在您的反应本机代码中,您可以接收如下事件:
componentWillMount: function() {
DeviceEventEmitter.addListener('keyboardWillShow', function(e: Event) {
// handle event.
});
}
在此处查看完整文档
这里给出了另一种方法
推荐阅读
- python - 我试图为我的 discord.py 机器人设置一个清除/清除命令。没有错误,但是当我运行命令时,什么也没有发生
- angular - primeNg 密码中的 ToggleMask 不起作用
- python - 如何在 PyQt5 中创建循环和 AutoClosed 消息框?
- javascript - 如果我使用相机上传图片,文件上传失败
- hashicorp-vault - Vault 已初始化错误消息
- python - Python OpenCV 在 Canny 边缘检测后删除最外层边缘
- python - kivymd 窗口自动全屏打开且光标不可见
- java - “IS NULL”过滤器vaadin
- php - 在行中隐藏和取消隐藏href
- security - 如何在 CPU x86-64 寄存器中执行不同的命令?