2014-04-02 18 views
8

Sto tentando di far funzionare i servizi di fatturazione in-app di Google.Android In App Billing SecurityException "Richiamo del raccoglitore a un'interfaccia errata"

Ho finora che il servizio è legato e collegato, ma una volta che provo a recuperare alcuni dati dal servizio si blocca con il registro:

 
04-02 10:36:32.795 10569-10651/my.app.package E/IAP﹕ java.lang.SecurityException: Binder invocation to an incorrect interface 
      at android.os.Parcel.readException(Parcel.java:1425) 
      at android.os.Parcel.readException(Parcel.java:1379) 
      at billing.IInAppBillingService$Stub$Proxy.getSkuDetails(IInAppBillingService.java:251) 
      at my.app.package.libs.clientbackend.iap.IAPHelper$FetchItemsCallable.call(IAPHelper.java:102) 
      at my.app.package.libs.clientbackend.iap.IAPHelper$FetchItemsCallable.call(IAPHelper.java:89) 
      at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390) 
      at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
      at java.lang.Thread.run(Thread.java:856) 

Questo è il mio codice finora:

l'attività che mostra gli acquisti:

Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND"); 
serviceIntent.setPackage("com.android.vending"); 
bindService(serviceIntent, this, Context.BIND_AUTO_CREATE); 

le chiamate IAB una volta che il servizio è collegato:

Bundle itemBundle = new Bundle(); 
itemBundle.putStringArrayList("ITEM_ID_LIST", new ArrayList<>(Arrays.asList(itemIds))); 
Bundle detailsBundle = service 
     .getSkuDetails(3, context.getPackageName(), "inapp", itemBundle); 

Errore nell'ultima riga ...getSkuDetails(... con l'errore pubblicato sopra.


Ho fatto qualche ricerca su questo tema e abbiamo trovato il nostro che potrebbe essere causato da nomi dei pacchetti sbagliati. Ho incluso il IInAppBillingService.aidl come è descritto sulla documentazione di Google, ma ancora sto ottenendo un pacchetto sbagliato durante l'importazione:

Il file e ': src/main/aidl/com/android/vending/billing/IInAppBillingService.aidl

ma quando sono l'importazione della classe generata Android Studio utilizza questa importazione percorso:

import billing.IInAppBillingService; 

In base alla documentazione dovrebbe essere in realtà:

import com.android.vending.billing.IInAppBillingService; 

Is c'è ancora qualcosa di sbagliato nella configurazione del mio progetto o qualcuno conosce la causa di questo errore?

Molto grazie in anticipo, McFarlane

risposta

19

Ho avuto lo stesso problema e ho capito che AIDL file deve essere nel pacchetto com.android.vending.billing nella cartella src, ma si mette in quello src/main/aidl/com/android/vending/billing che non è corretto.

+0

funziona? –

+0

sì è .....! –

+0

grazie .......................! – Saveen

0

Ho avuto anche lo stesso problema. Seguo questa procedura da https://developer.android.com

Copia il file IInAppBillingService.aidl nel tuo progetto.

Se si utilizza Android Studio, procedere come segue per copiare il file : Passare alla src/main nella finestra degli strumenti del progetto. Selezionare File> Nuovo> Directory, immettere help nella finestra Nuova directory e selezionare OK. Selezionare File> Nuovo> Pacchetto, immettere com.android.vending.billing nella finestra Nuovo pacchetto e selezionare OK. Utilizzando il sistema di file explorer operativo, passare alla <sdk>// /, copiare il file IInAppBillingService.aidl extra google/play_billing , e incollarlo nella com.android.vending.BILLING pacchetto nel progetto.

creo AIDL cartella e poi in questa cartella creare package com.android.vending.BILLING, e la mia importazione è ancora importare fatturazione.IInAppBillingService; Provo ad aggiungere il pacchetto in src ma IInAppBillingService.java non viene generato.

enter image description here

0

Ho avuto questo problema a causa dell'uso di In App Billing v2 e pensando che fosse la versione v3. Oops :)

Problemi correlati