线程问题 之 支付时支付界面未弹出问题(C++调用Java)
来源:互联网 发布:php基础知识:blog 编辑:程序博客网 时间:2024/05/16 04:24
<1>问题:
就是当你点击购买时,购买界面根本没有弹出来,这里是C++调用Java.
<2>Java端代码实现.
private static Handler mHandler = null;
//根据订单号购买商品(由C++调用)public void buyWithCooOrderSerial(final String orderId, final int tag){mHandler = new Handler(Looper.getMainLooper());mHandler.postDelayed(new Runnable(){@Overridepublic void run() {if(ctx != null){Log.e("****所购买的商品 订单号和标识号(Java端显示)****", "订单号:" + orderId + "***标识号:" + String.valueOf(tag)); //订单号productId String productIdArray[] = { "115429-20140801-105232094-84", "115429-20140728-194402904-98", "115429-20140728-194723885-16", "115429-20140728-194822884-58", "115429-20140728-194909696-39", "115429-20140728-195031058-12", "115429-20140728-195115225-34" }; // 商品名字 String productNameArray[] = { "月卡", "金元宝", "一堆金元宝", "一袋金元宝", "一盒金元宝", "一桶金元宝", "一箱金元宝" }; //商品价格 double moneyArray[] = {30, 6, 30, 98, 198, 368, 648}; NdBuyInfo buyInfo = new NdBuyInfo();buyInfo.setSerial(orderId);buyInfo.setProductId(productIdArray[tag]);buyInfo.setProductName(productNameArray[tag]);buyInfo.setProductPrice(moneyArray[tag]);buyInfo.setCount(1);buyInfo.setPayDescription("商品描述信息:我就是这么帅!!!");//购买结果监听int aError = NdCommplatform.getInstance().ndUniPayAsyn(buyInfo, ctx, new NdMiscCallbackListener.OnPayProcessListener() { @Overridepublic void finishPayProcess(int code) {tipsBuyCode(code);}});if(aError != 0){Log.e("**商品格式不对***", "***商品格式不对**");}}}}, 1);}
总结:解决方案就是这个好用的Handler ,Handler相当于开一个线程,当使用完毕后,自动回收.这就比较爽了.因此当在C++调用Java时,Java端代码的实现,请考虑Handler!
<3>C++端调用Java代码.void My91LoginImplAndroid::buyWithCooOrderSerial(string orderId) //根据订单号购买商品{ this->myOrderId = orderId; _my91Login->myOrderId = orderId; CCLOG("*******Android平台根据订单号买商品*******"); JniMethodInfo minfo; jobject jobj; if(JniHelper::getStaticMethodInfo(minfo, CLASS_NAME, "getInstance", "()Ljava/lang/Object;")) { jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID); if(JniHelper::getMethodInfo(minfo, CLASS_NAME, "buyWithCooOrderSerial", "(Ljava/lang/String;I)V")) { if(jobj == NULL) { return; } CCLog("***订单号:%s********标识号: %d*******", orderId.c_str(), tag); //传递订单号 和 标识 参数 jstring jorderId = minfo.env->NewStringUTF(orderId.c_str()); //string 转化jstring jint jtag = tag; //int转化jint minfo.env->CallVoidMethod(jobj, minfo.methodID, jorderId, jtag); CCLOG("*****JNI调用订单购买成功******"); } }}总结:注意里面有C++的string转化为Java的String类型.其次,Java段代码的final对C++这端的签名没影响.
0 0
- 线程问题 之 支付时支付界面未弹出问题(C++调用Java)
- 微信支付集成第一次调用支付界面成功,以后调不起来支付界面返回-1,等微信支付问题。
- 调用支付宝SDK问题
- iOS支付宝问题之:调用支付宝AlipaySDK找不到头文件<openssl/rsa.h>
- 微信支付界面中文乱码问题
- IOS 微信支付界面乱码问题
- 充值界面线程之 黑边 问题(Java调用C++时引起的线程问题)
- 支付宝快捷支付问题
- 支付宝支付问题记录
- ReactNative支付宝支付问题
- 支付宝 app支付问题
- 支付宝对接支付问题
- 微信支付当前url未注册问题
- 微信支付证书问题(C#)
- java练习(16.08.03)支付问题
- 支付宝移动支付之IOSApp调用支付宝钱包
- 第一次调微信支付正常弹出支付页面并成功支付了,再次调用时就支付异常,换个微信账号又能调用一次
- 支付帐单问题
- PHP将服务器上的文件下载(例如下载Excel模板)
- C++构造函数 explicit
- 程序员面试题目总结(持续更新)
- OC学习(一)类的定义和对象的创建
- HDU 1102
- 线程问题 之 支付时支付界面未弹出问题(C++调用Java)
- c++ 指针值和指针地址的输出&指针和数组保存字符串的区别
- 设计模式6—Factory设计模式
- 关于ASI请求失败的问题
- Jade的安装与测试
- 设计模式之生成器builder模式
- The Documentatiion of Kinect Fusion
- Spring中Bean的生命周期
- hdu2040 亲和数