Android mHelper.launchPurchaseFlow启动两次
对于购买,我有代码Android mHelper.launchPurchaseFlow启动两次,android,Android,对于购买,我有代码 public void onClick(View v) { // FIRST CHECK IF THE USER IS ALREADY A SUBSCRIBER. mHelper.launchPurchaseFlow(SubscribeIntroActivity.this, SUBSCRIBE_SKU, RC_REQUEST, mPurchaseFinishedListener); } public
public void onClick(View v)
{
// FIRST CHECK IF THE USER IS ALREADY A SUBSCRIBER.
mHelper.launchPurchaseFlow(SubscribeIntroActivity.this, SUBSCRIBE_SKU, RC_REQUEST, mPurchaseFinishedListener);
}
public void onClick(View v)
{
// FIRST CHECK IF THE USER IS ALREADY A SUBSCRIBER.
mHelper.launchPurchaseFlow(SubscribeIntroActivity.this, SUBSCRIBE_SKU, RC_REQUEST, mPurchaseFinishedListener);
}
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
Log.d(TAG, "Purchase finished: " + result + ", purchase: " + purchase);
// if we were disposed of in the meantime, quit.
if (mHelper == null) return;
if (result.isFailure()) {
Log.d(TAG,"Error purchasing: " + result);
return;
}
if (!verifyDeveloperPayload(purchase)) {
Log.d(TAG,"Error purchasing. Authenticity verification failed.");
return;
}
Log.d(TAG, "Purchase successful.");
if (purchase.getSku().equals(SKU_PREMIUM)) {
// bought the premium upgrade!
Log.d(TAG, "Purchase is premium upgrade. Congratulating user.");
Log.d(TAG,"Thank you for upgrading to premium!");
mIsPremium = true;
isShortVersion=false;
DrawIsShortVersion();
}
}
};
日志中的错误为
Caused by: java.lang.IllegalStateException: Can't start async operation (launchPurchaseFlow) because another async operation(launchPurchaseFlow) is in progress.
当我点击按钮打开买方对话框时,我可以毫无问题地购买,但如果我点击按钮对话框打开,在设备上按下硬件按钮(未购买),我看到第一个活动是按钮购买,再次按下按钮购买并引发错误。也许有人知道这个错误?我做错了什么
。。。添加了if(mHelper!=null)mHelper.flangendasync();在调用launchPurchaseFlow之前,现在没有错误,但是mHelper.flagEndAsync();杀死previos任务?您可以发布日志吗?
在大多数情况下,当异步PurcaseFlow正在运行,而您尝试运行另一个Purcase时,会发生错误。
你在Purcase Listener中做什么
编辑:您有多个线圈可用于:
第一:创建全局布尔->MTASKISRUNING
private void doBuyProduct(int id){
if(!mTaskIsRunning){
mHelper.launchPurchaseFlow(SubscribeIntroActivity.this, SUBSCRIBE_SKU, RC_REQUEST, mPurchaseFinishedListener);
mTaskIsRunning=true;
}
}
然后在你的听众中:
或者,您可以在任务运行时禁用按钮
同样的程序:
private void doBuyProduct(int id){
disableBuyButtons();
mHelper.launchPurchaseFlow(SubscribeIntroActivity.this, SUBSCRIBE_SKU, RC_REQUEST, mPurchaseFinishedListener);
}
在FinishListener中:
enableButtons();
enableButtons();