2012-09-28 42 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安裝的設備才能保證正常工作。我會提供一個這樣的消息。

相關問題