OnIabPurchaseFinished nunca llamado.

He estado intentando configurar la facturación en la aplicación para mi primera aplicación, y he estado usando el sku android.test.purchased. La compra viene a través, y consigo conseguir el SKU en mi inventario, pero, como el título dice, onIabPurchaseFinished, nunca se llama.

Creo que puede tener algo que ver con este registro: "No se pudo guardar qué vista tiene foco porque la vista enfocada com.android.internal.policy.impl.PhoneWindow$DecorView@406743d0 no tiene id". Eso aparece, justo antes de ir a Google Play. No estoy muy seguro de lo que eso significa …

Compra de lanzamiento:

mHelper.launchPurchaseFlow(this, sku, 10001, mPurchaseFinishedListener, ""); 

Y el oyente:

 IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() { @Override public void onIabPurchaseFinished(IabResult result, Purchase info) { System.out.println("Purchase Finish heard something"); if (result.isFailure()) { Log.d(TAG, "Error purchasing: " + result); return; } else{ Log.d(TAG,"Success!"); } } }; 

Intente agregar esto a la actividad que llama a 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."); } } 

Acabo de descubrir otra cosa importante: el requestCode que se utiliza para iniciar el flujo de compra tiene que ser> = 0!

I used "new Random () nextInt ()" para generar un requestCode aleatorio, ya veces funcionaba, a veces no lo hacía. Ahora he encontrado en la siguiente documentación, que el requestCode no debe ser un número negativo:

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

  • Límite máximo de artículos en la facturación de la aplicación o en la compra de la aplicación
  • Implementación de la facturación en la aplicación
  • El ayudante IAB no está configurado. No se puede realizar la operación: queryInventory
  • ¿Por qué debería deshabilitar ProGuard para vending.billing?
  • Prueba de facturación en la aplicación: android.test.purchased ya propiedad
  • ¿Cómo probar la compra en la aplicación en android?
  • Error al consultar el inventario: Error al actualizar el inventario
  • El elemento que ha solicitado no está disponible para su compra: facturación en la aplicación
  • Cómo realizar una solicitud de compra de elementos múltiples a la función de facturación en aplicaciones de Google Play
  • Android IAB. Error - Se requiere autenticación. Debes iniciar sesión en tu cuenta de Google.
  • Cupones para la facturación integrada en la aplicación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.