购买后的应用内结算

时间:2011-12-20 05:36:57

标签: android billing in-app

我想知道如何让我的应用移除用于购买用户在应用内结算中购买的商品的按钮。我可以使用共享偏好,但我将如何去做呢。这是我使用的教程:http://www.anddev.org/advanced-tutorials-f21/simple-inapp-billing-payment-t52060.html

由于

public Handler mTransactionHandler = new Handler(){
    public void handleMessage(android.os.Message msg) {
            Log.i(TAG, "Transaction complete");
            Log.i(TAG, "Transaction status: "+BillingHelper.latestPurchase.purchaseState);
            Log.i(TAG, "Item attempted purchase is: "+BillingHelper.latestPurchase.productId);



    };     
};

2 个答案:

答案 0 :(得分:3)

如果你按照Dungeons的例子,你可能已经实现了一个ResponsHandler / PurchaseObserver?

在代码中的某个位置,您已经注册了一个像这样的PurchaseObserver

ResponseHandler.register(purchaseObserver); 

在purchaseObserver中,您覆盖名为

的方法
public void onPurchaseStateChange(...)

通过使用共享偏好设置,您可以跟踪该方法中应用的状态。处理取消/退款很重要。如果没有,你就可以免费赠送你的东西了。代码可能看起来像这样

SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor e = p.edit();
if (purchaseState == Consts.PurchaseState.CANCELED 
         || purchaseState ==   Consts.PurchaseState.REFUNDED) {
      e.putBoolean("PURCHASED", false);
} else if (purchaseState == Consts.PurchaseState.PURCHASED) {
      e.putBoolean("PURCHASED", true);
}
e.commit();

答案 1 :(得分:0)

您可以使用SharedPreferences持久保存已购买的商品。然后在InAppActivity的onCreate()中,执行以下操作:

if(settings.getBoolean("isAwesomeItemBought") {
   buyButton.setVisibility(View.GONE);
   buyText.setVisibility(View.VISIBLE);
}