第一次接触游戏开发,领导说要仿照着写个游戏买,于是用cocos2dx3.4写了个游戏。现在游戏已经完成了,可是接入计费SDK却遇到了大问题。我是一点android开发经验也没有。在接入SDK之后,一调用付费接口就程序崩溃,网上寻找实验各种,实在没有办法了,来这里请教各位大神。
这个不知道什么渠道的付费接口开起来很简单,如下:
result = mSdkPayServer.startSdkSmsPay(AppActivity.this,
mPayHandler, /计费结果回调/
merchantPasswd, /商户秘钥/
payId, /CP订单号,不重复/
channelId, /CP渠道ID/
payPoint, /计费点ID/
keyValue /预留字段,默认即可/
);
在这个接口有个计费结果回调mPayHandler,我按照Demo上定义如下:
private class PayHandler extends Handler {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Log.i("lyhtghpay", "PayHandler : msg.what = " + msg.what);
Log.i("lyhtghpay", "PayHandler : msg.obj = " + msg.obj);
if (msg.what == SdkPayServer.MSG_WHAT_TO_APP) {
String retInfo = (String) msg.obj;
//mHinTextView.setText(mHinTextView.getText() + "\n" + retInfo);
String[] keyValues = retInfo.split("&|=");
Map<String, String> resultMap = new HashMap<String, String>();
for (int i = 0; i < keyValues.length; i = i + 2) {
resultMap.put(keyValues[i], keyValues[i + 1]);
}
String payResult = resultMap.get(SdkPayServer.PAYRET_KEY_RESULT_STATUS);
if (null != payResult && Integer.parseInt(payResult) == SdkPayServer.PAY_RESULT_SUCCESS) {
Log.i("TAG", "付费成功");
else {
Log.i("TAG", "付费失败");
}
ppIndex = 0;
}
}
}
但是我只要在cocos中通过jniHelper调用付费,程序就回崩溃,调试信息中提示异常:
07-28 17
39.948: E/AndroidRuntime(6429): FATAL EXCEPTION: GLThread 164433
07-28 17
39.948: E/AndroidRuntime(6429): Process: com.colin.mbgame, PID: 6429
07-28 17
39.948: E/AndroidRuntime(6429): java.lang.RuntimeException: Can’t create handler inside thread that has not called Looper.prepare()
07-28 17
39.948: E/AndroidRuntime(6429): at android.os.Handler.(Handler.java:200)
07-28 17
39.948: E/AndroidRuntime(6429): at android.os.Handler.(Handler.java:114)
07-28 17
39.948: E/AndroidRuntime(6429): at org.cocos2dx.cpp.AppActivity$PayHandler.(AppActivity.java:124)
07-28 17
39.948: E/AndroidRuntime(6429): at org.cocos2dx.cpp.AppActivity$PayHandler.(AppActivity.java:124)
07-28 17
39.948: E/AndroidRuntime(6429): at org.cocos2dx.cpp.AppActivity.startRealPay(AppActivity.java:96)
07-28 17
39.948: E/AndroidRuntime(6429): at org.cocos2dx.lib.Cocos2dxRenderer.nativeTouchesBegin(Native Method)
07-28 17
39.948: E/AndroidRuntime(6429): at org.cocos2dx.lib.Cocos2dxRenderer.handleActionDown(Cocos2dxRenderer.java:126)
07-28 17
39.948: E/AndroidRuntime(6429): at org.cocos2dx.lib.Cocos2dxGLSurfaceView$6.run(Cocos2dxGLSurfaceView.java:220)
07-28 17
39.948: E/AndroidRuntime(6429): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1462)
07-28 17
39.948: E/AndroidRuntime(6429): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1239)
请问各位大神如何解决!