我有 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);
}
}
}
我想要完成的是应用内计费提示是否完成交易或取消以恢复我的游戏,而不是简单地关闭和完成。我目前的修复是再次启动游戏活动,这将导致重新加载所有内容并将播放器放回主菜单页面。