2

I'm testing the licensing system for android. Exactly I just compiled the sample project with ServerManagedPolicy and I have a question about it: If I do:

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

Ok now lets see the problem:

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

Logically I don't want that. Because the app will be blocked if the user launches the app without Internet, even if it was licensed. How can I solve that? My application needs to be connected to the Internet for working so there's no problem in delaying that check

CommonsWare
  • 986,068
  • 189
  • 2,389
  • 2,491
Addev
  • 31,819
  • 51
  • 183
  • 302

1 Answers1

4

You may use a custom LicenseValidator class with a handleResponse() that would call dontAllow() on the License checker callback only when the policy returns LicenseResponse.NOT_LICENSED, and allow() in all other cases including network error.

 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();
        }
    }

And use also a custom Policy instead of the 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));
}

}

This is petty much what I did and it works fine.

gpo
  • 3,388
  • 3
  • 31
  • 53