My LicenseCheckerCallback calls method applicationError and return errorCode 6. In my LogCat I get the following JavaStack:
02-27 08:55:18.258: I/LicenseChecker(19572): Binding to licensing service.
02-27 08:55:18.268: D/dalvikvm(19572): threadid=1: still suspended after undo (sc=1 dc=1)
02-27 08:55:18.268: D/dalvikvm(19572): GC_CONCURRENT freed 112K, 12% free 7284K/8263K, paused 12ms+2ms, total 27ms
02-27 08:55:28.233: I/System.out(19728): broadcast Received
02-27 08:55:29.408: I/System.out(19572): DIALOG_RETRY Error
02-27 08:55:29.603: E/ActivityThread(19572): Activity My_company.My_appname.LicenseVerification has leaked ServiceConnection com.google.android.vending.licensing.LicenseChecker@41da7698 that was originally bound here
02-27 08:55:29.603: E/ActivityThread(19572): android.app.ServiceConnectionLeaked: Activity My_company.My_appname.LicenseVerification has leaked ServiceConnection com.google.android.vending.licensing.LicenseChecker@41da7698 that was originally bound here
02-27 08:55:29.603: E/ActivityThread(19572): at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:966)
02-27 08:55:29.603: E/ActivityThread(19572): at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:860)
02-27 08:55:29.603: E/ActivityThread(19572): at android.app.ContextImpl.bindService(ContextImpl.java:1364)
02-27 08:55:29.603: E/ActivityThread(19572): at android.app.ContextImpl.bindService(ContextImpl.java:1356)
02-27 08:55:29.603: E/ActivityThread(19572): at android.content.ContextWrapper.bindService(ContextWrapper.java:401)
02-27 08:55:29.603: E/ActivityThread(19572): at com.google.android.vending.licensing.LicenseChecker.checkAccess(LicenseChecker.java:150)
02-27 08:55:29.603: E/ActivityThread(19572): at My_company.My_appname.LicenseVerification.bCheckLicense(LicenseVerification.java:84)
02-27 08:55:29.603: E/ActivityThread(19572): at My_company.My_appname.LicenseVerification.onCreate(LicenseVerification.java:65)
02-27 08:55:29.603: E/ActivityThread(19572): at android.app.Activity.performCreate(Activity.java:5188)
02-27 08:55:29.603: E/ActivityThread(19572): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
02-27 08:55:29.603: E/ActivityThread(19572): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)
02-27 08:55:29.603: E/ActivityThread(19572): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
02-27 08:55:29.603: E/ActivityThread(19572): at android.app.ActivityThread.access$700(ActivityThread.java:140)
02-27 08:55:29.603: E/ActivityThread(19572): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
02-27 08:55:29.603: E/ActivityThread(19572): at android.os.Handler.dispatchMessage(Handler.java:99)
02-27 08:55:29.603: E/ActivityThread(19572): at android.os.Looper.loop(Looper.java:137)
02-27 08:55:29.603: E/ActivityThread(19572): at android.app.ActivityThread.main(ActivityThread.java:4921)
02-27 08:55:29.603: E/ActivityThread(19572): at java.lang.reflect.Method.invokeNative(Native Method)
02-27 08:55:29.603: E/ActivityThread(19572): at java.lang.reflect.Method.invoke(Method.java:511)
02-27 08:55:29.603: E/ActivityThread(19572): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
02-27 08:55:29.603: E/ActivityThread(19572): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
02-27 08:55:29.603: E/ActivityThread(19572): at dalvik.system.NativeStart.main(Native Method)
My License Verification Implementation :
public class LicenseVerification extends Activity { private static final int LICENSED = 0x0; private static final int NOT_LICENSED = 0x1; private static final int LICENSED_OLD_KEY = 0x2; private static final int ERROR_NOT_MARKET_MANAGED = 0x3; private static final int ERROR_SERVER_FAILURE = 0x4; private static final int ERROR_OVER_QUOTA = 0x5; private static final int ERROR_CONTACTING_SERVER = 0x101; private static final int ERROR_INVALID_PACKAGE_NAME = 0x102; private static final int ERROR_NON_MATCHING_UID = 0x103; ApplicationContextProvider application; private static final byte[] SALT = new byte[] { -46, 65, 37, -128, -103, -57, 74, -64, 51, 88, -91, -45, 77, -17, -36, -113, -11, 32, -64, 89 }; private LicenseCheckerCallback mLicenseCheckerCallback; private LicenseChecker mChecker; private static final String BASE64_PUBLIC_KEY = "MYKEY"; public void sendBackLicenseCheck(String sStatus, int errorCode){ Intent replyIntent = new Intent("My_company.My_app.A_CUSTOM_INTENT"); replyIntent.putExtra("Status", sStatus); replyIntent.putExtra("ErrorCode", errorCode); this.sendBroadcast(replyIntent); } public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Toast.makeText(this, "LicenseVerification ", Toast.LENGTH_SHORT); CheckLicense(); finish(); } public void CheckLicense(){ Context AppContext=application.getContext(); String sPackageName=AppContext.getPackageName(); //Toast.makeText(this, "sPackageName: "+sPackageName, Toast.LENGTH_LONG).show(); mLicenseCheckerCallback = new MyLicenseCheckerCallback2(); String deviceId = Secure.getString(AppContext.getContentResolver(), Secure.ANDROID_ID); mChecker = new LicenseChecker(this, new ServerManagedPolicy(AppContext, new AESObfuscator(SALT, sPackageName, deviceId)),BASE64_PUBLIC_KEY); mChecker.checkAccess(mLicenseCheckerCallback); } private class MyLicenseCheckerCallback2 implements LicenseCheckerCallback { public void allow(int reason) { System.out.println("Allow"); sendBackLicenseCheck("Allow",-1); } public void dontAllow(int reason) { sendBackLicenseCheck("Deny",0); System.out.println("DIALOG_GOTOMARKET"); if (reason == Policy.RETRY) { System.out.println("DIALOG_RETRY"); } else { System.out.println("DIALOG_GOTOMARKET"); } } @Override public void applicationError(int errorCode) { sendBackLicenseCheck("Error",errorCode); System.out.println("DIALOG_RETRY Error"); } } }
I have published the app in the BETA TEST Phase and fetched the BASE64_PUBLIC_KEY for my code.
I have added a licensetest-account in the settings in the developer console under LICENSETEST
I set the Testreponse to LICENCED
Now when I debug the application locally on my pc using eclipse I see that my LicenseCheckerCallback (MyLicenseCheckerCallback2) calls applicationError with ErrorCode 6. I did not found any information about Code 6 and I have no clue what could be the reason.
Any hints ?