java - 无需互联网连接的许可系统

标签 java android google-play android-lvl

我正在测试 Android 的许可系统。确切地说,我刚刚使用 ServerManagedPolicy 编译了示例项目,我有一个问题: 如果我这样做:

Device's Internet=ON
Launch the app
Launch the check= Allow access
Device's Internet=OFF
Relaunch app and check= Allow access

现在让我们看看问题:

Device's Internet=OFF
Launch the app
Launch the check= Don't allow access

从逻辑上讲,我不希望这样。因为如果用户在没有互联网的情况下启动该应用程序,即使该应用程序已获得许可,该应用程序也会被阻止。我该如何解决这个问题?我的应用程序需要连接到互联网才能工作,因此延迟检查没有问题

最佳答案

您可以使用带有handleResponse()的自定义LicenseValidator类,仅当策略返回LicenseResponse.NOT_LICENSED时,该类才会在许可证检查器回调上调用dontAllow(),并在所有其他情况下(包括网络错误)调用allow()。

 public class LicenseValidator {
...
    public void handleResponse(LicenseResponse response, ResponseData rawData) {
        mPolicy.processServerResponse(response);
        if (mPolicy.allowAccess()) {
            mCallback.allow();
        } else if (response == LicenseResponse.NOT_LICENSED) {
            mCallback.dontAllow();
        }
    }

并使用自定义策略而不是 ServerManagedPolicy:

public class MyPolicy {
private LicenseResponse mLastResponse;

public MyPolicy(Activity activity) {
    mLastResponse = LicenseResponse.RETRY;
}

public void processServerResponse(LicenseResponse response) {
    mLastResponse = response;
}

public boolean allowAccess() { 
    return (LicenseResponse.LICENSED.equals(mLastResponse));
}

}

这只是我所做的一点小事,而且效果很好。

关于java - 无需互联网连接的许可系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7685820/

相关文章:

java - 在硬件级别模拟按键 - Windows

java - 为什么我的 java 服务器和 android 客户端无法来回发送任何消息?

google-play - 如何使用 Android 管理 API 静默推送 apk 并通过 Android 设备策略安装它?

android - 我的应用程序的minSdkVersion为14,targetSdkVersion为21,但Google Play判断它仅支持Android 4.0〜4.4

java - 方法: Identifier expected

java - GridLayout 的一个单元格中有多个 Java GUI 组件?

Android 应用程序翻译不工作

javascript - 错误 : MountEmulatedStorage()

android - Camera2 API 与 Google Play 商店的兼容性问题

java - 从映射的 XML 文件中排除 java 字段