2012-10-27 10 views
5

Ho appena seguito la licenza standard di Android procedura di controllo, e di recente ho ottenere questi rapporti:Rapporto di errore dal correttore di licenza - cosa significa?

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) 

Cosa potrebbe significare? È normale ? Non l'ho mai avuto prima. Dato che l'app in questione sta diventando più popolare, potrebbe essere un'indicazione che qualcuno ha tentato di forzare l'app in qualche modo per evitare di pagare?

Mille grazie per i vostri approfondimenti!

risposta

13

Si verifica di solito questa eccezione, quando il dispositivo non ha installata l'app Google Play o non vi è alcun account registrato con il valore predefinito. Si potrebbe ottenere questa eccezione quando si dispone della vecchia applicazione Google Market.

È possibile controllare il problema qui, così: http://code.google.com/p/android/issues/detail?id=26722

+1

Soluzione alternativa per evitare lo scarico? Un modo per rilevare questo e visualizzare un messaggio? – powder366

+0

Appena provato a rimuovere tutti gli account ma non ha riscontrato questo bug, l'app pensa ancora di avere la licenza. Inoltre, se Google Play non è stato installato sul telefono, come è stata segnalata questa eccezione alla console per gli sviluppatori di Google Play? – petrsyn

6

So che questa è una vecchia questione, ma ho avuto questo NPE errore su un paio di dispositivi di test e ha aggiunto questa soluzione rapida:

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 
    } 

Avrai bisogno dell'autorizzazione GET_ACCOUNTS in AndroidManifest.xml

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

Hmmm, AccountManager non può essere risolto. importare android.accounts.AccountManager non può essere risolto. Qual è il trucco per far funzionare questo? –

+0

Nevermind, capito. Apparentemente questo è stato aggiunto al livello API 5 e sto lavorando su un'app di livello API 4 ... "Non è mai facile" :-) –

+0

le persone tendono a spaventare quando vedono il permesso GET_ACCOUNTS. Si presenta come fondamentalmente "l'applicazione può leggere tutto il tuo account e le tue informazioni personali". Non è un'opzione per me, purtroppo. – ShellDude