2012-04-15 4 views
3

Ich versuche Android Marketing Licensing in einer noch nicht veröffentlichten App zu verwenden.Android Market Licensing (LVL) gibt immer RETRY zurück

Ich habe die LVL-Bibliotheken mithilfe der ServerManagedPolicy installiert und integriert.

Das Problem ist, dass LicenseCheckerCallback.dontAllow ohne Ausnahme mit der Antwort 'RETRY' aufgerufen wird, wenn die Lizenzprüfung ausgeführt wird.

Ich habe durch viele Beiträge zu diesem Thema gelesen und ...

  • die Manifest-Datei enthält die CHECK_LICENSE Erlaubnis
  • ich genau die gleiche APK-Datei leite, wie ich in den Entwickler hochgeladen Konto
  • ich einen Testbenutzer in dem Entwickler-Account
  • die Antwort das gleiches auf einem Emulator 2.2 und ein Gerät mit
  • die Antwort 2.3
  • hinzugefügt habe, ist das gleiche, ob lo gged in als Test oder Entwickler Benutzer
  • Die Antwort ist das gleiche, ob ich LICENSED ausgewählt oder NOT_LICENCED innerhalb des Entwickler-Kontos
  • Obwohl beiden Emulator und Gerät eine Internetverbindung zu allen Zeiten haben, ist die Antwort eigentlich das gleiche, wenn keine Verbindung vorhanden ist
  • der Code wird zur Zeit nicht verschleierte

Mein Code ist, dass im Wesentlichen durch die Dokumentation ...

String deviceId = Settings.Secure.getString(getContentResolver(),Settings.Secure.ANDROID_ID); 

mLicenseCheckerCallback = new MyLicenseCheckerCallback(); 
mChecker = new LicenseChecker(
      this, new ServerManagedPolicy(this, 
        new AESObfuscator(SALT, getPackageName(), deviceId)), 
      BASE64_PUBLIC_KEY); 

mChecker.checkAccess(mLicenseCheckerCallback); 

Welche Möglichkeiten habe ich, um das zu erreichen?

+0

ich das gleiche Problem hatte Apps, die mit LVL an Play Store übermittelt wurden, und zwar nur auf Version 2.2, nicht jedoch auf Version 2.3.3 oder Version 4.x. Ich habe Ihre Frage gelesen und festgestellt, dass der erste Kontextparameter in Ihrem LicenseChecker-Konstruktor nicht der Anwendungskontext ist. Ich habe es wie in Ihrer Antwort unten in getApplicationContext geändert und es funktioniert jetzt. – ubzack

Antwort

3

Die Antwort hier entpuppte ... Android Context.bindService always returns false and ServiceConnection object is never triggered

Die Lizenzprüfung von einer Registerkarte aufgerufen wurde, so sollte der Code sein ...

String deviceId = Settings.Secure.getString(getContentResolver(),Settings.Secure.ANDROID_ID); 

mLicenseCheckerCallback = new MyLicenseCheckerCallback(); 
mChecker = new LicenseChecker(
     getApplicationContext(), new ServerManagedPolicy(this, 
       new AESObfuscator(SALT, getPackageName(), deviceId)), 
     BASE64_PUBLIC_KEY); 

mChecker.checkAccess(mLicenseCheckerCallback);