2013-08-18 36 views
5

My onIabPurchaseFinishedListener không bao giờ được gọi, mặc dù tôi nhấp vào mua ngay trong hộp thoại inapp, logcat không in bất cứ thứ gì.onIabPurchaseFinishedListener không bao giờ được gọi là

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

Trả lời

8

Được rồi, vì vậy sau khi trải qua giờ qua giờ về cố gắng giải quyết vấn đề này, tôi đã xem qua các câu trả lời sau đây: https://stackoverflow.com/a/17411617/1203043

Vấn đề là hoạt động của tôi có một lá cờ của "NO LỊCH SỬ". Nếu tôi xóa cờ này khỏi hoạt động, nó hoạt động tốt. Tôi thực sự không có bất kỳ đầu mối nào tại sao nó lại xảy ra nhưng ở đây.

Mong các bạn sẽ không bao giờ trải qua cơn ác mộng mà tôi đã trải qua.

3

tôi thấy đường dẫn sau hữu ích: onIabPurchaseFinished never called.

Vấn đề là các Hoạt động không xử lý onActivityResult chính xác và không có đề cập đến nó trong hướng dẫn Trong App Purchasing.

+0

THanks! điều này đã cứu tôi .. – afadfadf

Các vấn đề liên quan