Android LVL许可在现场壁纸?

Android LVL许可在现场壁纸?,android,live-wallpaper,android-lvl,Android,Live Wallpaper,Android Lvl,是否有人成功地将许可验证库(LVL)与实时墙纸集成?如果它只是在运行一个活动,那么从授权活动扩展我的活动就非常清楚了,授权活动反过来又扩展了活动。但实时壁纸是一种服务,我不确定这两者是如何互动的 我使用的代码来自于此:这似乎是我在网络上能找到的几乎所有东西都引用的代码 我注意到墙纸设置是一项活动,我让它们正常工作,但由于某些原因,我无法摸索许可的东西…我想我现在已经让它工作了。我正在将LicenseCheckActivity扩展到我自己的活动类,我在清单文件中使用常用的主操作和启动类别调用该类。

是否有人成功地将许可验证库(LVL)与实时墙纸集成?如果它只是在运行一个活动,那么从授权活动扩展我的活动就非常清楚了,授权活动反过来又扩展了活动。但实时壁纸是一种服务,我不确定这两者是如何互动的

我使用的代码来自于此:这似乎是我在网络上能找到的几乎所有东西都引用的代码


我注意到墙纸设置是一项活动,我让它们正常工作,但由于某些原因,我无法摸索许可的东西…

我想我现在已经让它工作了。我正在将LicenseCheckActivity扩展到我自己的活动类,我在清单文件中使用常用的主操作和启动类别调用该类。我实例化我的类,进行许可证检查,然后要么允许墙纸运行,要么不基于该结果(尽管最好的方法仍然是我需要整理的东西)


我想我肯定错过了什么,这似乎太容易了。我非常感谢任何有在安卓市场上销售授权实时壁纸经验的人,分享他们所关心的任何智慧。

我想我现在已经成功了。我正在将LicenseCheckActivity扩展到我自己的活动类,我在清单文件中使用常用的主操作和启动类别调用该类。我实例化我的类,进行许可证检查,然后要么允许墙纸运行,要么不基于该结果(尽管最好的方法仍然是我需要整理的东西)


我想我肯定错过了什么,这似乎太容易了。我非常感谢任何有在Android市场上销售授权实时壁纸经验的人分享他们所关心的任何智慧。

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

在联机提供的所有示例中,
LicenseCheckerCallback
实现始终在
allow()
dontAllow()方法中显示一个对话框。为什么不在
dontAllow()
中敬酒并退出壁纸服务(调用
stopSelf(YourService.this)


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

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

在联机提供的所有示例中,
LicenseCheckerCallback
实现始终在
allow()
dontAllow()方法中显示一个对话框。为什么不在
dontAllow()
中敬酒并退出壁纸服务(调用
stopSelf(YourService.this)


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

实际上非常简单,您不需要使用任何活动类来实现对服务的授权

确保你在工作时仔细遵守了说明

我是这样做的:

您的扩展引擎类应包括类似以下内容。。。(对您的问题不重要的代码已删除)


在Android平台上创建许可证时考虑到了多功能性。只要确保通读文档,就不会有任何问题。

实际上非常简单,您不需要使用任何活动类来实现对服务的许可

确保你在工作时仔细遵守了说明

我是这样做的:

您的扩展引擎类应包括类似以下内容。。。(对您的问题不重要的代码已删除)


在Android平台上创建许可证时考虑到了多功能性。只要确保通读文档,就不会有任何问题。

这样行吗?是否有人可以更新清单,使许可证活动根本不被调用?我猜也许我应该让许可证检查活动设置一个SharedReference变量,然后让墙纸服务根据该首选项启动或关闭?首选项也是他们可以更改的。抱歉成为绝望的预兆。。。我想,与其评论,不如看看我是否能提供一个解决方案。这样行吗?是否有人可以更新清单,使许可证活动根本不被调用?我猜也许我应该让许可证检查活动设置一个SharedReference变量,然后让墙纸服务根据该首选项启动或关闭?首选项也是他们可以更改的。抱歉成为绝望的预兆。。。我想,与其评论,不如看看我是否能提供一个解决方案。非常感谢。我想我只是盯着这个问题看得太久了,以至于我的大脑拒绝在活动框之外思考。我刚刚在扩展GLC服务的服务中实现了LicenseCheckerCallback。到现在为止,一直都还不错。我仍然需要验证它是否正在从授权服务器发送和接收正确的消息,但您的建议让我克服了主要障碍。我不确定这是否会有效
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
        }

    }
}