Android 为什么LicenseCheckerCallback的方法允许应返回重试而未获得许可?

Android 为什么LicenseCheckerCallback的方法允许应返回重试而未获得许可?,android,Android,我正在我的Android应用程序中实现 为什么LicenseCheckerCallback的方法允许应返回RETRY and NOT_LICENSED和dontAllow RETRY and LICENSED 根据其方法的名称,它们不应返回除分别许可和未许可/重试之外的任何内容 我必须知道如何正确处理返回的代码,才能知道用户是否从Google Play下载了我的应用程序 返回代码int policyReason的脚本如下: 官方文件说: public interface LicenseCheck

我正在我的Android应用程序中实现

为什么LicenseCheckerCallback的方法允许应返回RETRY and NOT_LICENSED和dontAllow RETRY and LICENSED

根据其方法的名称,它们不应返回除分别许可和未许可/重试之外的任何内容

我必须知道如何正确处理返回的代码,才能知道用户是否从Google Play下载了我的应用程序

返回代码int policyReason的脚本如下:

官方文件说:

public interface LicenseCheckerCallback {

    /**
     * Allow use. App should proceed as normal.
     *
     * @param reason Policy.LICENSED or Policy.RETRY typically. (although in
     *            theory the policy can return Policy.NOT_LICENSED here as well)
     */
    public void allow(int reason);

    /**
     * Don't allow use. App should inform user and take appropriate action.
     *
     * @param reason Policy.NOT_LICENSED or Policy.RETRY. (although in theory
     *            the policy can return Policy.LICENSED here as well ---
     *            perhaps the call to the LVL took too long, for example)
     */
    public void dontAllow(int reason);

    ...
}

非常感谢

创建类的实例时,必须提供接口的实现

{@link LicenseChecker}用于确定用户是否应该有权访问应用程序的策略

根据源代码中的官方文档,提供的策略决定用户是否可以使用该应用程序

现在假设由于网络问题,许可证检查器无法连接到服务器。在这种情况下,您应该有自己的策略来允许用户使用或不使用应用程序。您可以通过实现策略接口或使用一个预定义的或多个策略来定义自己的自定义策略

请看表2。如您所见,如果响应代码是错误\联系\服务器或错误\服务器\失败之一,则原因将是重试,但您提供的策略将决定是否允许用户使用该应用程序。现在,我想应该很清楚为什么Policy.RETRY可能是allow方法的潜在输入

正如我前面提到的,您可以提供自己的自定义策略。假设您的用户拥有使用您的应用程序的许可证,但根据您的策略,您不希望用户在此时使用您的应用程序。在这种情况下,将调用Policy.LICENSED的dontAllow方法。另一方面,假设您的用户没有使用您的应用程序的许可证,但您希望允许他/她使用您的应用程序。在这种情况下,将调用Policy.NOT_LICENSED的allow方法

public interface LicenseCheckerCallback {

    /**
     * Allow use. App should proceed as normal.
     *
     * @param reason Policy.LICENSED or Policy.RETRY typically. (although in
     *            theory the policy can return Policy.NOT_LICENSED here as well)
     */
    public void allow(int reason);

    /**
     * Don't allow use. App should inform user and take appropriate action.
     *
     * @param reason Policy.NOT_LICENSED or Policy.RETRY. (although in theory
     *            the policy can return Policy.LICENSED here as well ---
     *            perhaps the call to the LVL took too long, for example)
     */
    public void dontAllow(int reason);

    ...
}