0

有没有人成功地将许可验证库 (LVL) 与动态壁纸集成在一起?如果它只是运行一个 Activity,那么从 Licensing Activity 扩展我的 Activity 就很清楚了,这反过来又扩展了 Activity。但是动态壁纸是一项服务,我不确定这两者是如何交互的。

我正在使用由此派生的代码: http ://www.droidforums.net/forum/android-app-developers/69899-market-license-easy-implementation-protect-your-apps.html 这似乎是代码我在网上能找到的几乎所有东西都是指的。

我注意到墙纸设置是一项活动,并且我可以正常工作,但是由于某种原因,我无法理解许可的内容...

4

3 回答 3

2

这实际上非常简单,您不需要使用任何 Activity 类来实现 WallpaperService 的许可。

确保您已仔细按照http://developer.android.com/guide/publishing/licensing.html上的说明进行操作

我是这样做的:

您的扩展 Engine 类应包含类似于以下内容的内容...(对您的问题不重要的代码已被删除)

class startYourEngines extends Engine {     

    public startYourEngines() {
        super();
        licenseStatus(); //custom license check method (for modularity)            
        //the rest of your engine would go here
    }

    public void onDestroy() {
        super.onDestroy();
        licenseChecker.onDestroy(); //we call this to close IPC connections
    }

//prep work
    private static final String BASE64_PUBLIC_KEY = //OMITTED//;
    private LicenseCheckerCallback licenseCallback;
    private LicenseChecker licenseChecker;  
    private byte[] salt = "rAnd0mStr!ng".getBytes();
    private AESObfuscator aes;
    private String deviceId;

//our custom license check method       
    private void licenseStatus() {
        deviceId = Secure.getString(getContentResolver(), Secure.ANDROID_ID);
        aes = new AESObfuscator(salt, getPackageName(), deviceId);
        licenseCallback = new licenseVerification();    
        licenseChecker = new LicenseChecker(context, new ServerManagedPolicy(context, aes), BASE64_PUBLIC_KEY);
        licenseChecker.checkAccess(licenseCallback);
    }

//our callback method
    private class licenseVerification implements LicenseCheckerCallback {
        @Override
        public void allow() {
             //allow full app use
        }

        @Override
        public void dontAllow() {
             //prevent or limit app use
        }
        @Override
        public void applicationError(ApplicationErrorCode errorCode) {
             //error handling here
        }

    }
}

Android 平台上的许可在创建时考虑到了多功能性。请务必通读文档,您应该没有任何问题。

于 2011-04-27T02:50:06.007 回答
1

我只编写了启动活动的应用程序,但是查看我的源代码,似乎您必须让 Activity 进行许可证检查的唯一原因是显示对话框。

在所有在线可用的示例中,实现总是在and方法LicenseCheckerCallback中显示一个对话框。为什么不只是显示敬酒并退出您的墙纸服务(调用)?allow()dontAllow()dontAllow()stopSelf(YourService.this)

如果您需要更多信息,请告诉我,因为我认为您不仅限于使用活动进行许可证检查。顺便说一句,请确保您不要在应用程序或首选项中保留整个字符串等。任何具有 root 访问权限的人都可以访问您的首选项,如果您的应用程序被反编译,您的字符串是可见的......

于 2011-03-18T14:35:30.070 回答
0

我想我现在实际上已经开始工作了。我正在将 LicenseCheckActivity 扩展到我自己的 Activity 类,我在清单文件中使用通常的 MAIN 操作和 LAUNCH 类别调用该类。我实例化我的类,进行许可证检查,然后根据该结果允许墙纸运行或不运行(尽管最好的方法仍然是我需要解决的问题)。

我认为我必须遗漏一些东西似乎太容易了。我会感谢任何有在 Android 市场上销售许可动态壁纸经验的人来分享他们关心的任何智慧。

于 2011-03-18T07:45:24.253 回答