Compra de aplicaciones en Android que se bloquea después del pago

He implementado en la compra de aplicaciones en mi aplicación que he utilizado "TrivialDrive" ejemplo de la versión 3 de facturación en la aplicación, he probado la aplicación mediante el uso de respuestas estáticas todos los trabajos como se esperaba.

Pero cuando descargo la aplicación del mercado, la aplicación se bloquea en la compra exitosa,

Mi código es de compra exitosa

IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() { public void onIabPurchaseFinished(IabResult result, Purchase purchase) { Log.d(TAG, "Purchase finished: " + result + ", purchase: " + purchase); if (result.isFailure()) { complain("Error purchasing: " + result); } if (purchase != null) { if (purchase.getSku().equals(Constants.IN_APP_PURCHASE_PRODUCT_ID)) { // bought the premium upgrade! String message = getResources().getString(R.string.app_purchase_successful_msg); mIsPremium = true; updateUi(mIsPremium); successAlert(message); } } } }; 

Tengo que fijar el mensaje en la compra acertada pero no puedo ver este mensaje, (significa que el linse no está ejecutando) cuando compré con éxito de él, fallos de la aplicación después de pago acertado.

Al relanzar la aplicación y tratar de comprar el artículo que dice ya comprado.

Tengo un informe de fallo de la consola del desarrollador.

 02-09 02:01:13.181: E/AndroidRuntime(11530): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=10001, result=-1, data=Intent { (has extras) }} to activity {com.eknathkadam.grammaruplite/com.webrich.base.ui.GoogleInAppPurchaseActivity}: java.lang.NullPointerException 02-09 02:01:13.181: E/AndroidRuntime(11530): at android.app.ActivityThread.deliverResults(ActivityThread.java:3141) 02-09 02:01:13.181: E/AndroidRuntime(11530): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3184) 02-09 02:01:13.181: E/AndroidRuntime(11530): at android.app.ActivityThread.access$1100(ActivityThread.java:130) 02-09 02:01:13.181: E/AndroidRuntime(11530): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1243) 02-09 02:01:13.181: E/AndroidRuntime(11530): at android.os.Handler.dispatchMessage(Handler.java:99) 02-09 02:01:13.181: E/AndroidRuntime(11530): at android.os.Looper.loop(Looper.java:137) 02-09 02:01:13.181: E/AndroidRuntime(11530): at android.app.ActivityThread.main(ActivityThread.java:4745) 02-09 02:01:13.181: E/AndroidRuntime(11530): at java.lang.reflect.Method.invokeNative(Native Method) 02-09 02:01:13.181: E/AndroidRuntime(11530): at java.lang.reflect.Method.invoke(Method.java:511) 02-09 02:01:13.181: E/AndroidRuntime(11530): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 02-09 02:01:13.181: E/AndroidRuntime(11530): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 02-09 02:01:13.181: E/AndroidRuntime(11530): at dalvik.system.NativeStart.main(Native Method) **02-09 02:01:13.181: E/AndroidRuntime(11530): Caused by: java.lang.NullPointerException 02-09 02:01:13.181: E/AndroidRuntime(11530): at com.google.billing.Base64.decode(Base64.java:434)** 02-09 02:01:13.181: E/AndroidRuntime(11530): at com.google.billing.Security.generatePublicKey(Security.java:87) 02-09 02:01:13.181: E/AndroidRuntime(11530): at com.google.billing.Security.verifyPurchase(Security.java:66) 02-09 02:01:13.181: E/AndroidRuntime(11530): at com.google.billing.IabHelper.handleActivityResult(IabHelper.java:437) 02-09 02:01:13.181: E/AndroidRuntime(11530): at com.webrich.base.ui.GoogleInAppPurchaseActivity.onActivityResult(GoogleInAppPurchaseActivity.java:238) 02-09 02:01:13.181: E/AndroidRuntime(11530): at android.app.Activity.dispatchActivityResult(Activity.java:5192) 02-09 02:01:13.181: E/AndroidRuntime(11530): at android.app.ActivityThread.deliverResults(ActivityThread.java:3137) 02-09 02:01:13.181: E/AndroidRuntime(11530): ... 11 more 02-09 02:02:20.610: E/JavaBinder(250): !!! FAILED BINDER TRANSACTION !!! 02-09 02:02:20.638: E/MountService(250): Listener dead 02-09 02:02:20.638: E/MountService(250): Listener dead 02-09 02:02:22.028: E/InputDispatcher(250): channel '41f313f0 com.android.vending/com.android.vending.AssetBrowserActivity (server)' ~ Channel is unrecoverably broken and will be disposed! 02-09 02:03:59.884: E/PowerManagerService(250): Excessive delay setting brightness: 198ms, mask=2 

Su lanzamiento Null Pointer Excepciones en el método onActivityResult () en esta línea

 if (!mHelper.handleActivityResult(requestCode, resultCode, data)) 

El método es así

  @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."); } } 

Funciona perfectamente bien en la respuesta estática pero se bloquea cuando compré en el mercado.

5 Solutions collect form web for “Compra de aplicaciones en Android que se bloquea después del pago”

He solucionado este problema simplemente haciendo mi variable de miembro IabHelper (mHelper) estática

Yo estaba enfrentando exactamente el mismo problema. Entonces, me di cuenta de que toda la actividad a veces se recrea durante el proceso de compra (por ninguna razón). No he probado el ejemplo de Trivia por separado para comprobar si también sucede con esa aplicación, pero lo esperaría, ya que parece relacionado con el proceso de facturación (o con los métodos de ayuda de ese ejemplo, que utilizo en mi propia aplicación también).

La única diferencia entre la parte de facturación de mi propio código y el ejemplo Trivia fue que instanciaba mHelper de un método iniciado en un determinado evento, mientras que en Trivia el ejemplo se instanciaba desde onCreate. Así que hice ese cambio (creo nueva instancia de mHelper de onCreate ahora), y todo comenzó a funcionar bien. La cosa es, cuando la actividad es recreada, mHelper se instancia de nuevo en onCreate, por lo que en la siguiente llamada a onActivityResult, no puede ser null.

Siendo honesto, no tengo idea de por qué se recrea la actividad y por qué se llama método onActivityResult de la nueva instancia de la Actividad, pero todo parece funcionar ahora.

Yo tuve el mismo problema. Lo que encontré fue que cuando se muestra el cuadro de compra en la aplicación, el método onPause se ejecuta en la actividad de mi aplicación y cuando se cierra el cuadro, se ejecuta el método onResume. Este es el código de estos métodos:

 @Override public void onPause() { mWakeLock.release(); super.onPause(); } @Override public void onResume() { super.onResume(); mWakeLock.acquire(); } 

Finalmente, elimino las líneas en las que se ejecuta mWaveLock.

 @Override public void onPause() { super.onPause(); } @Override public void onResume() { super.onResume(); } 

Y funciona bien. Espero que ayude a alguien.

Sé que este hilo es viejo, pero probablemente sólo tenía el mismo problema. ¿Qué hace su método

 complain("Error purchasing: " + result); 

¿hacer?

llame

 Toast.makeText(getParent(), "Premium purchased successfully", Toast.LENGTH_LONG) .show(); 

En el mismo lugar, y esto causó el siguiente error para mí:

 06-26 14:02:54.229: E/AndroidRuntime(25681): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=10001, result=0, data=Intent { (has extras) }} to activity {sf.com.flightBook/sf.com.flightBook.ui.configuration.ConfigurationMain}: java.lang.NullPointerException 

Si esto sigue siendo relevante para usted, debe revisar su método "complain ()".

Cuando tuve este problema me di cuenta de que mi clave pública en mi aplicación no corresponde a la clave de licencia que google play generado para mi aplicación

  • Android: abra los enlaces de Play Store desde la aplicación PhoneGap
  • Cuando se emiten "com.android.vending.INSTALL_REFERRER" get enviar?
  • Seguimiento de referencias de instalación de Android con Amazon Appstore
  • Cómo abrir la aplicación Google Play Store desde mi aplicación para instalar la versión más reciente de mi aplicación disponible en la tienda de reproducción
  • ¿Es posible detectar que una aplicación para Android es una versión beta o una versión de producción?
  • Se ha rechazado una tasa increíblemente alta de "tarjeta del cliente" en la API de suscripción
  • Política de contenido de Google Play
  • ¿Cómo eliminar una aplicación de Play Store?
  • ¿Puedo verificar en mi servidor que un usuario pagó una aplicación de Android a través de Google Play Store?
  • Los APK compatibles con Android Wear deben tener una versión mínima de SDK de al menos 23
  • Equivalente al generador rss.itunes de Google Play
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.