28

アプリ内課金を使用しようとしています:

mIabHelper = new IabHelper(this, BILLING_KEY);
        mIabHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
            @Override
            public void onIabSetupFinished(IabResult result) {
                if (!result.isSuccess()) {
                    Log.d(TAG, "Problem setting up In-app Billing: " + result);
                }
            }
        });

そしてエラーが発生します:

Problem setting up In-app Billing: IabResult: Billing service unavailable on device. (response: 3:Billing Unavailable)

なんで?Play ストアのキャッシュをクリアしようとしましたが、うまくいきませんでした。

4

14 に答える 14

43

十分な情報がないと、お役に立てません。代わりに、何か見落としがある場合に備えて、チェックリストを作成してみます。

  1. エミュレータでテストしていますか?請求サービスはデバイスでテストする必要がありますが、エミュレータで本当にテストする必要がある場合は、エミュレータに Google Play がインストールされ、セットアップされていることを確認してください。これは非常に重要です。

  2. マニフェストに正しいアクセス許可を設定しましたか? (com.android.vending.BILLING)

  3. まだアプリをテストしている場合は、プレイストアからテスト アプリのライセンスを取得し、SDK にレベルをインポートし、ライセンス検証ライブラリをセットアップしましたか? (ここでフォローできます:セットアップ

  4. アクティビティ onActivityResult で、アクティビティの結果を正しく処理しましたか?Google の例に見られるように、次のようにする必要があります。


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
  Log.i(TAG, "onActivityResult(" + requestCode + "," + resultCode + "," + data);

  // Pass on the activity result to the helper for handling
  if (!inappBillingHelper.handleActivityResult(requestCode, resultCode, data)) {
    super.onActivityResult(requestCode, resultCode, data);
  }
  else {
    Log.i(TAG, "onActivityResult handled by IABUtil.");
  }
}

また、エミュレーターまたはデバイスでテストしている場合、デバイス名、Android のバージョンなど、より多くの情報があると便利です。

于 2013-04-11T11:22:19.780 に答える
6

このエラーは、デバイスでアプリ内課金サービスに接続しようとしていますが、サービスが IAB バージョン 3 をサポートしていないことを示しています。デバイスの Google Play のバージョンが IAB のバージョン 2 のみをサポートしている可能性があります。お使いのデバイスで実行されている Google Play のバージョンは何ですか?

お使いのバージョンの Google Play は機能していますか (たとえば、Google Play ストアを開くことができますか)? デバイスの日付がずれている場合や、その他の問題がある場合は、Google Play 自体が南に行くことがあります。

最後に、logcat の出力には何がありますか? 詳しく教えていただけると助かります。

于 2013-04-12T11:42:21.307 に答える
4

ワイプ助かりました。奇妙なエラー。

于 2013-04-12T14:44:53.670 に答える
3

修正すべき問題が見つかりました。ur LuckyPatcher で root を試し、構成のトグルを開いて -> 課金を無効にしてください。

ここに画像の説明を入力

于 2015-06-28T01:01:38.713 に答える
1

Google Play キャッシュをワイプすると、このエラーが発生します。IAB で再び機能するには、Google Play アプリを再度開いて利用規約に同意する必要があります。

于 2014-07-09T15:02:43.777 に答える
1

同じ問題がありました。

私のデバイスは、自動更新されない古いバージョンの Google マーケットでルート化され、ROM 化されていました。Market/Play のバージョンは、AppManager で確認できます。

実際には別のデバイスを使用することにしましたが、それ以外の場合は、Market/Play バージョンをアップグレードする方法を見つける必要があると思います。

于 2013-07-02T10:07:13.660 に答える
0

同じエラーが発生し、携帯電話が機内モードになっていることに気付きました! 接続が回復したら、問題なく使用できました。

于 2016-02-07T01:02:23.417 に答える
0

IabHelper.java

Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
serviceIntent.setPackage("com.android.vending");

action と packageName を に正しく指定できない場合はエラーとなりますIInAppBillingService.aidl

于 2016-02-08T10:59:20.997 に答える
0

解決策を思いつきました。

以下の 3 つの手順を試してください。

  1. GooglePlay アプリと Google Play サービス アプリのキャッシュをクリアします。
  2. IInAppBillingService.aidl ファイルを削除します。
  3. 上記のファイルを sdk フォルダーから再度コピーし、アプリの aidl フォルダーに貼り付けます。

この問題は通常、aidl ファイルをあるプロジェクトから別のプロジェクトにコピーするときに発生します。

于 2016-05-22T14:10:37.160 に答える
0

これは、デバイスに現在ログインしているアカウントが Google Developer Console に登録されていないためです。この問題を解決するには、 1. Google Developer Console に移動します。 2. [アカウントの詳細] タブで、[アクセスをテストする Gmail アカウント] にメール アドレス (デバイスにある) を入力し、上部の保存ボタンを押します。

それでおしまい。

于 2014-02-22T14:16:21.480 に答える
0

私の場合、serviceIntent.setPackage("com.android.vending"); に別の値を設定しました。から。この値のままにしておくようにしてください

于 2015-07-29T17:21:28.937 に答える