欠伸展肢体,吟咏心自愉。这篇文章主要讲述使用IabHelper时无法绑定InAppBillingService相关的知识,希望能为你提供帮助。
我目前正在开发游戏,并尝试实施Google Play的应用内结算V3。我按照了应用内样本并使用了IabHelper
。但是,在设备中运行应用程序时出现问题。我发现在mHelper.startSetup
之后,onServiceDisconnected
和onServiceConnected
都没有被召唤。所以我在IabHelper类中打印了mContext.bindService(serviceIntent, mServiceConn, Context.BIND_AUTO_CREATE);
的结果。结果是false
。
这是我的代码:
private IabHelper mHelper;
// MainActivity onCreate
protected void onCreate(Bundle savedInstanceState){
// ...
mHelper = new IabHelper(this, base64EncodedPublicKey);
mHelper.enableDebugLogging(true);
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
if (!result.isSuccess()) {
return;
}if (mHelper == null) return;
}
});
}
在IabHelper类的
startSetup
方法中:public void startSetup(final OnIabSetupFinishedListener listener) {
// ...
Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
serviceIntent.setPackage("com.android.vending");
if (!mContext.getPackageManager().queryIntentServices(serviceIntent, 0).isEmpty()) {
// service available to handle that Intent
boolean bRes = mContext.bindService(serviceIntent, mServiceConn, Context.BIND_AUTO_CREATE);
// ### I printed the result here it was false
Log.i("IAB", "IAB Service Result = " + bRes);
}
else {
// no service available to handle that Intent
if (listener != null) {
listener.onIabSetupFinished(
new IabResult(BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE,
"Billing service unavailable on device."));
}
}
}
我不知道这个问题。我已经做好了:
- 添加权限:com.android.vending.BILLING
- 将.aidl文件从示例复制到/ src / com / android / vending / billing
- 我的android目标设置为android-22
答案最后,我通过将最新版本的游戏上传到开发者控制台并调试最新的apk来解决它。问题消失了。希望这有助于某人。
另一答案从Project“Trivial”复制util文件夹中的所有类,或者可以将整个Util包复制到项目中。然后尝试一下。
另一答案【使用IabHelper时无法绑定InAppBillingService】我有这个问题,并发现了
- 调试的应用程序版本必须与开发人员控制台中发布的版本相同。
- 播放服务需要可用,有些手机可能会在屏幕锁定后实际终止服务,开始播放存储,然后重做绑定工作。
- 使用开箱即用的IabHelper可能会触发服务断开未处理,重新初始化失败等问题,我不得不稍微修改一下。
推荐阅读
- 有没有办法设置我的Android应用程序的最大版本,允许一组用户下载()
- Ionic 3.0版本构建 - 取代Android Studio内置的现有Google Play应用
- Android应用内商品价格存储/显示
- Android - 检查用户是否从其他软件包购买了InApp产品[重复]
- 如何在应用程序中连接Android市场()
- Android应用程序更新通知
- 处理Android SDK版本和定位
- Google Play(从IInAppBillingService更新价格)
- Android(如何在Google Play开发者控制台中获取有关已捕获例外的信息())