3

現在、ユーザーが少額の寄付を行えるように、アプリ内課金をアプリに追加しようとしています。私は開発にAndroid Studioの最新バージョンを使用しており、このガイドに従っています(ステップバイステップで、前述のとおりにすべてを行っています...少なくとも私はそうしていると思います:-)):https://developer.android.com /google/play/billing/billing_integrate.html

AIDL ファイルは上記の場所 (パッケージ com.android.vending.billing の下) に配置され、フォルダーsrc/mainの下に生成されていることがわかります。gen

製品の取得をテストしたところ、メソッドが呼び出されないことに気付きonServiceConnectedました。次のようにアクティビティに実装されています。

IInAppBillingService mService;

ServiceConnection mServiceConn = new ServiceConnection() {
   @Override
   public void onServiceDisconnected(ComponentName name) {
       mService = null;
   }

   @Override
   public void onServiceConnected(ComponentName name,
      IBinder service) {
       mService = IInAppBillingService.Stub.asInterface(service);
   }
};

サービスへのバインディングは次のように作成されます (同じアクティビティ内)。

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_donation);
  Intent serviceIntent =
      new Intent("com.android.vending.billing.InAppBillingService.BIND");
  serviceIntent.setPackage("com.android.vending");
  bindService(serviceIntent, mServiceConn, Context.BIND_AUTO_CREATE);
}

次の 2 つのことに気付きました。

  • 寄付活動を終了すると、コンソールに例外が表示... has leaked ServiceConnection ... that was originally bound hereされます。しかし、それは私の主な問題とは無関係だと思います.onServiceConnectedまた、なぜそれが公式ガイドにあるのですか?
  • bindServiceブール値を返し、戻り値を確認したところ、falseでした。だから、問題はここからだと思います。

次のように、サービスのエントリを AndroidManifest.xml に追加する必要があると言う人もいます。

これを試してみましたが、違いはなく、このエントリは公式ガイドにも記載されていないため、必要ないと思います。

私が間違っていることはありますか?

4

2 に答える 2

0

この例のグーグルのようなアプリ内購入を実装しました。それを読むと、上記のコードがクラスに表示IabHelperされます(実装されています)。

https://github.com/googlesamples/android-play-billing/tree/master/TrivialDrive

于 2016-09-27T09:46:36.910 に答える