您可以使用带有 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));
}
}
这只是我所做的,而且效果很好。