onIabPurchaseFinished never called.

前端 未结 5 2120
野性不改
野性不改 2020-11-29 17:55

I\'ve been trying to set up in-app billing for my first app, and have been using the android.test.purchased sku. The purchase come through, and I manage to get the SKU into

相关标签:
5条回答
  • 2020-11-29 18:39

    I was facing the same issue and the accepted solution was already implemented but couldn't tell what was causing this. Moving to the new Google Play Billing Library 1.0 (released on 19 September 2017) fixed the issue for me!

    I hope following links will help someone who would like to implement the new library:

    Google's blog post about the release

    Google's youtube video

    Play Billing Library Training Class

    Google's Trivial Drive v2 Sample

    Play Billing Library codelab published during Google I/O 2017

    Play Billing Library Docs

    Official reference for classes and methods

    Releases notes

    0 讨论(0)
  • 2020-11-29 18:40

    Try adding this to the Activity that calls mHelper.launchPurchaseFlow(..):

        @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.d(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(TAG, "onActivityResult handled by IABUtil.");
        }
    }
    
    0 讨论(0)
  • 2020-11-29 18:40

    You need to call protected void onActivityResult(); In your parent Activity instead of MainActivity(Trivial Drive) where from you are calling your MainActivity that is Trivial Drive Activity.

    you will receive resultcode values -1 if purchase successful otherwise 0.

    0 讨论(0)
  • 2020-11-29 18:43

    i just found out another important thing: the requestCode that is used to launch the purchase flow has to be >= 0!

    i used "new Random().nextInt()" to generate a random requestCode, and sometimes it worked, sometimes it didn't. now i found out in the following documentation, that the requestCode should not be a negative number:

    http://developer.android.com/reference/android/app/Activity.html#startActivityForResult%28android.content.Intent,%20int%29

    0 讨论(0)
  • 2020-11-29 18:46

    I had the same issue and the onActivityResult was not called either.
    Inspired from @Ghulam's answer I realized that the activity onActivityResult doesn't call the fragment's onActivityResult automatically so I had to do it manually.

    @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if(mCurrentFragment!= null){
                mCurrentFragment.onActivityResult(requestCode, resultCode, data);
            }
        }
    
    0 讨论(0)
提交回复
热议问题