4

我已经使用静态响应 id 在我的帐户中实现了应用内购买android.test.purchased。现在,当购买该项目时,会Toast弹出“谢谢。您的项目将很快出现”。

我认为到目前为止,每件事都完美无缺。

我的问题是

  • 这是哪里Toast来的。我找不到我的代码。
  • 我怎样才能覆盖这个 Toast?是因为Reserved product ID我用的吗?一旦我使用自己的产品 ID,它会改变吗?
  • 应该使用哪个覆盖函数知道用户是否购买或取消了请求。

        @Override
        public void onPurchaseStateChange(PurchaseState purchaseState, String itemId,
                long purchaseTime, String developerPayload) {       
            if (purchaseState == PurchaseState.PURCHASED) {             
                // Is it here?
            }
        }
    

  • 最后,我可以在其中执行用户界面修改onPurchaseStateChange吗?
  • 这是我的onPurchaseStateChange方法

        @Override
        public void onPurchaseStateChange(PurchaseState purchaseState, String itemId,
                long purchaseTime, String developerPayload) {
            if (Consts.DEBUG) {
                Log.i(TAG, "onPurchaseStateChange() itemId: " + itemId + " " + purchaseState);
            }            
            if (purchaseState == PurchaseState.PURCHASED) {
                for (CatalogEntry e : CATALOG) {
                    if (e.sku.equals(itemId) &&
                            e.managed.equals(Managed.SUBSCRIPTION)) {
                    }
                }
            }
            Toast.makeText(getApplicationContext(), "purchase failed", Toast.LENGTH_LONG).show();
        }
    

    任何帮助将不胜感激!:) 谢谢!

    4

    1 回答 1

    2

    首先,敬酒来自市场活动。user1378730 在评论中发布的链接解释了它是如何被删除的。

    像您所做的那样确定购买的结果onPurchaseStateChange是正确的,purchaseState 对象有几个您可以检查的枚举。

    我不建议在该onPurchaseStateChange方法中执行界面交互,因为在完成购买时可能会多次调用它。我从那个方法跳到我的活动中的一些自定义方法来决定要做什么,例如一个onPurchaseCancel可以onPurchaseSuccess判断它是否已经运行的方法。这样做还可以让您将市场交互与代码流的其余部分分开,从而更容易调试。

    于 2012-08-17T06:59:21.670 回答