4

静的応答IDを使用して、アカウントにアプリ内購入を実装しましたandroid.test.purchased。アイテムを購入すると、 「ありがとうございます。まもなくアイテムが表示されます」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 に答える