Ho configurato la fatturazione in-app per la prima volta utilizzando la nuova API v3. Funziona correttamente sui miei dispositivi ma ho ricevuto molte segnalazioni di errori da altri utenti.Fatturazione in-app per Android v3: "Impossibile eseguire l'operazione: queryInventory"
Uno di loro è:
java.lang.IllegalStateException: IAB helper is not set up. Can't perform operation: queryInventory
at my.package.util.iab.IabHelper.checkSetupDone(IabHelper.java:673)
at my.package.util.iab.IabHelper.queryInventory(IabHelper.java:462)
at my.package.util.iab.IabHelper$2.run(IabHelper.java:521)
at java.lang.Thread.run(Thread.java:1019)
E un altro è:
java.lang.NullPointerException
at my.package.activities.MainActivity$4.onIabSetupFinished(MainActivity.java:159)
at my.package.util.iab.IabHelper$1.onServiceConnected(IabHelper.java:242)
mia implementazione attività segue il codice di Google esempio (tutte le classi di riferimento sono intatte dall'esempio):
IabHelper mHelper;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//...
mHelper = new IabHelper(this, IAB_PUBLIC_KEY);
mHelper.enableDebugLogging(true);
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
if (!result.isSuccess()) {
// Oh noes, there was a problem.
return;
}
// Hooray, IAB is fully set up. Now, let's get an inventory of
// stuff we own.
mHelper.queryInventoryAsync(mGotInventoryListener); //***(1)***
}
});
}
// Listener that's called when we finish querying the items we own
IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(IabResult result,
Inventory inventory) {
if (!result.isFailure()) {
if (inventory.hasPurchase(SoundsGlobals.IAB_SKU_PREMIUM)){
//we are premium, do things
}
}
else{
//oops
}
}
};
@Override
protected void onDestroy() {
if (mHelper != null) {
mHelper.dispose();
mHelper = null;
}
super.onDestroy();
}
Suppongo che entrambi gli errori provengano dalla riga contrassegnata come ***(1)***
Qual è la causa di questi errori? Se sto chiamando queryInventoryAsync
solo all'interno di onIabSetupFinished
, come è possibile che mHelper
sia nullo o che mHelper
non sia impostato?
Qualcuno sa una soluzione a questo?
Avere la stessa eccezione: l'assistente IAB non è impostato. Impossibile eseguire l'operazione: queryInventory. Potrebbe esserci un bug nella libreria di fatturazione di Google Play? – Wizche