gpt4 book ai didi

java - IInAppBillingService 陷入购买叠加层

转载 作者:太空宇宙 更新时间:2023-11-04 11:07:36 25 4
gpt4 key购买 nike

我有 InAppPurchases,我使用

创建了服务
mService = IInAppBillingService.Stub.asInterface(service);

并用

绑定(bind)它
Intent serviceIntent =
new Intent("com.android.vending.billing.InAppBillingService.BIND");
serviceIntent.setPackage("com.android.vending");
context.bindService(serviceIntent, serviceConnection, Context.BIND_AUTO_CREATE);

然后我开始购买

JSONObject jsonObject = new JSONObject();
jsonObject.put("android_id", MainApplication.getInstance().android_id);
jsonObject.put("user_id", userId);
jsonObject.put("email", userEmail);

Bundle buyIntentBundle = mService.getBuyIntent(3, context.getPackageName(),
purchasingItemId, "inapp", jsonObject.toString());
PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT");

if (pendingIntent != null) {
fragmentActivity.startIntentSenderForResult(pendingIntent.getIntentSender(),
MainApplication.ACTIVITY_RESULT_REQUEST_KEY.IN_APP_BILLING_PURHASING_RESPONSE,
new Intent(), Integer.valueOf(0), Integer.valueOf(0),
Integer.valueOf(0));
}

工作正常,我看到带有预加载器的白卡 - 然后购买信息,单击确定,再次看到带有预加载器的白卡,然后看到带有购买成功的白卡,但是如果我在看到购买信息或购买成功之前最小化应用程序(当预加载器旋转时),然后再次打开它 - 我看到无限的预加载器,没有任何反应,后退按钮不起作用(但购买成功并且用户在后台获取他的元素)并且仅摆脱它的方法 - 重新启动应用程序

这就是它的样子 - /image/MIZhq.jpg

为什么会发生这种情况以及如何避免它?

最佳答案

这是一种可能的解决方案:

InAppPurchase Controller 中添加一个标志,用于启动您的应用内购买 Intent

public volatile boolean inAppFragmentOpened = false;

在发送 Intent 之前将其设置为true,并在购买结束时将其设置为false

然后,在Activity的方法onStart()中添加此检查

    if (InAppBillingFacade.getInstance().inAppFragmentOpened) {
InAppBillingFacade.getInstance().inAppFragmentOpened = false;
Intent i = new Intent(this, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}

如果启动时出现打开的应用内购买窗口,这将重新启动您的应用程序 - 它可以帮助避免出现故障和卡住,但也许有人知道更好的解决方案?

关于java - IInAppBillingService 陷入购买叠加层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46340453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com