2013-08-18 4 views
5

Mon onIabPurchaseFinishedListener ne sera jamais appelé, même si je clique sur l'achat maintenant dans la boîte de dialogue InApp, la logcat n'imprime rien.onIabPurchaseFinishedListener ne sera jamais appelé

public class CreateAlbumActivity extends Activity { 
IabHelper mHelper; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_create_album); 
     mHelper = new IabHelper(this, Global.inapp); 

    mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() { 
      public void onIabSetupFinished(IabResult result) { 
       if (!result.isSuccess()) { 
       // Oh noes, there was a problem. 
       // AlertDialogHelper.CreateNormalDialog(context, "Failed to set In-App Billing: " +result); 
       Log.d(Global.TAG, "Problem setting up In-app Billing: " + result); 
       return; 
       }    
       // Hooray, IAB is fully set up! 

      } 
     }); 
    } 
public void createAlbumEvent(){ 

        mHelper.launchPurchaseFlow(CreateAlbumActivity.this, "android.test.purchased", 10001, 
          mPurchaseFinishedListener, "bGoa+V7g/yqDXvKRqq"); 


    } 
    IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener 
    = new IabHelper.OnIabPurchaseFinishedListener() { 
    public void onIabPurchaseFinished(IabResult result, Purchase purchase) 
    { 
     if (result.isFailure()) { 
      Log.d(Global.TAG, "Error purchasing: " + result); 
      return; 
     }  
     Log.d(Global.TAG, "SUCCESS PURCHASE!"); 
    } 
    }; 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     Log.d(Global.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(Global.TAG, "onActivityResult handled by IABUtil."); 
     } 
    } 
} 

Répondre

8

Bon, après avoir passé des heures sur des heures à essayer de résoudre ce problème, je suis tombé sur la réponse suivante: https://stackoverflow.com/a/17411617/1203043

Le problème était que mon activité a un drapeau de « pas d'histoire ». Si je retire ce drapeau de l'activité, cela fonctionne très bien. Je n'ai vraiment aucune idée de la raison pour laquelle ça arrive mais c'est ici.

J'espère que vous ne traverserez jamais le cauchemar que j'ai traversé.

3

J'ai trouvé le lien utile: onIabPurchaseFinished never called.

Le problème est que l'activité ne fait pas mention correctement et il gère pas onActivityResult est dans le tutoriel In App achat.

+0

thanks! Cela m'a sauvé .. – afadfadf