inAppBilling は機能していますが、少し改善しようとしています。Angry Birds でアプリの課金を試してみると、アプリケーションの上に直接開くことができますが、アプリケーションはアプリの課金をフォアグラウンド/デスクトップに取り込みます。ドキュメントを読んだところ、singleTop をオフにする必要があり、アプリケーション コンテキストではなく、アクティビティ コンテキストを指定してリフレクションを使用する必要があると記載されています。これらのことをすべて完了したことを確認しましたが、まだフォアグラウンドに引っ張っています。何か案は?
私の確認: MyActivity というアクティビティがあります
Log.d("TEST", mContext.getClass().getName());
MyActivity で応答します
および MyActivity の Android マニフェスト
android:launchMode="standard"
編集:
チェックアウト アクティビティを開始するコード
void startBuyPageActivity(PendingIntent pendingIntent, Intent intent) {
if (mStartIntentSender != null) {
// This is on Android 2.0 and beyond. The in-app buy page activity
// must be on the activity stack of the application.
try {
// This implements the method call:
// mActivity.startIntentSender(pendingIntent.getIntentSender(),
// intent, 0, 0, 0);
mStartIntentSenderArgs[0] = pendingIntent.getIntentSender();
mStartIntentSenderArgs[1] = intent;
mStartIntentSenderArgs[2] = Integer.valueOf(0);
mStartIntentSenderArgs[3] = Integer.valueOf(0);
mStartIntentSenderArgs[4] = Integer.valueOf(0);
mStartIntentSender.invoke(mActivity, mStartIntentSenderArgs);
Log.d("TAG", mActivity.getClass().getName());
} catch (Exception e) {
Log.e(TAG, "error starting activity", e);
}
} else {
// This is on Android version 1.6. The in-app buy page activity must be on its
// own separate activity stack instead of on the activity stack of
// the application.
try {
pendingIntent.send(mActivity, 0 /* code */, intent);
} catch (CanceledException e) {
Log.e(TAG, "error starting activity", e);
}
}
}
私が達成しようとしているのは、単に閉じて終了するのではなく、トランザクションを終了するかキャンセルしてゲームを再開するかどうかのアプリ内課金プロンプトです。私が持っている現在の修正は、ゲームのアクティビティを再度開始することです。これにより、すべてがリロードされ、プレーヤーがメイン メニュー ページに戻ります。