2

我正在测试 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

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

4

1 回答 1

4

您可以使用带有 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));
}

}

这只是我所做的,而且效果很好。

于 2011-10-07T11:40:35.397 回答