0

我有一个用 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”没有正确处理或根本没有处理,我收到了这条消息。

我的客户拥有的其他设备也可能出现此故障,我希望在这种情况下能够向他们传达一些有意义的错误消息,这样他们就不会因为平板电脑出现问题而责怪我的应用程序。

我想我可以查找进程目录,或者我可以找出哪些服务处理命名意图。这可能吗?如果可以,我该怎么做?如果我能尽可能准确地告诉用户应用程序无法运行的原因,我可以为自己省去很多麻烦。

4

1 回答 1

0

对于带有自定义固件的廉价平板电脑,您拥有的 Google Play 版本很可能是旧的或非官方的,因此“Google Play 服务”APK 丢失或不是最新的。只有安装了官方 Google Play 的设备才能保证正常工作。我会提供一条消息说这样的话。

于 2015-05-08T15:01:43.190 回答