2012-10-27 22 views
5

我只是遵循了標準的Android許可檢查程序,最近我得到這些報告:來自許可證檢查器的錯誤報告 - 這是什麼意思?

java.lang.NullPointerException 
at com.google.android.vending.licensing.LicenseValidator.verify(LicenseValidator.java:99) 
at com.google.android.vending.licensing.LicenseChecker$ResultListener$2.run(LicenseChecker.java:228) 
at android.os.Handler.handleCallback(Handler.java:605) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:137) 
at android.os.HandlerThread.run(HandlerThread.java:60) 

這到底意味着什麼?這是正常的嗎?我以前從來沒有這樣做過。 由於有問題的應用程序越來越流行 - 這是否表明有人試圖以某種方式破解應用程序以避免支付?

非常感謝您的見解!

回答

13

此異常通常遇到,當設備沒有在谷歌Play應用程序安裝或沒有與默認的註冊賬號。 當擁有舊的Google Market應用程序時,可能會發生此異常。

你可以在這裏檢查的問題,以及:http://code.google.com/p/android/issues/detail?id=26722

+1

避免轉儲的解決方法?一種方法來檢測並顯示一條消息? – powder366

+0

剛剛嘗試刪除所有帳戶,但沒有遇到此錯誤,該應用程序仍然認爲它有許可證。另外,如果Google Play未在手機上安裝,則會如何將此例外情況報告給Google Play開發者控制檯? – petrsyn

6

我知道這是一個老問題,但我有一對夫婦測試設備的這個錯誤NPE,並將此快速修復:

AccountManager am = AccountManager.get(context); 
    int numAccounts = am.getAccountsByType("com.google").length; 

    if(numAccounts == 0) { 
     noAccountDialog(); 
    } else { 
     // Do the license check as you have an account 
    } 

您需要AndroidManifest.xml中的GET_ACCOUNTS權限

<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
+0

嗯,AccountManager無法解析。導入android.accounts.AccountManager也無法解析。有什麼訣竅使這項工作? –

+0

沒關係,明白了。顯然,這是在API級別5中添加的,我正在研究API級別4應用程序......「這不容易」:-) –

+0

人們在看到GET_ACCOUNTS權限時往往會嚇壞了。它基本上呈現爲「應用程序可以讀取您的所有帳戶和個人信息」。不幸的是我不是一個選擇。 – ShellDude