2011-11-06 61 views
1

我使用例如由Android开发,并创造了代码:如何在应用程序中创建应用内结算?

package com.nda.quizapp; 

import com.nda.dungeons.BillingService; 
import com.nda.dungeons.Consts; 
import com.nda.dungeons.ResponseHandler; 
import com.nda.dungeons.Consts.PurchaseState; 
import com.nda.dungeons.Consts.ResponseCode; 
import com.nda.dungeons.PurchaseObserver; 

import com.nda.dungeons.Consts.PurchaseState; 
import com.nda.dungeons.Consts.ResponseCode; 
import com.nda.dungeons.BillingService.RequestPurchase; 
import com.nda.dungeons.BillingService.RestoreTransactions; 

import android.app.Activity; 
import android.os.Bundle; 
import android.os.Handler; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.Toast; 

public class QuizappUpgradeActivity extends Activity implements OnClickListener{ 

    private class QuestionsPurchaseObserver extends PurchaseObserver { 

     public QuestionsPurchaseObserver(Handler handler) { 
      super(QuizappUpgradeActivity.this, handler); 
     } 

     public QuestionsPurchaseObserver(Activity activity, Handler handler) { 
      super(activity, handler); 
      // TODO Auto-generated constructor stub 
     } 

     @Override 
     public void onBillingSupported(boolean supported) { 
      // TODO Auto-generated method stub 
      Log.e("method", "onBillingSupported"); 
     } 

     @Override 
     public void onPurchaseStateChange(PurchaseState purchaseState, 
       String itemId, int quantity, long purchaseTime, 
       String developerPayload) { 
      // TODO Auto-generated method stub 
      Log.e("method", "onPurchaseStateChange"); 
     } 

     @Override 
     public void onRequestPurchaseResponse(RequestPurchase request, 
       ResponseCode responseCode) { 
      Log.e("method", "onRequestPurchaseResponse"); 
      // TODO Auto-generated method stub 
      if (responseCode == ResponseCode.RESULT_OK) { 
       Log.e("RESULT", "OK"); 
      } else if (responseCode == ResponseCode.RESULT_USER_CANCELED) { 
       Log.e("RESULT", "CANCEL"); 
      } else { 
       Log.e("RESULT", "ERROR"); 
      } 
     } 

     @Override 
     public void onRestoreTransactionsResponse(RestoreTransactions request, 
       ResponseCode responseCode) { 
      // TODO Auto-generated method stub 
      Log.e("method", "onRestoreTransactionsResponse"); 
     } 

    } 

    private QuestionsPurchaseObserver mObserver; 
    private Handler mHandler; 
    private BillingService mBillingService; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.upgrade); 

     initialize(); 

     mHandler = new Handler(); 
     mObserver = new QuestionsPurchaseObserver(mHandler); 
     mBillingService = new BillingService(); 
     mBillingService.setContext(this); 

     ResponseHandler.register(mObserver); 
     if (!mBillingService.checkBillingSupported()) { 
      Toast.makeText(this, "Paying isn't support", Toast.LENGTH_LONG).show(); 
     } 
    } 

    private void initialize() { 

     Button bronze=(Button)findViewById(R.id.buttonBuyBronze); 
     Button silver=(Button)findViewById(R.id.buttonBuySilver); 
     Button gold=(Button)findViewById(R.id.buttonBuyGold); 

     bronze.setOnClickListener(this); 
     silver.setOnClickListener(this); 
     gold.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View view) { 

     if (mBillingService.requestPurchase("bronze_q", null)) { 

      Log.e("1", "bronze yes"); 
     } 
     else { 

      Log.e("1", "bronze no"); 
     } 
    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 
     ResponseHandler.register(mObserver); 
    } 

    @Override 
    protected void onStop() { 
     super.onStop(); 
     //ResponseHandler.unregister(mObserver); 
    } 
} 

支付被成功地表示,但我有问题的窗口 - 如果我关闭该窗口不是我不明白在onRequestPurchaseResponse方法的任何事件。我犯了什么错误?谢谢。

回答

0

你应该添加此行到清单文件:

<receiver android:name="BillingReceiver"> 
    <intent-filter> 
    <action android:name="com.android.vending.billing.IN_APP_NOTIFY" /> 
    <action android:name="com.android.vending.billing.RESPONSE_CODE" /> 
    <action android:name="com.android.vending.billing.PURCHASE_STATE_CHANGED" /> 
    </intent-filter> 
</receiver> 

You can find it here

相关问题