Question

I am testing my app with the Google Play License API. The app binds successfully to the licensing service, but the callback gives error 6. I've checked the error codes in LicenseValidator and this is not one of the error codes listed there.

Does anyone know what error 6 means?

public class MyActivity extends FragmentActivity
{

    private static final String BASE64_PUBLIC_KEY = "ZZZZ";

    private static final byte[] SALT = new byte[] {
        XXXX
    };

    private LicenseCheckerCallback mLicenseCheckerCallback;
    private LicenseChecker mChecker;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);

        String deviceId = Secure.getString(getContentResolver(), Secure.ANDROID_ID);

        // Library calls this when it's done.
        mLicenseCheckerCallback = new YAHLicenseCheckerCallback();

        // Construct the LicenseChecker with a policy, obfuscator and public key
        mChecker = new LicenseChecker(this, 
                new ServerManagedPolicy(this,
                new AESObfuscator(SALT, getPackageName(), deviceId)),
                BASE64_PUBLIC_KEY);
        mChecker.checkAccess(mLicenseCheckerCallback);
    }

    private class YAHLicenseCheckerCallback implements LicenseCheckerCallback {
        public void allow(int policyReason) {
            Log.d(tag,"License - allowed");

            if (isFinishing()) {
                // Don't do anything if Activity is finishing.
                return;
            }
            // Should allow user access.

        }

        public void dontAllow(int policyReason) {
            Log.d(tag,"License - not allowed");

            if (isFinishing()) {
                // Don't do anything UI if Activity is finishing.
                return;
            }

            // Should not allow access. In most cases, the app should assume
            // the user has access unless it encounters this. If it does,
            // the app should inform the user of their unlicensed ways
            // and then either shut down the app or limit the user to a
            // restricted set of features.

        }

        public void applicationError(int errorCode) {

            Log.d(tag,"License - application error code "+errorCode);

            if (isFinishing()) {
                // Don't update UI if Activity is finishing.
                return;
            }
            // This is a polite way of saying the developer made a mistake
            // while setting up or calling the license checker library.
            // Please examine the error code and fix the error.

        }
    }

    @Override
    protected void onDestroy()
    {
    mChecker.onDestroy();
    super.onDestroy();
    }
}
Was it helpful?

Solution

OK, I've solved it. Error 6 isn't coming from LicenceValidator, it's coming from LicenseChecker and indicates that a permission is missing. I hadn't given the app com.android.vending.CHECK_LICENSE permission. When I did, it started working.

Thanks for your interest and I hope this helps anyone who makes the same mistake.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top