【问题标题】:I don't recieve onIabPurchaseFinished when purchase is finished购买完成后我没有收到 onIabPurchaseFinished
【发布时间】:2015-03-08 08:16:06
【问题描述】:
mHelper.launchPurchaseFlow(End.this, "resurrect", 10001,
new IabHelper.OnIabPurchaseFinishedListener() {@Override
    public void onIabPurchaseFinished(IabResult result, Purchase info) {

        Log.v("end:iabfinished:result", result.toString());
        Log.v("end:iabfinished:info", info.toString());


        if (result.isSuccess()) {
            //here's some code which was never executed
        } else if (result.getResponse() != IabHelper.BILLING_RESPONSE_RESULT_USER_CANCELED) Toast.makeText(End.this, result.getMessage() + " (ERROR CODE " + result.getResponse() + ")", Toast.LENGTH_LONG).show();
        try {
            mHelper.consumeAsync(info, new IabHelper.OnConsumeFinishedListener() {
                @Override
                public void onConsumeFinished(Purchase purchase, IabResult result) {
                    Log.v("end:ouconsumeF:purchase", purchase.toString());
                    Log.v("end:ouconsumeF:result", result.toString());
                }
            });
        } catch (Throwable e) {
            Log.v("end:throwableonconsume", e.toString()); //debug
        } //really dont know how it works
    }
}, payload);

此代码成功打开了我在其中进行购买的 google play 片段。但是当购买成功完成时不会调用 onIabPurchaseFinished。调用它的唯一情况是当我收到错误 7 "Item Already Owned"

我使用从示例项目“TrivialDrive”(com.example.android.trivialdrivesample.util)复制的代码

【问题讨论】:

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


    【解决方案1】:

    我刚刚忘记写onActivityResult:

        @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.d(TAG, "onActivityResult(" + requestCode + "," + resultCode + "," + data);
        if (mHelper == null) return;
    
        // 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(TAG, "onActivityResult handled by IABUtil.");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多