【问题标题】:onIabPurchaseFinishedListener never gets calledonIabPurchaseFinishedListener 永远不会被调用
【发布时间】:2018-04-09 22:58:20
【问题描述】:

我的onIabPurchaseFinishedListener 永远不会被调用,即使我在应用程序对话框中单击立即购买,logcat 也不会打印任何内容。

public class CreateAlbumActivity extends Activity {
IabHelper mHelper;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_create_album);
        mHelper = new IabHelper(this, Global.inapp);

    mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
           public void onIabSetupFinished(IabResult result) {
              if (!result.isSuccess()) {
                 // Oh noes, there was a problem.
                 // AlertDialogHelper.CreateNormalDialog(context, "Failed to set In-App Billing: " +result);
                 Log.d(Global.TAG, "Problem setting up In-app Billing: " + result);
                 return;
              }            
                 // Hooray, IAB is fully set up!  

           }
        });
    }
 public void createAlbumEvent(){

                    mHelper.launchPurchaseFlow(CreateAlbumActivity.this, "android.test.purchased", 10001,   
                           mPurchaseFinishedListener, "bGoa+V7g/yqDXvKRqq");


    }
    IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener 
     = new IabHelper.OnIabPurchaseFinishedListener() {
     public void onIabPurchaseFinished(IabResult result, Purchase purchase) 
     {
        if (result.isFailure()) {
           Log.d(Global.TAG, "Error purchasing: " + result);
           return;
        }      
        Log.d(Global.TAG, "SUCCESS PURCHASE!");
     }
     };
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         Log.d(Global.TAG, "onActivityResult(" + requestCode + "," + resultCode + "," + data);

         // Pass on the activity result to the helper for handling
         if (!mHelper.handleActivityResult(requestCode, resultCode, data)) {
             // not handled, so handle it ourselves (here's where you'd
             // perform any handling of activity results not related to in-app
             // billing...
             super.onActivityResult(requestCode, resultCode, data);
         }
         else {
             Log.d(Global.TAG, "onActivityResult handled by IABUtil.");
         }
     }
}

【问题讨论】:

    标签: android in-app-purchase in-app-billing


    【解决方案1】:

    好吧,在花了几个小时试图解决这个问题之后,我得到了以下答案:https://stackoverflow.com/a/17411617/1203043

    问题是我的活动有一个“无历史记录”标志。如果我从活动中删除此标志,它就可以正常工作。我真的不知道为什么会这样,但就是这样。

    希望你们永远不会经历我经历过的噩梦。

    【讨论】:

      【解决方案2】:

      我发现以下链接很有帮助: onIabPurchaseFinished never called.

      问题在于 Activity 没有正确处理 onActivityResult 并且在 In App Purchasing 教程中没有提及。

      【讨论】:

        【解决方案3】:

        我遇到的问题是因为我使用了片段并且 onActivityResult 直到我从父活动手动调用它才被调用。 如果有人遇到同样的问题,我提供了一个答案here

        【讨论】:

          猜你喜欢
          • 2012-10-27
          • 2013-10-12
          • 2012-03-27
          • 2013-08-29
          • 2013-11-03
          • 1970-01-01
          • 1970-01-01
          • 2015-05-06
          • 2015-10-15
          相关资源
          最近更新 更多