gpt4 book ai didi

java - Android 许可证验证检查始终返回错误代码 6

转载 作者:行者123 更新时间:2023-12-01 18:17:32 26 4
gpt4 key购买 nike

我的 LicenseCheckerCallback 调用方法 applicationError 并返回错误代码 6。在我的 LogCat 中,我得到以下 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)
  • 我的许可证验证实现:

    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");
    }
    }
    }
  • 我已在 BETA 测试阶段发布了该应用,并为我的代码获取了 BASE64_PUBLIC_KEY。

  • 我已在开发者控制台的 LICENSETEST 下的设置中添加了一个许可证测试帐户

  • 我将测试响应设置为已许可

现在,当我使用 eclipse 在我的电脑上本地调试应用程序时,我看到我的 LicenseCheckerCallback (MyLicenseCheckerCallback2) 调用 applicationError,错误代码为 6。我没有找到有关代码 6 的任何信息,我不知道可能是什么原因。

有什么提示吗?

最佳答案

错误代码 6 表示您的应用没有 com.android.vending.CHECK_LICENSE允许。您需要在 list 中声明您的应用使用此权限。

关于java - Android 许可证验证检查始终返回错误代码 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28760314/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com