AndroidBillingLibrary: Servicio remoto se bloqueó en BillingController.requestPurchase

Estoy desarrollando una aplicación que tendrá algunas características que el usuario debe pagar para usar. El usuario puede comprar en cada actividad haciendo clic en el botón. Para ello, utilizo la facturación en aplicaciones Android y el robotmedia / AndroidBillingLibrary. Todo parece funcionar bien en mis dispositivos: HTC Wildfire S (Android 2.3.5) y Asus Transformer Pad (Android 4.1.1), pero tengo información (con captura de registro) que a veces en otros dispositivos después de hacer clic en botón de compra no pasa nada. Los dispositivos:

  • Samsung Galaxy ACE (Android 2.3.5)
  • HTC Sensation (Andorid 4.0.3)
  • Xperia Neo V (Android 2.3.4)

Aquí está la captura de registro:

11-30 15:05:16.157: D/Parent Activity:(30220): Request Purchase: myitem 11-30 15:05:16.177: W/BillingService(30220): Remote billing service crashed 11-30 15:05:16.177: W/BillingService(30220): Caused by: null 

Esto es parte del código de mi Actividad:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); (...) initViews(); initBilling(); } @Override protected void onDestroy() { BillingController.unregisterObserver(mBillingObserver); (...) super.onDestroy(); } private void initBilling() { mBillingObserver = new BillingObserver(this); BillingController.registerObserver(mBillingObserver); BillingController.setConfiguration(new BillingConfiguration()); BillingController.checkBillingSupported(getApplicationContext()); if (!mBillingObserver.isTransactionsRestored()) { BillingController.restoreTransactions(getApplicationContext()); } Settings.updateOwnedItems(this); } private void showPurchaseAlert() { if(Settings.isOnline() && BillingController.checkBillingSupported(this) == BillingStatus.SUPPORTED) { (...) ((Button) alertRoot.findViewById(R.id.alert_billing_yes)) .setOnClickListener(new OnClickListener() { public void onClick(View v) { requestPurchase(BillingElement.CATALOG[number].sku); alert.cancel(); } }); } else { (...) //Purchase Alert Invisible } } public void requestPurchase(String itemId) { Log.d("Parent Activity:", "Request Purchase: "+itemId); BillingController.requestPurchase(getApplicationContext(), itemId, true, null); } 

En este código siempre compruebo si un dispositivo está en línea y si se admite la Facturación en la aplicación. Parece que IMarketBillingService de Google In-App Billing lanza RemoteException y se captura en robotmedia / AndroidBillingLibrary en la clase BillingService:

 private void runRequest(BillingRequest request){ try { long requestId = request.run(mService); BillingController.onRequestSent(requestId, request); } catch (RemoteException e) { Log.w(this.getClass().getSimpleName(), "Remote billing service crashed"); Log.w(this.getClass().getSimpleName(), "Caused by: "+e.getCause()); // TODO: Retry? } } 

¿Puede alguien explicarme por qué se lanza RemoteException? ¿Y cómo manejarlo? He hecho muchas pruebas pero en mis dispositivos la facturación en la aplicación siempre funciona correctamente. Lo que es más interesante en estos dispositivos donde se dispara RemoteException, sólo sucede a veces.

One Solution collect form web for “AndroidBillingLibrary: Servicio remoto se bloqueó en BillingController.requestPurchase”

Es un error en la implementación robotmedias, sólo tienes que volver a vincular el servicio a tu actividad.

Hpique lo arregló (y algunos otros errores) en su tenedor: https://github.com/hpique/AndroidBillingLibrary/commit/a62593764172d0fd650b1dca1d15c59e79aecd49

Echa un vistazo a https://github.com/hpique/AndroidBillingLibrary

  • Android Facebook Login callback no funciona
  • Gson: establece el formato de fecha para la marca de tiempo y la zona horaria
  • Sugerencias sobre cómo guardar datos
  • Cómo cerrar una ventana / actividad después de una cierta cantidad de inactividad
  • Google Plus SignIn / oAuth2 - lanzamiento del lado del servidor TokenResponseException: 401 no autorizado
  • Cómo crear cuadro de diálogo de alerta Sí / NO en fragmento en Android
  • Android StackScrollLayout
  • Cifrado entre Android y C #
  • Descargar imagen de Android desde el servidor y guardar en sdcard sin utilizar BitmapFactory
  • ¿Enfoque para la fijación de NoClassDefFoundError?
  • Cómo resolver estos errores LibVLC núcleo vout mostrar?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.