2016-05-04 5 views
1

Ich versuche, In-App-Billing zu implementieren.In-App-Abrechnung mHelper.dispose() Fehler

Wenn ich das Tutorial folgen und die Linien unten zu meiner App hinzufügen:

public void onDestroy() { 
     super.onDestroy(); 
     if (mHelper != null) mHelper.dispose(); 
     mHelper = null; 

i die folgende Fehlermeldung:

Error:(216, 45) error: unreported exception IabAsyncInProgressException; must be caught or declared to be thrown 

Das Merkwürdige ist, wenn ich ersetzen mHelper.dispose() für mHelper.disposeWhenFinished() es funktioniert .

Ich mache mir Sorgen, weil der gleiche Fehler wieder erscheint in

mHelper.launchPurchaseFlow(this,ITEM_SKU,1001,mPurchaseFinishedListener,hpacote); 

Dank

Antwort

4

Ja, ich bin auch viel Zeit in diese verloren, weil man in der Google-Tutorial auf https://developer.android.com/training/in-app-billing/preparing-iab-app.html die Probe alt und buggy. Wenn Sie ein richtiges Beispiel möchten, müssen Sie TrivialDrive von github https://github.com/googlesamples/android-play-billing/tree/master/TrivialDrive herunterladen, das richtige Korrekturen hat.

Von TrivialDrive MainActivity:

try { 
     mHelper.launchPurchaseFlow(this, mSelectedSubscriptionPeriod, IabHelper.ITEM_TYPE_SUBS,oldSkus, RC_REQUEST, mPurchaseFinishedListener, payload); 
    } catch (IabAsyncInProgressException e) { 
      complain("Error launching purchase flow. Another async operation in progress."); 
      setWaitScreen(false); 
    } 

und dies ist die onDestroy()

@Override 
    public void onDestroy() { 
    super.onDestroy(); 

    // very important: 
    Log.d(TAG, "Destroying helper."); 
    if (mHelper != null) { 
     mHelper.disposeWhenFinished(); 
     mHelper = null; 
    } 
} 

i dies ohne Fehler implementiert haben! ;)