現在、ユーザーが少額の寄付を行えるように、アプリ内課金をアプリに追加しようとしています。私は開発に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 に追加する必要があると言う人もいます。
これを試してみましたが、違いはなく、このエントリは公式ガイドにも記載されていないため、必要ないと思います。
私が間違っていることはありますか?