2015-04-29 31 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了,发现解决方案,重新启动设备,它的工作