我在谷歌应用购买时遇到问题, 场景是当用户点击购买按钮启动谷歌购买弹出窗口,然后用户点击硬件返回按钮取消它,然后第二次当我们再次点击付款按钮时,它说错误
代码是:
public void launchPayment() {
try {
PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT");
int responseCode = buyIntentBundle.getInt("RESPONSE_CODE");
String purchaseData = buyIntentBundle.getString("INAPP_PURCHASE_DATA");
if (pendingIntent == null) {
if (responseCode == 7) {
Toast toast = Toast.makeText(WelcomeActivity.this, "You already owned this product", Toast.LENGTH_LONG);
toast.show();
updatePayOptions();
paymentCallBack.paidCallBack(0);
} else {
Toast toast = Toast.makeText(WelcomeActivity.this, "Please sign in with your gmail account", Toast.LENGTH_LONG);
toast.show();
}
return;
}
startIntentSenderForResult(pendingIntent.getIntentSender(),
1001, new Intent(), Integer.valueOf(0), Integer.valueOf(0),
Integer.valueOf(0));
} catch (Exception e) {
e.printStackTrace();
}
}
结果代码
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1001) {
int responseCode = data.getIntExtra("RESPONSE_CODE", -1);
String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA");
String dataSignature = data.getStringExtra("INAPP_DATA_SIGNATURE");
ArrayList<String> itemList = data.getStringArrayListExtra("INAPP_PURCHASE_ITEM_LIST");
if (resultCode == RESULT_OK) {
try {
JSONObject jo = new JSONObject(purchaseData);
String sku = jo.getString("productId");
if (sku.equalsIgnoreCase(productId)) {
updatePayOptions();
paymentCallBack.paidCallBack(0);
}
// alert("You have bought the " + sku + ". Excellent choice,
// adve//nturer!");
} catch (Exception e) {
//alert("Failed to parse purchase data.");
e.printStackTrace();
}
}else if(requestCode == RESULT_CANCELED){
paymentCallBack.paidCallBack(0);
}
}
}
错误是这样的:
/? W/System.err: android.content.IntentSender$SendIntentException
01-18 15:08:20.906 16465-16465/? W/System.err: at android.app.Activity.startIntentSenderForResultInner(Activity.java:4149)
01-18 15:08:20.906 16465-16465/? W/System.err: at android.app.Activity.startIntentSenderForResult(Activity.java:4120)
01-18 15:08:20.906 16465-16465/? W/System.err: at android.app.Activity.startIntentSenderForResult(Activity.java:4087)
01-18 15:08:20.906 16465-16465/? W/System.err: at com.pearson.skillsusa.ui.WelcomeActivity.launchPayment(WelcomeActivity.java:266)
01-18 15:08:20.906 16465-16465/? W/System.err: at com.pearson.skillsusa.ui.fragments.WelcomeFragment$3.onClick(WelcomeFragment.java:90)
01-18 15:08:20.906 16465-16465/? W/System.err: at android.view.View.performClick(View.java:5226)
01-18 15:08:20.906 16465-16465/? W/System.err: at android.view.View$PerformClick.run(View.java:21266)
01-18 15:08:20.906 16465-16465/? W/System.err: at android.os.Handler.handleCallback(Handler.java:739)
01-18 15:08:20.906 16465-16465/? W/System.err: at android.os.Handler.dispatchMessage(Handler.java:95)
01-18 15:08:20.906 16465-16465/? W/System.err: at android.os.Looper.loop(Looper.java:168)
01-18 15:08:20.906 16465-16465/? W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5845)
01-18 15:08:20.906 16465-16465/? W/System.err: at java.lang.reflect.Method.invoke(Native Method)
01-18 15:08:20.906 16465-16465/? W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
01-18 15:08:20.906 16465-16465/? W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
至于我在这个地方跟踪此错误startIntentSenderForResult(pendingIntent.getIntentSender(),
1001, new Intent(), Integer.valueOf(0), Integer.valueOf(0),
Integer.valueOf(0));
然后第二次弹出窗口不来
有什么想法吗?请提出任何解决方案吗?
谢谢。