2012-09-28 44 views
0

我用Java编写的应用程序,我刚才授权验证库(LVL)启用。在启动过程中,我会调用LVL向Google Play“回家”,以确保该应用得到正确授权,以便应用可以采取措施。如何测试Android设备上是否安装了许可证服务?

此代码已经过测试的各种反应和对各种设备和它的作品。除了一个设备。在此设备上连续失败,并出现无法绑定到服务的错误。

出错行是由谷歌在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”处理不当或完全不可能,我收到了这条消息。

也有可能我的客户拥有的其他设备也可能有这个错误我希望能够在这种情况下向他们传达一个有点意义的错误消息,所以他们不会责怪我的应用程序与他们的问题片剂。

我想我既可以查找进程目录,我也可以有些什么样的服务处理命名意图如何找出来。这是可能的,如果是的话,我该怎么做呢?如果我可以尽可能准确地告诉用户,为什么应用程序不会运行,我可以为自己节省很多的痛苦。

+0

确保谷歌Play是安装在廉价平板电脑,否则LVL将无法正常工作。 – yorkw

+0

自定义固件可能正在进行一些DNS修改以禁用许可证检查和广告? – Simon

+0

谷歌播放安装(并且它也更新自己),但许可证服务不起作用,或者至少bindService不起作用。如果它可能发生在我身上,那么我必须假设它可能发生在其他人身上。我不想要发生的是他们责怪我的应用程序的平板电脑的问题。如果我只是拒绝他们,那么他们会责怪我,所以我想要某种信息将他们引导到其他地方,而不是责备我。必须找到一种方法来确定哪些服务/活动/接收方将处理意图(如果有的话)并将问题传达给用户。 – locka

回答

0

这是相当有可能的一种廉价的平板电脑,亮出使用自定义固件,谷歌的Play版本已经是旧的或非正式的,所以“谷歌播放服务” APK丢失或不是最新的。只有具有官方Google Play安装的设备才能保证正常工作。我会提供一个这样的消息。

相关问题