2015-04-29 32 views
2

我不知道我是否正在執行LVL的正確實施。
請指導我解決這個問題。Android授權錯誤561 - 此應用程序未獲得許可。請從Android Market購買它

我跟着一些答案,如清除緩存,卸載和reinsatlling。
仍然沒有運氣..

在上傳到alpha測試之前,我嘗試了以下步驟。

  1. 我正在使用Eclipse。我使用導出簽名的應用程序包選項創建了一個密鑰存儲區
  2. 從密鑰存儲區上載了APK。

以下是我的代碼,這是我從How to license my Android application?

public class Activity_LicenseCheck extends Activity { 
    private class MyLicenseCheckerCallback implements LicenseCheckerCallback{ 
    @Override 
    public void allow(int reason) { 
      toast("Inside-Allow:" + reason); 
     if (isFinishing()) { 
      // Don't update UI if Activity is finishing. 
      return; 
      } 
     startMainActivity(); 

    } 

    @Override 
    public void dontAllow(int reason) { 

      toast("dontAllow: " + reason); 
     if (isFinishing()) { 
       // Don't update UI if Activity is finishing. 
       return; 
      } 


    } 

    @Override 
    public void applicationError(int errorCode) { 
     if (isFinishing()) { 
       return; 
      } 

      toast("Errorffff: " + errorCode); 
      startMainActivity(); 

    } 

    } 
    private static final String BASE64_PUBLIC_KEY = "mykey"; 
    private static final byte[] SALT = new byte[] {11,34,56,36,3,45,-87,2,67,-98,32,-14,44,-58,39,-26,72,-19,86,23}; 
    private LicenseChecker mChecker; 

    // A handler on the UI thread. 

    private LicenseCheckerCallback mLicenseCheckerCallback; 
    private void doCheck() { 
      mChecker.checkAccess(mLicenseCheckerCallback); 
    } 

    @Override 
     public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Try to use more data here. ANDROID_ID is a single point of attack. 
    String deviceId = Secure.getString(getContentResolver(), 
      Secure.ANDROID_ID); 

    // Library calls this when it's done. 
    mLicenseCheckerCallback = new MyLicenseCheckerCallback(); 
    // Construct the LicenseChecker with a policy. 
    mChecker = new LicenseChecker(this, new ServerManagedPolicy(this, 
      new AESObfuscator(SALT, getPackageName(), deviceId)), 
      BASE64_PUBLIC_KEY); 
      doCheck(); 
     } 

    @Override 
     protected Dialog onCreateDialog(int id) { 
    // We have only one dialog. 
    return new AlertDialog.Builder(this) 
      .setTitle("Application Not Licensed") 
      .setCancelable(false) 
      .setMessage(
        "This application is not licensed. Please purchase it from Android Market") 
      .setPositiveButton("Buy App", 
        new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, 
           int which) { 
          Intent marketIntent = new Intent(
            Intent.ACTION_VIEW, 
            Uri.parse("http://market.android.com/details?id=" 
              + getPackageName())); 
          startActivity(marketIntent); 
          finish(); 
         } 
        }) 
      .setNegativeButton("Exit", 
        new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, 
           int which) { 
          finish(); 
         } 
        }).create(); 
     } 
     @Override 
     protected void onDestroy() { 
    super.onDestroy(); 
    mChecker.onDestroy(); 
     } 

     private void startMainActivity() { 
     startActivity(new Intent(this, Activity_login.class)); 
     finish(); 
     } 

     public void toast(String string) { 
    Toast.makeText(this, string, Toast.LENGTH_SHORT).show(); 
     } 
} 

回答

1

了最後,工作的問題是BASE64 PUBLIC KEY.I的錯誤輸入完全無能許可概念谷歌應該拿出輕鬆解決。

它是如何工作對我來說.. 我的第一個發佈版本是1.0,我是得到錯誤561(未獲準) 的isuue錯了BASE64公鑰項,然後我用正確的一個替換它,並改變應用程序版本在Androidmanifest.xml中重置爲2.0並重新生成密鑰庫,最後將apk上傳到開發者控制檯,並在控制檯中禁用版本1和發佈版本2。當從控制檯下載新的apk仍面臨問題的應用程序拋出「錯誤檢索服務器[RPC:S-7:AEC-0]信息」錯誤。我GOOGLE了,發現解決方案,重新啓動設備,它的工作