5

我第一次使用 Google for Android 的应用内结算。但是,如果用户没有互联网连接或没有安装 google 框架(例如使用自定义 rom),并且可能在其他情况下(如错误/旧市场版本等)此方法(在提供的 IabHelper 类中):

        mContext.bindService(new Intent("com.android.vending.billing.InAppBillingService.BIND"),
                         mServiceConn, Context.BIND_AUTO_CREATE);

不起作用,也没有建立服务。使用“活动管理器”中的小调试信息:

12-17 19:58:31.184: W/ActivityManager(76): Unable to start service Intent { act=com.android.vending.billing.InAppBillingService.BIND }: not found

有没有人找到任何方法以有意义的方式“捕捉”这个错误,或者有任何解决方法来检查 Intent/Package 是否可用?

提前致谢。

4

1 回答 1

9

啊,不久之后自己找到了答案:

您必须通过实施此处建议的方法来检查意图接收器是否可用:[我可以使用此意图 - 博客文章][1]

(编辑)但是,此方法需要进行一些重大更改才能适用于计费服务,因为原始方法仅检查默认意图,这不是我们想要的。

但是,我的实现如下所示,并且似乎可以正常工作,至少在我测试的那些设备、规格等上:(仅针对 V3 OF IN APP BILLING 进行了测试)

public static boolean isBillingAvailable(Context context) {
    final PackageManager packageManager = context.getPackageManager();
    final Intent intent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
    List<ResolveInfo> list = packageManager.queryIntentServices(intent, 0);
    return list.size() > 0;
}
于 2012-12-18T13:10:57.050 回答