From 39de35e09424c573670d4c56742c17a3bdbe8108 Mon Sep 17 00:00:00 2001 From: YuutaW <17158086+Trumeet@users.noreply.github.com> Date: Thu, 28 Feb 2019 19:50:55 -0800 Subject: feat(app): implement Google Play App Licensing Signed-off-by: YuutaW <17158086+Trumeet@users.noreply.github.com> --- .../yuuta/gplicense/LicenseCheckerCallback.java | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 app/src/main/java/moe/yuuta/gplicense/LicenseCheckerCallback.java (limited to 'app/src/main/java/moe/yuuta/gplicense/LicenseCheckerCallback.java') diff --git a/app/src/main/java/moe/yuuta/gplicense/LicenseCheckerCallback.java b/app/src/main/java/moe/yuuta/gplicense/LicenseCheckerCallback.java new file mode 100644 index 0000000..214f152 --- /dev/null +++ b/app/src/main/java/moe/yuuta/gplicense/LicenseCheckerCallback.java @@ -0,0 +1,51 @@ +package moe.yuuta.gplicense; + +/** + * Callback for the license checker library. + *

+ * Upon checking with the Market server and conferring with the {@link Policy}, + * the library calls the appropriate callback method to communicate the result. + *

+ * The callback does not occur in the original checking thread. Your + * application should post to the appropriate handling thread or lock + * accordingly. + *

+ * The reason that is passed back with allow/dontAllow is the base status handed + * to the policy for allowed/disallowing the license. Policy.RETRY will call + * allow or dontAllow depending on other statistics associated with the policy, + * while in most cases Policy.NOT_LICENSED will call dontAllow and + * Policy.LICENSED will 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) + */ + 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) + */ + void dontAllow(int reason); + + /** Application error codes. */ + int ERROR_INVALID_PACKAGE_NAME = 1; + int ERROR_NON_MATCHING_UID = 2; + int ERROR_NOT_MARKET_MANAGED = 3; + int ERROR_CHECK_IN_PROGRESS = 4; + int ERROR_INVALID_PUBLIC_KEY = 5; + int ERROR_MISSING_PERMISSION = 6; + + /** + * Error in application code. Caller did not call or set up license checker + * correctly. Should be considered fatal. + */ + void applicationError(int errorCode); +} -- cgit v1.2.3