2013-08-18 6 views
5

Мой onIabPurchaseFinishedListener никогда не вызывается, хотя я нажимаю кнопку «Купить сейчас» в диалоговом окне inapp, logcat ничего не печатает.onIabPurchaseFinishedListener никогда не набирается

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."); 
     } 
    } 
} 

ответ

8

Хорошо, так после расходов часов в течение часа о попытке решить эту проблему, я наткнулся на следующий ответ: https://stackoverflow.com/a/17411617/1203043

Проблема заключалась в том, что моя деятельность имеет флаг «НЕТ ИСТОРИИ». Если я удалю этот флаг из активности, он работает нормально. Я действительно не знаю, почему это происходит, но вот оно.

Надеюсь, вы, ребята, никогда не пройдете через кошмар, через который я прошел.

3

Я нашел ссылку полезную: onIabPurchaseFinished never called.

Проблема заключается в том, что активность не обрабатывает onActivityResult правильно и нет никакого упоминания об этом в учебнике в App Purchasing.

+0

Чин! это спасло меня .. – afadfadf