2011-10-12 90 views
0

可能重複:
Cannot get Android Market Licensing (LVL) working reliably. Almost always returns RETRY的Android CheckLicense始終執行 「dontallow」 方法

我現在用的LVL系統在Android中,我的問題是,它總是被執行「不允許」方法。我正在自己的手機上測試它,它有我的谷歌帳戶關聯,所以它應該收到許可的響應(我的配置文件中配置了此響應)。我的代碼如下:

public void ComprobarLicencia() 
    { 
     // Construct the LicenseCheckerCallback. The library calls this when done. 
     mLicenseCheckerCallback = new ComprobadorLicencia(); 

     String deviceId = Secure.getString(getContentResolver(), Secure.ANDROID_ID); 
     // Construct the LicenseChecker with a Policy. 
     mChecker = new LicenseChecker(
      this, 
      new ServerManagedPolicy(this, new AESObfuscator(Constantes.SALT, getPackageName(), deviceId) 
      ), 
      Constantes.clave_publica_licencia 
     ); 

     mChecker.checkAccess(mLicenseCheckerCallback); 
    } 



private class ComprobadorLicencia implements LicenseCheckerCallback 
    { 
     public void allow() 
     { 
      if (isFinishing()) 
      { 
       // Don't update UI if Activity is finishing. 
       return; 
      } 
     } 

     public void dontAllow() 
     { 
      if (isFinishing()) 
      { 
       // Don't update UI if Activity is finishing. 
       return; 
      } 
      showDialog(Constantes.dialog_licencia_incorrecta); 
     } 

     @Override 
     public void applicationError(ApplicationErrorCode errorCode) 
     { 
      if (errorCode == ApplicationErrorCode.NOT_MARKET_MANAGED) 
      { 
       showDialog(Constantes.dialog_licencia_incorrecta); 
      } 
     } 
    } 

我在做什麼錯?

回答

1

我見過的人最常見的錯誤是忘記將他們的應用程序上傳到Android電子市場(它不需要發佈,但至少需要上傳爲草稿)。

您還必須使用與用於Market APK相同的簽名密鑰進行測試。換句話說,您需要運行應用程序的發佈版本,而不是調試版本(它使用調試簽名密鑰)。

最後,如果這是一個現有的應用程序,請確保您已增加應用程序的版本代碼並請求com.android.vending.CHECK_LICENSE權限,包括您的本地APK和上傳到Market的版本。 (如果您忘記執行其中任何一項,許可證驗證服務器將不知道對您的應用程序的請求做出迴應。)