我有一个用 Java 编写的应用程序,我刚刚启用了许可证验证库 (LVL)。在启动过程中,我调用 LVL 来“打电话回家”到 Google Play,以确保应用程序获得正确许可,以便应用程序可以采取行动。
此代码已经过各种响应和各种设备的测试,并且可以正常工作。除了一台设备。在此设备上不断失败,并出现无法绑定到服务的错误。
违规行是 Google 在 LVL SDK 中提供的 LicenseChecker.java 的一部分:
boolean bindResult = mContext
.bindService(
new Intent(
new String(Base64.decode("Y29tLmFuZHJvaWQudmVuZGluZy5saWNlbnNpbmcuSUxpY2Vuc2luZ1NlcnZpY2U="))),
this, // ServiceConnection.
Context.BIND_AUTO_CREATE);
Base64 字符串包含“com.android.vending.licensing.ILicensingService”(我不知道为什么要对其进行编码,除非可能是一种较弱的混淆形式)。
该设备只是我在网上购买的用于测试的廉价平板电脑,然后刷新了自定义固件。无论出于何种原因,完全有可能“com.android.vending.licensing.ILicensingService”没有正确处理或根本没有处理,我收到了这条消息。
我的客户拥有的其他设备也可能出现此故障,我希望在这种情况下能够向他们传达一些有意义的错误消息,这样他们就不会因为平板电脑出现问题而责怪我的应用程序。
我想我可以查找进程目录,或者我可以找出哪些服务处理命名意图。这可能吗?如果可以,我该怎么做?如果我能尽可能准确地告诉用户应用程序无法运行的原因,我可以为自己省去很多麻烦。