我第一次使用 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
有没有人找到任何方法以有意义的方式“捕获”此错误,或者有任何解决方法来检查意图/包是否可用?
提前致谢。
啊,不久后我自己找到了答案:
您必须通过实施此处建议的方法来检查意图接收器是否可用:
[我可以使用这个意图 - 博客文章][1]
(编辑)但是,此方法需要进行一些重大更改才能适用于计费服务,因为原始方法仅检查默认意图,这不是我们想要的。
但是,我的实现如下所示,并且似乎可以工作,至少在这些设备、规格等上。我测试过:(仅针对应用程序计费的 V3 进行了测试)
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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)